@wildo-ai/presets-components 1.1.4 → 1.1.6

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 (780) hide show
  1. package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
  2. package/dist/esm/components/actions/action-bar.js +65 -8
  3. package/dist/esm/components/actions/action-bar.js.map +1 -1
  4. package/dist/esm/components/actions/action-bar.labels.d.ts.map +1 -1
  5. package/dist/esm/components/actions/action-button.d.ts.map +1 -1
  6. package/dist/esm/components/actions/action-button.js +3 -3
  7. package/dist/esm/components/actions/action-button.js.map +1 -1
  8. package/dist/esm/components/actions/action-button.labels.d.ts.map +1 -1
  9. package/dist/esm/components/actions/button-group.d.ts.map +1 -1
  10. package/dist/esm/components/actions/button.d.ts.map +1 -1
  11. package/dist/esm/components/actions/button.js +62 -3
  12. package/dist/esm/components/actions/button.js.map +1 -1
  13. package/dist/esm/components/actions/button.labels.d.ts.map +1 -1
  14. package/dist/esm/components/ai-elements/artifacts/artifact-browser.d.ts.map +1 -1
  15. package/dist/esm/components/ai-elements/artifacts/artifact.d.ts.map +1 -1
  16. package/dist/esm/components/ai-elements/artifacts/artifact.labels.d.ts.map +1 -1
  17. package/dist/esm/components/ai-elements/artifacts/code-block.d.ts.map +1 -1
  18. package/dist/esm/components/ai-elements/artifacts/code-block.js +1 -1
  19. package/dist/esm/components/ai-elements/artifacts/code-block.js.map +1 -1
  20. package/dist/esm/components/ai-elements/artifacts/code-block.labels.d.ts.map +1 -1
  21. package/dist/esm/components/ai-elements/artifacts/diff-block.d.ts +4 -0
  22. package/dist/esm/components/ai-elements/artifacts/diff-block.d.ts.map +1 -0
  23. package/dist/esm/components/ai-elements/artifacts/diff-block.js +165 -0
  24. package/dist/esm/components/ai-elements/artifacts/diff-block.js.map +1 -0
  25. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.d.ts +3 -0
  26. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.d.ts.map +1 -0
  27. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.js +63 -0
  28. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.js.map +1 -0
  29. package/dist/esm/components/ai-elements/artifacts/image.d.ts.map +1 -1
  30. package/dist/esm/components/ai-elements/artifacts/image.labels.d.ts.map +1 -1
  31. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter-runtime.d.ts.map +1 -1
  32. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter.lazy.d.ts.map +1 -1
  33. package/dist/esm/components/ai-elements/artifacts/web-preview.d.ts.map +1 -1
  34. package/dist/esm/components/ai-elements/artifacts/web-preview.labels.d.ts.map +1 -1
  35. package/dist/esm/components/ai-elements/chat/conversation.d.ts.map +1 -1
  36. package/dist/esm/components/ai-elements/chat/conversation.labels.d.ts.map +1 -1
  37. package/dist/esm/components/ai-elements/chat/message.d.ts.map +1 -1
  38. package/dist/esm/components/ai-elements/chat/message.labels.d.ts.map +1 -1
  39. package/dist/esm/components/ai-elements/chat/prompt-input.d.ts.map +1 -1
  40. package/dist/esm/components/ai-elements/chat/prompt-input.labels.d.ts.map +1 -1
  41. package/dist/esm/components/ai-elements/chat/sources.d.ts.map +1 -1
  42. package/dist/esm/components/ai-elements/chat/sources.labels.d.ts.map +1 -1
  43. package/dist/esm/components/ai-elements/chat/suggestion.d.ts.map +1 -1
  44. package/dist/esm/components/ai-elements/chat/suggestion.js +8 -1
  45. package/dist/esm/components/ai-elements/chat/suggestion.js.map +1 -1
  46. package/dist/esm/components/ai-elements/chat/suggestion.labels.d.ts.map +1 -1
  47. package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts +68 -0
  48. package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts.map +1 -0
  49. package/dist/esm/components/ai-elements/decision/approval-argument-fields.js +208 -0
  50. package/dist/esm/components/ai-elements/decision/approval-argument-fields.js.map +1 -0
  51. package/dist/esm/components/ai-elements/decision/approval.d.ts +124 -17
  52. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  53. package/dist/esm/components/ai-elements/decision/approval.js +105 -13
  54. package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
  55. package/dist/esm/components/ai-elements/decision/decision-request.d.ts.map +1 -1
  56. package/dist/esm/components/ai-elements/decision/decision-request.labels.d.ts.map +1 -1
  57. package/dist/esm/components/ai-elements/execution/confirmation.d.ts.map +1 -1
  58. package/dist/esm/components/ai-elements/execution/confirmation.labels.d.ts.map +1 -1
  59. package/dist/esm/components/ai-elements/execution/queue.d.ts.map +1 -1
  60. package/dist/esm/components/ai-elements/execution/queue.labels.d.ts.map +1 -1
  61. package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
  62. package/dist/esm/components/ai-elements/execution/task.js +1 -1
  63. package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
  64. package/dist/esm/components/ai-elements/execution/task.labels.d.ts.map +1 -1
  65. package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
  66. package/dist/esm/components/ai-elements/execution/tool.js +8 -1
  67. package/dist/esm/components/ai-elements/execution/tool.js.map +1 -1
  68. package/dist/esm/components/ai-elements/execution/tool.labels.d.ts.map +1 -1
  69. package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
  70. package/dist/esm/components/ai-elements/graph/canvas.labels.d.ts.map +1 -1
  71. package/dist/esm/components/ai-elements/graph/connection.d.ts.map +1 -1
  72. package/dist/esm/components/ai-elements/graph/connection.labels.d.ts.map +1 -1
  73. package/dist/esm/components/ai-elements/graph/controls.d.ts.map +1 -1
  74. package/dist/esm/components/ai-elements/graph/controls.labels.d.ts.map +1 -1
  75. package/dist/esm/components/ai-elements/graph/edge.d.ts.map +1 -1
  76. package/dist/esm/components/ai-elements/graph/edge.labels.d.ts.map +1 -1
  77. package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts +3 -1
  78. package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts.map +1 -1
  79. package/dist/esm/components/ai-elements/graph/graph-runtime.js +3 -1
  80. package/dist/esm/components/ai-elements/graph/graph-runtime.js.map +1 -1
  81. package/dist/esm/components/ai-elements/graph/graph.lazy.d.ts.map +1 -1
  82. package/dist/esm/components/ai-elements/graph/graph.lazy.js +15 -15
  83. package/dist/esm/components/ai-elements/graph/graph.lazy.js.map +1 -1
  84. package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
  85. package/dist/esm/components/ai-elements/graph/node.labels.d.ts.map +1 -1
  86. package/dist/esm/components/ai-elements/graph/panel.d.ts.map +1 -1
  87. package/dist/esm/components/ai-elements/graph/panel.labels.d.ts.map +1 -1
  88. package/dist/esm/components/ai-elements/graph/toolbar.d.ts.map +1 -1
  89. package/dist/esm/components/ai-elements/graph/toolbar.labels.d.ts.map +1 -1
  90. package/dist/esm/components/ai-elements/meta/agent.d.ts +0 -1
  91. package/dist/esm/components/ai-elements/meta/agent.d.ts.map +1 -1
  92. package/dist/esm/components/ai-elements/meta/agent.js +23 -18
  93. package/dist/esm/components/ai-elements/meta/agent.js.map +1 -1
  94. package/dist/esm/components/ai-elements/meta/context.d.ts.map +1 -1
  95. package/dist/esm/components/ai-elements/meta/context.labels.d.ts.map +1 -1
  96. package/dist/esm/components/ai-elements/meta/context.lazy.d.ts.map +1 -1
  97. package/dist/esm/components/ai-elements/meta/context.lazy.js +13 -11
  98. package/dist/esm/components/ai-elements/meta/context.lazy.js.map +1 -1
  99. package/dist/esm/components/ai-elements/meta/model-selector.d.ts.map +1 -1
  100. package/dist/esm/components/ai-elements/meta/model-selector.labels.d.ts.map +1 -1
  101. package/dist/esm/components/ai-elements/meta/open-in-chat.d.ts.map +1 -1
  102. package/dist/esm/components/ai-elements/meta/open-in-chat.labels.d.ts.map +1 -1
  103. package/dist/esm/components/ai-elements/shared/loader.d.ts.map +1 -1
  104. package/dist/esm/components/ai-elements/shared/loader.labels.d.ts.map +1 -1
  105. package/dist/esm/components/ai-elements/shared/shimmer.d.ts.map +1 -1
  106. package/dist/esm/components/ai-elements/shared/shimmer.labels.d.ts.map +1 -1
  107. package/dist/esm/components/ai-elements/stream/execution-stream.d.ts.map +1 -1
  108. package/dist/esm/components/ai-elements/stream/execution-stream.labels.d.ts.map +1 -1
  109. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts +6 -0
  110. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts.map +1 -1
  111. package/dist/esm/components/ai-elements/trace/chain-of-thought.js +13 -1
  112. package/dist/esm/components/ai-elements/trace/chain-of-thought.js.map +1 -1
  113. package/dist/esm/components/ai-elements/trace/chain-of-thought.labels.d.ts.map +1 -1
  114. package/dist/esm/components/ai-elements/trace/checkpoint.d.ts.map +1 -1
  115. package/dist/esm/components/ai-elements/trace/checkpoint.labels.d.ts.map +1 -1
  116. package/dist/esm/components/ai-elements/trace/inline-citation.d.ts.map +1 -1
  117. package/dist/esm/components/ai-elements/trace/inline-citation.labels.d.ts.map +1 -1
  118. package/dist/esm/components/ai-elements/trace/plan.d.ts.map +1 -1
  119. package/dist/esm/components/ai-elements/trace/plan.labels.d.ts.map +1 -1
  120. package/dist/esm/components/ai-elements/trace/reasoning.d.ts.map +1 -1
  121. package/dist/esm/components/ai-elements/trace/reasoning.labels.d.ts.map +1 -1
  122. package/dist/esm/components/app/app-layout-consent-gate.d.ts +23 -0
  123. package/dist/esm/components/app/app-layout-consent-gate.d.ts.map +1 -0
  124. package/dist/esm/components/app/app-layout-consent-gate.js +133 -0
  125. package/dist/esm/components/app/app-layout-consent-gate.js.map +1 -0
  126. package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts +19 -0
  127. package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts.map +1 -0
  128. package/dist/esm/components/app/app-layout-document-acceptance-gate.js +56 -0
  129. package/dist/esm/components/app/app-layout-document-acceptance-gate.js.map +1 -0
  130. package/dist/esm/components/app/app-layout-main-container.d.ts +9 -0
  131. package/dist/esm/components/app/app-layout-main-container.d.ts.map +1 -1
  132. package/dist/esm/components/app/app-layout-main-container.js +17 -23
  133. package/dist/esm/components/app/app-layout-main-container.js.map +1 -1
  134. package/dist/esm/components/app/app-layout-main-container.labels.d.ts.map +1 -1
  135. package/dist/esm/components/app/app-layout-main-container.labels.js +48 -0
  136. package/dist/esm/components/app/app-layout-main-container.labels.js.map +1 -1
  137. package/dist/esm/components/app/public-layout-main-container.d.ts +1 -1
  138. package/dist/esm/components/app/public-layout-main-container.d.ts.map +1 -1
  139. package/dist/esm/components/app/public-layout-main-container.js +9 -8
  140. package/dist/esm/components/app/public-layout-main-container.js.map +1 -1
  141. package/dist/esm/components/app/public-layout-main-container.labels.d.ts.map +1 -1
  142. package/dist/esm/components/app/public-layout-terms.d.ts +46 -0
  143. package/dist/esm/components/app/public-layout-terms.d.ts.map +1 -0
  144. package/dist/esm/components/app/public-layout-terms.js +137 -0
  145. package/dist/esm/components/app/public-layout-terms.js.map +1 -0
  146. package/dist/esm/components/billing/billing-format.utils.d.ts.map +1 -1
  147. package/dist/esm/components/billing/billing-invoice-history.d.ts +1 -1
  148. package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
  149. package/dist/esm/components/billing/billing-invoice-history.js +3 -1
  150. package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
  151. package/dist/esm/components/billing/billing-invoice-history.labels.d.ts.map +1 -1
  152. package/dist/esm/components/billing/billing-invoice-history.labels.js +1 -0
  153. package/dist/esm/components/billing/billing-invoice-history.labels.js.map +1 -1
  154. package/dist/esm/components/billing/billing-plan-change-preview.d.ts +5 -0
  155. package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +1 -0
  156. package/dist/esm/components/billing/billing-plan-change-preview.js +25 -0
  157. package/dist/esm/components/billing/billing-plan-change-preview.js.map +1 -0
  158. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts +3 -0
  159. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts.map +1 -0
  160. package/dist/esm/components/billing/billing-plan-change-preview.labels.js +22 -0
  161. package/dist/esm/components/billing/billing-plan-change-preview.labels.js.map +1 -0
  162. package/dist/esm/components/billing/billing-portal-link.d.ts +1 -1
  163. package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
  164. package/dist/esm/components/billing/billing-portal-link.js +3 -1
  165. package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
  166. package/dist/esm/components/billing/billing-portal-link.labels.d.ts.map +1 -1
  167. package/dist/esm/components/billing/billing-portal-link.labels.js +1 -0
  168. package/dist/esm/components/billing/billing-portal-link.labels.js.map +1 -1
  169. package/dist/esm/components/billing/billing-pricing-table.d.ts +1 -1
  170. package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
  171. package/dist/esm/components/billing/billing-pricing-table.js +10 -4
  172. package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
  173. package/dist/esm/components/billing/billing-pricing-table.labels.d.ts.map +1 -1
  174. package/dist/esm/components/billing/billing-pricing-table.labels.js +8 -1
  175. package/dist/esm/components/billing/billing-pricing-table.labels.js.map +1 -1
  176. package/dist/esm/components/billing/billing-subscription-status.d.ts +1 -1
  177. package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
  178. package/dist/esm/components/billing/billing-subscription-status.js +3 -1
  179. package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
  180. package/dist/esm/components/billing/billing-subscription-status.labels.d.ts.map +1 -1
  181. package/dist/esm/components/billing/billing-subscription-status.labels.js +1 -0
  182. package/dist/esm/components/billing/billing-subscription-status.labels.js.map +1 -1
  183. package/dist/esm/components/billing/billing-usage-dashboard.d.ts +1 -1
  184. package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
  185. package/dist/esm/components/billing/billing-usage-dashboard.js +10 -7
  186. package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
  187. package/dist/esm/components/billing/billing-usage-dashboard.labels.d.ts.map +1 -1
  188. package/dist/esm/components/billing/billing-usage-dashboard.labels.js +4 -1
  189. package/dist/esm/components/billing/billing-usage-dashboard.labels.js.map +1 -1
  190. package/dist/esm/components/data-display/avatar.d.ts.map +1 -1
  191. package/dist/esm/components/data-display/avatar.labels.d.ts.map +1 -1
  192. package/dist/esm/components/data-display/badge.d.ts.map +1 -1
  193. package/dist/esm/components/data-display/badge.js +16 -15
  194. package/dist/esm/components/data-display/badge.js.map +1 -1
  195. package/dist/esm/components/data-display/badge.labels.d.ts.map +1 -1
  196. package/dist/esm/components/data-display/description-list.d.ts +2 -1
  197. package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
  198. package/dist/esm/components/data-display/description-list.js +24 -8
  199. package/dist/esm/components/data-display/description-list.js.map +1 -1
  200. package/dist/esm/components/data-display/description-list.labels.d.ts.map +1 -1
  201. package/dist/esm/components/data-display/duration.d.ts +15 -0
  202. package/dist/esm/components/data-display/duration.d.ts.map +1 -0
  203. package/dist/esm/components/data-display/duration.js +50 -0
  204. package/dist/esm/components/data-display/duration.js.map +1 -0
  205. package/dist/esm/components/data-display/duration.labels.d.ts +15 -0
  206. package/dist/esm/components/data-display/duration.labels.d.ts.map +1 -0
  207. package/dist/esm/components/data-display/duration.labels.js +35 -0
  208. package/dist/esm/components/data-display/duration.labels.js.map +1 -0
  209. package/dist/esm/components/data-display/formatters/display-field-address.d.ts +21 -0
  210. package/dist/esm/components/data-display/formatters/display-field-address.d.ts.map +1 -0
  211. package/dist/esm/components/data-display/formatters/display-field-address.js +75 -0
  212. package/dist/esm/components/data-display/formatters/display-field-address.js.map +1 -0
  213. package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts +3 -0
  214. package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts.map +1 -0
  215. package/dist/esm/components/data-display/formatters/display-field-address.labels.js +13 -0
  216. package/dist/esm/components/data-display/formatters/display-field-address.labels.js.map +1 -0
  217. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.d.ts.map +1 -1
  218. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js +6 -2
  219. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js.map +1 -1
  220. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.labels.d.ts.map +1 -1
  221. package/dist/esm/components/data-display/formatters/display-field-boolean.d.ts.map +1 -1
  222. package/dist/esm/components/data-display/formatters/display-field-boolean.js +2 -2
  223. package/dist/esm/components/data-display/formatters/display-field-boolean.js.map +1 -1
  224. package/dist/esm/components/data-display/formatters/display-field-boolean.labels.d.ts.map +1 -1
  225. package/dist/esm/components/data-display/formatters/display-field-code.d.ts.map +1 -1
  226. package/dist/esm/components/data-display/formatters/display-field-code.js +2 -2
  227. package/dist/esm/components/data-display/formatters/display-field-code.js.map +1 -1
  228. package/dist/esm/components/data-display/formatters/display-field-code.labels.d.ts.map +1 -1
  229. package/dist/esm/components/data-display/formatters/display-field-date.d.ts +3 -3
  230. package/dist/esm/components/data-display/formatters/display-field-date.d.ts.map +1 -1
  231. package/dist/esm/components/data-display/formatters/display-field-date.js +17 -4
  232. package/dist/esm/components/data-display/formatters/display-field-date.js.map +1 -1
  233. package/dist/esm/components/data-display/formatters/display-field-date.labels.d.ts.map +1 -1
  234. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts +3 -3
  235. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts.map +1 -1
  236. package/dist/esm/components/data-display/formatters/display-field-datetime.js +17 -4
  237. package/dist/esm/components/data-display/formatters/display-field-datetime.js.map +1 -1
  238. package/dist/esm/components/data-display/formatters/display-field-datetime.labels.d.ts.map +1 -1
  239. package/dist/esm/components/data-display/formatters/display-field-duration.d.ts.map +1 -1
  240. package/dist/esm/components/data-display/formatters/display-field-duration.labels.d.ts.map +1 -1
  241. package/dist/esm/components/data-display/formatters/display-field-enum.d.ts.map +1 -1
  242. package/dist/esm/components/data-display/formatters/display-field-enum.js +29 -11
  243. package/dist/esm/components/data-display/formatters/display-field-enum.js.map +1 -1
  244. package/dist/esm/components/data-display/formatters/display-field-enum.labels.d.ts.map +1 -1
  245. package/dist/esm/components/data-display/formatters/display-field-file-audio.d.ts.map +1 -1
  246. package/dist/esm/components/data-display/formatters/display-field-file-audio.js +2 -1
  247. package/dist/esm/components/data-display/formatters/display-field-file-audio.js.map +1 -1
  248. package/dist/esm/components/data-display/formatters/display-field-file-audio.labels.d.ts.map +1 -1
  249. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts +4 -1
  250. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts.map +1 -1
  251. package/dist/esm/components/data-display/formatters/display-field-file-document.js +18 -5
  252. package/dist/esm/components/data-display/formatters/display-field-file-document.js.map +1 -1
  253. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.d.ts.map +1 -1
  254. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js +20 -0
  255. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js.map +1 -1
  256. package/dist/esm/components/data-display/formatters/display-field-file-gallery.d.ts.map +1 -1
  257. package/dist/esm/components/data-display/formatters/display-field-file-gallery.labels.d.ts.map +1 -1
  258. package/dist/esm/components/data-display/formatters/display-field-file-image.d.ts.map +1 -1
  259. package/dist/esm/components/data-display/formatters/display-field-file-image.js +3 -1
  260. package/dist/esm/components/data-display/formatters/display-field-file-image.js.map +1 -1
  261. package/dist/esm/components/data-display/formatters/display-field-file-image.labels.d.ts.map +1 -1
  262. package/dist/esm/components/data-display/formatters/display-field-file-video.d.ts.map +1 -1
  263. package/dist/esm/components/data-display/formatters/display-field-file-video.labels.d.ts.map +1 -1
  264. package/dist/esm/components/data-display/formatters/display-field-file.d.ts.map +1 -1
  265. package/dist/esm/components/data-display/formatters/display-field-file.js +14 -15
  266. package/dist/esm/components/data-display/formatters/display-field-file.js.map +1 -1
  267. package/dist/esm/components/data-display/formatters/display-field-file.labels.d.ts.map +1 -1
  268. package/dist/esm/components/data-display/formatters/display-field-file.labels.js +2 -0
  269. package/dist/esm/components/data-display/formatters/display-field-file.labels.js.map +1 -1
  270. package/dist/esm/components/data-display/formatters/display-field-format.utils.d.ts.map +1 -1
  271. package/dist/esm/components/data-display/formatters/display-field-i18n.utils.d.ts.map +1 -1
  272. package/dist/esm/components/data-display/formatters/display-field-money.d.ts.map +1 -1
  273. package/dist/esm/components/data-display/formatters/display-field-money.labels.d.ts.map +1 -1
  274. package/dist/esm/components/data-display/formatters/display-field-number.d.ts.map +1 -1
  275. package/dist/esm/components/data-display/formatters/display-field-number.js +8 -3
  276. package/dist/esm/components/data-display/formatters/display-field-number.js.map +1 -1
  277. package/dist/esm/components/data-display/formatters/display-field-number.labels.d.ts.map +1 -1
  278. package/dist/esm/components/data-display/formatters/display-field-number.labels.js +5 -2
  279. package/dist/esm/components/data-display/formatters/display-field-number.labels.js.map +1 -1
  280. package/dist/esm/components/data-display/formatters/display-field-phone.d.ts.map +1 -1
  281. package/dist/esm/components/data-display/formatters/display-field-phone.labels.d.ts.map +1 -1
  282. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.d.ts.map +1 -1
  283. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.labels.d.ts.map +1 -1
  284. package/dist/esm/components/data-display/formatters/display-field-range-date.d.ts.map +1 -1
  285. package/dist/esm/components/data-display/formatters/display-field-range-date.labels.d.ts.map +1 -1
  286. package/dist/esm/components/data-display/formatters/display-field-range-datetime.d.ts.map +1 -1
  287. package/dist/esm/components/data-display/formatters/display-field-range-datetime.labels.d.ts.map +1 -1
  288. package/dist/esm/components/data-display/formatters/display-field-range-money.d.ts.map +1 -1
  289. package/dist/esm/components/data-display/formatters/display-field-range-money.labels.d.ts.map +1 -1
  290. package/dist/esm/components/data-display/formatters/display-field-range-number.d.ts.map +1 -1
  291. package/dist/esm/components/data-display/formatters/display-field-range-number.labels.d.ts.map +1 -1
  292. package/dist/esm/components/data-display/formatters/display-field-range-time.d.ts.map +1 -1
  293. package/dist/esm/components/data-display/formatters/display-field-range-time.labels.d.ts.map +1 -1
  294. package/dist/esm/components/data-display/formatters/display-field-string.d.ts +1 -1
  295. package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
  296. package/dist/esm/components/data-display/formatters/display-field-string.js +129 -15
  297. package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
  298. package/dist/esm/components/data-display/formatters/display-field-string.labels.d.ts.map +1 -1
  299. package/dist/esm/components/data-display/formatters/display-field-time.d.ts.map +1 -1
  300. package/dist/esm/components/data-display/formatters/display-field-time.labels.d.ts.map +1 -1
  301. package/dist/esm/components/data-display/identifier.d.ts +19 -0
  302. package/dist/esm/components/data-display/identifier.d.ts.map +1 -0
  303. package/dist/esm/components/data-display/identifier.js +21 -0
  304. package/dist/esm/components/data-display/identifier.js.map +1 -0
  305. package/dist/esm/components/data-display/kbd.d.ts +17 -0
  306. package/dist/esm/components/data-display/kbd.d.ts.map +1 -0
  307. package/dist/esm/components/data-display/kbd.js +18 -0
  308. package/dist/esm/components/data-display/kbd.js.map +1 -0
  309. package/dist/esm/components/data-display/markdown-content.d.ts.map +1 -1
  310. package/dist/esm/components/data-display/markdown-stream-runtime.d.ts.map +1 -1
  311. package/dist/esm/components/data-display/markdown-stream.lazy.d.ts.map +1 -1
  312. package/dist/esm/components/data-display/markdown-stream.lazy.js +13 -2
  313. package/dist/esm/components/data-display/markdown-stream.lazy.js.map +1 -1
  314. package/dist/esm/components/data-display/notification-indicator.d.ts.map +1 -1
  315. package/dist/esm/components/data-display/notification-indicator.js +3 -11
  316. package/dist/esm/components/data-display/notification-indicator.js.map +1 -1
  317. package/dist/esm/components/data-display/notification-indicator.labels.d.ts.map +1 -1
  318. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts +63 -0
  319. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts.map +1 -0
  320. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js +75 -0
  321. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js.map +1 -0
  322. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts +32 -0
  323. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts.map +1 -0
  324. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js +36 -0
  325. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js.map +1 -0
  326. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts +46 -6
  327. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  328. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js +70 -46
  329. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js.map +1 -1
  330. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts +12 -2
  331. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts.map +1 -1
  332. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js +3 -2
  333. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js.map +1 -1
  334. package/dist/esm/components/data-display/timeline.d.ts +3 -0
  335. package/dist/esm/components/data-display/timeline.d.ts.map +1 -0
  336. package/dist/esm/components/data-display/timeline.js +92 -0
  337. package/dist/esm/components/data-display/timeline.js.map +1 -0
  338. package/dist/esm/components/data-display/untrusted-html-content.d.ts +55 -0
  339. package/dist/esm/components/data-display/untrusted-html-content.d.ts.map +1 -0
  340. package/dist/esm/components/data-display/untrusted-html-content.js +67 -0
  341. package/dist/esm/components/data-display/untrusted-html-content.js.map +1 -0
  342. package/dist/esm/components/feedback/celebration-overlay.d.ts +13 -4
  343. package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
  344. package/dist/esm/components/feedback/celebration-overlay.js +146 -22
  345. package/dist/esm/components/feedback/celebration-overlay.js.map +1 -1
  346. package/dist/esm/components/feedback/celebration-overlay.labels.d.ts.map +1 -1
  347. package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
  348. package/dist/esm/components/feedback/danger-zone.labels.d.ts.map +1 -1
  349. package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
  350. package/dist/esm/components/feedback/empty-state.js.map +1 -1
  351. package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
  352. package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
  353. package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
  354. package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
  355. package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
  356. package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
  357. package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
  358. package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
  359. package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
  360. package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
  361. package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
  362. package/dist/esm/components/feedback/features/feature-unavailable-prompt.labels.d.ts.map +1 -1
  363. package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
  364. package/dist/esm/components/feedback/loading-overlay.labels.d.ts.map +1 -1
  365. package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
  366. package/dist/esm/components/feedback/loading-spinner.labels.d.ts.map +1 -1
  367. package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
  368. package/dist/esm/components/feedback/notification-center.js +5 -5
  369. package/dist/esm/components/feedback/notification-center.js.map +1 -1
  370. package/dist/esm/components/feedback/operations-confirm-critical.d.ts +1 -1
  371. package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
  372. package/dist/esm/components/feedback/operations-confirm-critical.js +9 -7
  373. package/dist/esm/components/feedback/operations-confirm-critical.js.map +1 -1
  374. package/dist/esm/components/feedback/operations-confirm-critical.labels.d.ts.map +1 -1
  375. package/dist/esm/components/feedback/progress.d.ts.map +1 -1
  376. package/dist/esm/components/feedback/progress.labels.d.ts.map +1 -1
  377. package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
  378. package/dist/esm/components/feedback/skeleton.labels.d.ts.map +1 -1
  379. package/dist/esm/components/feedback/toast.d.ts.map +1 -1
  380. package/dist/esm/components/feedback/toast.labels.d.ts.map +1 -1
  381. package/dist/esm/components/form/autosave-indicator.d.ts.map +1 -1
  382. package/dist/esm/components/form/autosave-indicator.labels.d.ts.map +1 -1
  383. package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
  384. package/dist/esm/components/form/chromes/field.js +11 -3
  385. package/dist/esm/components/form/chromes/field.js.map +1 -1
  386. package/dist/esm/components/form/chromes/field.labels.d.ts.map +1 -1
  387. package/dist/esm/components/form/chromes/form-primitive.d.ts.map +1 -1
  388. package/dist/esm/components/form/chromes/form-primitive.labels.d.ts.map +1 -1
  389. package/dist/esm/components/form/chromes/form-primitive.labels.js +37 -0
  390. package/dist/esm/components/form/chromes/form-primitive.labels.js.map +1 -1
  391. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  392. package/dist/esm/components/form/combobox.js +14 -13
  393. package/dist/esm/components/form/combobox.js.map +1 -1
  394. package/dist/esm/components/form/combobox.labels.d.ts.map +1 -1
  395. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.adapter.d.ts +42 -0
  396. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.adapter.d.ts.map +1 -0
  397. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.adapter.js +120 -0
  398. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.adapter.js.map +1 -0
  399. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.d.ts +16 -0
  400. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.d.ts.map +1 -0
  401. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.js +8 -0
  402. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.js.map +1 -0
  403. package/dist/esm/components/form/controls/boolean/checkbox.d.ts.map +1 -1
  404. package/dist/esm/components/form/controls/boolean/checkbox.js +2 -2
  405. package/dist/esm/components/form/controls/boolean/checkbox.js.map +1 -1
  406. package/dist/esm/components/form/controls/boolean/checkbox.labels.d.ts.map +1 -1
  407. package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
  408. package/dist/esm/components/form/controls/boolean/switch.labels.d.ts.map +1 -1
  409. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
  410. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.labels.d.ts.map +1 -1
  411. package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
  412. package/dist/esm/components/form/controls/boolean/toggle.labels.d.ts.map +1 -1
  413. package/dist/esm/components/form/controls/code-editor/cm6-editor-appearance.d.ts.map +1 -1
  414. package/dist/esm/components/form/controls/code-editor/cm6-editor.d.ts.map +1 -1
  415. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.d.ts.map +1 -1
  416. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js +11 -2
  417. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js.map +1 -1
  418. package/dist/esm/components/form/controls/code-editor/form-field-code.d.ts.map +1 -1
  419. package/dist/esm/components/form/controls/code-editor/markdown-editor.d.ts.map +1 -1
  420. package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
  421. package/dist/esm/components/form/controls/date-time/calendar.labels.d.ts.map +1 -1
  422. package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
  423. package/dist/esm/components/form/controls/date-time/date-range-picker.labels.d.ts.map +1 -1
  424. package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
  425. package/dist/esm/components/form/controls/date-time/datepicker.labels.d.ts.map +1 -1
  426. package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
  427. package/dist/esm/components/form/controls/date-time/datetime-picker.labels.d.ts.map +1 -1
  428. package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
  429. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.d.ts.map +1 -1
  430. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js +11 -2
  431. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js.map +1 -1
  432. package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
  433. package/dist/esm/components/form/controls/date-time/time-picker.labels.d.ts.map +1 -1
  434. package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
  435. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.d.ts.map +1 -1
  436. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js +11 -2
  437. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js.map +1 -1
  438. package/dist/esm/components/form/controls/enum/radio.d.ts +1 -1
  439. package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
  440. package/dist/esm/components/form/controls/enum/radio.js +13 -12
  441. package/dist/esm/components/form/controls/enum/radio.js.map +1 -1
  442. package/dist/esm/components/form/controls/enum/radio.labels.d.ts.map +1 -1
  443. package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
  444. package/dist/esm/components/form/controls/enum/select-multiple.js +5 -3
  445. package/dist/esm/components/form/controls/enum/select-multiple.js.map +1 -1
  446. package/dist/esm/components/form/controls/enum/select-multiple.labels.d.ts.map +1 -1
  447. package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
  448. package/dist/esm/components/form/controls/enum/select.labels.d.ts.map +1 -1
  449. package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
  450. package/dist/esm/components/form/controls/enum/toggle-group.js +96 -5
  451. package/dist/esm/components/form/controls/enum/toggle-group.js.map +1 -1
  452. package/dist/esm/components/form/controls/enum/toggle-group.labels.d.ts.map +1 -1
  453. package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
  454. package/dist/esm/components/form/controls/file/file-upload.labels.d.ts.map +1 -1
  455. package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
  456. package/dist/esm/components/form/controls/file/image-crop.labels.d.ts.map +1 -1
  457. package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts +44 -0
  458. package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts.map +1 -0
  459. package/dist/esm/components/form/controls/file/providers/dropbox-picker.js +137 -0
  460. package/dist/esm/components/form/controls/file/providers/dropbox-picker.js.map +1 -0
  461. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts +22 -0
  462. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts.map +1 -0
  463. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js +27 -0
  464. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js.map +1 -0
  465. package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts +3 -1
  466. package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts.map +1 -1
  467. package/dist/esm/components/form/controls/file/providers/google-drive-picker.js +3 -1
  468. package/dist/esm/components/form/controls/file/providers/google-drive-picker.js.map +1 -1
  469. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts +6 -0
  470. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts.map +1 -1
  471. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js +8 -1
  472. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js.map +1 -1
  473. package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts +6 -2
  474. package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts.map +1 -1
  475. package/dist/esm/components/form/controls/file/providers/onedrive-picker.js +6 -2
  476. package/dist/esm/components/form/controls/file/providers/onedrive-picker.js.map +1 -1
  477. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts +6 -0
  478. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts.map +1 -1
  479. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js +8 -1
  480. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js.map +1 -1
  481. package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
  482. package/dist/esm/components/form/controls/input-group.labels.d.ts.map +1 -1
  483. package/dist/esm/components/form/controls/input.d.ts.map +1 -1
  484. package/dist/esm/components/form/controls/input.labels.d.ts.map +1 -1
  485. package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
  486. package/dist/esm/components/form/controls/number/slider.labels.d.ts.map +1 -1
  487. package/dist/esm/components/form/controls/number/slider.labels.js +9 -2
  488. package/dist/esm/components/form/controls/number/slider.labels.js.map +1 -1
  489. package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
  490. package/dist/esm/components/form/controls/string/color-input.labels.d.ts.map +1 -1
  491. package/dist/esm/components/form/controls/string/color-picker-surface.d.ts.map +1 -1
  492. package/dist/esm/components/form/controls/string/color-picker-surface.js.map +1 -1
  493. package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
  494. package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
  495. package/dist/esm/components/form/controls/string/input-otp.labels.d.ts.map +1 -1
  496. package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
  497. package/dist/esm/components/form/controls/string/password-input.labels.d.ts.map +1 -1
  498. package/dist/esm/components/form/controls/string/password-input.labels.js +9 -2
  499. package/dist/esm/components/form/controls/string/password-input.labels.js.map +1 -1
  500. package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
  501. package/dist/esm/components/form/controls/string/textarea.labels.d.ts.map +1 -1
  502. package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
  503. package/dist/esm/components/layout/aspect-ratio.labels.d.ts.map +1 -1
  504. package/dist/esm/components/layout/carousel.d.ts.map +1 -1
  505. package/dist/esm/components/layout/carousel.labels.d.ts.map +1 -1
  506. package/dist/esm/components/layout/divider.d.ts.map +1 -1
  507. package/dist/esm/components/layout/divider.labels.d.ts.map +1 -1
  508. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  509. package/dist/esm/components/layout/resizable.labels.d.ts.map +1 -1
  510. package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
  511. package/dist/esm/components/layout/scroll-area.labels.d.ts.map +1 -1
  512. package/dist/esm/components/layout/separator.d.ts.map +1 -1
  513. package/dist/esm/components/layout/separator.labels.d.ts.map +1 -1
  514. package/dist/esm/components/navigation/app-level/activity-bar.d.ts.map +1 -1
  515. package/dist/esm/components/navigation/app-level/activity-bar.js +2 -2
  516. package/dist/esm/components/navigation/app-level/activity-bar.js.map +1 -1
  517. package/dist/esm/components/navigation/app-level/activity-bar.labels.d.ts.map +1 -1
  518. package/dist/esm/components/navigation/app-level/command-menu.d.ts.map +1 -1
  519. package/dist/esm/components/navigation/app-level/command-menu.js +2 -2
  520. package/dist/esm/components/navigation/app-level/command-menu.js.map +1 -1
  521. package/dist/esm/components/navigation/app-level/command-menu.labels.d.ts.map +1 -1
  522. package/dist/esm/components/navigation/app-level/control-panel.d.ts.map +1 -1
  523. package/dist/esm/components/navigation/app-level/control-panel.labels.d.ts.map +1 -1
  524. package/dist/esm/components/navigation/app-level/menu-user-org.d.ts.map +1 -1
  525. package/dist/esm/components/navigation/app-level/menu-user-org.js +10 -4
  526. package/dist/esm/components/navigation/app-level/menu-user-org.js.map +1 -1
  527. package/dist/esm/components/navigation/app-level/menu-user-org.labels.d.ts.map +1 -1
  528. package/dist/esm/components/navigation/app-level/menu-user-org.labels.js +7 -0
  529. package/dist/esm/components/navigation/app-level/menu-user-org.labels.js.map +1 -1
  530. package/dist/esm/components/navigation/app-level/menubar.d.ts.map +1 -1
  531. package/dist/esm/components/navigation/app-level/menubar.js +36 -14
  532. package/dist/esm/components/navigation/app-level/menubar.js.map +1 -1
  533. package/dist/esm/components/navigation/app-level/menubar.labels.d.ts.map +1 -1
  534. package/dist/esm/components/navigation/app-level/navigation-back.d.ts.map +1 -1
  535. package/dist/esm/components/navigation/app-level/navigation-back.js +31 -5
  536. package/dist/esm/components/navigation/app-level/navigation-back.js.map +1 -1
  537. package/dist/esm/components/navigation/app-level/navigation-back.labels.d.ts.map +1 -1
  538. package/dist/esm/components/navigation/app-level/notification-center.d.ts.map +1 -1
  539. package/dist/esm/components/navigation/app-level/notification-center.js.map +1 -1
  540. package/dist/esm/components/navigation/app-level/notification-center.labels.d.ts.map +1 -1
  541. package/dist/esm/components/navigation/app-level/notification-center.labels.js +15 -0
  542. package/dist/esm/components/navigation/app-level/notification-center.labels.js.map +1 -1
  543. package/dist/esm/components/navigation/app-level/quick-action-button.d.ts.map +1 -1
  544. package/dist/esm/components/navigation/app-level/quick-action-button.labels.d.ts.map +1 -1
  545. package/dist/esm/components/navigation/app-level/quick-action-button.labels.js +4 -0
  546. package/dist/esm/components/navigation/app-level/quick-action-button.labels.js.map +1 -1
  547. package/dist/esm/components/navigation/app-level/quick-switcher.d.ts.map +1 -1
  548. package/dist/esm/components/navigation/app-level/quick-switcher.labels.d.ts.map +1 -1
  549. package/dist/esm/components/navigation/app-level/sidebar.d.ts.map +1 -1
  550. package/dist/esm/components/navigation/app-level/sidebar.js +41 -25
  551. package/dist/esm/components/navigation/app-level/sidebar.js.map +1 -1
  552. package/dist/esm/components/navigation/app-level/sidebar.labels.d.ts.map +1 -1
  553. package/dist/esm/components/navigation/app-level/sidebar.labels.js +1 -0
  554. package/dist/esm/components/navigation/app-level/sidebar.labels.js.map +1 -1
  555. package/dist/esm/components/navigation/app-level/status-bar.d.ts.map +1 -1
  556. package/dist/esm/components/navigation/app-level/status-bar.js +2 -2
  557. package/dist/esm/components/navigation/app-level/status-bar.js.map +1 -1
  558. package/dist/esm/components/navigation/app-level/status-bar.labels.d.ts.map +1 -1
  559. package/dist/esm/components/navigation/app-level/toolbar.d.ts.map +1 -1
  560. package/dist/esm/components/navigation/app-level/toolbar.js +2 -2
  561. package/dist/esm/components/navigation/app-level/toolbar.js.map +1 -1
  562. package/dist/esm/components/navigation/app-level/toolbar.labels.d.ts.map +1 -1
  563. package/dist/esm/components/navigation/app-level/utility-panel.d.ts.map +1 -1
  564. package/dist/esm/components/navigation/app-level/utility-panel.js +24 -6
  565. package/dist/esm/components/navigation/app-level/utility-panel.js.map +1 -1
  566. package/dist/esm/components/navigation/app-level/utility-panel.labels.d.ts.map +1 -1
  567. package/dist/esm/components/navigation/app-level/utility-panel.labels.js.map +1 -1
  568. package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
  569. package/dist/esm/components/navigation/breadcrumb.js +1 -1
  570. package/dist/esm/components/navigation/breadcrumb.js.map +1 -1
  571. package/dist/esm/components/navigation/breadcrumb.labels.d.ts.map +1 -1
  572. package/dist/esm/components/navigation/command.d.ts.map +1 -1
  573. package/dist/esm/components/navigation/command.js +2 -2
  574. package/dist/esm/components/navigation/command.js.map +1 -1
  575. package/dist/esm/components/navigation/command.labels.d.ts.map +1 -1
  576. package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
  577. package/dist/esm/components/navigation/menu-bar.labels.d.ts.map +1 -1
  578. package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
  579. package/dist/esm/components/navigation/navbar.labels.d.ts.map +1 -1
  580. package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
  581. package/dist/esm/components/navigation/sidebar.labels.d.ts.map +1 -1
  582. package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
  583. package/dist/esm/components/overlays/containers/alert-dialog.js +11 -1
  584. package/dist/esm/components/overlays/containers/alert-dialog.js.map +1 -1
  585. package/dist/esm/components/overlays/containers/alert-dialog.labels.d.ts.map +1 -1
  586. package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
  587. package/dist/esm/components/overlays/containers/alert.labels.d.ts.map +1 -1
  588. package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
  589. package/dist/esm/components/overlays/containers/dialog.js +11 -1
  590. package/dist/esm/components/overlays/containers/dialog.js.map +1 -1
  591. package/dist/esm/components/overlays/containers/dialog.labels.d.ts.map +1 -1
  592. package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
  593. package/dist/esm/components/overlays/containers/drawer.labels.d.ts.map +1 -1
  594. package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
  595. package/dist/esm/components/overlays/containers/sheet.labels.d.ts.map +1 -1
  596. package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
  597. package/dist/esm/components/overlays/floating/context-menu.labels.d.ts.map +1 -1
  598. package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
  599. package/dist/esm/components/overlays/floating/dropdown-menu.labels.d.ts.map +1 -1
  600. package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
  601. package/dist/esm/components/overlays/floating/hover-card.labels.d.ts.map +1 -1
  602. package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
  603. package/dist/esm/components/overlays/floating/popover.labels.d.ts.map +1 -1
  604. package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
  605. package/dist/esm/components/overlays/floating/tooltip.labels.d.ts.map +1 -1
  606. package/dist/esm/components/sections/accordion.d.ts.map +1 -1
  607. package/dist/esm/components/sections/accordion.labels.d.ts.map +1 -1
  608. package/dist/esm/components/sections/card.d.ts.map +1 -1
  609. package/dist/esm/components/sections/card.js +71 -6
  610. package/dist/esm/components/sections/card.js.map +1 -1
  611. package/dist/esm/components/sections/card.labels.d.ts.map +1 -1
  612. package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
  613. package/dist/esm/components/sections/collapsible.labels.d.ts.map +1 -1
  614. package/dist/esm/components/sections/content-section.d.ts.map +1 -1
  615. package/dist/esm/components/sections/content-section.js +36 -6
  616. package/dist/esm/components/sections/content-section.js.map +1 -1
  617. package/dist/esm/components/sections/disclosure-nesting.d.ts.map +1 -1
  618. package/dist/esm/components/sections/option-gesture.d.ts +15 -0
  619. package/dist/esm/components/sections/option-gesture.d.ts.map +1 -0
  620. package/dist/esm/components/sections/option-gesture.js +66 -0
  621. package/dist/esm/components/sections/option-gesture.js.map +1 -0
  622. package/dist/esm/components/sections/pagination.d.ts.map +1 -1
  623. package/dist/esm/components/sections/pagination.labels.d.ts.map +1 -1
  624. package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
  625. package/dist/esm/components/sections/stacked-layout.labels.d.ts.map +1 -1
  626. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  627. package/dist/esm/components/sections/stepper.js +5 -3
  628. package/dist/esm/components/sections/stepper.js.map +1 -1
  629. package/dist/esm/components/sections/stepper.labels.d.ts.map +1 -1
  630. package/dist/esm/components/sections/table.d.ts.map +1 -1
  631. package/dist/esm/components/sections/table.labels.d.ts.map +1 -1
  632. package/dist/esm/components/sections/tabs.d.ts.map +1 -1
  633. package/dist/esm/components/sections/tabs.js +60 -15
  634. package/dist/esm/components/sections/tabs.js.map +1 -1
  635. package/dist/esm/components/sections/tabs.labels.d.ts.map +1 -1
  636. package/dist/esm/components/typography/heading.d.ts.map +1 -1
  637. package/dist/esm/components/typography/heading.labels.d.ts.map +1 -1
  638. package/dist/esm/components/typography/label.d.ts.map +1 -1
  639. package/dist/esm/components/typography/label.labels.d.ts.map +1 -1
  640. package/dist/esm/components/typography/link.d.ts.map +1 -1
  641. package/dist/esm/components/typography/link.js +9 -3
  642. package/dist/esm/components/typography/link.js.map +1 -1
  643. package/dist/esm/components/typography/link.labels.d.ts.map +1 -1
  644. package/dist/esm/components/typography/text.d.ts +1 -1
  645. package/dist/esm/components/typography/text.d.ts.map +1 -1
  646. package/dist/esm/components/typography/text.js +3 -2
  647. package/dist/esm/components/typography/text.js.map +1 -1
  648. package/dist/esm/components/typography/text.labels.d.ts.map +1 -1
  649. package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
  650. package/dist/esm/config/billing-shell.presets.d.ts.map +1 -1
  651. package/dist/esm/config/index.d.ts.map +1 -1
  652. package/dist/esm/config/preset-design-system.d.ts.map +1 -1
  653. package/dist/esm/config/preset-design-system.js +37 -60
  654. package/dist/esm/config/preset-design-system.js.map +1 -1
  655. package/dist/esm/config/preset-error-pages.d.ts.map +1 -1
  656. package/dist/esm/config/preset-kits.d.ts.map +1 -1
  657. package/dist/esm/config/preset-navigation.d.ts.map +1 -1
  658. package/dist/esm/config/preset-navigation.js +23 -7
  659. package/dist/esm/config/preset-navigation.js.map +1 -1
  660. package/dist/esm/config/preset-resources.d.ts.map +1 -1
  661. package/dist/esm/config/preset-shell.d.ts.map +1 -1
  662. package/dist/esm/config/preset-utils.d.ts.map +1 -1
  663. package/dist/esm/config/presets.d.ts.map +1 -1
  664. package/dist/esm/config/resources/agent-work.resource-presets.d.ts +4 -0
  665. package/dist/esm/config/resources/agent-work.resource-presets.d.ts.map +1 -0
  666. package/dist/esm/config/resources/agent-work.resource-presets.js +115 -0
  667. package/dist/esm/config/resources/agent-work.resource-presets.js.map +1 -0
  668. package/dist/esm/config/resources/api-key-rotation-window.d.ts +22 -0
  669. package/dist/esm/config/resources/api-key-rotation-window.d.ts.map +1 -0
  670. package/dist/esm/config/resources/api-key-rotation-window.js +45 -0
  671. package/dist/esm/config/resources/api-key-rotation-window.js.map +1 -0
  672. package/dist/esm/config/resources/application.resource-presets.d.ts +2 -0
  673. package/dist/esm/config/resources/application.resource-presets.d.ts.map +1 -1
  674. package/dist/esm/config/resources/application.resource-presets.js +268 -26
  675. package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
  676. package/dist/esm/config/resources/billing.resource-presets.d.ts +4 -3
  677. package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
  678. package/dist/esm/config/resources/billing.resource-presets.js +241 -111
  679. package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
  680. package/dist/esm/config/resources/conversation-threads.resource-presets.d.ts +4 -0
  681. package/dist/esm/config/resources/conversation-threads.resource-presets.d.ts.map +1 -0
  682. package/dist/esm/config/resources/conversation-threads.resource-presets.js +105 -0
  683. package/dist/esm/config/resources/conversation-threads.resource-presets.js.map +1 -0
  684. package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
  685. package/dist/esm/config/resources/guidance.resource-presets.js +39 -16
  686. package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
  687. package/dist/esm/config/resources/identity.resource-presets.d.ts +0 -13
  688. package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
  689. package/dist/esm/config/resources/identity.resource-presets.js +71 -17
  690. package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
  691. package/dist/esm/config/resources/inbound-deliveries.resource-presets.d.ts +6 -0
  692. package/dist/esm/config/resources/inbound-deliveries.resource-presets.d.ts.map +1 -0
  693. package/dist/esm/config/resources/inbound-deliveries.resource-presets.js +112 -0
  694. package/dist/esm/config/resources/inbound-deliveries.resource-presets.js.map +1 -0
  695. package/dist/esm/config/resources/inbound-email.resource-presets.d.ts +4 -0
  696. package/dist/esm/config/resources/inbound-email.resource-presets.d.ts.map +1 -0
  697. package/dist/esm/config/resources/inbound-email.resource-presets.js +182 -0
  698. package/dist/esm/config/resources/inbound-email.resource-presets.js.map +1 -0
  699. package/dist/esm/config/resources/index.d.ts.map +1 -1
  700. package/dist/esm/config/resources/index.js +9 -2
  701. package/dist/esm/config/resources/index.js.map +1 -1
  702. package/dist/esm/config/resources/legal-holds.resource-presets.d.ts +4 -0
  703. package/dist/esm/config/resources/legal-holds.resource-presets.d.ts.map +1 -0
  704. package/dist/esm/config/resources/legal-holds.resource-presets.js +76 -0
  705. package/dist/esm/config/resources/legal-holds.resource-presets.js.map +1 -0
  706. package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
  707. package/dist/esm/config/resources/organizations.resource-presets.js +216 -35
  708. package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
  709. package/dist/esm/config/resources/resource.config.utils.d.ts +20 -0
  710. package/dist/esm/config/resources/resource.config.utils.d.ts.map +1 -1
  711. package/dist/esm/config/resources/resource.config.utils.js +20 -0
  712. package/dist/esm/config/resources/resource.config.utils.js.map +1 -1
  713. package/dist/esm/config/resources/retention-enforcement.resource-presets.d.ts +5 -0
  714. package/dist/esm/config/resources/retention-enforcement.resource-presets.d.ts.map +1 -0
  715. package/dist/esm/config/resources/retention-enforcement.resource-presets.js +74 -0
  716. package/dist/esm/config/resources/retention-enforcement.resource-presets.js.map +1 -0
  717. package/dist/esm/config/resources/security.resource-presets.d.ts +11 -3
  718. package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
  719. package/dist/esm/config/resources/security.resource-presets.js +685 -99
  720. package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
  721. package/dist/esm/config/resources/service-providers.resource-presets.d.ts +4 -0
  722. package/dist/esm/config/resources/service-providers.resource-presets.d.ts.map +1 -0
  723. package/dist/esm/config/resources/service-providers.resource-presets.js +321 -0
  724. package/dist/esm/config/resources/service-providers.resource-presets.js.map +1 -0
  725. package/dist/esm/config/resources/webhooks.resource-presets.d.ts +4 -3
  726. package/dist/esm/config/resources/webhooks.resource-presets.d.ts.map +1 -1
  727. package/dist/esm/config/resources/webhooks.resource-presets.js +102 -26
  728. package/dist/esm/config/resources/webhooks.resource-presets.js.map +1 -1
  729. package/dist/esm/index.d.ts +7 -1
  730. package/dist/esm/index.d.ts.map +1 -1
  731. package/dist/esm/index.js +7 -1
  732. package/dist/esm/index.js.map +1 -1
  733. package/dist/esm/lottie/lottie.content.definitions.d.ts.map +1 -1
  734. package/dist/esm/lottie/lottie.definitions.d.ts.map +1 -1
  735. package/dist/esm/mermaid-stub.d.ts.map +1 -1
  736. package/dist/esm/registration/register-common-enums.d.ts.map +1 -1
  737. package/dist/esm/registration/register-common-enums.js +63 -34
  738. package/dist/esm/registration/register-common-enums.js.map +1 -1
  739. package/dist/esm/registration/register-default-animations.d.ts.map +1 -1
  740. package/dist/esm/registration/register-default-icons.d.ts.map +1 -1
  741. package/dist/esm/registration/register-default-icons.js +3 -1
  742. package/dist/esm/registration/register-default-icons.js.map +1 -1
  743. package/dist/esm/registration/register-default-presets.d.ts.map +1 -1
  744. package/dist/esm/registration/register-default-presets.js +32 -4
  745. package/dist/esm/registration/register-default-presets.js.map +1 -1
  746. package/dist/esm/registration/register-provider-components.d.ts.map +1 -1
  747. package/dist/esm/registration/register-provider-components.js +11 -0
  748. package/dist/esm/registration/register-provider-components.js.map +1 -1
  749. package/dist/esm/shiki-subset.d.ts +11 -3
  750. package/dist/esm/shiki-subset.d.ts.map +1 -1
  751. package/dist/esm/shiki-subset.js +10 -2
  752. package/dist/esm/shiki-subset.js.map +1 -1
  753. package/dist/esm/theme-exports.d.ts.map +1 -1
  754. package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
  755. package/dist/esm/themes/cozy.theme.js +19 -5
  756. package/dist/esm/themes/cozy.theme.js.map +1 -1
  757. package/dist/esm/themes/dense.theme.d.ts.map +1 -1
  758. package/dist/esm/themes/dense.theme.js +76 -10
  759. package/dist/esm/themes/dense.theme.js.map +1 -1
  760. package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
  761. package/dist/esm/themes/editorial.theme.js +19 -5
  762. package/dist/esm/themes/editorial.theme.js.map +1 -1
  763. package/dist/esm/themes/glass.theme.d.ts.map +1 -1
  764. package/dist/esm/themes/glass.theme.js +5 -1
  765. package/dist/esm/themes/glass.theme.js.map +1 -1
  766. package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
  767. package/dist/esm/themes/neo-brutalist.theme.js +9 -2
  768. package/dist/esm/themes/neo-brutalist.theme.js.map +1 -1
  769. package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
  770. package/dist/esm/themes/terminal.theme.js +19 -5
  771. package/dist/esm/themes/terminal.theme.js.map +1 -1
  772. package/dist/esm/themes/trading.theme.d.ts.map +1 -1
  773. package/dist/esm/themes/trading.theme.js +22 -6
  774. package/dist/esm/themes/trading.theme.js.map +1 -1
  775. package/dist/tsconfig.build.tsbuildinfo +1 -1
  776. package/package.json +31 -45
  777. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts +0 -16
  778. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +0 -1
  779. package/dist/esm/components/form/controls/form-field-checkbox-group.js +0 -143
  780. package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +0 -1
