@wildo-ai/presets-components 1.1.4 → 1.1.5

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 (705) hide show
  1. package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
  2. package/dist/esm/components/actions/action-bar.js +61 -7
  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.labels.d.ts.map +1 -1
  45. package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts +68 -0
  46. package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts.map +1 -0
  47. package/dist/esm/components/ai-elements/decision/approval-argument-fields.js +208 -0
  48. package/dist/esm/components/ai-elements/decision/approval-argument-fields.js.map +1 -0
  49. package/dist/esm/components/ai-elements/decision/approval.d.ts +17 -5
  50. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  51. package/dist/esm/components/ai-elements/decision/approval.js +49 -7
  52. package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
  53. package/dist/esm/components/ai-elements/decision/decision-request.d.ts.map +1 -1
  54. package/dist/esm/components/ai-elements/decision/decision-request.labels.d.ts.map +1 -1
  55. package/dist/esm/components/ai-elements/execution/confirmation.d.ts.map +1 -1
  56. package/dist/esm/components/ai-elements/execution/confirmation.labels.d.ts.map +1 -1
  57. package/dist/esm/components/ai-elements/execution/queue.d.ts.map +1 -1
  58. package/dist/esm/components/ai-elements/execution/queue.labels.d.ts.map +1 -1
  59. package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
  60. package/dist/esm/components/ai-elements/execution/task.js +1 -1
  61. package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
  62. package/dist/esm/components/ai-elements/execution/task.labels.d.ts.map +1 -1
  63. package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
  64. package/dist/esm/components/ai-elements/execution/tool.js +8 -1
  65. package/dist/esm/components/ai-elements/execution/tool.js.map +1 -1
  66. package/dist/esm/components/ai-elements/execution/tool.labels.d.ts.map +1 -1
  67. package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
  68. package/dist/esm/components/ai-elements/graph/canvas.labels.d.ts.map +1 -1
  69. package/dist/esm/components/ai-elements/graph/connection.d.ts.map +1 -1
  70. package/dist/esm/components/ai-elements/graph/connection.labels.d.ts.map +1 -1
  71. package/dist/esm/components/ai-elements/graph/controls.d.ts.map +1 -1
  72. package/dist/esm/components/ai-elements/graph/controls.labels.d.ts.map +1 -1
  73. package/dist/esm/components/ai-elements/graph/edge.d.ts.map +1 -1
  74. package/dist/esm/components/ai-elements/graph/edge.labels.d.ts.map +1 -1
  75. package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts.map +1 -1
  76. package/dist/esm/components/ai-elements/graph/graph.lazy.d.ts.map +1 -1
  77. package/dist/esm/components/ai-elements/graph/graph.lazy.js +15 -15
  78. package/dist/esm/components/ai-elements/graph/graph.lazy.js.map +1 -1
  79. package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
  80. package/dist/esm/components/ai-elements/graph/node.labels.d.ts.map +1 -1
  81. package/dist/esm/components/ai-elements/graph/panel.d.ts.map +1 -1
  82. package/dist/esm/components/ai-elements/graph/panel.labels.d.ts.map +1 -1
  83. package/dist/esm/components/ai-elements/graph/toolbar.d.ts.map +1 -1
  84. package/dist/esm/components/ai-elements/graph/toolbar.labels.d.ts.map +1 -1
  85. package/dist/esm/components/ai-elements/meta/agent.d.ts +0 -1
  86. package/dist/esm/components/ai-elements/meta/agent.d.ts.map +1 -1
  87. package/dist/esm/components/ai-elements/meta/agent.js +23 -18
  88. package/dist/esm/components/ai-elements/meta/agent.js.map +1 -1
  89. package/dist/esm/components/ai-elements/meta/context.d.ts.map +1 -1
  90. package/dist/esm/components/ai-elements/meta/context.labels.d.ts.map +1 -1
  91. package/dist/esm/components/ai-elements/meta/context.lazy.d.ts.map +1 -1
  92. package/dist/esm/components/ai-elements/meta/context.lazy.js +13 -11
  93. package/dist/esm/components/ai-elements/meta/context.lazy.js.map +1 -1
  94. package/dist/esm/components/ai-elements/meta/model-selector.d.ts.map +1 -1
  95. package/dist/esm/components/ai-elements/meta/model-selector.labels.d.ts.map +1 -1
  96. package/dist/esm/components/ai-elements/meta/open-in-chat.d.ts.map +1 -1
  97. package/dist/esm/components/ai-elements/meta/open-in-chat.labels.d.ts.map +1 -1
  98. package/dist/esm/components/ai-elements/shared/loader.d.ts.map +1 -1
  99. package/dist/esm/components/ai-elements/shared/loader.labels.d.ts.map +1 -1
  100. package/dist/esm/components/ai-elements/shared/shimmer.d.ts.map +1 -1
  101. package/dist/esm/components/ai-elements/shared/shimmer.labels.d.ts.map +1 -1
  102. package/dist/esm/components/ai-elements/stream/execution-stream.d.ts.map +1 -1
  103. package/dist/esm/components/ai-elements/stream/execution-stream.labels.d.ts.map +1 -1
  104. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts +6 -0
  105. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts.map +1 -1
  106. package/dist/esm/components/ai-elements/trace/chain-of-thought.js +13 -1
  107. package/dist/esm/components/ai-elements/trace/chain-of-thought.js.map +1 -1
  108. package/dist/esm/components/ai-elements/trace/chain-of-thought.labels.d.ts.map +1 -1
  109. package/dist/esm/components/ai-elements/trace/checkpoint.d.ts.map +1 -1
  110. package/dist/esm/components/ai-elements/trace/checkpoint.labels.d.ts.map +1 -1
  111. package/dist/esm/components/ai-elements/trace/inline-citation.d.ts.map +1 -1
  112. package/dist/esm/components/ai-elements/trace/inline-citation.labels.d.ts.map +1 -1
  113. package/dist/esm/components/ai-elements/trace/plan.d.ts.map +1 -1
  114. package/dist/esm/components/ai-elements/trace/plan.labels.d.ts.map +1 -1
  115. package/dist/esm/components/ai-elements/trace/reasoning.d.ts.map +1 -1
  116. package/dist/esm/components/ai-elements/trace/reasoning.labels.d.ts.map +1 -1
  117. package/dist/esm/components/app/app-layout-consent-gate.d.ts +23 -0
  118. package/dist/esm/components/app/app-layout-consent-gate.d.ts.map +1 -0
  119. package/dist/esm/components/app/app-layout-consent-gate.js +133 -0
  120. package/dist/esm/components/app/app-layout-consent-gate.js.map +1 -0
  121. package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts +19 -0
  122. package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts.map +1 -0
  123. package/dist/esm/components/app/app-layout-document-acceptance-gate.js +56 -0
  124. package/dist/esm/components/app/app-layout-document-acceptance-gate.js.map +1 -0
  125. package/dist/esm/components/app/app-layout-main-container.d.ts.map +1 -1
  126. package/dist/esm/components/app/app-layout-main-container.labels.d.ts.map +1 -1
  127. package/dist/esm/components/app/app-layout-main-container.labels.js +21 -0
  128. package/dist/esm/components/app/app-layout-main-container.labels.js.map +1 -1
  129. package/dist/esm/components/app/public-layout-main-container.d.ts +1 -1
  130. package/dist/esm/components/app/public-layout-main-container.d.ts.map +1 -1
  131. package/dist/esm/components/app/public-layout-main-container.js +9 -8
  132. package/dist/esm/components/app/public-layout-main-container.js.map +1 -1
  133. package/dist/esm/components/app/public-layout-main-container.labels.d.ts.map +1 -1
  134. package/dist/esm/components/app/public-layout-terms.d.ts +46 -0
  135. package/dist/esm/components/app/public-layout-terms.d.ts.map +1 -0
  136. package/dist/esm/components/app/public-layout-terms.js +137 -0
  137. package/dist/esm/components/app/public-layout-terms.js.map +1 -0
  138. package/dist/esm/components/billing/billing-format.utils.d.ts.map +1 -1
  139. package/dist/esm/components/billing/billing-invoice-history.d.ts +1 -1
  140. package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
  141. package/dist/esm/components/billing/billing-invoice-history.js +3 -1
  142. package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
  143. package/dist/esm/components/billing/billing-invoice-history.labels.d.ts.map +1 -1
  144. package/dist/esm/components/billing/billing-invoice-history.labels.js +1 -0
  145. package/dist/esm/components/billing/billing-invoice-history.labels.js.map +1 -1
  146. package/dist/esm/components/billing/billing-plan-change-preview.d.ts +5 -0
  147. package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +1 -0
  148. package/dist/esm/components/billing/billing-plan-change-preview.js +22 -0
  149. package/dist/esm/components/billing/billing-plan-change-preview.js.map +1 -0
  150. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts +3 -0
  151. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts.map +1 -0
  152. package/dist/esm/components/billing/billing-plan-change-preview.labels.js +19 -0
  153. package/dist/esm/components/billing/billing-plan-change-preview.labels.js.map +1 -0
  154. package/dist/esm/components/billing/billing-portal-link.d.ts +1 -1
  155. package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
  156. package/dist/esm/components/billing/billing-portal-link.js +3 -1
  157. package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
  158. package/dist/esm/components/billing/billing-portal-link.labels.d.ts.map +1 -1
  159. package/dist/esm/components/billing/billing-portal-link.labels.js +1 -0
  160. package/dist/esm/components/billing/billing-portal-link.labels.js.map +1 -1
  161. package/dist/esm/components/billing/billing-pricing-table.d.ts +1 -1
  162. package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
  163. package/dist/esm/components/billing/billing-pricing-table.js +4 -2
  164. package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
  165. package/dist/esm/components/billing/billing-pricing-table.labels.d.ts.map +1 -1
  166. package/dist/esm/components/billing/billing-pricing-table.labels.js +1 -0
  167. package/dist/esm/components/billing/billing-pricing-table.labels.js.map +1 -1
  168. package/dist/esm/components/billing/billing-subscription-status.d.ts +1 -1
  169. package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
  170. package/dist/esm/components/billing/billing-subscription-status.js +3 -1
  171. package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
  172. package/dist/esm/components/billing/billing-subscription-status.labels.d.ts.map +1 -1
  173. package/dist/esm/components/billing/billing-subscription-status.labels.js +1 -0
  174. package/dist/esm/components/billing/billing-subscription-status.labels.js.map +1 -1
  175. package/dist/esm/components/billing/billing-usage-dashboard.d.ts +1 -1
  176. package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
  177. package/dist/esm/components/billing/billing-usage-dashboard.js +4 -4
  178. package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
  179. package/dist/esm/components/billing/billing-usage-dashboard.labels.d.ts.map +1 -1
  180. package/dist/esm/components/billing/billing-usage-dashboard.labels.js +2 -0
  181. package/dist/esm/components/billing/billing-usage-dashboard.labels.js.map +1 -1
  182. package/dist/esm/components/data-display/avatar.d.ts.map +1 -1
  183. package/dist/esm/components/data-display/avatar.labels.d.ts.map +1 -1
  184. package/dist/esm/components/data-display/badge.d.ts.map +1 -1
  185. package/dist/esm/components/data-display/badge.js +16 -15
  186. package/dist/esm/components/data-display/badge.js.map +1 -1
  187. package/dist/esm/components/data-display/badge.labels.d.ts.map +1 -1
  188. package/dist/esm/components/data-display/description-list.d.ts +2 -1
  189. package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
  190. package/dist/esm/components/data-display/description-list.js +24 -8
  191. package/dist/esm/components/data-display/description-list.js.map +1 -1
  192. package/dist/esm/components/data-display/description-list.labels.d.ts.map +1 -1
  193. package/dist/esm/components/data-display/duration.d.ts +15 -0
  194. package/dist/esm/components/data-display/duration.d.ts.map +1 -0
  195. package/dist/esm/components/data-display/duration.js +50 -0
  196. package/dist/esm/components/data-display/duration.js.map +1 -0
  197. package/dist/esm/components/data-display/duration.labels.d.ts +15 -0
  198. package/dist/esm/components/data-display/duration.labels.d.ts.map +1 -0
  199. package/dist/esm/components/data-display/duration.labels.js +35 -0
  200. package/dist/esm/components/data-display/duration.labels.js.map +1 -0
  201. package/dist/esm/components/data-display/formatters/display-field-address.d.ts +21 -0
  202. package/dist/esm/components/data-display/formatters/display-field-address.d.ts.map +1 -0
  203. package/dist/esm/components/data-display/formatters/display-field-address.js +75 -0
  204. package/dist/esm/components/data-display/formatters/display-field-address.js.map +1 -0
  205. package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts +3 -0
  206. package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts.map +1 -0
  207. package/dist/esm/components/data-display/formatters/display-field-address.labels.js +13 -0
  208. package/dist/esm/components/data-display/formatters/display-field-address.labels.js.map +1 -0
  209. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.d.ts.map +1 -1
  210. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js +6 -2
  211. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js.map +1 -1
  212. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.labels.d.ts.map +1 -1
  213. package/dist/esm/components/data-display/formatters/display-field-boolean.d.ts.map +1 -1
  214. package/dist/esm/components/data-display/formatters/display-field-boolean.js +2 -2
  215. package/dist/esm/components/data-display/formatters/display-field-boolean.js.map +1 -1
  216. package/dist/esm/components/data-display/formatters/display-field-boolean.labels.d.ts.map +1 -1
  217. package/dist/esm/components/data-display/formatters/display-field-code.d.ts.map +1 -1
  218. package/dist/esm/components/data-display/formatters/display-field-code.js +2 -2
  219. package/dist/esm/components/data-display/formatters/display-field-code.js.map +1 -1
  220. package/dist/esm/components/data-display/formatters/display-field-code.labels.d.ts.map +1 -1
  221. package/dist/esm/components/data-display/formatters/display-field-date.d.ts +3 -3
  222. package/dist/esm/components/data-display/formatters/display-field-date.d.ts.map +1 -1
  223. package/dist/esm/components/data-display/formatters/display-field-date.js +17 -4
  224. package/dist/esm/components/data-display/formatters/display-field-date.js.map +1 -1
  225. package/dist/esm/components/data-display/formatters/display-field-date.labels.d.ts.map +1 -1
  226. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts +3 -3
  227. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts.map +1 -1
  228. package/dist/esm/components/data-display/formatters/display-field-datetime.js +17 -4
  229. package/dist/esm/components/data-display/formatters/display-field-datetime.js.map +1 -1
  230. package/dist/esm/components/data-display/formatters/display-field-datetime.labels.d.ts.map +1 -1
  231. package/dist/esm/components/data-display/formatters/display-field-duration.d.ts.map +1 -1
  232. package/dist/esm/components/data-display/formatters/display-field-duration.labels.d.ts.map +1 -1
  233. package/dist/esm/components/data-display/formatters/display-field-enum.d.ts.map +1 -1
  234. package/dist/esm/components/data-display/formatters/display-field-enum.js +12 -8
  235. package/dist/esm/components/data-display/formatters/display-field-enum.js.map +1 -1
  236. package/dist/esm/components/data-display/formatters/display-field-enum.labels.d.ts.map +1 -1
  237. package/dist/esm/components/data-display/formatters/display-field-file-audio.d.ts.map +1 -1
  238. package/dist/esm/components/data-display/formatters/display-field-file-audio.js +2 -1
  239. package/dist/esm/components/data-display/formatters/display-field-file-audio.js.map +1 -1
  240. package/dist/esm/components/data-display/formatters/display-field-file-audio.labels.d.ts.map +1 -1
  241. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts +4 -1
  242. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts.map +1 -1
  243. package/dist/esm/components/data-display/formatters/display-field-file-document.js +18 -5
  244. package/dist/esm/components/data-display/formatters/display-field-file-document.js.map +1 -1
  245. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.d.ts.map +1 -1
  246. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js +20 -0
  247. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js.map +1 -1
  248. package/dist/esm/components/data-display/formatters/display-field-file-gallery.d.ts.map +1 -1
  249. package/dist/esm/components/data-display/formatters/display-field-file-gallery.labels.d.ts.map +1 -1
  250. package/dist/esm/components/data-display/formatters/display-field-file-image.d.ts.map +1 -1
  251. package/dist/esm/components/data-display/formatters/display-field-file-image.js +3 -1
  252. package/dist/esm/components/data-display/formatters/display-field-file-image.js.map +1 -1
  253. package/dist/esm/components/data-display/formatters/display-field-file-image.labels.d.ts.map +1 -1
  254. package/dist/esm/components/data-display/formatters/display-field-file-video.d.ts.map +1 -1
  255. package/dist/esm/components/data-display/formatters/display-field-file-video.labels.d.ts.map +1 -1
  256. package/dist/esm/components/data-display/formatters/display-field-file.d.ts.map +1 -1
  257. package/dist/esm/components/data-display/formatters/display-field-file.js +2 -2
  258. package/dist/esm/components/data-display/formatters/display-field-file.js.map +1 -1
  259. package/dist/esm/components/data-display/formatters/display-field-file.labels.d.ts.map +1 -1
  260. package/dist/esm/components/data-display/formatters/display-field-file.labels.js +1 -0
  261. package/dist/esm/components/data-display/formatters/display-field-file.labels.js.map +1 -1
  262. package/dist/esm/components/data-display/formatters/display-field-format.utils.d.ts.map +1 -1
  263. package/dist/esm/components/data-display/formatters/display-field-i18n.utils.d.ts.map +1 -1
  264. package/dist/esm/components/data-display/formatters/display-field-money.d.ts.map +1 -1
  265. package/dist/esm/components/data-display/formatters/display-field-money.labels.d.ts.map +1 -1
  266. package/dist/esm/components/data-display/formatters/display-field-number.d.ts.map +1 -1
  267. package/dist/esm/components/data-display/formatters/display-field-number.js +2 -2
  268. package/dist/esm/components/data-display/formatters/display-field-number.js.map +1 -1
  269. package/dist/esm/components/data-display/formatters/display-field-number.labels.d.ts.map +1 -1
  270. package/dist/esm/components/data-display/formatters/display-field-phone.d.ts.map +1 -1
  271. package/dist/esm/components/data-display/formatters/display-field-phone.labels.d.ts.map +1 -1
  272. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.d.ts.map +1 -1
  273. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.labels.d.ts.map +1 -1
  274. package/dist/esm/components/data-display/formatters/display-field-range-date.d.ts.map +1 -1
  275. package/dist/esm/components/data-display/formatters/display-field-range-date.labels.d.ts.map +1 -1
  276. package/dist/esm/components/data-display/formatters/display-field-range-datetime.d.ts.map +1 -1
  277. package/dist/esm/components/data-display/formatters/display-field-range-datetime.labels.d.ts.map +1 -1
  278. package/dist/esm/components/data-display/formatters/display-field-range-money.d.ts.map +1 -1
  279. package/dist/esm/components/data-display/formatters/display-field-range-money.labels.d.ts.map +1 -1
  280. package/dist/esm/components/data-display/formatters/display-field-range-number.d.ts.map +1 -1
  281. package/dist/esm/components/data-display/formatters/display-field-range-number.labels.d.ts.map +1 -1
  282. package/dist/esm/components/data-display/formatters/display-field-range-time.d.ts.map +1 -1
  283. package/dist/esm/components/data-display/formatters/display-field-range-time.labels.d.ts.map +1 -1
  284. package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
  285. package/dist/esm/components/data-display/formatters/display-field-string.js +82 -7
  286. package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
  287. package/dist/esm/components/data-display/formatters/display-field-string.labels.d.ts.map +1 -1
  288. package/dist/esm/components/data-display/formatters/display-field-time.d.ts.map +1 -1
  289. package/dist/esm/components/data-display/formatters/display-field-time.labels.d.ts.map +1 -1
  290. package/dist/esm/components/data-display/identifier.d.ts +19 -0
  291. package/dist/esm/components/data-display/identifier.d.ts.map +1 -0
  292. package/dist/esm/components/data-display/identifier.js +21 -0
  293. package/dist/esm/components/data-display/identifier.js.map +1 -0
  294. package/dist/esm/components/data-display/kbd.d.ts +17 -0
  295. package/dist/esm/components/data-display/kbd.d.ts.map +1 -0
  296. package/dist/esm/components/data-display/kbd.js +18 -0
  297. package/dist/esm/components/data-display/kbd.js.map +1 -0
  298. package/dist/esm/components/data-display/markdown-content.d.ts.map +1 -1
  299. package/dist/esm/components/data-display/markdown-stream-runtime.d.ts.map +1 -1
  300. package/dist/esm/components/data-display/markdown-stream.lazy.d.ts.map +1 -1
  301. package/dist/esm/components/data-display/markdown-stream.lazy.js +13 -2
  302. package/dist/esm/components/data-display/markdown-stream.lazy.js.map +1 -1
  303. package/dist/esm/components/data-display/notification-indicator.d.ts.map +1 -1
  304. package/dist/esm/components/data-display/notification-indicator.js +3 -11
  305. package/dist/esm/components/data-display/notification-indicator.js.map +1 -1
  306. package/dist/esm/components/data-display/notification-indicator.labels.d.ts.map +1 -1
  307. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts +63 -0
  308. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts.map +1 -0
  309. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js +75 -0
  310. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js.map +1 -0
  311. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts +32 -0
  312. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts.map +1 -0
  313. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js +36 -0
  314. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js.map +1 -0
  315. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts +46 -6
  316. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  317. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js +70 -46
  318. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js.map +1 -1
  319. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts +12 -2
  320. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts.map +1 -1
  321. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js +3 -2
  322. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js.map +1 -1
  323. package/dist/esm/components/data-display/timeline.d.ts +3 -0
  324. package/dist/esm/components/data-display/timeline.d.ts.map +1 -0
  325. package/dist/esm/components/data-display/timeline.js +92 -0
  326. package/dist/esm/components/data-display/timeline.js.map +1 -0
  327. package/dist/esm/components/feedback/celebration-overlay.d.ts +13 -4
  328. package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
  329. package/dist/esm/components/feedback/celebration-overlay.js +146 -22
  330. package/dist/esm/components/feedback/celebration-overlay.js.map +1 -1
  331. package/dist/esm/components/feedback/celebration-overlay.labels.d.ts.map +1 -1
  332. package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
  333. package/dist/esm/components/feedback/danger-zone.labels.d.ts.map +1 -1
  334. package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
  335. package/dist/esm/components/feedback/empty-state.js.map +1 -1
  336. package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
  337. package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
  338. package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
  339. package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
  340. package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
  341. package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
  342. package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
  343. package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
  344. package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
  345. package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
  346. package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
  347. package/dist/esm/components/feedback/features/feature-unavailable-prompt.labels.d.ts.map +1 -1
  348. package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
  349. package/dist/esm/components/feedback/loading-overlay.labels.d.ts.map +1 -1
  350. package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
  351. package/dist/esm/components/feedback/loading-spinner.labels.d.ts.map +1 -1
  352. package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
  353. package/dist/esm/components/feedback/notification-center.js +5 -5
  354. package/dist/esm/components/feedback/notification-center.js.map +1 -1
  355. package/dist/esm/components/feedback/operations-confirm-critical.d.ts +1 -1
  356. package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
  357. package/dist/esm/components/feedback/operations-confirm-critical.js +9 -7
  358. package/dist/esm/components/feedback/operations-confirm-critical.js.map +1 -1
  359. package/dist/esm/components/feedback/operations-confirm-critical.labels.d.ts.map +1 -1
  360. package/dist/esm/components/feedback/progress.d.ts.map +1 -1
  361. package/dist/esm/components/feedback/progress.labels.d.ts.map +1 -1
  362. package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
  363. package/dist/esm/components/feedback/skeleton.labels.d.ts.map +1 -1
  364. package/dist/esm/components/feedback/toast.d.ts.map +1 -1
  365. package/dist/esm/components/feedback/toast.labels.d.ts.map +1 -1
  366. package/dist/esm/components/form/autosave-indicator.d.ts.map +1 -1
  367. package/dist/esm/components/form/autosave-indicator.labels.d.ts.map +1 -1
  368. package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
  369. package/dist/esm/components/form/chromes/field.js +11 -3
  370. package/dist/esm/components/form/chromes/field.js.map +1 -1
  371. package/dist/esm/components/form/chromes/field.labels.d.ts.map +1 -1
  372. package/dist/esm/components/form/chromes/form-primitive.d.ts.map +1 -1
  373. package/dist/esm/components/form/chromes/form-primitive.labels.d.ts.map +1 -1
  374. package/dist/esm/components/form/chromes/form-primitive.labels.js +28 -0
  375. package/dist/esm/components/form/chromes/form-primitive.labels.js.map +1 -1
  376. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  377. package/dist/esm/components/form/combobox.js +4 -3
  378. package/dist/esm/components/form/combobox.js.map +1 -1
  379. package/dist/esm/components/form/combobox.labels.d.ts.map +1 -1
  380. package/dist/esm/components/form/controls/boolean/checkbox.d.ts.map +1 -1
  381. package/dist/esm/components/form/controls/boolean/checkbox.js +2 -2
  382. package/dist/esm/components/form/controls/boolean/checkbox.js.map +1 -1
  383. package/dist/esm/components/form/controls/boolean/checkbox.labels.d.ts.map +1 -1
  384. package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
  385. package/dist/esm/components/form/controls/boolean/switch.labels.d.ts.map +1 -1
  386. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
  387. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.labels.d.ts.map +1 -1
  388. package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
  389. package/dist/esm/components/form/controls/boolean/toggle.labels.d.ts.map +1 -1
  390. package/dist/esm/components/form/controls/code-editor/cm6-editor-appearance.d.ts.map +1 -1
  391. package/dist/esm/components/form/controls/code-editor/cm6-editor.d.ts.map +1 -1
  392. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.d.ts.map +1 -1
  393. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js +11 -2
  394. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js.map +1 -1
  395. package/dist/esm/components/form/controls/code-editor/form-field-code.d.ts.map +1 -1
  396. package/dist/esm/components/form/controls/code-editor/markdown-editor.d.ts.map +1 -1
  397. package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
  398. package/dist/esm/components/form/controls/date-time/calendar.labels.d.ts.map +1 -1
  399. package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
  400. package/dist/esm/components/form/controls/date-time/date-range-picker.labels.d.ts.map +1 -1
  401. package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
  402. package/dist/esm/components/form/controls/date-time/datepicker.labels.d.ts.map +1 -1
  403. package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
  404. package/dist/esm/components/form/controls/date-time/datetime-picker.labels.d.ts.map +1 -1
  405. package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
  406. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.d.ts.map +1 -1
  407. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js +11 -2
  408. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js.map +1 -1
  409. package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
  410. package/dist/esm/components/form/controls/date-time/time-picker.labels.d.ts.map +1 -1
  411. package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
  412. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.d.ts.map +1 -1
  413. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js +11 -2
  414. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js.map +1 -1
  415. package/dist/esm/components/form/controls/enum/radio.d.ts +1 -1
  416. package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
  417. package/dist/esm/components/form/controls/enum/radio.js +13 -12
  418. package/dist/esm/components/form/controls/enum/radio.js.map +1 -1
  419. package/dist/esm/components/form/controls/enum/radio.labels.d.ts.map +1 -1
  420. package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
  421. package/dist/esm/components/form/controls/enum/select-multiple.js +5 -3
  422. package/dist/esm/components/form/controls/enum/select-multiple.js.map +1 -1
  423. package/dist/esm/components/form/controls/enum/select-multiple.labels.d.ts.map +1 -1
  424. package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
  425. package/dist/esm/components/form/controls/enum/select.labels.d.ts.map +1 -1
  426. package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
  427. package/dist/esm/components/form/controls/enum/toggle-group.js +96 -5
  428. package/dist/esm/components/form/controls/enum/toggle-group.js.map +1 -1
  429. package/dist/esm/components/form/controls/enum/toggle-group.labels.d.ts.map +1 -1
  430. package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
  431. package/dist/esm/components/form/controls/file/file-upload.labels.d.ts.map +1 -1
  432. package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
  433. package/dist/esm/components/form/controls/file/image-crop.labels.d.ts.map +1 -1
  434. package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts +44 -0
  435. package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts.map +1 -0
  436. package/dist/esm/components/form/controls/file/providers/dropbox-picker.js +137 -0
  437. package/dist/esm/components/form/controls/file/providers/dropbox-picker.js.map +1 -0
  438. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts +22 -0
  439. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts.map +1 -0
  440. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js +27 -0
  441. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js.map +1 -0
  442. package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts +3 -1
  443. package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts.map +1 -1
  444. package/dist/esm/components/form/controls/file/providers/google-drive-picker.js +3 -1
  445. package/dist/esm/components/form/controls/file/providers/google-drive-picker.js.map +1 -1
  446. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts +6 -0
  447. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts.map +1 -1
  448. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js +8 -1
  449. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js.map +1 -1
  450. package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts +6 -2
  451. package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts.map +1 -1
  452. package/dist/esm/components/form/controls/file/providers/onedrive-picker.js +6 -2
  453. package/dist/esm/components/form/controls/file/providers/onedrive-picker.js.map +1 -1
  454. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts +6 -0
  455. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts.map +1 -1
  456. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js +8 -1
  457. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js.map +1 -1
  458. package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
  459. package/dist/esm/components/form/controls/input-group.labels.d.ts.map +1 -1
  460. package/dist/esm/components/form/controls/input.d.ts.map +1 -1
  461. package/dist/esm/components/form/controls/input.labels.d.ts.map +1 -1
  462. package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
  463. package/dist/esm/components/form/controls/number/slider.labels.d.ts.map +1 -1
  464. package/dist/esm/components/form/controls/number/slider.labels.js +9 -2
  465. package/dist/esm/components/form/controls/number/slider.labels.js.map +1 -1
  466. package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
  467. package/dist/esm/components/form/controls/string/color-input.labels.d.ts.map +1 -1
  468. package/dist/esm/components/form/controls/string/color-picker-surface.d.ts.map +1 -1
  469. package/dist/esm/components/form/controls/string/color-picker-surface.js.map +1 -1
  470. package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
  471. package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
  472. package/dist/esm/components/form/controls/string/input-otp.labels.d.ts.map +1 -1
  473. package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
  474. package/dist/esm/components/form/controls/string/password-input.labels.d.ts.map +1 -1
  475. package/dist/esm/components/form/controls/string/password-input.labels.js +9 -2
  476. package/dist/esm/components/form/controls/string/password-input.labels.js.map +1 -1
  477. package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
  478. package/dist/esm/components/form/controls/string/textarea.labels.d.ts.map +1 -1
  479. package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
  480. package/dist/esm/components/layout/aspect-ratio.labels.d.ts.map +1 -1
  481. package/dist/esm/components/layout/carousel.d.ts.map +1 -1
  482. package/dist/esm/components/layout/carousel.labels.d.ts.map +1 -1
  483. package/dist/esm/components/layout/divider.d.ts.map +1 -1
  484. package/dist/esm/components/layout/divider.labels.d.ts.map +1 -1
  485. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  486. package/dist/esm/components/layout/resizable.labels.d.ts.map +1 -1
  487. package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
  488. package/dist/esm/components/layout/scroll-area.labels.d.ts.map +1 -1
  489. package/dist/esm/components/layout/separator.d.ts.map +1 -1
  490. package/dist/esm/components/layout/separator.labels.d.ts.map +1 -1
  491. package/dist/esm/components/navigation/app-level/activity-bar.d.ts.map +1 -1
  492. package/dist/esm/components/navigation/app-level/activity-bar.labels.d.ts.map +1 -1
  493. package/dist/esm/components/navigation/app-level/command-menu.d.ts.map +1 -1
  494. package/dist/esm/components/navigation/app-level/command-menu.js +2 -2
  495. package/dist/esm/components/navigation/app-level/command-menu.js.map +1 -1
  496. package/dist/esm/components/navigation/app-level/command-menu.labels.d.ts.map +1 -1
  497. package/dist/esm/components/navigation/app-level/control-panel.d.ts.map +1 -1
  498. package/dist/esm/components/navigation/app-level/control-panel.labels.d.ts.map +1 -1
  499. package/dist/esm/components/navigation/app-level/menu-user-org.d.ts.map +1 -1
  500. package/dist/esm/components/navigation/app-level/menu-user-org.labels.d.ts.map +1 -1
  501. package/dist/esm/components/navigation/app-level/menubar.d.ts.map +1 -1
  502. package/dist/esm/components/navigation/app-level/menubar.js +35 -13
  503. package/dist/esm/components/navigation/app-level/menubar.js.map +1 -1
  504. package/dist/esm/components/navigation/app-level/menubar.labels.d.ts.map +1 -1
  505. package/dist/esm/components/navigation/app-level/navigation-back.d.ts.map +1 -1
  506. package/dist/esm/components/navigation/app-level/navigation-back.js +10 -2
  507. package/dist/esm/components/navigation/app-level/navigation-back.js.map +1 -1
  508. package/dist/esm/components/navigation/app-level/navigation-back.labels.d.ts.map +1 -1
  509. package/dist/esm/components/navigation/app-level/notification-center.d.ts.map +1 -1
  510. package/dist/esm/components/navigation/app-level/notification-center.js.map +1 -1
  511. package/dist/esm/components/navigation/app-level/notification-center.labels.d.ts.map +1 -1
  512. package/dist/esm/components/navigation/app-level/notification-center.labels.js +15 -0
  513. package/dist/esm/components/navigation/app-level/notification-center.labels.js.map +1 -1
  514. package/dist/esm/components/navigation/app-level/quick-action-button.d.ts.map +1 -1
  515. package/dist/esm/components/navigation/app-level/quick-action-button.labels.d.ts.map +1 -1
  516. package/dist/esm/components/navigation/app-level/quick-action-button.labels.js +4 -0
  517. package/dist/esm/components/navigation/app-level/quick-action-button.labels.js.map +1 -1
  518. package/dist/esm/components/navigation/app-level/quick-switcher.d.ts.map +1 -1
  519. package/dist/esm/components/navigation/app-level/quick-switcher.labels.d.ts.map +1 -1
  520. package/dist/esm/components/navigation/app-level/sidebar.d.ts.map +1 -1
  521. package/dist/esm/components/navigation/app-level/sidebar.js +38 -22
  522. package/dist/esm/components/navigation/app-level/sidebar.js.map +1 -1
  523. package/dist/esm/components/navigation/app-level/sidebar.labels.d.ts.map +1 -1
  524. package/dist/esm/components/navigation/app-level/sidebar.labels.js +1 -0
  525. package/dist/esm/components/navigation/app-level/sidebar.labels.js.map +1 -1
  526. package/dist/esm/components/navigation/app-level/status-bar.d.ts.map +1 -1
  527. package/dist/esm/components/navigation/app-level/status-bar.labels.d.ts.map +1 -1
  528. package/dist/esm/components/navigation/app-level/toolbar.d.ts.map +1 -1
  529. package/dist/esm/components/navigation/app-level/toolbar.labels.d.ts.map +1 -1
  530. package/dist/esm/components/navigation/app-level/utility-panel.d.ts.map +1 -1
  531. package/dist/esm/components/navigation/app-level/utility-panel.js +23 -5
  532. package/dist/esm/components/navigation/app-level/utility-panel.js.map +1 -1
  533. package/dist/esm/components/navigation/app-level/utility-panel.labels.d.ts.map +1 -1
  534. package/dist/esm/components/navigation/app-level/utility-panel.labels.js.map +1 -1
  535. package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
  536. package/dist/esm/components/navigation/breadcrumb.labels.d.ts.map +1 -1
  537. package/dist/esm/components/navigation/command.d.ts.map +1 -1
  538. package/dist/esm/components/navigation/command.js +2 -2
  539. package/dist/esm/components/navigation/command.js.map +1 -1
  540. package/dist/esm/components/navigation/command.labels.d.ts.map +1 -1
  541. package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
  542. package/dist/esm/components/navigation/menu-bar.labels.d.ts.map +1 -1
  543. package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
  544. package/dist/esm/components/navigation/navbar.labels.d.ts.map +1 -1
  545. package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
  546. package/dist/esm/components/navigation/sidebar.labels.d.ts.map +1 -1
  547. package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
  548. package/dist/esm/components/overlays/containers/alert-dialog.js +11 -1
  549. package/dist/esm/components/overlays/containers/alert-dialog.js.map +1 -1
  550. package/dist/esm/components/overlays/containers/alert-dialog.labels.d.ts.map +1 -1
  551. package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
  552. package/dist/esm/components/overlays/containers/alert.labels.d.ts.map +1 -1
  553. package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
  554. package/dist/esm/components/overlays/containers/dialog.js +11 -1
  555. package/dist/esm/components/overlays/containers/dialog.js.map +1 -1
  556. package/dist/esm/components/overlays/containers/dialog.labels.d.ts.map +1 -1
  557. package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
  558. package/dist/esm/components/overlays/containers/drawer.labels.d.ts.map +1 -1
  559. package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
  560. package/dist/esm/components/overlays/containers/sheet.labels.d.ts.map +1 -1
  561. package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
  562. package/dist/esm/components/overlays/floating/context-menu.labels.d.ts.map +1 -1
  563. package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
  564. package/dist/esm/components/overlays/floating/dropdown-menu.labels.d.ts.map +1 -1
  565. package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
  566. package/dist/esm/components/overlays/floating/hover-card.labels.d.ts.map +1 -1
  567. package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
  568. package/dist/esm/components/overlays/floating/popover.labels.d.ts.map +1 -1
  569. package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
  570. package/dist/esm/components/overlays/floating/tooltip.labels.d.ts.map +1 -1
  571. package/dist/esm/components/sections/accordion.d.ts.map +1 -1
  572. package/dist/esm/components/sections/accordion.labels.d.ts.map +1 -1
  573. package/dist/esm/components/sections/card.d.ts.map +1 -1
  574. package/dist/esm/components/sections/card.js +71 -6
  575. package/dist/esm/components/sections/card.js.map +1 -1
  576. package/dist/esm/components/sections/card.labels.d.ts.map +1 -1
  577. package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
  578. package/dist/esm/components/sections/collapsible.labels.d.ts.map +1 -1
  579. package/dist/esm/components/sections/content-section.d.ts.map +1 -1
  580. package/dist/esm/components/sections/content-section.js +36 -6
  581. package/dist/esm/components/sections/content-section.js.map +1 -1
  582. package/dist/esm/components/sections/disclosure-nesting.d.ts.map +1 -1
  583. package/dist/esm/components/sections/option-gesture.d.ts +15 -0
  584. package/dist/esm/components/sections/option-gesture.d.ts.map +1 -0
  585. package/dist/esm/components/sections/option-gesture.js +66 -0
  586. package/dist/esm/components/sections/option-gesture.js.map +1 -0
  587. package/dist/esm/components/sections/pagination.d.ts.map +1 -1
  588. package/dist/esm/components/sections/pagination.labels.d.ts.map +1 -1
  589. package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
  590. package/dist/esm/components/sections/stacked-layout.labels.d.ts.map +1 -1
  591. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  592. package/dist/esm/components/sections/stepper.labels.d.ts.map +1 -1
  593. package/dist/esm/components/sections/table.d.ts.map +1 -1
  594. package/dist/esm/components/sections/table.labels.d.ts.map +1 -1
  595. package/dist/esm/components/sections/tabs.d.ts.map +1 -1
  596. package/dist/esm/components/sections/tabs.js +60 -15
  597. package/dist/esm/components/sections/tabs.js.map +1 -1
  598. package/dist/esm/components/sections/tabs.labels.d.ts.map +1 -1
  599. package/dist/esm/components/typography/heading.d.ts.map +1 -1
  600. package/dist/esm/components/typography/heading.labels.d.ts.map +1 -1
  601. package/dist/esm/components/typography/label.d.ts.map +1 -1
  602. package/dist/esm/components/typography/label.labels.d.ts.map +1 -1
  603. package/dist/esm/components/typography/link.d.ts.map +1 -1
  604. package/dist/esm/components/typography/link.js +9 -3
  605. package/dist/esm/components/typography/link.js.map +1 -1
  606. package/dist/esm/components/typography/link.labels.d.ts.map +1 -1
  607. package/dist/esm/components/typography/text.d.ts +1 -1
  608. package/dist/esm/components/typography/text.d.ts.map +1 -1
  609. package/dist/esm/components/typography/text.js +3 -2
  610. package/dist/esm/components/typography/text.js.map +1 -1
  611. package/dist/esm/components/typography/text.labels.d.ts.map +1 -1
  612. package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
  613. package/dist/esm/config/billing-shell.presets.d.ts.map +1 -1
  614. package/dist/esm/config/index.d.ts.map +1 -1
  615. package/dist/esm/config/preset-design-system.d.ts.map +1 -1
  616. package/dist/esm/config/preset-design-system.js +37 -60
  617. package/dist/esm/config/preset-design-system.js.map +1 -1
  618. package/dist/esm/config/preset-error-pages.d.ts.map +1 -1
  619. package/dist/esm/config/preset-kits.d.ts.map +1 -1
  620. package/dist/esm/config/preset-navigation.d.ts.map +1 -1
  621. package/dist/esm/config/preset-navigation.js +0 -5
  622. package/dist/esm/config/preset-navigation.js.map +1 -1
  623. package/dist/esm/config/preset-resources.d.ts.map +1 -1
  624. package/dist/esm/config/preset-shell.d.ts.map +1 -1
  625. package/dist/esm/config/preset-utils.d.ts.map +1 -1
  626. package/dist/esm/config/presets.d.ts.map +1 -1
  627. package/dist/esm/config/resources/application.resource-presets.d.ts +2 -0
  628. package/dist/esm/config/resources/application.resource-presets.d.ts.map +1 -1
  629. package/dist/esm/config/resources/application.resource-presets.js +163 -7
  630. package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
  631. package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
  632. package/dist/esm/config/resources/billing.resource-presets.js +1 -0
  633. package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
  634. package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
  635. package/dist/esm/config/resources/guidance.resource-presets.js +21 -5
  636. package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
  637. package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
  638. package/dist/esm/config/resources/identity.resource-presets.js +25 -3
  639. package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
  640. package/dist/esm/config/resources/index.d.ts.map +1 -1
  641. package/dist/esm/config/resources/index.js.map +1 -1
  642. package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
  643. package/dist/esm/config/resources/organizations.resource-presets.js +90 -12
  644. package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
  645. package/dist/esm/config/resources/resource.config.utils.d.ts.map +1 -1
  646. package/dist/esm/config/resources/security.resource-presets.d.ts +8 -2
  647. package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
  648. package/dist/esm/config/resources/security.resource-presets.js +185 -29
  649. package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
  650. package/dist/esm/config/resources/webhooks.resource-presets.d.ts.map +1 -1
  651. package/dist/esm/config/resources/webhooks.resource-presets.js +27 -2
  652. package/dist/esm/config/resources/webhooks.resource-presets.js.map +1 -1
  653. package/dist/esm/index.d.ts +6 -1
  654. package/dist/esm/index.d.ts.map +1 -1
  655. package/dist/esm/index.js +6 -1
  656. package/dist/esm/index.js.map +1 -1
  657. package/dist/esm/lottie/lottie.content.definitions.d.ts.map +1 -1
  658. package/dist/esm/lottie/lottie.definitions.d.ts.map +1 -1
  659. package/dist/esm/mermaid-stub.d.ts.map +1 -1
  660. package/dist/esm/registration/register-common-enums.d.ts.map +1 -1
  661. package/dist/esm/registration/register-common-enums.js +48 -34
  662. package/dist/esm/registration/register-common-enums.js.map +1 -1
  663. package/dist/esm/registration/register-default-animations.d.ts.map +1 -1
  664. package/dist/esm/registration/register-default-icons.d.ts.map +1 -1
  665. package/dist/esm/registration/register-default-icons.js +3 -1
  666. package/dist/esm/registration/register-default-icons.js.map +1 -1
  667. package/dist/esm/registration/register-default-presets.d.ts.map +1 -1
  668. package/dist/esm/registration/register-default-presets.js +32 -4
  669. package/dist/esm/registration/register-default-presets.js.map +1 -1
  670. package/dist/esm/registration/register-provider-components.d.ts.map +1 -1
  671. package/dist/esm/registration/register-provider-components.js +5 -0
  672. package/dist/esm/registration/register-provider-components.js.map +1 -1
  673. package/dist/esm/shiki-subset.d.ts +11 -3
  674. package/dist/esm/shiki-subset.d.ts.map +1 -1
  675. package/dist/esm/shiki-subset.js +10 -2
  676. package/dist/esm/shiki-subset.js.map +1 -1
  677. package/dist/esm/theme-exports.d.ts.map +1 -1
  678. package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
  679. package/dist/esm/themes/cozy.theme.js +19 -5
  680. package/dist/esm/themes/cozy.theme.js.map +1 -1
  681. package/dist/esm/themes/dense.theme.d.ts.map +1 -1
  682. package/dist/esm/themes/dense.theme.js +56 -10
  683. package/dist/esm/themes/dense.theme.js.map +1 -1
  684. package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
  685. package/dist/esm/themes/editorial.theme.js +19 -5
  686. package/dist/esm/themes/editorial.theme.js.map +1 -1
  687. package/dist/esm/themes/glass.theme.d.ts.map +1 -1
  688. package/dist/esm/themes/glass.theme.js +5 -1
  689. package/dist/esm/themes/glass.theme.js.map +1 -1
  690. package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
  691. package/dist/esm/themes/neo-brutalist.theme.js +9 -2
  692. package/dist/esm/themes/neo-brutalist.theme.js.map +1 -1
  693. package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
  694. package/dist/esm/themes/terminal.theme.js +19 -5
  695. package/dist/esm/themes/terminal.theme.js.map +1 -1
  696. package/dist/esm/themes/trading.theme.d.ts.map +1 -1
  697. package/dist/esm/themes/trading.theme.js +22 -6
  698. package/dist/esm/themes/trading.theme.js.map +1 -1
  699. package/dist/tsconfig.build.tsbuildinfo +1 -1
  700. package/package.json +29 -45
  701. package/dist/esm/.native.tsbuildinfo +0 -1
  702. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts +0 -16
  703. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +0 -1
  704. package/dist/esm/components/form/controls/form-field-checkbox-group.js +0 -143
  705. package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +0 -1