@@ -1,9 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { RelatedResourceSections, resourceUIBehavior, resourceUIBehaviorFrom, polymorphicResourceUIBehavior, StandardIconReference, SummaryFlow, SummaryMeta, SummaryTitle, } from '@wildo-ai/saas-frontend-lib';
3
- import { useFormTemplateContext, useDisplayTemplateContext, DisplayField, DisplayLayout, FormField, FormLayout, ObjectScope, Section, SummaryLayout, } from '@wildo-ai/saas-frontend-lib';
2
+ import { RelatedResourceSections, ResourceHeaderTitle, resourceUIBehavior, resourceUIBehaviorFrom, polymorphicResourceUIBehavior, StandardIconReference, SummaryFlow, SummaryMeta, SummaryTitle, unresolvedLabel, } from '@wildo-ai/saas-frontend-lib';
3
+ import { useDisplayTemplateContext, DisplayField, DisplayLayout, FormField, FormLayout, ObjectScope, Section, SummaryLayout, } from '@wildo-ai/saas-frontend-lib';
4
4
  import { BadgeSemanticVariant, BooleanDisplayMode, BooleanEditMode, BooleanLabellingValue, SectionMode, DisplayChromeMode, EditChromeMode, EnumDisplayMode, FormFieldComponent, NumberDisplayMode, StringDisplayMode, } from '@wildo-ai/zod-decorators';
5
- import { Package, Layers, Puzzle, Gauge, CircleDot, Coins, ShoppingBag, Hash, Layers2, TrendingUp, Package as PackageIcon, Calendar, CalendarDays, Ticket, KeyRound, Gift, Handshake, Percent, Banknote, Clock, UserCheck, CheckCircle2, TimerOff, CircleX, Building2, User, Ban, AlertTriangle, Wallet, Loader, OctagonX, PauseCircle, Sparkles, Square, Repeat, Infinity, FileText, BarChart3, BadgeCheck, PowerOff, ShoppingCart, ExternalLink, Info, CirclePlay, ArrowRightLeft, PackagePlus, PackageMinus, CirclePlus, } from 'lucide-react';
6
- import { CoreResourceType as R, CoreResourceOperation as Op, Promotion_Operations, BillingAccount_Operations, BillingSubscription_Operations, CreditPool_Operations, productsResourceConfiguration_InitializationFactory as productsFactory, pricesResourceConfiguration_InitializationFactory as pricesFactory, referralsResourceConfiguration_InitializationFactory as referralsFactory, promotionsResourceConfiguration_InitializationFactory as promotionsFactory, billingAccountsPolymorphicFactories, billingSubscriptionsPolymorphicFactories, creditPoolsPolymorphicFactories, invoiceRefsPolymorphicFactories, usageRecordsPolymorphicFactories, ProductSchema, PriceSchema, ReferralSchema, PromotionSchema, BillingAccountBaseSchema, BillingSubscriptionBaseSchema, CreditPoolSchema, InvoiceRefSchema, UsageRecordSchema, ReferralStatus, SubscriptionStatus, InvoiceStatus, BillingScopeType, PromotionDuration, ProductType, PricingModel, BillingInterval, PromotionType, DiscountType, } from '@wildo-ai/saas-models';
5
+ import { Package, Layers, Puzzle, Gauge, CircleDot, Coins, ShoppingBag, Hash, Layers2, TrendingUp, Package as PackageIcon, Calendar, CalendarDays, Ticket, KeyRound, Gift, Handshake, Percent, Banknote, Clock, UserCheck, CheckCircle2, TimerOff, CircleX, Building2, User, Ban, AlertTriangle, Wallet, Loader, OctagonX, PauseCircle, Sparkles, Square, Repeat, Infinity, FileText, BarChart3, BadgeCheck, PowerOff, ShoppingCart, ExternalLink, Info, CirclePlay, CalendarX2, ArrowRightLeft, PackagePlus, PackageMinus, CirclePlus, } from 'lucide-react';
6
+ import { CoreResourceType as R, CoreResourceOperation as Op, Promotion_Operations, BillingAccount_Operations, Referral_Operations, BillingSubscription_Operations, CreditPool_Operations, productsResourceConfiguration_InitializationFactory as productsFactory, pricesResourceConfiguration_InitializationFactory as pricesFactory, referralsResourceConfiguration_InitializationFactory as referralsFactory, promotionsResourceConfiguration_InitializationFactory as promotionsFactory, billingAccountsPolymorphicFactories, billingSubscriptionsPolymorphicFactories, creditPoolsPolymorphicFactories, invoiceRefsPolymorphicFactories, usageRecordsPolymorphicFactories, ProductSchema, PriceSchema, ReferralSchema, PromotionSchema, BillingAccountBaseSchema, BillingSubscriptionBaseSchema, CreditPoolSchema, InvoiceRefSchema, UsageRecordSchema, ReferralStatus, SubscriptionStatus, InvoiceStatus, BillingScopeType, PromotionDuration, ProductType, ProductAvailability, PricingModel, BillingInterval, PromotionType, DiscountType, } from '@wildo-ai/saas-models';
7
+ import { LabellingTypes } from '@wildo-ai/presets-components-models';
7
8
  import { notAddressable, apiOnly } from './resource.config.utils.js';