@@ -0,0 +1,92 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { IndicatorVariant, SelectableVariant, UIBehavior } from "@wildo-ai/presets-components-models";
4
+ import { cn, createCompoundPreset, useUI } from "@wildo-ai/saas-frontend-lib";
5
+ import { optionGestureHandlers } from "../../components/sections/option-gesture.js";
6
+ /**
7
+ * DEFAULT preset for `LOW_LEVEL_TIMELINE`: an ordered list along one rail, entries hanging off it
8
+ * with a marker dot in the entry's tone.
9
+ *
10
+ * ## The marker is the STRONG hue, not the subtle chip
11
+ *
12
+ * The INDICATOR recipe tints a chip with the `*-subtle` tokens, which is right for a badge with
13
+ * words in it and invisible on a 12px dot. The dot fills with the tone's own token — `success`,
14
+ * `warning`, `destructive`, `info`, and the muted foreground for NEUTRAL — total over the
15
+ * vocabulary by type, so a sixth tone is a compile error here rather than a grey dot. A marker WITH
16
+ * content (a glyph) keeps the same fill and sizes to its content.
17
+ *
18
+ * ## Geometry, once
19
+ *
20
+ * The rail is the list's own start border; entries pad past it and the marker sits absolutely on
21
+ * the rail, so the rail and the dots share one coordinate whatever an entry's body contains. The
22
+ * dot's `ring-background` is what lifts it off the rail line.
23
+ */
24
+ const MARKER_FILL = {
25
+ [IndicatorVariant.SUCCESS]: "bg-success text-success-foreground",
26
+ [IndicatorVariant.WARNING]: "bg-warning text-warning-foreground",
27
+ [IndicatorVariant.ERROR]: "bg-destructive text-destructive-foreground",
28
+ [IndicatorVariant.INFO]: "bg-info text-info-foreground",
29
+ [IndicatorVariant.NEUTRAL]: "bg-muted-foreground text-background",
30
+ };
31
+ /** Where the marker sits: centred on the rail, which is the list's start border. */
32
+ /* `--spacing-field` is the rail padding below (`ps-field`); 0.4375rem = half the dot (0.375rem) + half the 1px rail. */
33
+ const MARKER_POSITION = "absolute top-1 -start-[calc(var(--spacing-field,1rem)+0.4375rem)]";
34
+ /*
35
+ * The rail's classes, shared by both of its shapes. A named CONTAINER, so an entry can lay its time
36
+ * beside its body when the rail is wide and above it when the rail is narrow — measured on the
37
+ * creation board's split (2026-09-20), where a 200px rail gave the body sixty pixels beside a
38
+ * fixed-width timestamp and a session id wrapped one character per line. The entry decides by the
39
+ * rail's width, never the viewport's.
40
+ */
41
+ const RAIL = "@container/timeline relative ms-1.5 flex flex-col gap-group border-s border-border ps-field";
42
+ function TimelineRoot({ className, selectable = false, ...props }) {
43
+ /* A rail a person picks from is a `grid` of `row`s — a `div`, since `ol` does not admit the role. */
44
+ if (selectable) {
45
+ return _jsx("div", { "data-slot": "timeline", role: "grid", className: cn(RAIL, className), ...props });
46
+ }
47
+ return (_jsx("ol", { "data-slot": "timeline", className: cn(RAIL, className), ...props }));
48
+ }
49
+ function TimelineMarker({ tone = IndicatorVariant.NEUTRAL, className, children, ...props }) {
50
+ return (_jsx("span", { "data-slot": "timeline-marker", "data-tone": tone, "aria-hidden": "true", className: cn("inline-flex items-center justify-center rounded-full ring-2 ring-background", children === undefined || children === null ? "size-3" : "size-5 [&>svg]:size-3", MARKER_FILL[tone], className), ...props, children: children }));
51
+ }
52
+ function TimelineEntry({ tone = IndicatorVariant.NEUTRAL, marker, option, selected = false, className, children, ...props }) {
53
+ const { getRecipe } = useUI();
54
+ /*
55
+ * A PICKABLE entry wears the same selectable treatment a listbox card does — the FILLED "you are
56
+ * here" tint plus a ring when selected, the theme's focus ring when focusable — so a stream a
57
+ * person picks from reads like every other pickable list on the surface.
58
+ */
59
+ const selectable = option !== undefined || selected ? getRecipe(UIBehavior.SELECTABLE, SelectableVariant.FILLED) : undefined;
60
+ const entryClassName = cn("relative flex min-w-0 flex-wrap items-start gap-element rounded-md", option !== undefined && cn("cursor-pointer outline-none px-item-sm py-item-xs -mx-item-sm", selectable?.states.focus, selectable?.motion.transition), selected && cn(selectable?.states.selected, "ring-2 ring-ring"), className);
61
+ const content = (_jsxs(_Fragment, { children: [_jsx("span", { className: cn(MARKER_POSITION, "flex size-3 items-center justify-center"), children: marker ?? _jsx(TimelineMarker, { tone: tone }) }), children] }));
62
+ /*
63
+ * A PICKABLE entry is a grid `row` owning one `gridcell`, and the gridcell is the entry — focusable,
64
+ * `aria-selected`, carrying the caller's attributes — because an entry holds `Timeline.Actions` and
65
+ * an `option` may not contain a control. The wrapper draws nothing; the rail's flex column lays it out.
66
+ */
67
+ if (option !== undefined) {
68
+ return (_jsx("div", { role: "row", className: "min-w-0", children: _jsx("div", { "data-slot": "timeline-entry", "data-tone": tone, "data-selected": selected, role: "gridcell", "aria-selected": selected, tabIndex: 0, className: entryClassName, ...optionGestureHandlers(option.onSelect), ...props, children: content }) }));
69
+ }
70
+ return (_jsx("li", { "data-slot": "timeline-entry", "data-tone": tone, "data-selected": selected, className: entryClassName, ...props, children: content }));
71
+ }
72
+ function TimelineTime({ className, ...props }) {
73
+ return (_jsx("time", { "data-slot": "timeline-time",
74
+ /* Full width on a narrow rail (the body follows beneath); beside the body from 24rem up — see the root. */
75
+ className: cn("basis-full shrink-0 pt-px text-2xs text-foreground-subtle tabular-nums @sm/timeline:basis-auto", className), ...props }));
76
+ }
77
+ function TimelineBody({ className, ...props }) {
78
+ return (_jsx("div", { "data-slot": "timeline-body", className: cn("flex min-w-0 flex-1 flex-col gap-element-sm text-sm", className), ...props }));
79
+ }
80
+ function TimelineActions({ className, ...props }) {
81
+ return (_jsx("div", { "data-slot": "timeline-actions",
82
+ /* Its own row on a narrow rail, end-aligned; beside the body, pushed to the end, from 24rem up — see the root. */
83
+ className: cn("flex basis-full shrink-0 items-center justify-end gap-element-sm @sm/timeline:ms-auto @sm/timeline:basis-auto", className), ...props }));
84
+ }
85
+ export const Timeline = createCompoundPreset(TimelineRoot, {
86
+ Entry: TimelineEntry,
87
+ Marker: TimelineMarker,
88
+ Time: TimelineTime,
89
+ Body: TimelineBody,
90
+ Actions: TimelineActions,
91
+ });
92
+ //# sourceMappingURL=timeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../../../../src/components/data-display/timeline.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { IndicatorVariant, SelectableVariant, UIBehavior } from \"@wildo-ai/presets-components-models\"\n\nimport { cn, createCompoundPreset, useUI } from \"@wildo-ai/saas-frontend-lib\"\nimport { optionGestureHandlers } from \"~wildo-presets/components/sections/option-gesture\"\nimport type {\n TimelineActionsProps,\n TimelineBodyProps,\n TimelineCompound,\n TimelineEntryProps,\n TimelineMarkerProps,\n TimelineProps,\n TimelineTimeProps,\n} from \"@wildo-ai/saas-frontend-lib\"\n\n/**\n * DEFAULT preset for `LOW_LEVEL_TIMELINE`: an ordered list along one rail, entries hanging off it\n * with a marker dot in the entry's tone.\n *\n * ## The marker is the STRONG hue, not the subtle chip\n *\n * The INDICATOR recipe tints a chip with the `*-subtle` tokens, which is right for a badge with\n * words in it and invisible on a 12px dot. The dot fills with the tone's own token — `success`,\n * `warning`, `destructive`, `info`, and the muted foreground for NEUTRAL — total over the\n * vocabulary by type, so a sixth tone is a compile error here rather than a grey dot. A marker WITH\n * content (a glyph) keeps the same fill and sizes to its content.\n *\n * ## Geometry, once\n *\n * The rail is the list's own start border; entries pad past it and the marker sits absolutely on\n * the rail, so the rail and the dots share one coordinate whatever an entry's body contains. The\n * dot's `ring-background` is what lifts it off the rail line.\n */\nconst MARKER_FILL: Record<IndicatorVariant, string> = {\n [IndicatorVariant.SUCCESS]: \"bg-success text-success-foreground\",\n [IndicatorVariant.WARNING]: \"bg-warning text-warning-foreground\",\n [IndicatorVariant.ERROR]: \"bg-destructive text-destructive-foreground\",\n [IndicatorVariant.INFO]: \"bg-info text-info-foreground\",\n [IndicatorVariant.NEUTRAL]: \"bg-muted-foreground text-background\",\n}\n\n/** Where the marker sits: centred on the rail, which is the list's start border. */\n/* `--spacing-field` is the rail padding below (`ps-field`); 0.4375rem = half the dot (0.375rem) + half the 1px rail. */\nconst MARKER_POSITION = \"absolute top-1 -start-[calc(var(--spacing-field,1rem)+0.4375rem)]\"\n\n/*\n * The rail's classes, shared by both of its shapes. A named CONTAINER, so an entry can lay its time\n * beside its body when the rail is wide and above it when the rail is narrow — measured on the\n * creation board's split (2026-09-20), where a 200px rail gave the body sixty pixels beside a\n * fixed-width timestamp and a session id wrapped one character per line. The entry decides by the\n * rail's width, never the viewport's.\n */\nconst RAIL = \"@container/timeline relative ms-1.5 flex flex-col gap-group border-s border-border ps-field\"\n\nfunction TimelineRoot({ className, selectable = false, ...props }: TimelineProps): React.JSX.Element {\n /* A rail a person picks from is a `grid` of `row`s — a `div`, since `ol` does not admit the role. */\n if (selectable) {\n return <div data-slot=\"timeline\" role=\"grid\" className={cn(RAIL, className)} {...(props as unknown as React.ComponentProps<\"div\">)} />\n }\n return (\n <ol\n data-slot=\"timeline\"\n className={cn(RAIL, className)}\n {...props}\n />\n )\n}\n\nfunction TimelineMarker({ tone = IndicatorVariant.NEUTRAL, className, children, ...props }: TimelineMarkerProps): React.JSX.Element {\n return (\n <span\n data-slot=\"timeline-marker\"\n data-tone={tone}\n aria-hidden=\"true\"\n className={cn(\n \"inline-flex items-center justify-center rounded-full ring-2 ring-background\",\n children === undefined || children === null ? \"size-3\" : \"size-5 [&>svg]:size-3\",\n MARKER_FILL[tone],\n className,\n )}\n {...props}\n >\n {children}\n </span>\n )\n}\n\nfunction TimelineEntry({ tone = IndicatorVariant.NEUTRAL, marker, option, selected = false, className, children, ...props }: TimelineEntryProps): React.JSX.Element {\n const { getRecipe } = useUI()\n /*\n * A PICKABLE entry wears the same selectable treatment a listbox card does — the FILLED \"you are\n * here\" tint plus a ring when selected, the theme's focus ring when focusable — so a stream a\n * person picks from reads like every other pickable list on the surface.\n */\n const selectable = option !== undefined || selected ? getRecipe(UIBehavior.SELECTABLE, SelectableVariant.FILLED) : undefined\n const entryClassName = cn(\n \"relative flex min-w-0 flex-wrap items-start gap-element rounded-md\",\n option !== undefined && cn(\"cursor-pointer outline-none px-item-sm py-item-xs -mx-item-sm\", selectable?.states.focus, selectable?.motion.transition),\n selected && cn(selectable?.states.selected, \"ring-2 ring-ring\"),\n className,\n )\n const content = (\n <>\n <span className={cn(MARKER_POSITION, \"flex size-3 items-center justify-center\")}>\n {marker ?? <TimelineMarker tone={tone} />}\n </span>\n {children}\n </>\n )\n\n /*\n * A PICKABLE entry is a grid `row` owning one `gridcell`, and the gridcell is the entry — focusable,\n * `aria-selected`, carrying the caller's attributes — because an entry holds `Timeline.Actions` and\n * an `option` may not contain a control. The wrapper draws nothing; the rail's flex column lays it out.\n */\n if (option !== undefined) {\n return (\n <div role=\"row\" className=\"min-w-0\">\n <div\n data-slot=\"timeline-entry\"\n data-tone={tone}\n data-selected={selected}\n role=\"gridcell\"\n aria-selected={selected}\n tabIndex={0}\n className={entryClassName}\n {...optionGestureHandlers<HTMLDivElement>(option.onSelect)}\n {...(props as unknown as React.ComponentProps<\"div\">)}\n >\n {content}\n </div>\n </div>\n )\n }\n\n return (\n <li data-slot=\"timeline-entry\" data-tone={tone} data-selected={selected} className={entryClassName} {...props}>\n {content}\n </li>\n )\n}\n\nfunction TimelineTime({ className, ...props }: TimelineTimeProps): React.JSX.Element {\n return (\n <time\n data-slot=\"timeline-time\"\n /* Full width on a narrow rail (the body follows beneath); beside the body from 24rem up — see the root. */\n className={cn(\"basis-full shrink-0 pt-px text-2xs text-foreground-subtle tabular-nums @sm/timeline:basis-auto\", className)}\n {...props}\n />\n )\n}\n\nfunction TimelineBody({ className, ...props }: TimelineBodyProps): React.JSX.Element {\n return (\n <div\n data-slot=\"timeline-body\"\n className={cn(\"flex min-w-0 flex-1 flex-col gap-element-sm text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction TimelineActions({ className, ...props }: TimelineActionsProps): React.JSX.Element {\n return (\n <div\n data-slot=\"timeline-actions\"\n /* Its own row on a narrow rail, end-aligned; beside the body, pushed to the end, from 24rem up — see the root. */\n className={cn(\"flex basis-full shrink-0 items-center justify-end gap-element-sm @sm/timeline:ms-auto @sm/timeline:basis-auto\", className)}\n {...props}\n />\n )\n}\n\nexport const Timeline = createCompoundPreset<TimelineCompound>(TimelineRoot, {\n Entry: TimelineEntry,\n Marker: TimelineMarker,\n Time: TimelineTime,\n Body: TimelineBody,\n Actions: TimelineActions,\n})\n"]}
@@ -8,10 +8,19 @@ import type { CelebrationOverlayProps } from '@wildo-ai/saas-frontend-lib';
8
8
  * any engine concepts.