8
9
  export function buildBillingMainPresets() {
9
10
  /**
@@ -25,38 +26,61 @@ export function buildBillingMainPresets() {
25
26
  return {
26
27
  [R.PRODUCTS]: resourceUIBehavior(productsFactory, ProductSchema, ({ schema, schemaShape, opsVariantResolver }) => ({
27
28
  icon: Package,
28
- emptyState: { primaryAction: Op.CREATE },
29
29
  layout: {
30
+ // No `tax` section any more: it was a heading over one field. The tax display mode is a commercial
31
+ // term of the product, so it sits in `overview` with the other terms.
30
32
  refs: {
31
- sections: ['overview', 'tax', 'purchase', 'behavior', 'visibility'],
33
+ sections: ['overview', 'purchase', 'behavior', 'visibility'],
32
34
  },
35
+ // A catalogue entry is configuration: settings rows on read and edit, bare values on a card.
33
36
  defaultChromeMode: {
34
- display: DisplayChromeMode.STACKED,
35
- summary: DisplayChromeMode.INLINE,
37
+ display: DisplayChromeMode.SETTINGS_ROW,
38
+ summary: DisplayChromeMode.HIDDEN,
36
39
  edit: EditChromeMode.SETTINGS_ROW,
37
40
  },
38
- edit: () => {
39
- const { isExisting, operationType } = useFormTemplateContext();
40
- return (_jsxs(FormLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(FormField, { name: "key" }), _jsx(FormField, { name: "type" }), _jsx(FormField, { name: "planTier" }), _jsx(FormField, { name: "planTierOrder" }), _jsx(FormField, { name: "requiredPlanTiers" }), _jsx(FormField, { name: "targetScopes" }), _jsx(FormField, { name: "grantedFeatures" }), _jsx(FormField, { name: "grantedLimits" }), _jsx(FormField, { name: "sortOrder" })] }), _jsx(Section, { name: "tax", children: _jsx(FormField, { name: "taxDisplayMode" }) }), _jsx(Section, { name: "purchase", appearance: SectionMode.CARD, children: _jsxs(ObjectScope, { name: "purchaseConfig", children: [_jsx(FormField, { name: "maxQuantityPerPurchase" }), _jsx(FormField, { name: "creditsPerUnit" }), _jsx(FormField, { name: "creditPoolKey" })] }) }), _jsx(Section, { name: "behavior", children: _jsx(FormField, { name: "behaviorPolicy" }) }), _jsxs(Section, { name: "visibility", children: [_jsx(FormField, { name: "isPublic" }), _jsx(FormField, { name: "isActive" }), _jsx(FormField, { name: "metadata" })] })] }));
41
- },
41
+ // The identity line: the product's name (the record's label, its word — #1851), what KIND of product it is, and whether new
42
+ // checkouts can buy it. None of the three is repeated below.
43
+ header: () => (_jsxs("div", { className: "flex min-w-0 flex-wrap items-center gap-field", children: [_jsx(ResourceHeaderTitle, {}), _jsx(DisplayField, { name: "type", hideLabel: true, hideDescription: true, className: "w-auto" }), _jsx(DisplayField, { name: "isActive", hideLabel: true, hideDescription: true, className: "w-auto" })] })),
44
+ /*
45
+ * The form carries what can be CHANGED. `key`, `type`, `grantedFeatures` and `grantedLimits` are
46
+ * `isNotEditable` — they are set when the product is materialized from its definition — so on a form
47
+ * they were four read-only rows restating the read page. The first editable term takes the focus.
48
+ */
49
+ edit: () => (_jsxs(FormLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(FormField, { name: "planTier", autoFocus: true }), _jsx(FormField, { name: "planTierOrder" }), _jsx(FormField, { name: "requiredPlanTiers" }), _jsx(FormField, { name: "targetScopes" }), _jsx(FormField, { name: "taxDisplayMode" })] }), _jsx(Section, { name: "purchase", appearance: SectionMode.CARD, children: _jsxs(ObjectScope, { name: "purchaseConfig", children: [_jsx(FormField, { name: "maxQuantityPerPurchase" }), _jsx(FormField, { name: "creditsPerUnit" }), _jsx(FormField, { name: "creditPoolKey" })] }) }), _jsx(Section, { name: "behavior", children: _jsx(FormField, { name: "behaviorPolicy" }) }), _jsxs(Section, { name: "visibility", children: [_jsx(FormField, { name: "isPublic" }), _jsx(FormField, { name: "isActive" }), _jsx(FormField, { name: "sortOrder" }), _jsx(FormField, { name: "metadata" })] })] })),
50
+ /*
51
+ * Read: the header names the product, its type and its availability, so the body starts at the terms.
52
+ * No read section carries a description — "Does not set legal tax rates", "Backend enforcement lives in
53
+ * services" were notes to an engineer, on a page an operator reads. The purchase and behaviour blocks only
54
+ * exist for some product types, so they render only when the product carries them; an add-on used to show
55
+ * a "Purchase settings" card of three dashes.
56
+ */
42
57
  display: () => {
43
- const { data, isLoading } = useDisplayTemplateContext();
44
- return (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "key" }), _jsx(DisplayField, { name: "type" }), _jsx(DisplayField, { name: "planTier" }), _jsx(DisplayField, { name: "planTierOrder" }), _jsx(DisplayField, { name: "sortOrder" }), _jsx(DisplayField, { name: "targetScopes" }), _jsx(DisplayField, { name: "grantedFeatures" }), _jsx(DisplayField, { name: "grantedLimits" })] }), _jsx(Section, { name: "tax", children: _jsx(DisplayField, { name: "taxDisplayMode" }) }), _jsx(Section, { name: "purchase", appearance: SectionMode.CARD, children: _jsxs(ObjectScope, { name: "purchaseConfig", children: [_jsx(DisplayField, { name: "maxQuantityPerPurchase" }), _jsx(DisplayField, { name: "creditsPerUnit" }), _jsx(DisplayField, { name: "creditPoolKey" })] }) }), _jsx(Section, { name: "behavior", children: _jsx(DisplayField, { name: "behaviorPolicy" }) }), _jsxs(Section, { name: "visibility", children: [_jsx(DisplayField, { name: "isPublic" }), _jsx(DisplayField, { name: "isActive" }), _jsx(DisplayField, { name: "metadata" })] }), _jsx(RelatedResourceSections, { config: { mode: SectionMode.TABS }, targets: [R.PRICES] })] }));
58
+ const { data } = useDisplayTemplateContext();
59
+ const purchase = data?.purchaseConfig;
60
+ const purchaseHas = (key) => purchase?.[key] !== undefined && purchase?.[key] !== null;
61
+ const hasPurchase = purchaseHas('maxQuantityPerPurchase') || purchaseHas('creditsPerUnit') || purchaseHas('creditPoolKey');
62
+ const behavior = data?.behaviorPolicy;
63
+ const hasBehavior = !!behavior && Object.keys(behavior).length > 0;
64
+ return (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, hideDescription: true, children: [_jsx(DisplayField, { name: "key" }), _jsx(DisplayField, { name: "planTier" }), _jsx(DisplayField, { name: "planTierOrder" }), _jsx(DisplayField, { name: "requiredPlanTiers" }), _jsx(DisplayField, { name: "targetScopes" }), _jsx(DisplayField, { name: "grantedFeatures" }), _jsx(DisplayField, { name: "grantedLimits" }), _jsx(DisplayField, { name: "taxDisplayMode" })] }), hasPurchase && (_jsx(Section, { name: "purchase", appearance: SectionMode.CARD, hideDescription: true, children: _jsxs(ObjectScope, { name: "purchaseConfig", children: [purchaseHas('maxQuantityPerPurchase') && _jsx(DisplayField, { name: "maxQuantityPerPurchase" }), purchaseHas('creditsPerUnit') && _jsx(DisplayField, { name: "creditsPerUnit" }), purchaseHas('creditPoolKey') && _jsx(DisplayField, { name: "creditPoolKey" })] }) })), hasBehavior && (_jsx(Section, { name: "behavior", chromeMode: DisplayChromeMode.HIDDEN, hideDescription: true, children: _jsx(DisplayField, { name: "behaviorPolicy" }) })), _jsxs(Section, { name: "visibility", hideDescription: true, children: [_jsx(DisplayField, { name: "isPublic" }), _jsx(DisplayField, { name: "sortOrder" }), _jsx(DisplayField, { name: "isRecommended" }), _jsx(DisplayField, { name: "priceDisclosure" }), _jsx(DisplayField, { name: "availability" }), _jsx(DisplayField, { name: "metadata" })] }), _jsx(RelatedResourceSections, { config: { mode: SectionMode.TABS }, targets: [R.PRICES] })] }));
45
65
  },
66
+ /*
67
+ * A catalogue card: the product's name, its key, the type badge, the tier. The title is the host-resolved name
68
+ * (the application's word for the product, #1851) — `name="key"` rendered the raw key where the word
69
+ * belonged. The key stays on the card as a meta value because an operator also identifies a product by it.
70
+ * Availability shows only when it is the EXCEPTION — nearly every product is active and public, and a
71
+ * checkmark on every card was a column of noise that hid the one product that is not. The record id is gone.
72
+ */
46
73
  summary: () => {
47
- const { data, isLoading } = useDisplayTemplateContext();
48
- return (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "key" }), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "type" }), _jsx(DisplayField, { name: "planTier" }), _jsx(DisplayField, { name: "isPublic" }), _jsx(DisplayField, { name: "isActive" })] }), _jsx(DisplayField, { name: "_id", hideLabel: true, className: "text-muted-foreground text-xs font-mono truncate max-w-full" })] }));
74
+ const { data } = useDisplayTemplateContext();
75
+ const product = data;
76
+ return (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, {}), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "key" }), _jsx(DisplayField, { name: "type" }), _jsx(DisplayField, { name: "planTier" }), product?.isActive === false && _jsx(DisplayField, { name: "isActive" }), product?.isPublic === false && _jsx(DisplayField, { name: "isPublic" }), product?.availability === ProductAvailability.UPCOMING && _jsx(DisplayField, { name: "availability" }), product?.isRecommended === true && _jsx(DisplayField, { name: "isRecommended" })] })] }));
49
77
  },
50
78
  },