9
9
  *
10
10
  * Modes:
11
- * - `overlay`: Full-screen centered overlay with message + confetti emoji
12
- * - `confetti`: Lightweight confetti burst (no blocking overlay)
13
- * - `lottie`: Animated TADA icon via the unified icon system (uses `renderIcon` with
14
- * `StandardIconReference.TADA`, rendered in a scaled container for visual impact)
11
+ * - `confetti`: a non-blocking particle burst over the page, `aria-hidden`, purely decorative.
12
+ * - `overlay`: a blocking Dialog carrying the message, an optional next-step CTA and a dismiss.
13
+ * - `lottie`: renders EXACTLY as `overlay` in this default preset.
14
+ *
15
+ * Both dialog modes draw `StandardIconReference.TADA` from the icon registry, which plays an animated
16
+ * Lottie when the application ran `registerDefaultAnimations()` and the reader has not asked for
17
+ * reduced motion — so the dialog DOES animate; `lottie` simply adds nothing to it here. An earlier
18
+ * version of this comment said "no Lottie animation is played", which stopped being true once both
19
+ * branches drew the registry icon.
20
+ *
21
+ * `lottie` is the mode an application's OWN preset for `LOW_LEVEL_CELEBRATION_OVERLAY` can give a
22
+ * meaning to — a per-milestone animation chosen from `notificationIdentifier`, for instance. This
23
+ * default preset keeps it equal to `overlay` rather than inventing an asset it has no way to know.
15
24
  *
16
25
  * For engine integration, see the celebration-overlay wrapper in saas-frontend-lib
17
26
  * which wires NotificationContext and i18n.
@@ -1 +1 @@
1
- {"version":3,"file":"celebration-overlay.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/celebration-overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AA4B1E;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kBAAkB,gGA4J9B,CAAC"}
1
+ {"version":3,"file":"celebration-overlay.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/celebration-overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AA6B1E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,kBAAkB,gGAuR9B,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import { cn, Button, ButtonVariants_Variant, useIconRegistry, StandardIconReference, IconSize } from "@wildo-ai/saas-frontend-lib";
3
+ import { cn, Button, ButtonVariants_Variant, Dialog, DialogContent, DialogTitle, DialogDescription, useIconRegistry, StandardIconReference, IconSize } from "@wildo-ai/saas-frontend-lib";
4
4
  import { ButtonSize } from "@wildo-ai/presets-components-models";
5
+ import { CelebrationDisplayMode } from '@wildo-ai/saas-models';
5
6
  /**
6
7
  * V-12: Honour `prefers-reduced-motion: reduce`. Returns true when the user has
7
8
  * asked the OS to minimize non-essential motion. We listen for changes so the
@@ -34,21 +35,43 @@ function usePrefersReducedMotion() {
34
35
  * any engine concepts.
35
36
  *
36
37
  * Modes:
37
- * - `overlay`: Full-screen centered overlay with message + confetti emoji
38
- * - `confetti`: Lightweight confetti burst (no blocking overlay)
39
- * - `lottie`: Animated TADA icon via the unified icon system (uses `renderIcon` with
40
- * `StandardIconReference.TADA`, rendered in a scaled container for visual impact)
38
+ * - `confetti`: a non-blocking particle burst over the page, `aria-hidden`, purely decorative.
39
+ * - `overlay`: a blocking Dialog carrying the message, an optional next-step CTA and a dismiss.
40
+ * - `lottie`: renders EXACTLY as `overlay` in this default preset.
41
+ *
42
+ * Both dialog modes draw `StandardIconReference.TADA` from the icon registry, which plays an animated
43
+ * Lottie when the application ran `registerDefaultAnimations()` and the reader has not asked for
44
+ * reduced motion — so the dialog DOES animate; `lottie` simply adds nothing to it here. An earlier
45
+ * version of this comment said "no Lottie animation is played", which stopped being true once both
46
+ * branches drew the registry icon.
47
+ *
48
+ * `lottie` is the mode an application's OWN preset for `LOW_LEVEL_CELEBRATION_OVERLAY` can give a
49
+ * meaning to — a per-milestone animation chosen from `notificationIdentifier`, for instance. This
50
+ * default preset keeps it equal to `overlay` rather than inventing an asset it has no way to know.
41
51
  *
42
52
  * For engine integration, see the celebration-overlay wrapper in saas-frontend-lib
43
53
  * which wires NotificationContext and i18n.
44
54
  */
45
- export const CelebrationOverlay = React.forwardRef(({ isActive, mode = 'overlay', message, notificationIdentifier, nextStep, onDismiss, dismissLabel = 'Dismiss', ariaLabel, className, ...props }, ref) => {
55
+ export const CelebrationOverlay = React.forwardRef(({ isActive, mode = 'overlay', message, heading, notificationIdentifier, nextStep, onDismiss, dismissLabel, ariaLabel, className, ...props }, ref) => {
46
56
  const { renderIcon } = useIconRegistry();
47
57
  const prefersReducedMotion = usePrefersReducedMotion();
48
- if (!isActive)
49
- return null;
50
- // Confetti mode: lightweight effect without blocking overlay
51
- if (mode === 'confetti') {
58
+ /**
59
+ * The blocking mode does NOT early-return on `!isActive` — it hands `open` to the Dialog.
60
+ *
61
+ * `AppCelebrationOverlay` is mounted permanently and toggles `isActive`, so returning `null`
62
+ * would UNMOUNT an open Radix Dialog rather than closing it. Closing runs Radix's own teardown —
63
+ * focus restoration to whatever was focused before, scroll unlock, exit transition; an abrupt
64
+ * unmount skips the ordered path, and the celebration auto-dismisses after five seconds, so
65
+ * that teardown happens on its own with nobody interacting. Leaving a keyboard user's focus
66
+ * stranded on `<body>` after a celebration would be a REGRESSION on the state before the trap
67
+ * existed, when focus never moved at all.
68
+ *
69
+ * Confetti keeps the early return: it is decorative, `aria-hidden`, traps nothing and has
70
+ * nothing to tear down.
71
+ */
72
+ if (mode === CelebrationDisplayMode.CONFETTI) {
73
+ if (!isActive)
74
+ return null;
52
75
  // V-12: Honour reduced-motion. Render a single static success glyph in the
53
76
  // viewport center instead of 20 animated particles. The wrapper keeps the
54
77
  // same z-index / pointer-events contract so callers don't notice.
@@ -56,24 +79,125 @@ export const CelebrationOverlay = React.forwardRef(({ isActive, mode = 'overlay'
56
79
  return (_jsx("div", { ref: ref, className: cn("fixed inset-0 z-(--z-transient) pointer-events-none", className), "aria-hidden": "true", ...props, children: _jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: _jsx("div", { className: "text-foreground", "aria-hidden": "true", children: renderIcon(StandardIconReference.TADA, { size: IconSize.XL }) }) }) }));
57
80
  }
58
81
  return (_jsx("div", { ref: ref, className: cn("fixed inset-0 z-(--z-transient) pointer-events-none", className), "aria-hidden": "true", ...props, children: _jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: _jsx("div", { className: "animate-celebration-burst", children: Array.from({ length: 20 }).map((_, i) => (_jsx("span", { className: "absolute inline-block w-2 h-2 rounded-full", style: {
59
- backgroundColor: ['#FFD700', '#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FFEAA7'][i % 6],
82
+ // Themed, not literal. These six variables are defined by the engine Tailwind
83
+ // plugin from the application's own semantic palette, so the celebration follows
84
+ // the brand and differs between light and dark. They used to be six hard-coded
85
+ // hex values, which is why the burst looked the same in every application and in
86
+ // every theme. An application rebrands the confetti by overriding the variables.
87
+ backgroundColor: `var(--celebration-particle-${(i % 6) + 1})`,
60
88
  transform: `rotate(${i * 18}deg) translateY(-${40 + Math.random() * 60}px)`,
61
89
  animation: `celebration-particle ${0.6 + Math.random() * 0.8}s ease-out forwards`,
62
90
  animationDelay: `${Math.random() * 0.3}s`,
63
91
  opacity: 0,
64
92
  } }, i))) }) }) }));
65
93
  }
66
- // Overlay mode (default, also used as fallback for lottie mode):
67
- return (_jsx("div", { ref: ref, role: "dialog", "aria-modal": "true", "aria-label": ariaLabel || 'Celebration', className: cn("fixed inset-0 z-(--z-transient) flex items-center justify-center", "bg-background/80 backdrop-blur-sm",
68
- // V-12: Drop the entrance animation when the user prefers reduced
69
- // motion; everything else (focus, dismissal) stays the same.
70
- !prefersReducedMotion && "animate-in fade-in duration-[var(--motion-duration-normal)]", className), onClick: onDismiss, ...props, children: _jsxs("div", { className: "relative flex flex-col items-center gap-field p-card-lg max-w-md text-center", onClick: (e) => e.stopPropagation(), children: [mode === 'lottie' ? (_jsx("div", { className: "flex items-center justify-center", style: { width: 80, height: 80 }, "aria-hidden": "true", children: _jsx("div", { style: { transform: 'scale(2.5)' }, children: renderIcon(StandardIconReference.TADA, { size: IconSize.XL }) }) })) : (_jsx("div", { className: cn("text-6xl",
71
- // V-12: Skip the bounce when reduced-motion is requested.
72
- !prefersReducedMotion && "animate-bounce"), "aria-hidden": "true", children: "\uD83C\uDF89" })), message && (_jsx("p", { className: "text-xl font-semibold text-foreground", children: message })), _jsxs("div", { className: "flex flex-col items-center gap-element mt-element", children: [nextStep && (_jsx(Button, { variant: ButtonVariants_Variant.DEFAULT, size: ButtonSize.MD, onClick: (e) => {
73
- e.stopPropagation();
74
- nextStep.onClick();
75
- onDismiss?.();
76
- }, children: nextStep.label })), onDismiss && (_jsx("button", { type: "button", onClick: onDismiss, className: "text-sm text-muted-foreground hover:text-foreground underline underline-offset-2 transition-colors", children: dismissLabel }))] })] }) }));
94
+ /**
95
+ * Blocking mode, built on the engine Dialog rather than hand-rolled.
96
+ *
97
+ * This was a bare `<div role="dialog" aria-modal="true">` with NO focus trap, no initial focus,
98
+ * no Escape handler and no focus restoration, dismissible only by clicking the backdrop. An
99
+ * `aria-modal` container that leaves the page behind it fully focusable is worse than one that
100
+ * makes no claim at all: assistive technology is told the rest of the page is inert while a
101
+ * keyboard user tabs straight into it — and with dismissal on pointer only, a keyboard user
102
+ * could not close it either.
103
+ *
104
+ * `Dialog` is Radix underneath, so focus trapping, initial focus, Escape and focus restoration
105
+ * all come from the same mechanism `GuidanceModal` already uses. Building a second trap beside
106
+ * a working one is how two half-correct implementations happen.
107
+ *
108
+ * `onOpenChange` receives Radix's Escape and outside-click, so the dismissal the original
109
+ * hand-wired is preserved without a bespoke click handler on the overlay root.
110
+ *
111
+ * ONE consequence of the non-modal branch, verified against the installed Radix rather than
112
+ * assumed: `DialogOverlay` returns `null` when `modal` is false, so a congratulatory
113
+ * celebration renders NO SCRIM — the page behind it stays visible and clickable, which is what
114
+ * a transient should do. Outside-click dismissal survives regardless, because it comes from
115
+ * `DismissableLayer` rather than from the overlay element. Escape likewise: it is handled on the
116
+ * owner document, not through the focus trap the non-modal branch does not install.
117
+ */
118
+ /**
119
+ * MODAL only when the celebration asks for a DECISION.
120
+ *
121
+ * A Radix modal moves focus into itself on open and locks body scroll. This overlay
122
+ * auto-dismisses after five seconds and is, in its common shape, purely congratulatory — so a
123
+ * milestone achieved while someone is typing stole their focus mid-keystroke, dropped every
124
+ * character until the timer fired, and froze the page's scroll for a decorative moment. The
125
+ * docblock above reasons only about the opposite hazard (focus stranded by an abrupt unmount)
126
+ * and that reasoning still holds; this is the other direction, which nothing had considered.
127
+ *
128
+ * `nextStep` is the discriminator, and it is the honest one: a celebration offering an action is
129
+ * something the user is expected to answer, so taking focus and holding the page is right. One
130
+ * offering nothing is a transient — it stays visible, it takes nothing, and its TIMER is what
131
+ * ends it.
132
+ *
133
+ * The timer, specifically, and not the interactions: an earlier version of this line said the
134
+ * transient "stays dismissible with Escape and with Tab-to-the-button", which is false in the
135
+ * one condition that matters. Radix delivers Escape to the topmost layer only, refuses an
136
+ * outside press while a higher layer disables outside pointer events, and sets a buried layer's
137
+ * own `pointer-events: none` — so every interactive exit disappears the moment any dialog mounts
138
+ * above this one. That is exactly why both branches now carry a timer (the decision branch a far
139
+ * longer ceiling), and why the non-modal branch must not treat focus moving out as a dismissal.
140
+ */
141
+ const asksForADecision = Boolean(nextStep);
142
+ return (_jsx(Dialog, { open: isActive, modal: asksForADecision, onOpenChange: (open) => { if (!open)
143
+ onDismiss?.(); }, children: _jsxs(DialogContent, { ref: ref, className: cn('max-w-md', className),
144
+ /*
145
+ ONE dismiss affordance. `DialogContent` renders Radix's close X by default, which put it
146
+ beside the ghost dismiss Button below — two controls, one action, and only one of them
147
+ carrying the application's own dismiss label.
148
+ */
149
+ /*
150
+ ...unless there is no `onDismiss`, in which case Radix's X is the ONLY exit.
151
+
152
+ `onDismiss` is optional on this contract and the ghost Dismiss button below is gated on
153
+ it, so a direct preset consumer that omits it got a dialog with no dismiss control, no
154
+ close X, `open` controlled by a caller that is not listening, and — in the decision
155
+ branch — `modal` focus trapping. The component's own specification documents direct use
156
+ as a supported shape ("Direct use of the preset expects those props explicitly"), so
157
+ this is reachable by anyone following it, even though the only consumer today is
158
+ `AppCelebrationOverlay`, which always passes one.
159
+
160
+ Still exactly ONE dismiss affordance in every case, which is what this prop was set to
161
+ `false` for: the app's own control when it exists, Radix's when it does not.
162
+ */
163
+ showCloseButton: !onDismiss, ...(message ? {} : { 'aria-describedby': undefined }), onOpenAutoFocus: asksForADecision ? undefined : (event) => event.preventDefault(),
164
+ /*
165
+ An ANNOUNCEMENT must not be dismissed because focus moved somewhere else.
166
+
167
+ With no `nextStep` this Dialog is deliberately NON-modal (`modal={asksForADecision}`),
168
+ and a non-modal Radix content closes on `onFocusOutside` as well as on a pointer press
169
+ outside. Focus moving is not a user dismissal: any dialog that MOUNTS after the
170
+ celebration takes focus as it opens, which Radix reports as focus-outside, which closed
171
+ the celebration in the same tick it appeared.
172
+
173
+ Measured 2026-09-20 on Wonder Todos, on the most ordinary path the feature has — create
174
+ a todo from the list, which navigates to the todo's detail dialog. The milestone fired,
175
+ the websocket frame arrived, `showCelebration` ran, and the trace read
176
+ `Celebration shown` immediately followed by `Celebration dismissed` at the same second,
177
+ where an undisturbed run reads `Celebration auto-dismissed` five seconds later. So the
178
+ overlay was correct, reachable and invisible in practice: the one flow that earns a
179
+ milestone is the flow that destroyed the reward for it.
180
+
181
+ A pointer press outside and Escape are left alone — those ARE the user saying "go away",
182
+ and the 5s timer still owns the ordinary case.
183
+
184
+ The `undefined` arm is safe, but NOT for the reason first written here. A modal Radix
185
+ dialog does not stop a portaled sibling from receiving focus, so "it traps focus, so it
186
+ never reaches this path" named the wrong mechanism. What actually holds is that Radix's
187
+ own modal content composes an unconditional `onFocusOutside` preventer of its own, so the
188
+ decision branch is already protected before this prop is consulted.
189
+ */
190
+ onFocusOutside: asksForADecision ? undefined : (event) => event.preventDefault(), ...props, children: [!heading && _jsx(DialogTitle, { className: "sr-only", children: ariaLabel }), _jsxs("div", { className: "flex flex-col items-center gap-field text-center", children: [_jsx("div", { className: cn('flex items-center justify-center text-primary', !prefersReducedMotion && 'animate-bounce'), "aria-hidden": "true", children: renderIcon(StandardIconReference.TADA, { size: IconSize.XL }) }), heading && _jsx(DialogTitle, { className: "text-2xl font-bold text-foreground", children: heading }), message && (
191
+ // `DialogDescription`, not a bare `<p>`: it is what Radix wires as the dialog's
192
+ // accessible DESCRIPTION, so the same text serves both the reader and the screen
193
+ // reader instead of the surface having a visible message and no described-by at all.
194
+ _jsx(DialogDescription, { className: "text-xl font-semibold text-foreground", children: message })), _jsxs("div", { className: "flex flex-col items-center gap-element mt-element", children: [nextStep && (_jsx(Button, { variant: ButtonVariants_Variant.DEFAULT, size: ButtonSize.MD, onClick: () => {
195
+ nextStep.onClick();
196
+ onDismiss?.();
197
+ }, children: nextStep.label })), onDismiss && (
198
+ // The engine Button, not a raw `<button>` re-implementing the ghost recipe with an
199
+ // off-ladder underline — a rebrand changed every other control and left this behind.
200
+ _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, onClick: onDismiss, children: dismissLabel }))] })] })] }) }));
77
201
  });