51
79
  fields: {
52
80
  _id: schemaShape._id.isHidden(),
53
- key: schemaShape.key.stringUI({
54
- display: { displayMode: StringDisplayMode.COPY, showDescription: true },
55
- edit: { showDescription: true },
56
- }),
81
+ key: schemaShape.key.stringUI({ display: { displayMode: StringDisplayMode.COPY } }),
57
82
  type: schemaShape.type.enumUI({
58
- display: { displayMode: EnumDisplayMode.BADGE, showDescription: true },
59
- edit: { showDescription: true },
83
+ display: { displayMode: EnumDisplayMode.BADGE },
60
84
  values: {
61
85
  [ProductType.PLAN]: { color: BadgeSemanticVariant.INFO, icon: Layers },
62
86
  [ProductType.ADDON]: { color: BadgeSemanticVariant.SECONDARY, icon: Puzzle },
@@ -66,57 +90,94 @@ export function buildBillingMainPresets() {
66
90
  [ProductType.ITEM]: { color: BadgeSemanticVariant.DEFAULT, icon: ShoppingBag },
67
91
  },
68
92
  }),
93
+ // Keeps its description on the FORM only: what a tier is for (plan comparison) is not obvious from the
94
+ // word. On a card the bare tier ("premium") beside the type badge read as a second product name, so the
95
+ // card keeps its label.
69
96
  planTier: schemaShape.planTier.stringUI({
70
- display: { displayMode: StringDisplayMode.TRUNCATE, truncateLength: 48, showDescription: true },
71
- edit: { showDescription: true },
72
- }),
73
- sortOrder: schemaShape.sortOrder.numberUI({
74
- display: { displayMode: NumberDisplayMode.FORMATTED, showDescription: true },
97
+ display: { displayMode: StringDisplayMode.TRUNCATE, truncateLength: 48, hideWhenEmpty: true },
98
+ summaryOverride: { chromeMode: DisplayChromeMode.INLINE },
75
99
  edit: { showDescription: true },
76
100
  }),
101
+ planTierOrder: schemaShape.planTierOrder.numberUI({ display: { hideWhenEmpty: true } }),
102
+ requiredPlanTiers: schemaShape.requiredPlanTiers.arrayUI({ display: { hideWhenEmpty: true } }),
103
+ grantedFeatures: schemaShape.grantedFeatures.arrayUI({ display: { hideWhenEmpty: true } }),
104
+ grantedLimits: schemaShape.grantedLimits.objectUI({ display: { hideWhenEmpty: true } }),
105
+ sortOrder: schemaShape.sortOrder.numberUI({ display: { displayMode: NumberDisplayMode.FORMATTED } }),
106
+ // Read as a word ("Active" / "Inactive") because it stands alone in the header and, when inactive, on a
107
+ // card: a bare checkmark there says nothing about what is checked. The form keeps its description — what
108
+ // "active" governs (new checkouts only) is not obvious.
77
109
  isActive: schemaShape.isActive.booleanUI({
78
110
  labellingValue: BooleanLabellingValue.ACTIVE_INACTIVE,
79
- display: { displayMode: BooleanDisplayMode.CHECKMARK, showDescription: true },
111
+ display: { displayMode: BooleanDisplayMode.RAW },
80
112
  edit: { editMode: BooleanEditMode.SWITCH, showDescription: true },
81
113
  }),
114
+ // A bare "No" on a card would not say what is not; the card keeps the label. The form keeps the description
115
+ // (public = listed in self-serve catalogues).
82
116
  isPublic: schemaShape.isPublic.booleanUI({
83
117
  labellingValue: BooleanLabellingValue.YES_NO,
84
- display: { displayMode: BooleanDisplayMode.CHECKMARK, showDescription: true },
118
+ display: { displayMode: BooleanDisplayMode.CHECKMARK },
119
+ summaryOverride: { chromeMode: DisplayChromeMode.INLINE },
85
120
  edit: { editMode: BooleanEditMode.SWITCH, showDescription: true },
86
121
  }),
87
- taxDisplayMode: schemaShape.taxDisplayMode.enumUI({ display: { tooltip: true }, edit: { tooltip: true } }),
122
+ // On a card only when true (see the summary above), and for the same reason as `isPublic` the card keeps the
123
+ // label: a bare checkmark beside the tier would not say WHAT is checked. Set by the catalogue sync, so there is
124
+ // no edit configuration.
125
+ isRecommended: schemaShape.isRecommended.booleanUI({
126
+ labellingValue: BooleanLabellingValue.YES_NO,
127
+ display: { displayMode: BooleanDisplayMode.CHECKMARK },
128
+ summaryOverride: { chromeMode: DisplayChromeMode.INLINE },
129
+ }),
130
+ taxDisplayMode: schemaShape.taxDisplayMode.enumUI({ display: { hideWhenEmpty: true }, edit: { tooltip: true } }),
131
+ metadata: schemaShape.metadata.objectUI({ display: { hideWhenEmpty: true } }),
132
+ },
133
+ /*
134
+ * A product is named by the application's word for it (`billing_products.<key>.name`), never by its key (#1851).
135
+ * The key stays on the page as a copyable row. A product with no authored word answers its key, which LOOKS
136
+ * missing and gets authored. The section is declared so the registry loads it for every surface that names a
137
+ * product — a list row, the header, a subscription line's product reference, the breadcrumb of a price.
138
+ */
139
+ getFrontendResourceLabel: ({ currentObject, t }) => {
140
+ const nameKey = `${LabellingTypes.BILLING_PRODUCTS}.${currentObject.key}.name`;
141
+ const name = t(nameKey);
142
+ return name === nameKey ? unresolvedLabel(currentObject.key) : name;
88
143
  },
89
- getFrontendResourceLabel: ({ currentObject }) => currentObject.key,
144
+ instanceLabelSections: [LabellingTypes.BILLING_PRODUCTS],
90
145
  views: [],
91
146
  })),
92
147
  [R.PRICES]: resourceUIBehavior(pricesFactory, PriceSchema, ({ schema, schemaShape, opsVariantResolver }) => ({
93
148
  icon: StandardIconReference.RECEIPT,
94
- emptyState: { primaryAction: Op.CREATE },
95
149
  layout: {
96
150
  refs: { sections: ['pricing', 'tiers', 'tax', 'availability'] },
97
151
  defaultChromeMode: {
98
- display: DisplayChromeMode.STACKED,
99
- summary: DisplayChromeMode.INLINE,
152
+ display: DisplayChromeMode.SETTINGS_ROW,
153
+ summary: DisplayChromeMode.HIDDEN,
100
154
  edit: EditChromeMode.SETTINGS_ROW,
101
155
  },
102
- edit: () => {
103
- const { isExisting, operationType } = useFormTemplateContext();
104
- return (_jsxs(FormLayout, { children: [_jsxs(Section, { name: "pricing", appearance: SectionMode.CARD, children: [_jsx(FormField, { name: "productId" }), _jsx(FormField, { name: "model" }), _jsx(FormField, { name: "unitPrice" }), _jsx(FormField, { name: "interval" }), _jsx(FormField, { name: "intervalCount" })] }), _jsxs(Section, { name: "tiers", children: [_jsx(FormField, { name: "tiers" }), _jsx(FormField, { name: "packageSize" }), _jsx(FormField, { name: "usageAggregation" })] }), _jsx(Section, { name: "tax", children: _jsx(FormField, { name: "taxBehavior" }) }), _jsxs(Section, { name: "availability", chromeMode: EditChromeMode.INLINE, children: [_jsx(FormField, { name: "isDefault" }), _jsx(FormField, { name: "isActive" })] })] }));
105
- },
156
+ // The name of a price is its model and cadence (see `getFrontendResourceLabel`); the header adds whether it
157
+ // is the product's default and whether it is still sold, so neither is a body row.
158
+ header: () => (_jsxs("div", { className: "flex min-w-0 flex-wrap items-center gap-field", children: [_jsx(ResourceHeaderTitle, {}), _jsx(DisplayField, { name: "isActive", hideLabel: true, hideDescription: true, className: "w-auto" })] })),
159
+ edit: () => (_jsxs(FormLayout, { children: [_jsxs(Section, { name: "pricing", appearance: SectionMode.CARD, children: [_jsx(FormField, { name: "productId" }), _jsx(FormField, { name: "model", autoFocus: true }), _jsx(FormField, { name: "unitPrice" }), _jsx(FormField, { name: "interval" }), _jsx(FormField, { name: "intervalCount" })] }), _jsxs(Section, { name: "tiers", children: [_jsx(FormField, { name: "tiers" }), _jsx(FormField, { name: "packageSize" }), _jsx(FormField, { name: "usageAggregation" })] }), _jsx(Section, { name: "tax", children: _jsx(FormField, { name: "taxBehavior" }) }), _jsxs(Section, { name: "availability", chromeMode: EditChromeMode.INLINE, children: [_jsx(FormField, { name: "isDefault" }), _jsx(FormField, { name: "isActive" })] })] })),
160
+ /*
161
+ * Read: the amount first, then cadence. The product is not repeated — a price is read inside its product's
162
+ * page — and the model is the header. Tiers and tax only exist for some prices, so those rows hide when
163
+ * empty and their sections render only when they hold something; a flat monthly price used to show two
164
+ * headed blocks of dashes. No read section carries a description.
165
+ */
106
166
  display: () => {
107
- const { data, isLoading } = useDisplayTemplateContext();
108
- return (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "pricing", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "productId" }), _jsx(DisplayField, { name: "model" }), _jsx(DisplayField, { name: "unitPrice" }), _jsx(DisplayField, { name: "interval" }), _jsx(DisplayField, { name: "intervalCount" })] }), _jsxs(Section, { name: "tiers", children: [_jsx(DisplayField, { name: "tiers" }), _jsx(DisplayField, { name: "packageSize" }), _jsx(DisplayField, { name: "usageAggregation" })] }), _jsx(Section, { name: "tax", children: _jsx(DisplayField, { name: "taxBehavior" }) }), _jsxs(Section, { name: "availability", children: [_jsx(DisplayField, { name: "isDefault" }), _jsx(DisplayField, { name: "isActive" })] })] }));
109
- },
110
- summary: () => {
111
- const { data, isLoading } = useDisplayTemplateContext();
112
- return (_jsxs(SummaryLayout, { children: [_jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "model" }), _jsx(DisplayField, { name: "unitPrice" }), _jsx(DisplayField, { name: "interval" })] }), _jsx(DisplayField, { name: "_id", hideLabel: true, className: "text-muted-foreground text-xs font-mono truncate max-w-full" })] }));
167
+ const { data } = useDisplayTemplateContext();
168
+ const price = data;
169
+ const hasTiers = (price?.tiers?.length ?? 0) > 0 || price?.packageSize != null || price?.usageAggregation != null;
170
+ return (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "pricing", appearance: SectionMode.CARD, hideTitle: true, hideDescription: true, children: [_jsx(DisplayField, { name: "unitPrice" }), _jsx(DisplayField, { name: "interval" }), _jsx(DisplayField, { name: "intervalCount" }), _jsx(DisplayField, { name: "isDefault" })] }), hasTiers && (_jsxs(Section, { name: "tiers", hideDescription: true, children: [_jsx(DisplayField, { name: "tiers" }), _jsx(DisplayField, { name: "packageSize" }), _jsx(DisplayField, { name: "usageAggregation" })] })), price?.taxBehavior != null && (_jsx(Section, { name: "tax", hideDescription: true, children: _jsx(DisplayField, { name: "taxBehavior" }) }))] }));
113
171
  },
172
+ // A card inside the product's Prices tab: the amount, the cadence, the model — bare, each speaks for itself.
173
+ // The record id is gone.
174
+ summary: () => (_jsx(SummaryLayout, { children: _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "unitPrice" }), _jsx(DisplayField, { name: "interval" }), _jsx(DisplayField, { name: "model" })] }) })),
114
175
  },
115
176
  fields: {
116
177
  _id: schemaShape._id.isHidden(),
117
178
  model: schemaShape.model.enumUI({
118
179
  defaultColor: BadgeSemanticVariant.SECONDARY,
119
- display: { displayMode: EnumDisplayMode.BADGE, showDescription: true },
180
+ display: { displayMode: EnumDisplayMode.BADGE },
120
181
  edit: { showDescription: true },
121
182
  values: {
122
183
  [PricingModel.FLAT]: { color: BadgeSemanticVariant.SECONDARY, icon: Square },
@@ -126,48 +187,77 @@ export function buildBillingMainPresets() {
126
187
  [PricingModel.PACKAGE]: { color: BadgeSemanticVariant.OUTLINE, icon: PackageIcon },
127
188
  },
128
189
  }),
190
+ // Absent on a one-time price, which is exactly what its absence means; the header and the card say it by
191
+ // not showing a cadence.
129
192
  interval: schemaShape.interval.enumUI({
130
- display: { displayMode: EnumDisplayMode.BADGE, showDescription: true },
131
- edit: { showDescription: true },
193
+ display: { displayMode: EnumDisplayMode.BADGE, hideWhenEmpty: true },
132
194
  values: {
133
195
  [BillingInterval.MONTH]: { color: BadgeSemanticVariant.SECONDARY, icon: Calendar },
134
196
  [BillingInterval.YEAR]: { color: BadgeSemanticVariant.INFO, icon: CalendarDays },
135
197
  },
136
198
  }),
137
199
  intervalCount: schemaShape.intervalCount.numberUI({
138
- display: { displayMode: NumberDisplayMode.FORMATTED, showDescription: true },
200
+ display: { displayMode: NumberDisplayMode.FORMATTED, hideWhenEmpty: true },
139
201
  edit: { showDescription: true },
140
202
  }),
141
- packageSize: schemaShape.packageSize.numberUI({ display: { tooltip: true }, edit: { tooltip: true } }),
142
- usageAggregation: schemaShape.usageAggregation.enumUI({ display: { tooltip: true }, edit: { tooltip: true } }),
143
- taxBehavior: schemaShape.taxBehavior.enumUI({ display: { tooltip: true }, edit: { tooltip: true } }),
203
+ tiers: schemaShape.tiers.arrayUI({ display: { hideWhenEmpty: true } }),
204
+ packageSize: schemaShape.packageSize.numberUI({ display: { hideWhenEmpty: true }, edit: { tooltip: true } }),
205
+ usageAggregation: schemaShape.usageAggregation.enumUI({ display: { hideWhenEmpty: true }, edit: { tooltip: true } }),
206
+ taxBehavior: schemaShape.taxBehavior.enumUI({ display: { hideWhenEmpty: true }, edit: { tooltip: true } }),
207
+ // A default price is the exception worth reading; "not the default" is not information.
144
208
  isDefault: schemaShape.isDefault.booleanUI({
145
209
  labellingValue: BooleanLabellingValue.YES_NO,
146
- display: { displayMode: BooleanDisplayMode.CHECKMARK, showDescription: true },
210
+ display: { displayMode: BooleanDisplayMode.CHECKMARK },
147
211
  edit: { editMode: BooleanEditMode.SWITCH, showDescription: true },
148
212
  }),
213
+ // A word in the header, for the same reason as a product's.
149
214
  isActive: schemaShape.isActive.booleanUI({
150
215
  labellingValue: BooleanLabellingValue.ACTIVE_INACTIVE,
151
- display: { displayMode: BooleanDisplayMode.CHECKMARK, showDescription: true },
216
+ display: { displayMode: BooleanDisplayMode.RAW },
152
217
  edit: { editMode: BooleanEditMode.SWITCH, showDescription: true },
153
218
  }),
154
219
  },
155
- getFrontendResourceLabel: ({ currentObject }) => `${currentObject.model} — ${currentObject.interval ?? 'one-time'}`,
220
+ /*
221
+ * A price's name is its model and, when it recurs, its cadence — both in the application's own words. It used
222
+ * to join the raw wire values with an English "one-time", which no translator could reach
223
+ * (`display-text-comes-from-i18n.md`). A missing word answers the raw value, which LOOKS missing and gets
224
+ * authored. A one-time price is named by its model alone.
225
+ */
226
+ getFrontendResourceLabel: ({ currentObject, t }) => {
227
+ const word = (key, raw) => {
228
+ const resolved = t(key);
229
+ return resolved === key ? raw : resolved;
230
+ };
231
+ const model = word(`${LabellingTypes.SYSTEM_ENUMS}.PricingModel.${currentObject.model}`, String(currentObject.model));
232
+ if (!currentObject.interval)
233
+ return model;
234
+ const interval = word(`${LabellingTypes.RESOURCES}.${R.PRICES}.fields.interval.enum.${currentObject.interval}`, String(currentObject.interval));
235
+ return `${model} · ${interval}`;
236
+ },
156
237
  views: [],
157
238
  })),