78
202
  CelebrationOverlay.displayName = "CelebrationOverlay";
79
203
  //# sourceMappingURL=celebration-overlay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"celebration-overlay.js","sourceRoot":"","sources":["../../../../../src/components/feedback/celebration-overlay.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,eAAe,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAClI,OAAO,EAAE,UAAU,EAAyB,MAAM,qCAAqC,CAAA;AAGvF;;;;GAIG;AACH,SAAS,uBAAuB;IAC9B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAU,GAAG,EAAE;QACzD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;QAC3F,OAAO,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC,OAAO,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU;YAAE,OAAO;QACrF,MAAM,GAAG,GAAmB,MAAM,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,CAAC,KAA0B,EAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChF,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gEAAgE;AAChE,YAAY;AACZ,gEAAgE;AAEhE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,UAAU,CAChD,CACE,EACE,QAAQ,EACR,IAAI,GAAG,SAAS,EAChB,OAAO,EACP,sBAAsB,EACtB,QAAQ,EACR,SAAS,EACT,YAAY,GAAG,SAAS,EACxB,SAAS,EACT,SAAS,EACT,GAAG,KAAK,EACT,EACD,GAAG,EACH,EAAE;IACF,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IACzC,MAAM,oBAAoB,GAAY,uBAAuB,EAAE,CAAC;IAEhE,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,6DAA6D;IAC7D,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACxB,2EAA2E;QAC3E,0EAA0E;QAC1E,kEAAkE;QAClE,IAAI,oBAAoB,EAAE,CAAC;YACzB,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,qDAAqD,EAAE,SAAS,CAAC,iBACnE,MAAM,KACd,KAAK,YAET,cAAK,SAAS,EAAC,mDAAmD,YAChE,cAAK,SAAS,EAAC,iBAAiB,iBAAa,MAAM,YAChD,UAAU,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,GAC1D,GACF,GACF,CACP,CAAC;QACJ,CAAC;QAED,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,qDAAqD,EACrD,SAAS,CACV,iBACW,MAAM,KACd,KAAK,YAGT,cAAK,SAAS,EAAC,mDAAmD,YAChE,cAAK,SAAS,EAAC,2BAA2B,YACvC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACxC,eAEE,SAAS,EAAC,4CAA4C,EACtD,KAAK,EAAE;4BACL,eAAe,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BAC1F,SAAS,EAAE,UAAU,CAAC,GAAG,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK;4BAC3E,SAAS,EAAE,wBAAwB,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,qBAAqB;4BACjF,cAAc,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG;4BACzC,OAAO,EAAE,CAAC;yBACX,IARI,CAAC,CASN,CACH,CAAC,GACE,GACF,GACF,CACP,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,gBACF,MAAM,gBACL,SAAS,IAAI,aAAa,EACtC,SAAS,EAAE,EAAE,CACX,kEAAkE,EAClE,mCAAmC;QACnC,kEAAkE;QAClE,6DAA6D;QAC7D,CAAC,oBAAoB,IAAI,6DAA6D,EACtF,SAAS,CACV,EACD,OAAO,EAAE,SAAS,KACd,KAAK,YAET,eACE,SAAS,EAAC,8EAA8E,EACxF,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,aAElC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CACnB,cACE,SAAS,EAAC,kCAAkC,EAC5C,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,iBACpB,MAAM,YAElB,cAAK,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,YACpC,UAAU,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,GAC1D,GACF,CACP,CAAC,CAAC,CAAC,CACF,cACE,SAAS,EAAE,EAAE,CACX,UAAU;oBACV,0DAA0D;oBAC1D,CAAC,oBAAoB,IAAI,gBAAgB,CAC1C,iBACW,MAAM,6BAGd,CACP,EAGA,OAAO,IAAI,CACV,YAAG,SAAS,EAAC,uCAAuC,YACjD,OAAO,GACN,CACL,EAGD,eAAK,SAAS,EAAC,mDAAmD,aAC/D,QAAQ,IAAI,CACX,KAAC,MAAM,IACL,OAAO,EAAE,sBAAsB,CAAC,OAAO,EACvC,IAAI,EAAE,UAAU,CAAC,EAAE,EACnB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gCACb,CAAC,CAAC,eAAe,EAAE,CAAC;gCACpB,QAAQ,CAAC,OAAO,EAAE,CAAC;gCACnB,SAAS,EAAE,EAAE,CAAC;4BAChB,CAAC,YAEA,QAAQ,CAAC,KAAK,GACR,CACV,EACA,SAAS,IAAI,CACZ,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,SAAS,EAClB,SAAS,EAAC,oGAAoG,YAE7G,YAAY,GACN,CACV,IACG,IACF,GACF,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,kBAAkB,CAAC,WAAW,GAAG,oBAAoB,CAAC","sourcesContent":["import * as React from \"react\"\nimport { cn, Button, ButtonVariants_Variant, useIconRegistry, StandardIconReference, IconSize } from \"@wildo-ai/saas-frontend-lib\"\nimport { ButtonSize, FrontendComponentType } from \"@wildo-ai/presets-components-models\"\nimport type { CelebrationOverlayProps } from '@wildo-ai/saas-frontend-lib'\n\n/**\n * V-12: Honour `prefers-reduced-motion: reduce`. Returns true when the user has\n * asked the OS to minimize non-essential motion. We listen for changes so the\n * overlay reacts to the OS-level toggle without a remount.\n */\nfunction usePrefersReducedMotion(): boolean {\n const [reduced, setReduced] = React.useState<boolean>(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return false;\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n });\n\n React.useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return;\n const mql: MediaQueryList = window.matchMedia('(prefers-reduced-motion: reduce)');\n const handler = (event: MediaQueryListEvent): void => setReduced(event.matches);\n mql.addEventListener('change', handler);\n return () => mql.removeEventListener('change', handler);\n }, []);\n\n return reduced;\n}\n\n// ─────────────────────────────────────────────────────────────\n// Component\n// ─────────────────────────────────────────────────────────────\n\n/**\n * CelebrationOverlay — generic, resource-agnostic celebration feedback component.\n *\n * A pure UI component that displays a celebration overlay with optional message,\n * animation, and next-step CTA. Does NOT know about resources, i18n, or\n * any engine concepts.\n *\n * Modes:\n * - `overlay`: Full-screen centered overlay with message + confetti emoji\n * - `confetti`: Lightweight confetti burst (no blocking overlay)\n * - `lottie`: Animated TADA icon via the unified icon system (uses `renderIcon` with\n * `StandardIconReference.TADA`, rendered in a scaled container for visual impact)\n *\n * For engine integration, see the celebration-overlay wrapper in saas-frontend-lib\n * which wires NotificationContext and i18n.\n */\nexport const CelebrationOverlay = React.forwardRef<HTMLDivElement, CelebrationOverlayProps>(\n (\n {\n isActive,\n mode = 'overlay',\n message,\n notificationIdentifier,\n nextStep,\n onDismiss,\n dismissLabel = 'Dismiss',\n ariaLabel,\n className,\n ...props\n },\n ref,\n ) => {\n const { renderIcon } = useIconRegistry();\n const prefersReducedMotion: boolean = usePrefersReducedMotion();\n\n if (!isActive) return null;\n\n // Confetti mode: lightweight effect without blocking overlay\n if (mode === 'confetti') {\n // V-12: Honour reduced-motion. Render a single static success glyph in the\n // viewport center instead of 20 animated particles. The wrapper keeps the\n // same z-index / pointer-events contract so callers don't notice.\n if (prefersReducedMotion) {\n return (\n <div\n ref={ref}\n className={cn(\"fixed inset-0 z-(--z-transient) pointer-events-none\", className)}\n aria-hidden=\"true\"\n {...props}\n >\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"text-foreground\" aria-hidden=\"true\">\n {renderIcon(StandardIconReference.TADA, { size: IconSize.XL })}\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"fixed inset-0 z-(--z-transient) pointer-events-none\",\n className,\n )}\n aria-hidden=\"true\"\n {...props}\n >\n {/* Confetti particles — CSS animation */}\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-celebration-burst\">\n {Array.from({ length: 20 }).map((_, i) => (\n <span\n key={i}\n className=\"absolute inline-block w-2 h-2 rounded-full\"\n style={{\n backgroundColor: ['#FFD700', '#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FFEAA7'][i % 6],\n transform: `rotate(${i * 18}deg) translateY(-${40 + Math.random() * 60}px)`,\n animation: `celebration-particle ${0.6 + Math.random() * 0.8}s ease-out forwards`,\n animationDelay: `${Math.random() * 0.3}s`,\n opacity: 0,\n }}\n />\n ))}\n </div>\n </div>\n </div>\n );\n }\n\n // Overlay mode (default, also used as fallback for lottie mode):\n return (\n <div\n ref={ref}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || 'Celebration'}\n className={cn(\n \"fixed inset-0 z-(--z-transient) flex items-center justify-center\",\n \"bg-background/80 backdrop-blur-sm\",\n // V-12: Drop the entrance animation when the user prefers reduced\n // motion; everything else (focus, dismissal) stays the same.\n !prefersReducedMotion && \"animate-in fade-in duration-[var(--motion-duration-normal)]\",\n className,\n )}\n onClick={onDismiss}\n {...props}\n >\n <div\n className=\"relative flex flex-col items-center gap-field p-card-lg max-w-md text-center\"\n onClick={(e) => e.stopPropagation()}\n >\n {mode === 'lottie' ? (\n <div\n className=\"flex items-center justify-center\"\n style={{ width: 80, height: 80 }}\n aria-hidden=\"true\"\n >\n <div style={{ transform: 'scale(2.5)' }}>\n {renderIcon(StandardIconReference.TADA, { size: IconSize.XL })}\n </div>\n </div>\n ) : (\n <div\n className={cn(\n \"text-6xl\",\n // V-12: Skip the bounce when reduced-motion is requested.\n !prefersReducedMotion && \"animate-bounce\",\n )}\n aria-hidden=\"true\"\n >\n 🎉\n </div>\n )}\n\n {/* Message */}\n {message && (\n <p className=\"text-xl font-semibold text-foreground\">\n {message}\n </p>\n )}\n\n {/* Actions */}\n <div className=\"flex flex-col items-center gap-element mt-element\">\n {nextStep && (\n <Button\n variant={ButtonVariants_Variant.DEFAULT}\n size={ButtonSize.MD}\n onClick={(e) => {\n e.stopPropagation();\n nextStep.onClick();\n onDismiss?.();\n }}\n >\n {nextStep.label}\n </Button>\n )}\n {onDismiss && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"text-sm text-muted-foreground hover:text-foreground underline underline-offset-2 transition-colors\"\n >\n {dismissLabel}\n </button>\n )}\n </div>\n </div>\n </div>\n );\n },\n);\n\nCelebrationOverlay.displayName = \"CelebrationOverlay\";\n"]}