158
239
  [R.REFERRALS]: resourceUIBehavior(referralsFactory, ReferralSchema, ({ schema, schemaShape, opsVariantResolver }) => ({
159
240
  icon: StandardIconReference.SHARE,
160
- emptyState: { primaryAction: Op.CREATE },
161
241
  layout: {
242
+ // No sections: a referral is one code, its state, the two sides and what each earned. It is an immutable
243
+ // ledger row (no edit form), read in a list.
162
244
  defaultChromeMode: {
163
- display: DisplayChromeMode.STACKED,
164
- summary: DisplayChromeMode.INLINE,
245
+ display: DisplayChromeMode.SETTINGS_ROW,
246
+ summary: DisplayChromeMode.HIDDEN,
165
247
  edit: EditChromeMode.SETTINGS_ROW,
166
248
  },
167
- summary: () => {
168
- const { data, isLoading } = useDisplayTemplateContext();
169
- return (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "referralCode" }), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "status" }), _jsx(DisplayField, { name: "referrerScopeType" }), _jsx(DisplayField, { name: "referredScopeType" })] }), _jsxs(SummaryMeta, { className: "text-muted-foreground text-xs", children: [_jsx(DisplayField, { name: "expiresAt" }), _jsx(DisplayField, { name: "convertedAt" })] }), _jsx(DisplayField, { name: "referrerBillingAccountId", hideLabel: true, className: "text-xs font-mono truncate max-w-full" })] }));
170
- },
249
+ // The code is the record's name and the status its state; neither is repeated in the body.
250
+ header: () => (_jsxs("div", { className: "flex min-w-0 flex-wrap items-center gap-field", children: [_jsx(ResourceHeaderTitle, {}), _jsx(DisplayField, { name: "status", hideLabel: true, hideDescription: true, className: "w-auto" })] })),
251
+ // The two sides, when each moved, and what each earned. Every optional row hides when empty — a referral
252
+ // that has not been accepted yet has no referred side, and a column of dashes said nothing.
253
+ display: () => (_jsxs(DisplayLayout, { children: [_jsx(DisplayField, { name: "referrerScopeType" }), _jsx(DisplayField, { name: "referredScopeType" }), _jsx(DisplayField, { name: "expiresAt" }), _jsx(DisplayField, { name: "acceptedAt" }), _jsx(DisplayField, { name: "convertedAt" }), _jsx(DisplayField, { name: "referrerReward" }), _jsx(DisplayField, { name: "referrerRewardApplied" }), _jsx(DisplayField, { name: "referredReward" }), _jsx(DisplayField, { name: "referredRewardApplied" })] })),
254
+ /*
255
+ * A card: the code and its status badge. The two scope badges and the two dates keep their labels — a bare
256
+ * "Organization" beside a bare "User" does not say which side referred, and a bare date does not say what
257
+ * happened on it. The referrer's billing-account id is gone: in an organization's own referrals it is that
258
+ * organization, and an opaque id told the reader nothing.
259
+ */
260
+ summary: () => (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "referralCode" }), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "status" }), _jsx(DisplayField, { name: "referrerScopeType" }), _jsx(DisplayField, { name: "referredScopeType" })] }), _jsxs(SummaryMeta, { className: "text-muted-foreground text-xs", children: [_jsx(DisplayField, { name: "expiresAt" }), _jsx(DisplayField, { name: "convertedAt" })] })] })),
171
261
  },
172
262
  fields: {
173
263
  _id: schemaShape._id.isHidden(),
@@ -184,18 +274,25 @@ export function buildBillingMainPresets() {
184
274
  referralCode: schemaShape.referralCode.stringUI({ display: { displayMode: StringDisplayMode.COPY } }),
185
275
  referrerScopeType: schemaShape.referrerScopeType.enumUI({
186
276
  display: { displayMode: EnumDisplayMode.BADGE },
277
+ summaryOverride: { chromeMode: DisplayChromeMode.INLINE },
187
278
  values: {
188
279
  [BillingScopeType.ORGANIZATIONS]: { color: BadgeSemanticVariant.SECONDARY, icon: Building2 },
189
280
  [BillingScopeType.USER_SELF]: { color: BadgeSemanticVariant.OUTLINE, icon: User },
190
281
  },
191
282
  }),
192
283
  referredScopeType: schemaShape.referredScopeType.enumUI({
193
- display: { displayMode: EnumDisplayMode.BADGE },
284
+ display: { displayMode: EnumDisplayMode.BADGE, hideWhenEmpty: true },
285
+ summaryOverride: { chromeMode: DisplayChromeMode.INLINE },
194
286
  values: {
195
287
  [BillingScopeType.ORGANIZATIONS]: { color: BadgeSemanticVariant.SECONDARY, icon: Building2 },
196
288
  [BillingScopeType.USER_SELF]: { color: BadgeSemanticVariant.OUTLINE, icon: User },
197
289
  },
198
290
  }),
291
+ expiresAt: schemaShape.expiresAt.dateUI({ display: { hideWhenEmpty: true }, summaryOverride: { chromeMode: DisplayChromeMode.INLINE } }),
292
+ acceptedAt: schemaShape.acceptedAt.dateUI({ display: { hideWhenEmpty: true } }),
293
+ convertedAt: schemaShape.convertedAt.dateUI({ display: { hideWhenEmpty: true }, summaryOverride: { chromeMode: DisplayChromeMode.INLINE } }),
294
+ referrerReward: schemaShape.referrerReward.objectUI({ display: { hideWhenEmpty: true } }),
295
+ referredReward: schemaShape.referredReward.objectUI({ display: { hideWhenEmpty: true } }),
199
296
  referrerRewardApplied: schemaShape.referrerRewardApplied.booleanUI({
200
297
  labellingValue: BooleanLabellingValue.YES_NO,
201
298
  display: { displayMode: BooleanDisplayMode.CHECKMARK },
@@ -206,45 +303,58 @@ export function buildBillingMainPresets() {
206
303
  }),
207
304
  },
208
305
  getFrontendResourceLabel: ({ currentObject }) => currentObject.referralCode,
209
- views: [],
306
+ // #1802: the organization owner issues a code from the list, and withdraws one that has not converted.
307
+ views: [
308
+ [Referral_Operations.ISSUE, notAddressable({ iconOverride: CirclePlus })],
309
+ [Referral_Operations.CANCEL, notAddressable({ iconOverride: CircleX })],
310
+ ],
210
311
  })),
211
312
  [R.PROMOTIONS]: resourceUIBehavior(promotionsFactory, PromotionSchema, ({ schema, schemaShape, opsVariantResolver }) => ({
212
313
  icon: StandardIconReference.PROMOTION,
213
- emptyState: { primaryAction: Op.CREATE },
214
314
  layout: {
215
315
  refs: { sections: ['overview', 'discount', 'duration', 'applicability', 'validity'] },
316
+ // An operator AUTHORS a promotion (a name, a description), so the form stacks; the read page is rows.
216
317
  defaultChromeMode: {
217
- display: DisplayChromeMode.STACKED,
218
- summary: DisplayChromeMode.INLINE,
219
- edit: EditChromeMode.SETTINGS_ROW,
220
- },
221
- edit: () => (_jsxs(FormLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(FormField, { name: "name" }), _jsx(FormField, { name: "description" }), _jsx(FormField, { name: "type" }), _jsx(FormField, { name: "code" })] }), _jsxs(Section, { name: "discount", children: [_jsx(FormField, { name: "discountType" }), _jsx(FormField, { name: "discountPercentage" }), _jsx(FormField, { name: "discountFixedAmount" })] }), _jsxs(Section, { name: "duration", children: [_jsx(FormField, { name: "duration" }), _jsx(FormField, { name: "durationInMonths" })] }), _jsxs(Section, { name: "applicability", children: [_jsx(FormField, { name: "applicableProducts" }), _jsx(FormField, { name: "maxRedemptions" }), _jsx(FormField, { name: "timesRedeemed" })] }), _jsxs(Section, { name: "validity", children: [_jsx(FormField, { name: "validFrom" }), _jsx(FormField, { name: "validUntil" }), _jsx(FormField, { name: "isActive" }), _jsx(FormField, { name: "metadata" })] })] })),
222
- display: () => {
223
- const { data, isLoading } = useDisplayTemplateContext();
224
- return (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(DisplayField, { name: "name" }), _jsx(DisplayField, { name: "description" }), _jsx(DisplayField, { name: "type" }), _jsx(DisplayField, { name: "code" })] }), _jsxs(Section, { name: "discount", children: [_jsx(DisplayField, { name: "discountType" }), _jsx(DisplayField, { name: "discountPercentage" }), _jsx(DisplayField, { name: "discountFixedAmount" })] }), _jsxs(Section, { name: "duration", children: [_jsx(DisplayField, { name: "duration" }), _jsx(DisplayField, { name: "durationInMonths" })] }), _jsxs(Section, { name: "applicability", children: [_jsx(DisplayField, { name: "applicableProducts" }), _jsx(DisplayField, { name: "maxRedemptions" }), _jsx(DisplayField, { name: "timesRedeemed" })] }), _jsxs(Section, { name: "validity", children: [_jsx(DisplayField, { name: "validFrom" }), _jsx(DisplayField, { name: "validUntil" }), _jsx(DisplayField, { name: "isActive" }), _jsx(DisplayField, { name: "metadata" })] })] }));
225
- },
226
- summary: () => {
227
- const { data, isLoading } = useDisplayTemplateContext();
228
- return (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "name" }), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "type" }), _jsx(DisplayField, { name: "discountType" })] }), _jsx(DisplayField, { name: "_id", hideLabel: true, className: "text-muted-foreground text-xs font-mono truncate max-w-full" })] }));
318
+ display: DisplayChromeMode.SETTINGS_ROW,
319
+ summary: DisplayChromeMode.HIDDEN,
320
+ edit: EditChromeMode.STACKED,
229
321
  },
322
+ // The name, the kind of promotion and whether it still accepts redemptions — the three things the body no
323
+ // longer repeats.
324
+ header: () => (_jsxs("div", { className: "flex min-w-0 flex-wrap items-center gap-field", children: [_jsx(ResourceHeaderTitle, {}), _jsx(DisplayField, { name: "type", hideLabel: true, hideDescription: true, className: "w-auto" }), _jsx(DisplayField, { name: "isActive", hideLabel: true, hideDescription: true, className: "w-auto" })] })),
325
+ /*
326
+ * The name first, focused; the description is prose, so a textarea. `timesRedeemed` is a counter the
327
+ * system advances (`isNotEditable`), so it is read on the record, not shown as a disabled input here. The
328
+ * discount and duration blocks keep their descriptions: which of the two amounts applies, and what
329
+ * "repeating" needs, are not obvious from the fields.
330
+ */
331
+ edit: () => (_jsxs(FormLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, children: [_jsx(FormField, { name: "name", autoFocus: true }), _jsx(FormField, { name: "description" }), _jsx(FormField, { name: "type" }), _jsx(FormField, { name: "code" })] }), _jsxs(Section, { name: "discount", children: [_jsx(FormField, { name: "discountType" }), _jsx(FormField, { name: "discountPercentage" }), _jsx(FormField, { name: "discountFixedAmount" })] }), _jsxs(Section, { name: "duration", children: [_jsx(FormField, { name: "duration" }), _jsx(FormField, { name: "durationInMonths" })] }), _jsxs(Section, { name: "applicability", children: [_jsx(FormField, { name: "applicableProducts" }), _jsx(FormField, { name: "maxRedemptions" })] }), _jsxs(Section, { name: "validity", children: [_jsx(FormField, { name: "validFrom" }), _jsx(FormField, { name: "validUntil" }), _jsx(FormField, { name: "isActive" }), _jsx(FormField, { name: "metadata" })] })] })),
332
+ /*
333
+ * Read: the header is the name, type and state. The first card is the promotion's own words and its code,
334
+ * with no heading — "Overview" over a description said nothing the description does not. No read section
335
+ * carries a description; those were notes about provider sync and API behaviour.
336
+ */
337
+ display: () => (_jsxs(DisplayLayout, { children: [_jsxs(Section, { name: "overview", appearance: SectionMode.CARD, hideTitle: true, hideDescription: true, children: [_jsx(DisplayField, { name: "description" }), _jsx(DisplayField, { name: "code" })] }), _jsxs(Section, { name: "discount", hideDescription: true, children: [_jsx(DisplayField, { name: "discountType" }), _jsx(DisplayField, { name: "discountPercentage" }), _jsx(DisplayField, { name: "discountFixedAmount" })] }), _jsxs(Section, { name: "duration", hideDescription: true, children: [_jsx(DisplayField, { name: "duration" }), _jsx(DisplayField, { name: "durationInMonths" })] }), _jsxs(Section, { name: "applicability", hideDescription: true, children: [_jsx(DisplayField, { name: "applicableProducts" }), _jsx(DisplayField, { name: "maxRedemptions" }), _jsx(DisplayField, { name: "timesRedeemed" })] }), _jsxs(Section, { name: "validity", hideDescription: true, children: [_jsx(DisplayField, { name: "validFrom" }), _jsx(DisplayField, { name: "validUntil" }), _jsx(DisplayField, { name: "metadata" })] })] })),
338
+ // A card: the name, then the promotion type and the discount type as badges. The record id is gone.
339
+ summary: () => (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "name" }), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "type" }), _jsx(DisplayField, { name: "discountType" })] })] })),
230
340
  },
231
341
  fields: {
232
342
  _id: schemaShape._id.isHidden(),
233
343
  name: schemaShape.name.stringUI({
234
- display: { displayMode: StringDisplayMode.TRUNCATE, truncateLength: 64, showDescription: true },
235
- edit: { showDescription: true },
344
+ display: { displayMode: StringDisplayMode.TRUNCATE, truncateLength: 64 },
236
345
  }),
237
346
  description: schemaShape.description.stringUI({
238
- display: { displayMode: StringDisplayMode.MULTILINE, showDescription: true },
239
- edit: { component: FormFieldComponent.TEXTAREA, showDescription: true },
347
+ display: { displayMode: StringDisplayMode.MULTILINE, hideWhenEmpty: true },
348
+ edit: { component: FormFieldComponent.TEXTAREA },
240
349
  }),
350
+ // Hidden when empty: a deal with no customer-facing code is a real kind of promotion, not a gap. The form
351
+ // keeps the description — what the code is for (typed at checkout) is not obvious.
241
352
  code: schemaShape.code.stringUI({
242
- display: { displayMode: StringDisplayMode.COPY, showDescription: true },
353
+ display: { displayMode: StringDisplayMode.COPY, hideWhenEmpty: true },
243
354
  edit: { showDescription: true },
244
355
  }),
245
356
  type: schemaShape.type.enumUI({
246
- display: { displayMode: EnumDisplayMode.BADGE, showDescription: true },
247
- edit: { showDescription: true },
357
+ display: { displayMode: EnumDisplayMode.BADGE },
248
358
  values: {
249
359
  [PromotionType.COUPON]: { color: BadgeSemanticVariant.SUCCESS, icon: Ticket },
250
360
  [PromotionType.PROMOTION_CODE]: { color: BadgeSemanticVariant.INFO, icon: KeyRound },
@@ -253,44 +363,43 @@ export function buildBillingMainPresets() {
253
363
  },
254
364
  }),
255
365
  discountType: schemaShape.discountType.enumUI({
256
- display: { displayMode: EnumDisplayMode.BADGE, showDescription: true },
257
- edit: { showDescription: true },
366
+ display: { displayMode: EnumDisplayMode.BADGE },
258
367
  values: {
259
368
  [DiscountType.PERCENTAGE]: { color: BadgeSemanticVariant.INFO, icon: Percent },
260
369
  [DiscountType.FIXED_AMOUNT]: { color: BadgeSemanticVariant.SECONDARY, icon: Banknote },
261
370
  },
262
371
  }),
372
+ // Only one of the two amounts applies (per `discountType`); the other is empty and hides.
263
373
  discountPercentage: schemaShape.discountPercentage.numberUI({
264
374
  suffix: '%',
265
- display: { displayMode: NumberDisplayMode.FORMATTED, showDescription: true },
266
- edit: { showDescription: true },
375
+ display: { displayMode: NumberDisplayMode.FORMATTED, hideWhenEmpty: true },
267
376
  }),
377
+ discountFixedAmount: schemaShape.discountFixedAmount.moneyUI({ display: { hideWhenEmpty: true } }),
268
378
  duration: schemaShape.duration.enumUI({
269
- display: { displayMode: EnumDisplayMode.BADGE, showDescription: true },
270
- edit: { showDescription: true },
379
+ display: { displayMode: EnumDisplayMode.BADGE },
271
380
  values: {
272
381
  [PromotionDuration.ONCE]: { color: BadgeSemanticVariant.SECONDARY, icon: CircleDot },
273
382
  [PromotionDuration.REPEATING]: { color: BadgeSemanticVariant.INFO, icon: Repeat },
274
383
  [PromotionDuration.FOREVER]: { color: BadgeSemanticVariant.SUCCESS, icon: Infinity },
275
384
  },
276
385
  }),
386
+ // Only a REPEATING promotion has a month count.
277
387
  durationInMonths: schemaShape.durationInMonths.numberUI({
278
- display: { displayMode: NumberDisplayMode.FORMATTED, showDescription: true },
279
- edit: { showDescription: true },
280
- }),
281
- maxRedemptions: schemaShape.maxRedemptions.numberUI({
282
- display: { displayMode: NumberDisplayMode.FORMATTED, showDescription: true },
283
- edit: { showDescription: true },
284
- }),
285
- timesRedeemed: schemaShape.timesRedeemed.numberUI({
286
- display: { displayMode: NumberDisplayMode.FORMATTED, showDescription: true },
287
- edit: { showDescription: true },
288
- }),
388
+ display: { displayMode: NumberDisplayMode.FORMATTED, hideWhenEmpty: true },
389
+ }),
390
+ // NOT hidden when empty, and neither are the redemption cap and the validity bounds: for these four an
391
+ // empty value MEANS something ("every product", "unlimited", "no start", "no end"). The dash is kept until
392
+ // those words are authored, rather than hiding a real answer.
393
+ maxRedemptions: schemaShape.maxRedemptions.numberUI({ display: { displayMode: NumberDisplayMode.FORMATTED } }),
394
+ timesRedeemed: schemaShape.timesRedeemed.numberUI({ display: { displayMode: NumberDisplayMode.FORMATTED } }),
395
+ // A word in the header ("Active" / "Inactive"); a bare checkmark beside the name said nothing about what
396
+ // was checked. The form keeps the description: deactivating stops NEW redemptions only.
289
397
  isActive: schemaShape.isActive.booleanUI({
290
398
  labellingValue: BooleanLabellingValue.ACTIVE_INACTIVE,
291
- display: { displayMode: BooleanDisplayMode.CHECKMARK, showDescription: true },
399
+ display: { displayMode: BooleanDisplayMode.RAW },
292
400
  edit: { editMode: BooleanEditMode.SWITCH, showDescription: true },
293
401
  }),
402
+ metadata: schemaShape.metadata.objectUI({ display: { hideWhenEmpty: true } }),
294
403
  },
295
404
  getFrontendResourceLabel: ({ currentObject }) => currentObject.name,
296
405
  views: [
@@ -319,14 +428,16 @@ export function buildBillingMainPresets() {
319
428
  display: { displayMode: BooleanDisplayMode.CHECKMARK },
320
429
  }),
321
430
  },
322
- // A billing account has no user-authored name — it is the singleton
323
- // provider link for its scope. Label it by its role + state instead of
324
- // leaking the raw `_id` as a title (same raw-composition convention as
325
- // the invoice label below).
326
- getFrontendResourceLabel: ({ currentObject }) => currentObject.isActive === false ? 'Billing account (inactive)' : 'Billing account',
431
+ // A billing account has no user-authored name — it is the singleton provider link for its scope — so it is
432
+ // named by its resource's own words (the READ title, "Billing account"), never by its raw `_id`. Whether it
433
+ // is active is its STATE, a badge, not part of the name; the name used to be English written in code
434
+ // ("Billing account (inactive)"), which no translator could reach. A missing word shows its key.
435
+ getFrontendResourceLabel: ({ t, resourceType }) => t(`${LabellingTypes.RESOURCES}.${resourceType}.operations.read.title`),
327
436
  views: [
328
437
  [BillingAccount_Operations.OPEN_CHECKOUT, notAddressable({ iconOverride: ShoppingCart })],
329
438
  [BillingAccount_Operations.OPEN_PORTAL, notAddressable({ iconOverride: ExternalLink })],
439
+ // #1802: a new customer redeems a referral code on its own account.
440
+ [BillingAccount_Operations.REDEEM_REFERRAL, notAddressable({ iconOverride: Handshake })],
330
441
  [BillingAccount_Operations.GET_STATE, notAddressable({ iconOverride: Info })],
331
442
  // Billing accounts are Stripe-managed (portal/checkout) — generic UPDATE/DELETE
332
443
  // are headless (no inline edit/delete UI).
@@ -416,13 +527,18 @@ export function buildBillingMainPresets() {
416
527
  edit: { component: FormFieldComponent.TEXTAREA },
417
528
  }),
418
529
  },
419
- getFrontendResourceLabel: ({ currentObject }) => String(currentObject.status),
530
+ // A subscription is named by the billing period it is in, in the viewer's date format. Its status is its state
531
+ // (the badge), and the raw status value was all the name used to say.
532
+ getFrontendResourceLabel: ({ currentObject, formatDate }) => `${formatDate(currentObject.currentPeriodStart)} – ${formatDate(currentObject.currentPeriodEnd)}`,
420
533
  views: [
421
534
  [BillingSubscription_Operations.CANCEL, notAddressable({ iconOverride: Ban })],
422
535
  [BillingSubscription_Operations.RESUME, notAddressable({ iconOverride: CirclePlay })],
423
536
  [BillingSubscription_Operations.CHANGE_PLAN, notAddressable({ iconOverride: ArrowRightLeft })],
537
+ [BillingSubscription_Operations.PREVIEW_PLAN_CHANGE, apiOnly()],
424
538
  [BillingSubscription_Operations.ADD_ADDON, notAddressable({ iconOverride: PackagePlus })],
425
539
  [BillingSubscription_Operations.REMOVE_ADDON, notAddressable({ iconOverride: PackageMinus })],
540
+ // Withdraws a plan change pending at the end of the period (#1868).
541
+ [BillingSubscription_Operations.CANCEL_PLAN_CHANGE, notAddressable({ iconOverride: CalendarX2 })],
426
542
  // Subscriptions are managed via the custom ops above + Stripe — generic UPDATE
427
543
  // is headless (no inline edit UI).
428
544
  [Op.UPDATE, apiOnly()],
@@ -449,16 +565,24 @@ export function buildBillingMainPresets() {
449
565
  },
450
566
  summary: () => {
451
567
  const { data, isLoading } = useDisplayTemplateContext();
452
- return (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, { name: "poolKey" }), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "available" }), _jsx(DisplayField, { name: "totalPurchased" }), _jsx(DisplayField, { name: "totalConsumed" })] }), _jsx(DisplayField, { name: "billingAccountId", hideLabel: true, className: "text-muted-foreground text-xs font-mono truncate max-w-full" })] }));
568
+ return (_jsxs(SummaryLayout, { children: [_jsx(SummaryTitle, {}), _jsxs(SummaryMeta, { children: [_jsx(DisplayField, { name: "poolKey" }), _jsx(DisplayField, { name: "available" }), _jsx(DisplayField, { name: "totalPurchased" }), _jsx(DisplayField, { name: "totalGranted" }), _jsx(DisplayField, { name: "totalConsumed" })] }), _jsx(DisplayField, { name: "billingAccountId", hideLabel: true, className: "text-muted-foreground text-xs font-mono truncate max-w-full" })] }));
453
569
  },
454
570
  },
455
571
  fields: {
456
572
  _id: schema.shape._id.isHidden(),
457
573
  available: schema.shape.available.numberUI({ display: { displayMode: NumberDisplayMode.FORMATTED } }),
458
574
  totalPurchased: schema.shape.totalPurchased.numberUI({ display: { displayMode: NumberDisplayMode.FORMATTED } }),
575
+ totalGranted: schema.shape.totalGranted.numberUI({ display: { displayMode: NumberDisplayMode.FORMATTED, hideWhenEmpty: true } }),
459
576
  totalConsumed: schema.shape.totalConsumed.numberUI({ display: { displayMode: NumberDisplayMode.FORMATTED } }),
460
577
  },
461
- getFrontendResourceLabel: ({ currentObject }) => currentObject.poolKey,
578
+ // Named by the application's word for the pool (`billing_credit_pools.<poolKey>.name`), for the same reason as a
579
+ // product (#1851). An unworded pool answers its key.
580
+ getFrontendResourceLabel: ({ currentObject, t }) => {
581
+ const nameKey = `${LabellingTypes.BILLING_CREDIT_POOLS}.${currentObject.poolKey}.name`;
582
+ const name = t(nameKey);
583
+ return name === nameKey ? unresolvedLabel(currentObject.poolKey) : name;
584
+ },
585
+ instanceLabelSections: [LabellingTypes.BILLING_CREDIT_POOLS],
462
586
  views: [
463
587
  [CreditPool_Operations.TOP_UP, notAddressable({ iconOverride: CirclePlus })],
464
588
  ],
@@ -489,7 +613,9 @@ export function buildBillingMainPresets() {
489
613
  display: { displayMode: NumberDisplayMode.FORMATTED, showDescription: true },
490
614
  }),
491
615
  },
492
- getFrontendResourceLabel: ({ currentObject }) => `Invoice ${currentObject.status}`,
616
+ // An invoice is named by its date, in the viewer's format. Its status is the badge beside it; the name used to be
617
+ // English written in code around the raw status ("Invoice paid").
618
+ getFrontendResourceLabel: ({ currentObject, formatDate }) => formatDate(currentObject.createdAt),
493
619
  views: [
494
620
  [Op.LIST, notAddressable()],
495
621
  [Op.READ, notAddressable()],
@@ -513,7 +639,9 @@ export function buildBillingMainPresets() {
513
639
  display: { displayMode: NumberDisplayMode.FORMATTED, showDescription: true },
514
640
  }),
515
641
  },
516
- getFrontendResourceLabel: ({ currentObject }) => `${currentObject.productKey} · ${currentObject.quantity}`,
642
+ // A usage record is named by the instant it was recorded. The product key is an identifier and the quantity a
643
+ // value; both are rows, and the name used to be the two raw values joined.
644
+ getFrontendResourceLabel: ({ currentObject, formatDateTime }) => formatDateTime(currentObject.timestamp),
517
645
  views: [
518
646
  [Op.LIST, notAddressable()],
519
647
  [Op.READ, notAddressable()],
@@ -548,6 +676,8 @@ export function buildBillingAdminPresets(main) {
548
676
  [Op.READ, notAddressable()],
549
677
  // Referrals are an immutable ledger record — UPDATE is headless (no edit UI).
550
678
  [Op.UPDATE, apiOnly()],
679
+ [Referral_Operations.ISSUE, notAddressable({ iconOverride: CirclePlus })],
680
+ [Referral_Operations.CANCEL, notAddressable({ iconOverride: CircleX })],
551
681
  ],
552
682
  })),
553
683
  [R.PROMOTIONS]: resourceUIBehaviorFrom(promotionsFactory, main[R.PROMOTIONS], ({ base }) => ({