1
+ {"version":3,"file":"celebration-overlay.js","sourceRoot":"","sources":["../../../../../src/components/feedback/celebration-overlay.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\"\nimport { cn, Button, ButtonVariants_Variant, Dialog, DialogContent, DialogTitle, DialogDescription, useIconRegistry, StandardIconReference, IconSize } from \"@wildo-ai/saas-frontend-lib\"\nimport { ButtonSize, FrontendComponentType } from \"@wildo-ai/presets-components-models\"\nimport type { CelebrationOverlayProps } from '@wildo-ai/saas-frontend-lib'\nimport { CelebrationDisplayMode } from '@wildo-ai/saas-models'\n\n/**\n * V-12: Honour `prefers-reduced-motion: reduce`. Returns true when the user has\n * asked the OS to minimize non-essential motion. We listen for changes so the\n * overlay reacts to the OS-level toggle without a remount.\n */\nfunction usePrefersReducedMotion(): boolean {\n const [reduced, setReduced] = React.useState<boolean>(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return false;\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n });\n\n React.useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return;\n const mql: MediaQueryList = window.matchMedia('(prefers-reduced-motion: reduce)');\n const handler = (event: MediaQueryListEvent): void => setReduced(event.matches);\n mql.addEventListener('change', handler);\n return () => mql.removeEventListener('change', handler);\n }, []);\n\n return reduced;\n}\n\n// ─────────────────────────────────────────────────────────────\n// Component\n// ─────────────────────────────────────────────────────────────\n\n/**\n * CelebrationOverlay — generic, resource-agnostic celebration feedback component.\n *\n * A pure UI component that displays a celebration overlay with optional message,\n * animation, and next-step CTA. Does NOT know about resources, i18n, or\n * any engine concepts.\n *\n * Modes:\n * - `confetti`: a non-blocking particle burst over the page, `aria-hidden`, purely decorative.\n * - `overlay`: a blocking Dialog carrying the message, an optional next-step CTA and a dismiss.\n * - `lottie`: renders EXACTLY as `overlay` in this default preset.\n *\n * Both dialog modes draw `StandardIconReference.TADA` from the icon registry, which plays an animated\n * Lottie when the application ran `registerDefaultAnimations()` and the reader has not asked for\n * reduced motion — so the dialog DOES animate; `lottie` simply adds nothing to it here. An earlier\n * version of this comment said \"no Lottie animation is played\", which stopped being true once both\n * branches drew the registry icon.\n *\n * `lottie` is the mode an application's OWN preset for `LOW_LEVEL_CELEBRATION_OVERLAY` can give a\n * meaning to — a per-milestone animation chosen from `notificationIdentifier`, for instance. This\n * default preset keeps it equal to `overlay` rather than inventing an asset it has no way to know.\n *\n * For engine integration, see the celebration-overlay wrapper in saas-frontend-lib\n * which wires NotificationContext and i18n.\n */\nexport const CelebrationOverlay = React.forwardRef<HTMLDivElement, CelebrationOverlayProps>(\n (\n {\n isActive,\n mode = 'overlay',\n message,\n heading,\n notificationIdentifier,\n nextStep,\n onDismiss,\n dismissLabel,\n ariaLabel,\n className,\n ...props\n },\n ref,\n ) => {\n const { renderIcon } = useIconRegistry();\n const prefersReducedMotion: boolean = usePrefersReducedMotion();\n\n /**\n * The blocking mode does NOT early-return on `!isActive` — it hands `open` to the Dialog.\n *\n * `AppCelebrationOverlay` is mounted permanently and toggles `isActive`, so returning `null`\n * would UNMOUNT an open Radix Dialog rather than closing it. Closing runs Radix's own teardown —\n * focus restoration to whatever was focused before, scroll unlock, exit transition; an abrupt\n * unmount skips the ordered path, and the celebration auto-dismisses after five seconds, so\n * that teardown happens on its own with nobody interacting. Leaving a keyboard user's focus\n * stranded on `<body>` after a celebration would be a REGRESSION on the state before the trap\n * existed, when focus never moved at all.\n *\n * Confetti keeps the early return: it is decorative, `aria-hidden`, traps nothing and has\n * nothing to tear down.\n */\n if (mode === CelebrationDisplayMode.CONFETTI) {\n if (!isActive) return null;\n // V-12: Honour reduced-motion. Render a single static success glyph in the\n // viewport center instead of 20 animated particles. The wrapper keeps the\n // same z-index / pointer-events contract so callers don't notice.\n if (prefersReducedMotion) {\n return (\n <div\n ref={ref}\n className={cn(\"fixed inset-0 z-(--z-transient) pointer-events-none\", className)}\n aria-hidden=\"true\"\n {...props}\n >\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"text-foreground\" aria-hidden=\"true\">\n {renderIcon(StandardIconReference.TADA, { size: IconSize.XL })}\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"fixed inset-0 z-(--z-transient) pointer-events-none\",\n className,\n )}\n aria-hidden=\"true\"\n {...props}\n >\n {/* Confetti particles — CSS animation */}\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <div className=\"animate-celebration-burst\">\n {Array.from({ length: 20 }).map((_, i) => (\n <span\n key={i}\n className=\"absolute inline-block w-2 h-2 rounded-full\"\n style={{\n // Themed, not literal. These six variables are defined by the engine Tailwind\n // plugin from the application's own semantic palette, so the celebration follows\n // the brand and differs between light and dark. They used to be six hard-coded\n // hex values, which is why the burst looked the same in every application and in\n // every theme. An application rebrands the confetti by overriding the variables.\n backgroundColor: `var(--celebration-particle-${(i % 6) + 1})`,\n transform: `rotate(${i * 18}deg) translateY(-${40 + Math.random() * 60}px)`,\n animation: `celebration-particle ${0.6 + Math.random() * 0.8}s ease-out forwards`,\n animationDelay: `${Math.random() * 0.3}s`,\n opacity: 0,\n }}\n />\n ))}\n </div>\n </div>\n </div>\n );\n }\n\n /**\n * Blocking mode, built on the engine Dialog rather than hand-rolled.\n *\n * This was a bare `<div role=\"dialog\" aria-modal=\"true\">` with NO focus trap, no initial focus,\n * no Escape handler and no focus restoration, dismissible only by clicking the backdrop. An\n * `aria-modal` container that leaves the page behind it fully focusable is worse than one that\n * makes no claim at all: assistive technology is told the rest of the page is inert while a\n * keyboard user tabs straight into it — and with dismissal on pointer only, a keyboard user\n * could not close it either.\n *\n * `Dialog` is Radix underneath, so focus trapping, initial focus, Escape and focus restoration\n * all come from the same mechanism `GuidanceModal` already uses. Building a second trap beside\n * a working one is how two half-correct implementations happen.\n *\n * `onOpenChange` receives Radix's Escape and outside-click, so the dismissal the original\n * hand-wired is preserved without a bespoke click handler on the overlay root.\n *\n * ONE consequence of the non-modal branch, verified against the installed Radix rather than\n * assumed: `DialogOverlay` returns `null` when `modal` is false, so a congratulatory\n * celebration renders NO SCRIM — the page behind it stays visible and clickable, which is what\n * a transient should do. Outside-click dismissal survives regardless, because it comes from\n * `DismissableLayer` rather than from the overlay element. Escape likewise: it is handled on the\n * owner document, not through the focus trap the non-modal branch does not install.\n */\n /**\n * MODAL only when the celebration asks for a DECISION.\n *\n * A Radix modal moves focus into itself on open and locks body scroll. This overlay\n * auto-dismisses after five seconds and is, in its common shape, purely congratulatory — so a\n * milestone achieved while someone is typing stole their focus mid-keystroke, dropped every\n * character until the timer fired, and froze the page's scroll for a decorative moment. The\n * docblock above reasons only about the opposite hazard (focus stranded by an abrupt unmount)\n * and that reasoning still holds; this is the other direction, which nothing had considered.\n *\n * `nextStep` is the discriminator, and it is the honest one: a celebration offering an action is\n * something the user is expected to answer, so taking focus and holding the page is right. One\n * offering nothing is a transient — it stays visible, it takes nothing, and its TIMER is what\n * ends it.\n *\n * The timer, specifically, and not the interactions: an earlier version of this line said the\n * transient \"stays dismissible with Escape and with Tab-to-the-button\", which is false in the\n * one condition that matters. Radix delivers Escape to the topmost layer only, refuses an\n * outside press while a higher layer disables outside pointer events, and sets a buried layer's\n * own `pointer-events: none` — so every interactive exit disappears the moment any dialog mounts\n * above this one. That is exactly why both branches now carry a timer (the decision branch a far\n * longer ceiling), and why the non-modal branch must not treat focus moving out as a dismissal.\n */\n const asksForADecision = Boolean(nextStep);\n\n return (\n <Dialog\n open={isActive}\n modal={asksForADecision}\n onOpenChange={(open) => { if (!open) onDismiss?.(); }}\n >\n <DialogContent\n ref={ref}\n className={cn('max-w-md', className)}\n /*\n ONE dismiss affordance. `DialogContent` renders Radix's close X by default, which put it\n beside the ghost dismiss Button below — two controls, one action, and only one of them\n carrying the application's own dismiss label.\n */\n /*\n ...unless there is no `onDismiss`, in which case Radix's X is the ONLY exit.\n\n `onDismiss` is optional on this contract and the ghost Dismiss button below is gated on\n it, so a direct preset consumer that omits it got a dialog with no dismiss control, no\n close X, `open` controlled by a caller that is not listening, and — in the decision\n branch — `modal` focus trapping. The component's own specification documents direct use\n as a supported shape (\"Direct use of the preset expects those props explicitly\"), so\n this is reachable by anyone following it, even though the only consumer today is\n `AppCelebrationOverlay`, which always passes one.\n\n Still exactly ONE dismiss affordance in every case, which is what this prop was set to\n `false` for: the app's own control when it exists, Radix's when it does not.\n */\n showCloseButton={!onDismiss}\n /*\n Radix requires a description or an explicit opt-out, and logs a console warning on every\n open without one. When there is a message it IS the description (rendered below through\n `DialogDescription`); when there is not, the opt-out is the truthful answer rather than\n inventing prose to satisfy the check.\n */\n {...(message ? {} : { 'aria-describedby': undefined })}\n onOpenAutoFocus={asksForADecision ? undefined : (event) => event.preventDefault()}\n /*\n An ANNOUNCEMENT must not be dismissed because focus moved somewhere else.\n\n With no `nextStep` this Dialog is deliberately NON-modal (`modal={asksForADecision}`),\n and a non-modal Radix content closes on `onFocusOutside` as well as on a pointer press\n outside. Focus moving is not a user dismissal: any dialog that MOUNTS after the\n celebration takes focus as it opens, which Radix reports as focus-outside, which closed\n the celebration in the same tick it appeared.\n\n Measured 2026-09-20 on Wonder Todos, on the most ordinary path the feature has — create\n a todo from the list, which navigates to the todo's detail dialog. The milestone fired,\n the websocket frame arrived, `showCelebration` ran, and the trace read\n `Celebration shown` immediately followed by `Celebration dismissed` at the same second,\n where an undisturbed run reads `Celebration auto-dismissed` five seconds later. So the\n overlay was correct, reachable and invisible in practice: the one flow that earns a\n milestone is the flow that destroyed the reward for it.\n\n A pointer press outside and Escape are left alone — those ARE the user saying \"go away\",\n and the 5s timer still owns the ordinary case.\n\n The `undefined` arm is safe, but NOT for the reason first written here. A modal Radix\n dialog does not stop a portaled sibling from receiving focus, so \"it traps focus, so it\n never reaches this path\" named the wrong mechanism. What actually holds is that Radix's\n own modal content composes an unconditional `onFocusOutside` preventer of its own, so the\n decision branch is already protected before this prop is consulted.\n */\n onFocusOutside={asksForADecision ? undefined : (event) => event.preventDefault()}\n {...props}\n >\n {/*\n The accessible NAME. A Radix Dialog requires one, and `ariaLabel` is an i18n value that\n may be an unresolved key — which is correct and must still be announced, so it is used\n as-is rather than replaced by invented English.\n */}\n {/*\n With a `heading` (a milestone's own title) the heading IS the accessible name and is\n shown below the icon; without one, the generic `ariaLabel` names the dialog for assistive technology\n only. One DialogTitle either way — Radix wants exactly one.\n */}\n {!heading && <DialogTitle className=\"sr-only\">{ariaLabel}</DialogTitle>}\n\n <div className=\"flex flex-col items-center gap-field text-center\">\n {/*\n ONE visual, from the icon registry.\n The non-lottie branch rendered a literal `🎉` at `text-6xl`: not themeable, not\n brandable, rendered differently by every OS font, and inconsistent with the lottie\n branch three lines below which already used `StandardIconReference.TADA` correctly.\n Sizing comes from `IconSize`, not a raw `80px` box and a `scale(2.5)` magic number.\n */}\n <div\n className={cn(\n 'flex items-center justify-center text-primary',\n !prefersReducedMotion && 'animate-bounce',\n )}\n aria-hidden=\"true\"\n >\n {renderIcon(StandardIconReference.TADA, { size: IconSize.XL })}\n </div>\n\n {heading && <DialogTitle className=\"text-2xl font-bold text-foreground\">{heading}</DialogTitle>}\n\n {message && (\n // `DialogDescription`, not a bare `<p>`: it is what Radix wires as the dialog's\n // accessible DESCRIPTION, so the same text serves both the reader and the screen\n // reader instead of the surface having a visible message and no described-by at all.\n <DialogDescription className=\"text-xl font-semibold text-foreground\">\n {message}\n </DialogDescription>\n )}\n\n <div className=\"flex flex-col items-center gap-element mt-element\">\n {nextStep && (\n <Button\n variant={ButtonVariants_Variant.DEFAULT}\n size={ButtonSize.MD}\n onClick={() => {\n nextStep.onClick();\n onDismiss?.();\n }}\n >\n {nextStep.label}\n </Button>\n )}\n {onDismiss && (\n // The engine Button, not a raw `<button>` re-implementing the ghost recipe with an\n // off-ladder underline — a rebrand changed every other control and left this behind.\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={onDismiss}\n >\n {dismissLabel}\n </Button>\n )}\n </div>\n </div>\n </DialogContent>\n </Dialog>\n );\n },\n);\n\nCelebrationOverlay.displayName = \"CelebrationOverlay\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"celebration-overlay.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/celebration-overlay.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,gCAAgC,EAAE,mBAAmB,EAWjE,CAAC"}
1
+ {"version":3,"file":"celebration-overlay.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/celebration-overlay.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,gCAAgC,EAAE,mBAAmB,EAWjE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"danger-zone.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/danger-zone.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAqB3F;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"danger-zone.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/danger-zone.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAqB3F;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"danger-zone.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/danger-zone.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"danger-zone.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/danger-zone.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/empty-state.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAQL,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAQrC;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,wFAiGtB,CAAC"}
1
+ {"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/empty-state.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAQL,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAQrC;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,wFAiGtB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"empty-state.js","sourceRoot":"","sources":["../../../../src/components/feedback/empty-state.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EACL,EAAE,EACF,eAAe,EAEf,QAAQ,EACR,MAAM,EACN,sBAAsB,EACtB,OAAO,GAER,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,UAAU,EAAyB,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAEvG,gEAAgE;AAChE,YAAY;AACZ,gEAAgE;AAEhE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACxC,CACE,EACE,KAAK,EACL,WAAW,EACX,OAAO,EACP,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAAG,IAAI,EACxB,eAAe,EACf,OAAO,GAAG,SAAS,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EACD,GAAG,EACH,EAAE;IACF,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IAEzC,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,CAAC;IAExC,OAAO,CACL,KAAC,OAAO,IAAC,OAAO,QAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,YACnE,eACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,qGAAqG,EACrG,SAAS,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,oCAAoC,EACnF,SAAS,CACV,KACG,KAAK,aAGR,OAAO,IAAI,CACV,cAAK,SAAS,EAAC,0BAA0B,YACtC,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GACjE,CACP,EAGD,eAAK,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,aAC/E,YAAG,SAAS,EAAE,EAAE,CACd,mCAAmC,EACnC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CACpC,YACE,KAAK,GACJ,EACH,WAAW,IAAI,CACd,YAAG,SAAS,EAAE,EAAE;4BACd;;;;;;;;+BAQG;4BACH,uBAAuB,EACvB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACjC,uBAAuB,CACxB,YACE,WAAW,GACV,CACL,IACG,EAGL,CAAC,iBAAiB,IAAI,eAAe,IAAI,kBAAkB,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CACjF,eAAK,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,aAC3F,iBAAiB,IAAI,eAAe,IAAI,kBAAkB,IAAI,CAC7D,KAAC,MAAM,IACL,OAAO,EAAE,sBAAsB,CAAC,OAAO,EACvC,IAAI,EAAE,UAAU,CAAC,EAAE,EACnB,OAAO,EAAE,eAAe,EACxB,SAAS,EAAC,sCAAsC,YAE/C,kBAAkB,GACZ,CACV,EACA,eAAe,IAAI,CAClB,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,eAAe,CAAC,OAAO,EAChC,SAAS,EAAE,EAAE,CACX,4FAA4F,EAC5F,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAClC,YAEA,eAAe,CAAC,KAAK,GACf,CACV,IACG,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,GACE,CACX,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC","sourcesContent":["import * as React from \"react\"\nimport {\n cn,\n useIconRegistry,\n StandardIconReference,\n IconSize,\n Button,\n ButtonVariants_Variant,\n Surface,\n EmptyStateProps,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { ButtonSize, FrontendComponentType, SurfaceVariant } from \"@wildo-ai/presets-components-models\"\n\n// ─────────────────────────────────────────────────────────────\n// Component\n// ─────────────────────────────────────────────────────────────\n\n/**\n * EmptyState — generic, resource-agnostic empty state component.\n *\n * A pure UI component that displays a placeholder when no content is available.\n * Accepts all display props (title, description, icon, actions) from outside —\n * does NOT know about resources, i18n, or any engine concepts.\n *\n * For resource-aware usage (list/table/search views), see ResourceEmptyState\n * in saas-frontend-lib which wraps this component with i18n and config resolution.\n */\nexport const EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n (\n {\n title,\n description,\n iconRef,\n primaryActionLabel,\n onPrimaryAction,\n showPrimaryAction = true,\n secondaryAction,\n variant = 'default',\n className,\n ...props\n },\n ref,\n ) => {\n const { renderIcon } = useIconRegistry();\n\n const isCompact = variant === 'compact';\n\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center text-center border border-dashed border-border rounded-lg\",\n isCompact ? \"py-section px-card gap-element\" : \"py-section-xl px-card-lg gap-field\",\n className,\n )}\n {...props}\n >\n {/* Icon */}\n {iconRef && (\n <div className=\"text-muted-foreground/50\">\n {renderIcon(iconRef, { size: isCompact ? IconSize.MD : IconSize.LG })}\n </div>\n )}\n\n {/* Text */}\n <div className={cn(\"flex flex-col\", isCompact ? \"gap-element-sm\" : \"gap-element\")}>\n <p className={cn(\n \"font-medium text-muted-foreground\",\n isCompact ? \"text-sm\" : \"text-base\",\n )}>\n {title}\n </p>\n {description && (\n <p className={cn(\n /*\n * NOT `text-muted-foreground/70`. The 70% modifier composited to #7a889a on the\n * light theme's #f1f5f9 surface — 3.29:1 against the 4.5:1 that normal text needs\n * (axe, live stack, 2026-09-09, #533). The token at full opacity is the design\n * system's muted colour and already passes; the modifier was muting the muted.\n *\n * Swept across all 8 sites that carried it, not just the ones the audit reached:\n * same token, same modifier, same arithmetic on any light surface.\n */\n \"text-muted-foreground\",\n isCompact ? \"text-xs\" : \"text-sm\",\n \"max-w-[32rem] mx-auto\",\n )}>\n {description}\n </p>\n )}\n </div>\n\n {/* Actions */}\n {(showPrimaryAction && onPrimaryAction && primaryActionLabel) || secondaryAction ? (\n <div className={cn(\"flex flex-col items-center\", isCompact ? \"gap-element-sm\" : \"gap-element\")}>\n {showPrimaryAction && onPrimaryAction && primaryActionLabel && (\n <Button\n variant={ButtonVariants_Variant.OUTLINE}\n size={ButtonSize.SM}\n onClick={onPrimaryAction}\n className=\"inline-flex items-center gap-element\"\n >\n {primaryActionLabel}\n </Button>\n )}\n {secondaryAction && (\n <button\n type=\"button\"\n onClick={secondaryAction.onClick}\n className={cn(\n \"text-muted-foreground hover:text-foreground underline underline-offset-2 transition-colors\",\n isCompact ? \"text-xs\" : \"text-sm\",\n )}\n >\n {secondaryAction.label}\n </button>\n )}\n </div>\n ) : null}\n </div>\n </Surface>\n );\n },\n);\n\nEmptyState.displayName = \"EmptyState\";\n"]}
1
+ {"version":3,"file":"empty-state.js","sourceRoot":"","sources":["../../../../../src/components/feedback/empty-state.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EACL,EAAE,EACF,eAAe,EAEf,QAAQ,EACR,MAAM,EACN,sBAAsB,EACtB,OAAO,GAER,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,UAAU,EAAyB,cAAc,EAAE,MAAM,qCAAqC,CAAA;AAEvG,gEAAgE;AAChE,YAAY;AACZ,gEAAgE;AAEhE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACxC,CACE,EACE,KAAK,EACL,WAAW,EACX,OAAO,EACP,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAAG,IAAI,EACxB,eAAe,EACf,OAAO,GAAG,SAAS,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EACD,GAAG,EACH,EAAE;IACF,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IAEzC,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,CAAC;IAExC,OAAO,CACL,KAAC,OAAO,IAAC,OAAO,QAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,YACnE,eACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,qGAAqG,EACrG,SAAS,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,oCAAoC,EACnF,SAAS,CACV,KACG,KAAK,aAGR,OAAO,IAAI,CACV,cAAK,SAAS,EAAC,0BAA0B,YACtC,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GACjE,CACP,EAGD,eAAK,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,aAC/E,YAAG,SAAS,EAAE,EAAE,CACd,mCAAmC,EACnC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CACpC,YACE,KAAK,GACJ,EACH,WAAW,IAAI,CACd,YAAG,SAAS,EAAE,EAAE;4BACd;;;;;;;;+BAQG;4BACH,uBAAuB,EACvB,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACjC,uBAAuB,CACxB,YACE,WAAW,GACV,CACL,IACG,EAGL,CAAC,iBAAiB,IAAI,eAAe,IAAI,kBAAkB,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,CACjF,eAAK,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,aAC3F,iBAAiB,IAAI,eAAe,IAAI,kBAAkB,IAAI,CAC7D,KAAC,MAAM,IACL,OAAO,EAAE,sBAAsB,CAAC,OAAO,EACvC,IAAI,EAAE,UAAU,CAAC,EAAE,EACnB,OAAO,EAAE,eAAe,EACxB,SAAS,EAAC,sCAAsC,YAE/C,kBAAkB,GACZ,CACV,EACA,eAAe,IAAI,CAClB,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,eAAe,CAAC,OAAO,EAChC,SAAS,EAAE,EAAE,CACX,4FAA4F,EAC5F,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAClC,YAEA,eAAe,CAAC,KAAK,GACf,CACV,IACG,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,GACE,CACX,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC","sourcesContent":["import * as React from \"react\"\nimport {\n cn,\n useIconRegistry,\n StandardIconReference,\n IconSize,\n Button,\n ButtonVariants_Variant,\n Surface,\n EmptyStateProps,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { ButtonSize, FrontendComponentType, SurfaceVariant } from \"@wildo-ai/presets-components-models\"\n\n// ─────────────────────────────────────────────────────────────\n// Component\n// ─────────────────────────────────────────────────────────────\n\n/**\n * EmptyState — generic, resource-agnostic empty state component.\n *\n * A pure UI component that displays a placeholder when no content is available.\n * Accepts all display props (title, description, icon, actions) from outside —\n * does NOT know about resources, i18n, or any engine concepts.\n *\n * For resource-aware usage (list/table/search views), see ResourceEmptyState\n * in saas-frontend-lib which wraps this component with i18n and config resolution.\n */\nexport const EmptyState = React.forwardRef<HTMLDivElement, EmptyStateProps>(\n (\n {\n title,\n description,\n iconRef,\n primaryActionLabel,\n onPrimaryAction,\n showPrimaryAction = true,\n secondaryAction,\n variant = 'default',\n className,\n ...props\n },\n ref,\n ) => {\n const { renderIcon } = useIconRegistry();\n\n const isCompact = variant === 'compact';\n\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div\n ref={ref}\n className={cn(\n \"flex flex-col items-center justify-center text-center border border-dashed border-border rounded-lg\",\n isCompact ? \"py-section px-card gap-element\" : \"py-section-xl px-card-lg gap-field\",\n className,\n )}\n {...props}\n >\n {/* Icon */}\n {iconRef && (\n <div className=\"text-muted-foreground/50\">\n {renderIcon(iconRef, { size: isCompact ? IconSize.MD : IconSize.LG })}\n </div>\n )}\n\n {/* Text */}\n <div className={cn(\"flex flex-col\", isCompact ? \"gap-element-sm\" : \"gap-element\")}>\n <p className={cn(\n \"font-medium text-muted-foreground\",\n isCompact ? \"text-sm\" : \"text-base\",\n )}>\n {title}\n </p>\n {description && (\n <p className={cn(\n /*\n * NOT `text-muted-foreground/70`. The 70% modifier composited to #7a889a on the\n * light theme's #f1f5f9 surface — 3.29:1 against the 4.5:1 that normal text needs\n * (axe, live stack, 2026-09-09, #533). The token at full opacity is the design\n * system's muted colour and already passes; the modifier was muting the muted.\n *\n * Swept across all 8 sites that carried it, not just the ones the audit reached:\n * same token, same modifier, same arithmetic on any light surface.\n */\n \"text-muted-foreground\",\n isCompact ? \"text-xs\" : \"text-sm\",\n \"max-w-[32rem] mx-auto\",\n )}>\n {description}\n </p>\n )}\n </div>\n\n {/* Actions */}\n {(showPrimaryAction && onPrimaryAction && primaryActionLabel) || secondaryAction ? (\n <div className={cn(\"flex flex-col items-center\", isCompact ? \"gap-element-sm\" : \"gap-element\")}>\n {showPrimaryAction && onPrimaryAction && primaryActionLabel && (\n <Button\n variant={ButtonVariants_Variant.OUTLINE}\n size={ButtonSize.SM}\n onClick={onPrimaryAction}\n className=\"inline-flex items-center gap-element\"\n >\n {primaryActionLabel}\n </Button>\n )}\n {secondaryAction && (\n <button\n type=\"button\"\n onClick={secondaryAction.onClick}\n className={cn(\n \"text-muted-foreground hover:text-foreground underline underline-offset-2 transition-colors\",\n isCompact ? \"text-xs\" : \"text-sm\",\n )}\n >\n {secondaryAction.label}\n </button>\n )}\n </div>\n ) : null}\n </div>\n </Surface>\n );\n },\n);\n\nEmptyState.displayName = \"EmptyState\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"empty-state.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/empty-state.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAAO,CAAC;AAGlE,eAAO,MAAM,gCAAgC,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"empty-state.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/empty-state.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAAO,CAAC;AAGlE,eAAO,MAAM,gCAAgC,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"error-display.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/error-display.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAsBL,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AAsBrC,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,OAAO,EACP,OAAqC,EACrC,UAAU,EACV,KAAK,EACL,OAAO,EACP,UAAU,EACV,OAAY,EACZ,WAAmB,EACnB,YAAsC,EACtC,eAAsC,EACtC,eAAoB,EACpB,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmMvC;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
1
+ {"version":3,"file":"error-display.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/error-display.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAsBL,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AAsBrC,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,OAAO,EACP,OAAqC,EACrC,UAAU,EACV,KAAK,EACL,OAAO,EACP,UAAU,EACV,OAAY,EACZ,WAAmB,EACnB,YAAsC,EACtC,eAAsC,EACtC,eAAoB,EACpB,YAAY,EACZ,aAAa,EACb,UAAU,EACV,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmMvC;AAED,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"error-display.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/feedback/error-display.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,0BAA0B,EAAE,mBAAmB,EA6D3D,CAAC"}
1
+ {"version":3,"file":"error-display.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/error-display.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,0BAA0B,EAAE,mBAAmB,EA6D3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature-limit-indicator.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/features/feature-limit-indicator.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAE3B,MAAM,6BAA6B,CAAC;AAerC,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,KAAK,EACL,KAAK,EACL,SAAgB,EAChB,IAAW,GACZ,EAAE,0BAA0B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAqChD"}
1
+ {"version":3,"file":"feature-limit-indicator.d.ts","sourceRoot":"","sources":["../../../../../../src/components/feedback/features/feature-limit-indicator.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAE3B,MAAM,6BAA6B,CAAC;AAerC,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,KAAK,EACL,KAAK,EACL,SAAgB,EAChB,IAAW,GACZ,EAAE,0BAA0B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAqChD"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature-limit-indicator.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/features/feature-limit-indicator.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,mCAAmC,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"feature-limit-indicator.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/feedback/features/feature-limit-indicator.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,mCAAmC,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature-lock-badge.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/features/feature-lock-badge.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAOzE,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,IAAW,GACZ,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA4BlD"}
1
+ {"version":3,"file":"feature-lock-badge.d.ts","sourceRoot":"","sources":["../../../../../../src/components/feedback/features/feature-lock-badge.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAOzE,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,IAAW,GACZ,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA4BlD"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature-lock-badge.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/features/feature-lock-badge.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,8BAA8B,EAAE,mBAAmB,EAY/D,CAAC"}
1
+ {"version":3,"file":"feature-lock-badge.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/feedback/features/feature-lock-badge.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,8BAA8B,EAAE,mBAAmB,EAY/D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature-unavailable-dialog.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/features/feature-unavailable-dialog.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAGjF,wBAAgB,wBAAwB,CAAC,EACvC,IAAI,EACJ,YAAY,EACZ,GAAG,WAAW,EACf,EAAE,6BAA6B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAcnD"}
1
+ {"version":3,"file":"feature-unavailable-dialog.d.ts","sourceRoot":"","sources":["../../../../../../src/components/feedback/features/feature-unavailable-dialog.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAGjF,wBAAgB,wBAAwB,CAAC,EACvC,IAAI,EACJ,YAAY,EACZ,GAAG,WAAW,EACf,EAAE,6BAA6B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAcnD"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature-unavailable-dialog.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/features/feature-unavailable-dialog.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,sCAAsC,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"feature-unavailable-dialog.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/feedback/features/feature-unavailable-dialog.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,sCAAsC,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"feature-unavailable-prompt.d.ts","sourceRoot":"","sources":["../../../../../src/components/feedback/features/feature-unavailable-prompt.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAQL,6BAA6B,EAC9B,MAAM,6BAA6B,CAAC;AAuCrC,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,eAAe,EACf,SAAS,EACT,mBAAmB,EACnB,QAAQ,EACR,SAAS,GACV,EAAE,6BAA6B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAgH1D"}
1
+ {"version":3,"file":"feature-unavailable-prompt.d.ts","sourceRoot":"","sources":["../../../../../../src/components/feedback/features/feature-unavailable-prompt.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAQL,6BAA6B,EAC9B,MAAM,6BAA6B,CAAC;AAuCrC,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,eAAe,EACf,SAAS,EACT,mBAAmB,EACnB,QAAQ,EACR,SAAS,GACV,EAAE,6BAA6B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAgH1D"}