@wildo-ai/presets-components 1.1.3 → 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 (707) 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 +36 -4
  50. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  51. package/dist/esm/components/ai-elements/decision/approval.js +77 -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 +11 -1
  336. package/dist/esm/components/feedback/empty-state.js.map +1 -1
  337. package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
  338. package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
  339. package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
  340. package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
  341. package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
  342. package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
  343. package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
  344. package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
  345. package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
  346. package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
  347. package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
  348. package/dist/esm/components/feedback/features/feature-unavailable-prompt.labels.d.ts.map +1 -1
  349. package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
  350. package/dist/esm/components/feedback/loading-overlay.labels.d.ts.map +1 -1
  351. package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
  352. package/dist/esm/components/feedback/loading-spinner.labels.d.ts.map +1 -1
  353. package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
  354. package/dist/esm/components/feedback/notification-center.js +6 -6
  355. package/dist/esm/components/feedback/notification-center.js.map +1 -1
  356. package/dist/esm/components/feedback/operations-confirm-critical.d.ts +1 -1
  357. package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
  358. package/dist/esm/components/feedback/operations-confirm-critical.js +9 -7
  359. package/dist/esm/components/feedback/operations-confirm-critical.js.map +1 -1
  360. package/dist/esm/components/feedback/operations-confirm-critical.labels.d.ts.map +1 -1
  361. package/dist/esm/components/feedback/progress.d.ts.map +1 -1
  362. package/dist/esm/components/feedback/progress.labels.d.ts.map +1 -1
  363. package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
  364. package/dist/esm/components/feedback/skeleton.labels.d.ts.map +1 -1
  365. package/dist/esm/components/feedback/toast.d.ts.map +1 -1
  366. package/dist/esm/components/feedback/toast.labels.d.ts.map +1 -1
  367. package/dist/esm/components/form/autosave-indicator.d.ts.map +1 -1
  368. package/dist/esm/components/form/autosave-indicator.labels.d.ts.map +1 -1
  369. package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
  370. package/dist/esm/components/form/chromes/field.js +11 -3
  371. package/dist/esm/components/form/chromes/field.js.map +1 -1
  372. package/dist/esm/components/form/chromes/field.labels.d.ts.map +1 -1
  373. package/dist/esm/components/form/chromes/form-primitive.d.ts.map +1 -1
  374. package/dist/esm/components/form/chromes/form-primitive.labels.d.ts.map +1 -1
  375. package/dist/esm/components/form/chromes/form-primitive.labels.js +28 -0
  376. package/dist/esm/components/form/chromes/form-primitive.labels.js.map +1 -1
  377. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  378. package/dist/esm/components/form/combobox.js +4 -3
  379. package/dist/esm/components/form/combobox.js.map +1 -1
  380. package/dist/esm/components/form/combobox.labels.d.ts.map +1 -1
  381. package/dist/esm/components/form/controls/boolean/checkbox.d.ts.map +1 -1
  382. package/dist/esm/components/form/controls/boolean/checkbox.js +2 -2
  383. package/dist/esm/components/form/controls/boolean/checkbox.js.map +1 -1
  384. package/dist/esm/components/form/controls/boolean/checkbox.labels.d.ts.map +1 -1
  385. package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
  386. package/dist/esm/components/form/controls/boolean/switch.labels.d.ts.map +1 -1
  387. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
  388. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.labels.d.ts.map +1 -1
  389. package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
  390. package/dist/esm/components/form/controls/boolean/toggle.labels.d.ts.map +1 -1
  391. package/dist/esm/components/form/controls/code-editor/cm6-editor-appearance.d.ts.map +1 -1
  392. package/dist/esm/components/form/controls/code-editor/cm6-editor.d.ts.map +1 -1
  393. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.d.ts.map +1 -1
  394. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js +11 -2
  395. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js.map +1 -1
  396. package/dist/esm/components/form/controls/code-editor/form-field-code.d.ts.map +1 -1
  397. package/dist/esm/components/form/controls/code-editor/markdown-editor.d.ts.map +1 -1
  398. package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
  399. package/dist/esm/components/form/controls/date-time/calendar.labels.d.ts.map +1 -1
  400. package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
  401. package/dist/esm/components/form/controls/date-time/date-range-picker.labels.d.ts.map +1 -1
  402. package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
  403. package/dist/esm/components/form/controls/date-time/datepicker.labels.d.ts.map +1 -1
  404. package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
  405. package/dist/esm/components/form/controls/date-time/datetime-picker.labels.d.ts.map +1 -1
  406. package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
  407. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.d.ts.map +1 -1
  408. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js +11 -2
  409. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js.map +1 -1
  410. package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
  411. package/dist/esm/components/form/controls/date-time/time-picker.labels.d.ts.map +1 -1
  412. package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
  413. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.d.ts.map +1 -1
  414. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js +11 -2
  415. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js.map +1 -1
  416. package/dist/esm/components/form/controls/enum/radio.d.ts +1 -1
  417. package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
  418. package/dist/esm/components/form/controls/enum/radio.js +13 -12
  419. package/dist/esm/components/form/controls/enum/radio.js.map +1 -1
  420. package/dist/esm/components/form/controls/enum/radio.labels.d.ts.map +1 -1
  421. package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
  422. package/dist/esm/components/form/controls/enum/select-multiple.js +5 -3
  423. package/dist/esm/components/form/controls/enum/select-multiple.js.map +1 -1
  424. package/dist/esm/components/form/controls/enum/select-multiple.labels.d.ts.map +1 -1
  425. package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
  426. package/dist/esm/components/form/controls/enum/select.labels.d.ts.map +1 -1
  427. package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
  428. package/dist/esm/components/form/controls/enum/toggle-group.js +96 -5
  429. package/dist/esm/components/form/controls/enum/toggle-group.js.map +1 -1
  430. package/dist/esm/components/form/controls/enum/toggle-group.labels.d.ts.map +1 -1
  431. package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
  432. package/dist/esm/components/form/controls/file/file-upload.labels.d.ts.map +1 -1
  433. package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
  434. package/dist/esm/components/form/controls/file/image-crop.labels.d.ts.map +1 -1
  435. package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts +44 -0
  436. package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts.map +1 -0
  437. package/dist/esm/components/form/controls/file/providers/dropbox-picker.js +137 -0
  438. package/dist/esm/components/form/controls/file/providers/dropbox-picker.js.map +1 -0
  439. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts +22 -0
  440. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts.map +1 -0
  441. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js +27 -0
  442. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js.map +1 -0
  443. package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts +54 -0
  444. package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts.map +1 -0
  445. package/dist/esm/components/form/controls/file/providers/google-drive-picker.js +159 -0
  446. package/dist/esm/components/form/controls/file/providers/google-drive-picker.js.map +1 -0
  447. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts +22 -0
  448. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts.map +1 -0
  449. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js +27 -0
  450. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js.map +1 -0
  451. package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts +41 -0
  452. package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts.map +1 -0
  453. package/dist/esm/components/form/controls/file/providers/onedrive-picker.js +129 -0
  454. package/dist/esm/components/form/controls/file/providers/onedrive-picker.js.map +1 -0
  455. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts +22 -0
  456. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts.map +1 -0
  457. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js +27 -0
  458. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js.map +1 -0
  459. package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
  460. package/dist/esm/components/form/controls/input-group.labels.d.ts.map +1 -1
  461. package/dist/esm/components/form/controls/input.d.ts.map +1 -1
  462. package/dist/esm/components/form/controls/input.labels.d.ts.map +1 -1
  463. package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
  464. package/dist/esm/components/form/controls/number/slider.labels.d.ts.map +1 -1
  465. package/dist/esm/components/form/controls/number/slider.labels.js +9 -2
  466. package/dist/esm/components/form/controls/number/slider.labels.js.map +1 -1
  467. package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
  468. package/dist/esm/components/form/controls/string/color-input.labels.d.ts.map +1 -1
  469. package/dist/esm/components/form/controls/string/color-picker-surface.d.ts.map +1 -1
  470. package/dist/esm/components/form/controls/string/color-picker-surface.js.map +1 -1
  471. package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
  472. package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
  473. package/dist/esm/components/form/controls/string/input-otp.labels.d.ts.map +1 -1
  474. package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
  475. package/dist/esm/components/form/controls/string/password-input.labels.d.ts.map +1 -1
  476. package/dist/esm/components/form/controls/string/password-input.labels.js +9 -2
  477. package/dist/esm/components/form/controls/string/password-input.labels.js.map +1 -1
  478. package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
  479. package/dist/esm/components/form/controls/string/textarea.labels.d.ts.map +1 -1
  480. package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
  481. package/dist/esm/components/layout/aspect-ratio.labels.d.ts.map +1 -1
  482. package/dist/esm/components/layout/carousel.d.ts.map +1 -1
  483. package/dist/esm/components/layout/carousel.labels.d.ts.map +1 -1
  484. package/dist/esm/components/layout/divider.d.ts.map +1 -1
  485. package/dist/esm/components/layout/divider.labels.d.ts.map +1 -1
  486. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  487. package/dist/esm/components/layout/resizable.labels.d.ts.map +1 -1
  488. package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
  489. package/dist/esm/components/layout/scroll-area.labels.d.ts.map +1 -1
  490. package/dist/esm/components/layout/separator.d.ts.map +1 -1
  491. package/dist/esm/components/layout/separator.labels.d.ts.map +1 -1
  492. package/dist/esm/components/navigation/app-level/activity-bar.d.ts.map +1 -1
  493. package/dist/esm/components/navigation/app-level/activity-bar.labels.d.ts.map +1 -1
  494. package/dist/esm/components/navigation/app-level/command-menu.d.ts.map +1 -1
  495. package/dist/esm/components/navigation/app-level/command-menu.js +2 -2
  496. package/dist/esm/components/navigation/app-level/command-menu.js.map +1 -1
  497. package/dist/esm/components/navigation/app-level/command-menu.labels.d.ts.map +1 -1
  498. package/dist/esm/components/navigation/app-level/control-panel.d.ts.map +1 -1
  499. package/dist/esm/components/navigation/app-level/control-panel.labels.d.ts.map +1 -1
  500. package/dist/esm/components/navigation/app-level/menu-user-org.d.ts.map +1 -1
  501. package/dist/esm/components/navigation/app-level/menu-user-org.labels.d.ts.map +1 -1
  502. package/dist/esm/components/navigation/app-level/menubar.d.ts.map +1 -1
  503. package/dist/esm/components/navigation/app-level/menubar.js +35 -13
  504. package/dist/esm/components/navigation/app-level/menubar.js.map +1 -1
  505. package/dist/esm/components/navigation/app-level/menubar.labels.d.ts.map +1 -1
  506. package/dist/esm/components/navigation/app-level/navigation-back.d.ts.map +1 -1
  507. package/dist/esm/components/navigation/app-level/navigation-back.js +10 -2
  508. package/dist/esm/components/navigation/app-level/navigation-back.js.map +1 -1
  509. package/dist/esm/components/navigation/app-level/navigation-back.labels.d.ts.map +1 -1
  510. package/dist/esm/components/navigation/app-level/notification-center.d.ts.map +1 -1
  511. package/dist/esm/components/navigation/app-level/notification-center.js.map +1 -1
  512. package/dist/esm/components/navigation/app-level/notification-center.labels.d.ts.map +1 -1
  513. package/dist/esm/components/navigation/app-level/notification-center.labels.js +15 -0
  514. package/dist/esm/components/navigation/app-level/notification-center.labels.js.map +1 -1
  515. package/dist/esm/components/navigation/app-level/quick-action-button.d.ts.map +1 -1
  516. package/dist/esm/components/navigation/app-level/quick-action-button.labels.d.ts.map +1 -1
  517. package/dist/esm/components/navigation/app-level/quick-action-button.labels.js +4 -0
  518. package/dist/esm/components/navigation/app-level/quick-action-button.labels.js.map +1 -1
  519. package/dist/esm/components/navigation/app-level/quick-switcher.d.ts.map +1 -1
  520. package/dist/esm/components/navigation/app-level/quick-switcher.labels.d.ts.map +1 -1
  521. package/dist/esm/components/navigation/app-level/sidebar.d.ts.map +1 -1
  522. package/dist/esm/components/navigation/app-level/sidebar.js +38 -22
  523. package/dist/esm/components/navigation/app-level/sidebar.js.map +1 -1
  524. package/dist/esm/components/navigation/app-level/sidebar.labels.d.ts.map +1 -1
  525. package/dist/esm/components/navigation/app-level/sidebar.labels.js +1 -0
  526. package/dist/esm/components/navigation/app-level/sidebar.labels.js.map +1 -1
  527. package/dist/esm/components/navigation/app-level/status-bar.d.ts.map +1 -1
  528. package/dist/esm/components/navigation/app-level/status-bar.labels.d.ts.map +1 -1
  529. package/dist/esm/components/navigation/app-level/toolbar.d.ts.map +1 -1
  530. package/dist/esm/components/navigation/app-level/toolbar.labels.d.ts.map +1 -1
  531. package/dist/esm/components/navigation/app-level/utility-panel.d.ts.map +1 -1
  532. package/dist/esm/components/navigation/app-level/utility-panel.js +30 -5
  533. package/dist/esm/components/navigation/app-level/utility-panel.js.map +1 -1
  534. package/dist/esm/components/navigation/app-level/utility-panel.labels.d.ts.map +1 -1
  535. package/dist/esm/components/navigation/app-level/utility-panel.labels.js.map +1 -1
  536. package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
  537. package/dist/esm/components/navigation/breadcrumb.labels.d.ts.map +1 -1
  538. package/dist/esm/components/navigation/command.d.ts.map +1 -1
  539. package/dist/esm/components/navigation/command.js +2 -2
  540. package/dist/esm/components/navigation/command.js.map +1 -1
  541. package/dist/esm/components/navigation/command.labels.d.ts.map +1 -1
  542. package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
  543. package/dist/esm/components/navigation/menu-bar.labels.d.ts.map +1 -1
  544. package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
  545. package/dist/esm/components/navigation/navbar.labels.d.ts.map +1 -1
  546. package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
  547. package/dist/esm/components/navigation/sidebar.labels.d.ts.map +1 -1
  548. package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
  549. package/dist/esm/components/overlays/containers/alert-dialog.js +11 -1
  550. package/dist/esm/components/overlays/containers/alert-dialog.js.map +1 -1
  551. package/dist/esm/components/overlays/containers/alert-dialog.labels.d.ts.map +1 -1
  552. package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
  553. package/dist/esm/components/overlays/containers/alert.labels.d.ts.map +1 -1
  554. package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
  555. package/dist/esm/components/overlays/containers/dialog.js +11 -1
  556. package/dist/esm/components/overlays/containers/dialog.js.map +1 -1
  557. package/dist/esm/components/overlays/containers/dialog.labels.d.ts.map +1 -1
  558. package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
  559. package/dist/esm/components/overlays/containers/drawer.labels.d.ts.map +1 -1
  560. package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
  561. package/dist/esm/components/overlays/containers/sheet.labels.d.ts.map +1 -1
  562. package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
  563. package/dist/esm/components/overlays/floating/context-menu.labels.d.ts.map +1 -1
  564. package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
  565. package/dist/esm/components/overlays/floating/dropdown-menu.labels.d.ts.map +1 -1
  566. package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
  567. package/dist/esm/components/overlays/floating/hover-card.labels.d.ts.map +1 -1
  568. package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
  569. package/dist/esm/components/overlays/floating/popover.labels.d.ts.map +1 -1
  570. package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
  571. package/dist/esm/components/overlays/floating/tooltip.labels.d.ts.map +1 -1
  572. package/dist/esm/components/sections/accordion.d.ts.map +1 -1
  573. package/dist/esm/components/sections/accordion.labels.d.ts.map +1 -1
  574. package/dist/esm/components/sections/card.d.ts.map +1 -1
  575. package/dist/esm/components/sections/card.js +71 -6
  576. package/dist/esm/components/sections/card.js.map +1 -1
  577. package/dist/esm/components/sections/card.labels.d.ts.map +1 -1
  578. package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
  579. package/dist/esm/components/sections/collapsible.labels.d.ts.map +1 -1
  580. package/dist/esm/components/sections/content-section.d.ts.map +1 -1
  581. package/dist/esm/components/sections/content-section.js +36 -6
  582. package/dist/esm/components/sections/content-section.js.map +1 -1
  583. package/dist/esm/components/sections/disclosure-nesting.d.ts.map +1 -1
  584. package/dist/esm/components/sections/option-gesture.d.ts +15 -0
  585. package/dist/esm/components/sections/option-gesture.d.ts.map +1 -0
  586. package/dist/esm/components/sections/option-gesture.js +66 -0
  587. package/dist/esm/components/sections/option-gesture.js.map +1 -0
  588. package/dist/esm/components/sections/pagination.d.ts.map +1 -1
  589. package/dist/esm/components/sections/pagination.labels.d.ts.map +1 -1
  590. package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
  591. package/dist/esm/components/sections/stacked-layout.labels.d.ts.map +1 -1
  592. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  593. package/dist/esm/components/sections/stepper.labels.d.ts.map +1 -1
  594. package/dist/esm/components/sections/table.d.ts.map +1 -1
  595. package/dist/esm/components/sections/table.labels.d.ts.map +1 -1
  596. package/dist/esm/components/sections/tabs.d.ts.map +1 -1
  597. package/dist/esm/components/sections/tabs.js +64 -15
  598. package/dist/esm/components/sections/tabs.js.map +1 -1
  599. package/dist/esm/components/sections/tabs.labels.d.ts.map +1 -1
  600. package/dist/esm/components/typography/heading.d.ts.map +1 -1
  601. package/dist/esm/components/typography/heading.labels.d.ts.map +1 -1
  602. package/dist/esm/components/typography/label.d.ts.map +1 -1
  603. package/dist/esm/components/typography/label.labels.d.ts.map +1 -1
  604. package/dist/esm/components/typography/link.d.ts.map +1 -1
  605. package/dist/esm/components/typography/link.js +9 -3
  606. package/dist/esm/components/typography/link.js.map +1 -1
  607. package/dist/esm/components/typography/link.labels.d.ts.map +1 -1
  608. package/dist/esm/components/typography/text.d.ts +1 -1
  609. package/dist/esm/components/typography/text.d.ts.map +1 -1
  610. package/dist/esm/components/typography/text.js +3 -2
  611. package/dist/esm/components/typography/text.js.map +1 -1
  612. package/dist/esm/components/typography/text.labels.d.ts.map +1 -1
  613. package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
  614. package/dist/esm/config/billing-shell.presets.d.ts.map +1 -1
  615. package/dist/esm/config/index.d.ts.map +1 -1
  616. package/dist/esm/config/preset-design-system.d.ts.map +1 -1
  617. package/dist/esm/config/preset-design-system.js +37 -60
  618. package/dist/esm/config/preset-design-system.js.map +1 -1
  619. package/dist/esm/config/preset-error-pages.d.ts.map +1 -1
  620. package/dist/esm/config/preset-kits.d.ts.map +1 -1
  621. package/dist/esm/config/preset-navigation.d.ts.map +1 -1
  622. package/dist/esm/config/preset-navigation.js +0 -5
  623. package/dist/esm/config/preset-navigation.js.map +1 -1
  624. package/dist/esm/config/preset-resources.d.ts.map +1 -1
  625. package/dist/esm/config/preset-shell.d.ts.map +1 -1
  626. package/dist/esm/config/preset-utils.d.ts.map +1 -1
  627. package/dist/esm/config/presets.d.ts.map +1 -1
  628. package/dist/esm/config/resources/application.resource-presets.d.ts +2 -0
  629. package/dist/esm/config/resources/application.resource-presets.d.ts.map +1 -1
  630. package/dist/esm/config/resources/application.resource-presets.js +163 -7
  631. package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
  632. package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
  633. package/dist/esm/config/resources/billing.resource-presets.js +1 -0
  634. package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
  635. package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
  636. package/dist/esm/config/resources/guidance.resource-presets.js +21 -5
  637. package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
  638. package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
  639. package/dist/esm/config/resources/identity.resource-presets.js +25 -3
  640. package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
  641. package/dist/esm/config/resources/index.d.ts.map +1 -1
  642. package/dist/esm/config/resources/index.js.map +1 -1
  643. package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
  644. package/dist/esm/config/resources/organizations.resource-presets.js +90 -12
  645. package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
  646. package/dist/esm/config/resources/resource.config.utils.d.ts.map +1 -1
  647. package/dist/esm/config/resources/security.resource-presets.d.ts +8 -2
  648. package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
  649. package/dist/esm/config/resources/security.resource-presets.js +185 -29
  650. package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
  651. package/dist/esm/config/resources/webhooks.resource-presets.d.ts.map +1 -1
  652. package/dist/esm/config/resources/webhooks.resource-presets.js +27 -2
  653. package/dist/esm/config/resources/webhooks.resource-presets.js.map +1 -1
  654. package/dist/esm/index.d.ts +7 -1
  655. package/dist/esm/index.d.ts.map +1 -1
  656. package/dist/esm/index.js +7 -1
  657. package/dist/esm/index.js.map +1 -1
  658. package/dist/esm/lottie/lottie.content.definitions.d.ts.map +1 -1
  659. package/dist/esm/lottie/lottie.definitions.d.ts.map +1 -1
  660. package/dist/esm/mermaid-stub.d.ts.map +1 -1
  661. package/dist/esm/registration/register-common-enums.d.ts.map +1 -1
  662. package/dist/esm/registration/register-common-enums.js +48 -34
  663. package/dist/esm/registration/register-common-enums.js.map +1 -1
  664. package/dist/esm/registration/register-default-animations.d.ts.map +1 -1
  665. package/dist/esm/registration/register-default-icons.d.ts.map +1 -1
  666. package/dist/esm/registration/register-default-icons.js +3 -1
  667. package/dist/esm/registration/register-default-icons.js.map +1 -1
  668. package/dist/esm/registration/register-default-presets.d.ts.map +1 -1
  669. package/dist/esm/registration/register-default-presets.js +36 -4
  670. package/dist/esm/registration/register-default-presets.js.map +1 -1
  671. package/dist/esm/registration/register-provider-components.d.ts +31 -0
  672. package/dist/esm/registration/register-provider-components.d.ts.map +1 -0
  673. package/dist/esm/registration/register-provider-components.js +50 -0
  674. package/dist/esm/registration/register-provider-components.js.map +1 -0
  675. package/dist/esm/shiki-subset.d.ts +11 -3
  676. package/dist/esm/shiki-subset.d.ts.map +1 -1
  677. package/dist/esm/shiki-subset.js +10 -2
  678. package/dist/esm/shiki-subset.js.map +1 -1
  679. package/dist/esm/theme-exports.d.ts.map +1 -1
  680. package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
  681. package/dist/esm/themes/cozy.theme.js +19 -5
  682. package/dist/esm/themes/cozy.theme.js.map +1 -1
  683. package/dist/esm/themes/dense.theme.d.ts.map +1 -1
  684. package/dist/esm/themes/dense.theme.js +56 -10
  685. package/dist/esm/themes/dense.theme.js.map +1 -1
  686. package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
  687. package/dist/esm/themes/editorial.theme.js +19 -5
  688. package/dist/esm/themes/editorial.theme.js.map +1 -1
  689. package/dist/esm/themes/glass.theme.d.ts.map +1 -1
  690. package/dist/esm/themes/glass.theme.js +5 -1
  691. package/dist/esm/themes/glass.theme.js.map +1 -1
  692. package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
  693. package/dist/esm/themes/neo-brutalist.theme.js +9 -2
  694. package/dist/esm/themes/neo-brutalist.theme.js.map +1 -1
  695. package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
  696. package/dist/esm/themes/terminal.theme.js +19 -5
  697. package/dist/esm/themes/terminal.theme.js.map +1 -1
  698. package/dist/esm/themes/trading.theme.d.ts.map +1 -1
  699. package/dist/esm/themes/trading.theme.js +22 -6
  700. package/dist/esm/themes/trading.theme.js.map +1 -1
  701. package/dist/tsconfig.build.tsbuildinfo +1 -1
  702. package/package.json +29 -44
  703. package/dist/esm/.native.tsbuildinfo +0 -1
  704. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts +0 -16
  705. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +0 -1
  706. package/dist/esm/components/form/controls/form-field-checkbox-group.js +0 -143
  707. package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"command-menu.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/command-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\n\nimport { ButtonSize, FrontendComponentType } from '@wildo-ai/presets-components-models';\nimport { ForeignKeyDisplayMode } from '@wildo-ai/zod-decorators';\n\nimport {\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n resolveComponentLabel,\n useI18n,\n useCommandMenuBehavior,\n useResourceRegistry,\n useIconRegistry,\n StandardIconReference,\n IconSize,\n ResourceSummaryDisplayer,\n useUI,\n CommandMenuPaletteGroupKind,\n ApplicationLevelComponentType,\n Button,\n ButtonVariants_Variant,\n cn,\n} from \"@wildo-ai/saas-frontend-lib\";\n\nimport type {\n ApplicationLevelProps_CommandMenu,\n CommandMenuSearchResultItem,\n} from '@wildo-ai/saas-frontend-lib';\n\n/**\n * Renders one omnibox result as the resource's SUMMARY VIEW (summary card) —\n * the same `ResourceSummaryDisplayer` the foreign-key picker mounts for its\n * SUMMARY dropdown rows, fed the summary-mode DTO the SEARCH operation already\n * returned (no extra fetch). Falls back to the one-line label when the\n * resource's `mainSchema` is unavailable (e.g. registry not yet hydrated).\n */\nconst CommandMenuSummaryResult: React.FC<{ item: CommandMenuSearchResultItem }> = ({ item }) => {\n const { registry } = useResourceRegistry();\n const schema = registry.resourceConfigurations[item.resourceType]?.mainSchema;\n if (!schema) return <span>{item.label}</span>;\n return (\n <ResourceSummaryDisplayer\n resourceType={item.resourceType}\n schema={schema}\n data={item.record}\n primaryLabel={item.label}\n />\n );\n};\n\n/**\n * Format an `openShortcut` config string (e.g. `'Cmd+K'`) into a compact glyph\n * hint for the trigger's `kbd` (`⌘K`). Falls back to upper-casing unknown keys.\n */\nfunction formatShortcutHint(shortcut: string | undefined): string | null {\n if (!shortcut) return null;\n return shortcut\n .split('+')\n .map(part => {\n const key = part.trim();\n switch (key.toLowerCase()) {\n case 'cmd':\n case 'meta':\n case 'command': return '⌘';\n case 'ctrl':\n case 'control': return '⌃';\n case 'shift': return '⇧';\n case 'alt':\n case 'option': return '⌥';\n default: return key.length === 1 ? key.toUpperCase() : key;\n }\n })\n .join('');\n}\n\n/** Normalize a `triggerWidth` (number → px) for an inline `style.width`. */\nfunction normalizeTriggerWidth(width: string | number | undefined): string | number | undefined {\n if (width === undefined) return undefined;\n return typeof width === 'number' ? `${width}px` : width;\n}\n\nexport const ApplicationLevelPreset_CommandMenu_Default: React.FC<ApplicationLevelProps_CommandMenu> = ({\n isOpen: externalIsOpen,\n onOpenChange,\n listenForHotkeys,\n containerType,\n triggerWidth,\n compact: compactProp,\n renderDialog = true,\n}) => {\n const behavior = useCommandMenuBehavior(externalIsOpen, onOpenChange, { listenForHotkeys });\n const { renderIcon } = useIconRegistry();\n const { isMobile } = useUI();\n const { tComponent, isReady } = useI18n({\n component: FrontendComponentType.APPLICATION_LEVEL_COMMAND_MENU,\n });\n\n const {\n isOpen,\n handleOpenChange,\n searchQuery,\n setSearchQuery,\n orderedGroups,\n recentItems,\n isSearching,\n isNavigationLoading,\n showRecent,\n showShortcuts,\n openShortcut,\n dialogWidth,\n } = behavior;\n\n // A trigger (\"false button\") renders only when the palette is HOSTED (menubar\n // or sidebar). Standalone/hotkey-only usage keeps its previous behavior: no\n // visible trigger, dialog opens on Cmd+K.\n const isHosted = containerType !== undefined;\n const shortcutHint = formatShortcutHint(openShortcut);\n // COMPACT (icon-only) trigger: when the HOST asks for it (a collapsed sidebar\n // rail, or a menubar placement authored `HostedTriggerAppearance.COMPACT`) —\n // an input-like trigger cannot fit a narrow icon column. It collapses to a\n // single search glyph that opens the (bottom-drawer on mobile) palette,\n // keeping the palette reachable without the hotkey.\n //\n // The mobile auto-compaction is a MENUBAR concern and is scoped to it: the\n // phone menubar is a horizontal cluster where a 240px input-mimic cannot fit.\n // A SIDEBAR host has no such constraint — at the mobile breakpoint it renders\n // as a full-width overlay DRAWER (~280px) and passes its own `compact` for the\n // rail — so applying `isMobile` there stripped the authored full-width search\n // field down to a lone glyph floating in an empty row.\n const compact = compactProp || (isMobile && containerType === ApplicationLevelComponentType.MENUBAR);\n\n // I-7: no English fallbacks — missing keys surface as `components.<type>.<key>`\n // for translation debugging (intentional, per the framework-wide i18n\n // discipline; see `component-label-resolution.utils.ts`).\n const t = (key: string): string => resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.APPLICATION_LEVEL_COMMAND_MENU,\n key,\n });\n const placeholderLabel = t('placeholder');\n const typeToSearchLabel = t('typeToSearch');\n const noResultsLabel = t('noResults');\n const recentLabel = t('recentCommands');\n const loadingLabel = t('loading');\n const searchingLabel = t('searching');\n\n // ===================================================================\n // Render\n // ===================================================================\n\n if (!isReady) return null;\n\n return (\n <>\n {/* Trigger (\"false button\") — an input-like control that opens the palette.\n Looks like a search input (leading search glyph + `typeToSearch`\n placeholder) with a trailing shortcut hint. Keyboard-accessible: it is a\n real <button>, focusable and Enter/Space-activatable. Width is per\n placement via inline style (tailwind-merge can't override width utils);\n `w-60` is the built-in default. */}\n {isHosted && (\n compact ? (\n // Compact icon-only trigger. `triggerWidth` is intentionally ignored\n // (a 240px icon button is nonsensical) and it opens the same palette.\n //\n // It takes the SAME Button GHOST/SM treatment as its icon-button\n // neighbours (the notification bell, the user menu) instead of the\n // expanded branch's input-mimic styling. That styling — a muted\n // `text-muted-foreground` glyph inside a bordered box — is right for a\n // control impersonating a text INPUT (muted placeholder + field\n // border) and wrong the moment the placeholder is gone: measured on\n // the dark theme it rendered the glyph at L=0.70 beside a bell at\n // L=0.97, which reads as a MISSING icon rather than a quiet one.\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => handleOpenChange(true)}\n aria-label={typeToSearchLabel}\n aria-haspopup=\"dialog\"\n // Stable, i18n-independent hook — the sibling hosted components\n // (quick switcher, notification center) already expose one, and the\n // menubar-order assertions key on it rather than on translated text.\n data-component-type={ApplicationLevelComponentType.COMMAND_MENU}\n >\n {renderIcon(StandardIconReference.SEARCH, { size: IconSize.SM })}\n </Button>\n ) : (\n <button\n type=\"button\"\n onClick={() => handleOpenChange(true)}\n aria-label={typeToSearchLabel}\n aria-haspopup=\"dialog\"\n data-component-type={ApplicationLevelComponentType.COMMAND_MENU}\n className={cn(\n 'flex items-center gap-element rounded-md border bg-transparent ps-card-sm pe-item h-9 w-60 min-w-0',\n 'text-sm text-muted-foreground transition-colors',\n 'hover:text-foreground hover:border-ring/50',\n 'focus-visible:outline-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring',\n )}\n style={triggerWidth != null ? { width: normalizeTriggerWidth(triggerWidth) } : undefined}\n >\n <span className=\"shrink-0 opacity-[var(--opacity-muted)]\">\n {renderIcon(StandardIconReference.SEARCH, { size: IconSize.SM })}\n </span>\n <span className=\"flex-1 text-start truncate\">{typeToSearchLabel}</span>\n {shortcutHint && (\n <kbd className=\"pointer-coarse:hidden shrink-0 rounded border bg-surface-sunken px-1.5 py-0.5 text-xs font-medium text-muted-foreground\">\n {shortcutHint}\n </kbd>\n )}\n </button>\n )\n )}\n\n {renderDialog && (\n <CommandDialog open={isOpen} onOpenChange={handleOpenChange} className={dialogWidth}>\n <CommandInput\n placeholder={placeholderLabel}\n value={searchQuery}\n onValueChange={setSearchQuery}\n />\n <CommandList>\n {isNavigationLoading ? (\n <div role=\"status\" aria-live=\"polite\" className=\"py-section text-center text-sm text-muted-foreground\">\n {loadingLabel}\n </div>\n ) : (\n <>\n <CommandEmpty>{noResultsLabel}</CommandEmpty>\n\n {/* Recent Group — gated by launcher showRecent config */}\n {showRecent && recentItems.length > 0 && (\n <CommandGroup heading={recentLabel}>\n {recentItems.map(item => (\n <CommandItem\n key={`recent-${item.id}`}\n value={`${item.id} ${item.label}`}\n keywords={item.keywords}\n onSelect={item.onExecute}\n >\n {item.icon && <span className=\"me-element\">{item.icon}</span>}\n <span>{item.label}</span>\n {showShortcuts && item.shortcut && (\n <CommandShortcut className=\"pointer-coarse:hidden\">{item.shortcut}</CommandShortcut>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n\n {showRecent && recentItems.length > 0 && <CommandSeparator />}\n\n {/* Unified, ordered group list: live record-search groups (policy:\n OMNIBOX) and static command-category groups merged and sequenced by a\n single `order` weight in the behavior hook — record groups default\n ABOVE command groups while searching (see useCommandMenuBehavior).\n Record items are server-filtered, so each carries the query as a\n keyword to survive cmdk's client filter, and render as the resource's\n summary card (SUMMARY, default) or a one-line label (LABEL) per the\n resource's `resultDisplay`; selecting one navigates to its READ view.\n Command items render label + optional shortcut and navigate. */}\n {orderedGroups.map((entry, idx) => {\n const showSeparator = idx > 0 || (showRecent && recentItems.length > 0);\n if (entry.kind === CommandMenuPaletteGroupKind.COMMANDS) {\n const group = entry.group;\n return (\n <React.Fragment key={`cmd-${group.category}`}>\n {showSeparator && <CommandSeparator />}\n <CommandGroup heading={group.label}>\n {group.items.map(item => (\n <CommandItem\n key={item.id}\n value={`${item.id} ${item.label}`}\n keywords={item.keywords}\n onSelect={item.onExecute}\n >\n {item.icon && <span className=\"me-element\">{item.icon}</span>}\n <span>{item.label}</span>\n {showShortcuts && item.shortcut && (\n <CommandShortcut className=\"pointer-coarse:hidden\">{item.shortcut}</CommandShortcut>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n </React.Fragment>\n );\n }\n const group = entry.group;\n return (\n <React.Fragment key={`search-${group.category}`}>\n {showSeparator && <CommandSeparator />}\n <CommandGroup heading={group.label}>\n {group.items.map(item => (\n <CommandItem\n key={item.id}\n value={`${item.id} ${item.label}`}\n keywords={item.keywords}\n onSelect={item.onExecute}\n >\n {group.displayMode === ForeignKeyDisplayMode.SUMMARY ? (\n <CommandMenuSummaryResult item={item} />\n ) : (\n <span>{item.label}</span>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n </React.Fragment>\n );\n })}\n\n {/* Live-search progress indicator — kept out of the empty-state path so\n cmdk still shows the (stale) previous results while re-querying. */}\n {isSearching && (\n <div role=\"status\" aria-live=\"polite\" className=\"py-item text-center text-xs text-muted-foreground\">\n {searchingLabel}\n </div>\n )}\n </>\n )}\n </CommandList>\n </CommandDialog>\n )}\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"command-menu.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/command-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\n\nimport { ButtonSize, FrontendComponentType } from '@wildo-ai/presets-components-models';\nimport { ForeignKeyDisplayMode } from '@wildo-ai/zod-decorators';\n\nimport {\n Kbd,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n resolveComponentLabel,\n useI18n,\n useCommandMenuBehavior,\n useResourceRegistry,\n useIconRegistry,\n StandardIconReference,\n IconSize,\n ResourceSummaryDisplayer,\n useUI,\n CommandMenuPaletteGroupKind,\n ApplicationLevelComponentType,\n Button,\n ButtonVariants_Variant,\n cn,\n} from \"@wildo-ai/saas-frontend-lib\";\n\nimport type {\n ApplicationLevelProps_CommandMenu,\n CommandMenuSearchResultItem,\n} from '@wildo-ai/saas-frontend-lib';\n\n/**\n * Renders one omnibox result as the resource's SUMMARY VIEW (summary card) —\n * the same `ResourceSummaryDisplayer` the foreign-key picker mounts for its\n * SUMMARY dropdown rows, fed the summary-mode DTO the SEARCH operation already\n * returned (no extra fetch). Falls back to the one-line label when the\n * resource's `mainSchema` is unavailable (e.g. registry not yet hydrated).\n */\nconst CommandMenuSummaryResult: React.FC<{ item: CommandMenuSearchResultItem }> = ({ item }) => {\n const { registry } = useResourceRegistry();\n const schema = registry.resourceConfigurations[item.resourceType]?.mainSchema;\n if (!schema) return <span>{item.label}</span>;\n return (\n <ResourceSummaryDisplayer\n resourceType={item.resourceType}\n schema={schema}\n data={item.record}\n primaryLabel={item.label}\n />\n );\n};\n\n/**\n * Format an `openShortcut` config string (e.g. `'Cmd+K'`) into a compact glyph\n * hint for the trigger's `kbd` (`⌘K`). Falls back to upper-casing unknown keys.\n */\nfunction formatShortcutHint(shortcut: string | undefined): string | null {\n if (!shortcut) return null;\n return shortcut\n .split('+')\n .map(part => {\n const key = part.trim();\n switch (key.toLowerCase()) {\n case 'cmd':\n case 'meta':\n case 'command': return '⌘';\n case 'ctrl':\n case 'control': return '⌃';\n case 'shift': return '⇧';\n case 'alt':\n case 'option': return '⌥';\n default: return key.length === 1 ? key.toUpperCase() : key;\n }\n })\n .join('');\n}\n\n/** Normalize a `triggerWidth` (number → px) for an inline `style.width`. */\nfunction normalizeTriggerWidth(width: string | number | undefined): string | number | undefined {\n if (width === undefined) return undefined;\n return typeof width === 'number' ? `${width}px` : width;\n}\n\nexport const ApplicationLevelPreset_CommandMenu_Default: React.FC<ApplicationLevelProps_CommandMenu> = ({\n isOpen: externalIsOpen,\n onOpenChange,\n listenForHotkeys,\n containerType,\n triggerWidth,\n compact: compactProp,\n renderDialog = true,\n}) => {\n const behavior = useCommandMenuBehavior(externalIsOpen, onOpenChange, { listenForHotkeys });\n const { renderIcon } = useIconRegistry();\n const { isMobile } = useUI();\n const { tComponent, isReady } = useI18n({\n component: FrontendComponentType.APPLICATION_LEVEL_COMMAND_MENU,\n });\n\n const {\n isOpen,\n handleOpenChange,\n searchQuery,\n setSearchQuery,\n orderedGroups,\n recentItems,\n isSearching,\n isNavigationLoading,\n showRecent,\n showShortcuts,\n openShortcut,\n dialogWidth,\n } = behavior;\n\n // A trigger (\"false button\") renders only when the palette is HOSTED (menubar\n // or sidebar). Standalone/hotkey-only usage keeps its previous behavior: no\n // visible trigger, dialog opens on Cmd+K.\n const isHosted = containerType !== undefined;\n const shortcutHint = formatShortcutHint(openShortcut);\n // COMPACT (icon-only) trigger: when the HOST asks for it (a collapsed sidebar\n // rail, or a menubar placement authored `HostedTriggerAppearance.COMPACT`) —\n // an input-like trigger cannot fit a narrow icon column. It collapses to a\n // single search glyph that opens the (bottom-drawer on mobile) palette,\n // keeping the palette reachable without the hotkey.\n //\n // The mobile auto-compaction is a MENUBAR concern and is scoped to it: the\n // phone menubar is a horizontal cluster where a 240px input-mimic cannot fit.\n // A SIDEBAR host has no such constraint — at the mobile breakpoint it renders\n // as a full-width overlay DRAWER (~280px) and passes its own `compact` for the\n // rail — so applying `isMobile` there stripped the authored full-width search\n // field down to a lone glyph floating in an empty row.\n const compact = compactProp || (isMobile && containerType === ApplicationLevelComponentType.MENUBAR);\n\n // I-7: no English fallbacks — missing keys surface as `components.<type>.<key>`\n // for translation debugging (intentional, per the framework-wide i18n\n // discipline; see `component-label-resolution.utils.ts`).\n const t = (key: string): string => resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.APPLICATION_LEVEL_COMMAND_MENU,\n key,\n });\n const placeholderLabel = t('placeholder');\n const typeToSearchLabel = t('typeToSearch');\n const noResultsLabel = t('noResults');\n const recentLabel = t('recentCommands');\n const loadingLabel = t('loading');\n const searchingLabel = t('searching');\n\n // ===================================================================\n // Render\n // ===================================================================\n\n if (!isReady) return null;\n\n return (\n <>\n {/* Trigger (\"false button\") — an input-like control that opens the palette.\n Looks like a search input (leading search glyph + `typeToSearch`\n placeholder) with a trailing shortcut hint. Keyboard-accessible: it is a\n real <button>, focusable and Enter/Space-activatable. Width is per\n placement via inline style (tailwind-merge can't override width utils);\n `w-60` is the built-in default. */}\n {isHosted && (\n compact ? (\n // Compact icon-only trigger. `triggerWidth` is intentionally ignored\n // (a 240px icon button is nonsensical) and it opens the same palette.\n //\n // It takes the SAME Button GHOST/SM treatment as its icon-button\n // neighbours (the notification bell, the user menu) instead of the\n // expanded branch's input-mimic styling. That styling — a muted\n // `text-muted-foreground` glyph inside a bordered box — is right for a\n // control impersonating a text INPUT (muted placeholder + field\n // border) and wrong the moment the placeholder is gone: measured on\n // the dark theme it rendered the glyph at L=0.70 beside a bell at\n // L=0.97, which reads as a MISSING icon rather than a quiet one.\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => handleOpenChange(true)}\n aria-label={typeToSearchLabel}\n aria-haspopup=\"dialog\"\n // Stable, i18n-independent hook — the sibling hosted components\n // (quick switcher, notification center) already expose one, and the\n // menubar-order assertions key on it rather than on translated text.\n data-component-type={ApplicationLevelComponentType.COMMAND_MENU}\n >\n {renderIcon(StandardIconReference.SEARCH, { size: IconSize.SM })}\n </Button>\n ) : (\n <button\n type=\"button\"\n onClick={() => handleOpenChange(true)}\n aria-label={typeToSearchLabel}\n aria-haspopup=\"dialog\"\n data-component-type={ApplicationLevelComponentType.COMMAND_MENU}\n className={cn(\n 'flex items-center gap-element rounded-md border bg-transparent ps-card-sm pe-item h-9 w-60 min-w-0',\n 'text-sm text-muted-foreground transition-colors',\n 'hover:text-foreground hover:border-ring/50',\n 'focus-visible:outline-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring',\n )}\n style={triggerWidth != null ? { width: normalizeTriggerWidth(triggerWidth) } : undefined}\n >\n <span className=\"shrink-0 opacity-[var(--opacity-muted)]\">\n {renderIcon(StandardIconReference.SEARCH, { size: IconSize.SM })}\n </span>\n <span className=\"flex-1 text-start truncate\">{typeToSearchLabel}</span>\n {shortcutHint && <Kbd className=\"pointer-coarse:hidden\">{shortcutHint}</Kbd>}\n </button>\n )\n )}\n\n {renderDialog && (\n <CommandDialog open={isOpen} onOpenChange={handleOpenChange} className={dialogWidth}>\n <CommandInput\n placeholder={placeholderLabel}\n value={searchQuery}\n onValueChange={setSearchQuery}\n />\n <CommandList>\n {isNavigationLoading ? (\n <div role=\"status\" aria-live=\"polite\" className=\"py-section text-center text-sm text-muted-foreground\">\n {loadingLabel}\n </div>\n ) : (\n <>\n <CommandEmpty>{noResultsLabel}</CommandEmpty>\n\n {/* Recent Group — gated by launcher showRecent config */}\n {showRecent && recentItems.length > 0 && (\n <CommandGroup heading={recentLabel}>\n {recentItems.map(item => (\n <CommandItem\n key={`recent-${item.id}`}\n value={`${item.id} ${item.label}`}\n keywords={item.keywords}\n onSelect={item.onExecute}\n >\n {item.icon && <span className=\"me-element\">{item.icon}</span>}\n <span>{item.label}</span>\n {showShortcuts && item.shortcut && (\n <CommandShortcut className=\"pointer-coarse:hidden\">{item.shortcut}</CommandShortcut>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n\n {showRecent && recentItems.length > 0 && <CommandSeparator />}\n\n {/* Unified, ordered group list: live record-search groups (policy:\n OMNIBOX) and static command-category groups merged and sequenced by a\n single `order` weight in the behavior hook — record groups default\n ABOVE command groups while searching (see useCommandMenuBehavior).\n Record items are server-filtered, so each carries the query as a\n keyword to survive cmdk's client filter, and render as the resource's\n summary card (SUMMARY, default) or a one-line label (LABEL) per the\n resource's `resultDisplay`; selecting one navigates to its READ view.\n Command items render label + optional shortcut and navigate. */}\n {orderedGroups.map((entry, idx) => {\n const showSeparator = idx > 0 || (showRecent && recentItems.length > 0);\n if (entry.kind === CommandMenuPaletteGroupKind.COMMANDS) {\n const group = entry.group;\n return (\n <React.Fragment key={`cmd-${group.category}`}>\n {showSeparator && <CommandSeparator />}\n <CommandGroup heading={group.label}>\n {group.items.map(item => (\n <CommandItem\n key={item.id}\n value={`${item.id} ${item.label}`}\n keywords={item.keywords}\n onSelect={item.onExecute}\n >\n {item.icon && <span className=\"me-element\">{item.icon}</span>}\n <span>{item.label}</span>\n {showShortcuts && item.shortcut && (\n <CommandShortcut className=\"pointer-coarse:hidden\">{item.shortcut}</CommandShortcut>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n </React.Fragment>\n );\n }\n const group = entry.group;\n return (\n <React.Fragment key={`search-${group.category}`}>\n {showSeparator && <CommandSeparator />}\n <CommandGroup heading={group.label}>\n {group.items.map(item => (\n <CommandItem\n key={item.id}\n value={`${item.id} ${item.label}`}\n keywords={item.keywords}\n onSelect={item.onExecute}\n >\n {group.displayMode === ForeignKeyDisplayMode.SUMMARY ? (\n <CommandMenuSummaryResult item={item} />\n ) : (\n <span>{item.label}</span>\n )}\n </CommandItem>\n ))}\n </CommandGroup>\n </React.Fragment>\n );\n })}\n\n {/* Live-search progress indicator — kept out of the empty-state path so\n cmdk still shows the (stale) previous results while re-querying. */}\n {isSearching && (\n <div role=\"status\" aria-live=\"polite\" className=\"py-item text-center text-xs text-muted-foreground\">\n {searchingLabel}\n </div>\n )}\n </>\n )}\n </CommandList>\n </CommandDialog>\n )}\n </>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"command-menu.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/command-menu.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,iCAAiC,EAAE,mBAAmB,EA2HlE,CAAC"}
1
+ {"version":3,"file":"command-menu.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/command-menu.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,iCAAiC,EAAE,mBAAmB,EA2HlE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"control-panel.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/control-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,6BAA6B,CAAC;AAGtF,eAAO,MAAM,2CAA2C,EAAE,KAAK,CAAC,EAAE,CAAC,kCAAkC,CA6MpG,CAAC"}
1
+ {"version":3,"file":"control-panel.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/control-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,6BAA6B,CAAC;AAGtF,eAAO,MAAM,2CAA2C,EAAE,KAAK,CAAC,EAAE,CAAC,kCAAkC,CA6MpG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"control-panel.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/control-panel.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,kCAAkC,EAAE,mBAAmB,EAanE,CAAC"}
1
+ {"version":3,"file":"control-panel.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/control-panel.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,kCAAkC,EAAE,mBAAmB,EAanE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"menu-user-org.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/menu-user-org.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAoB3C,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAErF,eAAO,MAAM,0CAA0C,EAAE,KAAK,CAAC,EAAE,CAAC,iCAAiC,CAwTlG,CAAC"}
1
+ {"version":3,"file":"menu-user-org.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/menu-user-org.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAoB3C,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC;AAErF,eAAO,MAAM,0CAA0C,EAAE,KAAK,CAAC,EAAE,CAAC,iCAAiC,CAwTlG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"menu-user-org.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/menu-user-org.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,kCAAkC,EAAE,mBAAmB,EAYnE,CAAC"}
1
+ {"version":3,"file":"menu-user-org.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/menu-user-org.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,kCAAkC,EAAE,mBAAmB,EAYnE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"menubar.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/menubar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAEL,6BAA6B,EAiB9B,MAAM,6BAA6B,CAAC;AAcrC,eAAO,MAAM,sCAAsC,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CA6N1F,CAAC"}
1
+ {"version":3,"file":"menubar.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/menubar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAEL,6BAA6B,EAkB9B,MAAM,6BAA6B,CAAC;AAMrC,eAAO,MAAM,sCAAsC,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAkS1F,CAAC"}
@@ -1,21 +1,29 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Suspense } from 'react';
3
- import { ApplicationLevelComponentType, useI18n, ComponentRegistryService, useUI, useMenuBarBehavior, useHostedComponentInteractions, useSidebarMobileDrawerMode, useEventBus, useIconRegistry, FrontendEvents, IconSize, StandardIconReference, envLoader, Button, ButtonVariants_Variant, cn, Surface, } from '@wildo-ai/saas-frontend-lib';
4
- import { CorePresetNames, FrontendComponentType, HorizontalPlacement, ShellAppearance, SurfaceVariant, UIBehavior } from '@wildo-ai/presets-components-models';
3
+ import { ApplicationLevelComponentType, useI18n, ComponentRegistryService, useUI, useMenuBarBehavior, useHostedComponentInteractions, useSidebarMobileDrawerMode, useEventBus, useIconRegistry, FrontendEvents, IconSize, StandardIconReference, envLoader, Button, ButtonVariants_Variant, cn, Surface, useBrandPresentation, } from '@wildo-ai/saas-frontend-lib';
4
+ import { CorePresetNames, FrontendComponentType, HorizontalPlacement, SelectableVariant, ShellAppearance, SurfaceVariant, UIBehavior } from '@wildo-ai/presets-components-models';
5
5
  import { HostedTriggerAppearance } from '@wildo-ai/saas-frontend-lib';
6
6
  import { Menubar } from '../../../components/navigation/menu-bar.js';
7
- function humanizeMenubarGroup(group) {
8
- return group
9
- .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
10
- .replace(/[-_]/g, ' ')
11
- .trim()
12
- .replace(/\b\w/g, character => character.toUpperCase());
13
- }
14
7
  export const ApplicationLevelPreset_Menubar_Default = ({ mode, children }) => {
15
8
  const { tComponent, isReady } = useI18n({ component: FrontendComponentType.APPLICATION_LEVEL_MENUBAR });
16
9
  const { UIConfig, getRecipe, shellAppearance } = useUI();
17
10
  const overlayRecipe = getRecipe(UIBehavior.SURFACE, SurfaceVariant.OVERLAY);
18
- const { containerComponents, items, menubarConfig } = useMenuBarBehavior({ mode });
11
+ /*
12
+ * Destination items take the theme's SELECTABLE/FILLED recipe — the same vocabulary the sidebar
13
+ * uses for "the current destination" — so a menubar-only shell reads which page it is on. Opt-in
14
+ * via `data-active`, appended after the GHOST recipe so the selected wash wins over GHOST's.
15
+ */
16
+ const selectableRecipe = getRecipe(UIBehavior.SELECTABLE, SelectableVariant.FILLED);
17
+ const itemStateClasses = cn(selectableRecipe.states.hover, selectableRecipe.states.selected, selectableRecipe.motion.transition);
18
+ const { containerComponents, items, menubarConfig, brandHeader, isHomeActive, handleHomeClick } = useMenuBarBehavior({ mode });
19
+ /*
20
+ * The same four data decisions the sidebar's brand header takes (a failed mark degrading to the
21
+ * name, the latch resetting on a theme change, a wordmark replacing the name, nothing rendering
22
+ * for an empty identity) live once in `useBrandPresentation`; what stays here is layout. Called
23
+ * unconditionally, as a hook must be — `brandHeader` is `undefined` unless the config opted in,
24
+ * and the hook answers `isEmpty` for that.
25
+ */
26
+ const brand = useBrandPresentation(brandHeader);
19
27
  // Mobile burger: while the sidebar operates as an overlay drawer (BURGER policy
20
28
  // at/below its responsive breakpoint) nothing renders inline, so the menubar
21
29
  // provides the drawer's opening affordance. State stays owned by the sidebar's
@@ -60,6 +68,20 @@ export const ApplicationLevelPreset_Menubar_Default = ({ mode, children }) => {
60
68
  groups.set(item.group, existing);
61
69
  return groups;
62
70
  }, new Map());
71
+ /**
72
+ * The identity as the HOME affordance at the start of the bar (`brandHeader: true`) — the
73
+ * horizontal counterpart of the sidebar's pinned brand header, for a shell that has no sidebar.
74
+ * Mark beside name; a WORDMARK/LOCKUP already spells the name and replaces it. `aria-current`
75
+ * stays truthful on the home route but NO `data-active`: the identity is not a menu item that
76
+ * lights up (the sidebar records the same decision).
77
+ */
78
+ const renderBrandHeader = () => {
79
+ if (!brandHeader || brand.isEmpty)
80
+ return null;
81
+ const { name, logoUrl, hasMark, markCarriesName, onMarkError } = brand;
82
+ const showNameText = !(hasMark && markCarriesName);
83
+ return (_jsxs(Button, { type: "button", variant: ButtonVariants_Variant.GHOST, onClick: handleHomeClick, "aria-current": isHomeActive ? 'page' : undefined, "aria-label": showNameText ? undefined : name, "data-slot": "menubar-brand-header", className: "h-auto min-w-0 shrink-0 gap-element px-card-sm py-item-xs text-sm font-semibold", children: [hasMark && logoUrl && (_jsx("img", { src: logoUrl, alt: markCarriesName ? name : '', "aria-hidden": markCarriesName ? undefined : 'true', onError: onMarkError, className: markCarriesName ? 'h-6 w-auto' : 'size-6 shrink-0 object-contain' })), showNameText && _jsx("span", { className: "truncate", children: name })] }));
84
+ };
63
85
  const renderMenubarItems = () => {
64
86
  if (items.length === 0) {
65
87
  return null;
@@ -67,14 +89,14 @@ export const ApplicationLevelPreset_Menubar_Default = ({ mode, children }) => {
67
89
  const renderedGroups = new Set();
68
90
  return (_jsx("div", { className: "flex items-center gap-item-xs min-w-0", children: items.map(item => {
69
91
  if (!item.group) {
70
- return (_jsxs(Button, { type: "button", onClick: item.onExecute, variant: ButtonVariants_Variant.GHOST, className: "h-auto gap-element px-card-sm py-item-xs text-sm font-medium", children: [item.icon && _jsx("span", { className: "shrink-0", children: item.icon }), _jsx("span", { className: "truncate", children: item.label })] }, item.id));
92
+ return (_jsxs(Button, { type: "button", onClick: item.onExecute, variant: ButtonVariants_Variant.GHOST, "aria-current": item.isActive ? 'page' : undefined, "data-active": item.isActive || undefined, "data-nav-item-id": item.id, className: cn('h-auto gap-element px-card-sm py-item-xs text-sm font-medium', itemStateClasses), children: [item.icon && _jsx("span", { className: "shrink-0", children: item.icon }), _jsx("span", { className: "truncate", children: item.label })] }, item.id));
71
93
  }
72
94
  if (renderedGroups.has(item.group)) {
73
95
  return null;
74
96
  }
75
97
  renderedGroups.add(item.group);
76
98
  const groupItems = groupedItems.get(item.group) ?? [];
77
- return (_jsx(Menubar, { className: "h-auto gap-item-xs rounded-none border-0 bg-transparent p-0 shadow-none", children: _jsxs(Menubar.Menu, { children: [_jsx(Menubar.Trigger, { children: humanizeMenubarGroup(item.group) }), _jsx(Menubar.Content, { children: groupItems.map(groupItem => (_jsxs(Menubar.Item, { onSelect: groupItem.onExecute, children: [groupItem.icon && _jsx("span", { className: "shrink-0", children: groupItem.icon }), _jsx("span", { className: "truncate", children: groupItem.label })] }, groupItem.id))) })] }) }, item.group));
99
+ return (_jsx(Menubar, { className: "h-auto gap-item-xs rounded-none border-0 bg-transparent p-0 shadow-none", children: _jsxs(Menubar.Menu, { children: [_jsx(Menubar.Trigger, { children: item.group }), _jsx(Menubar.Content, { children: groupItems.map(groupItem => (_jsxs(Menubar.Item, { onSelect: groupItem.onExecute, "aria-current": groupItem.isActive ? 'page' : undefined, "data-active": groupItem.isActive || undefined, "data-nav-item-id": groupItem.id, children: [groupItem.icon && _jsx("span", { className: "shrink-0", children: groupItem.icon }), _jsx("span", { className: "truncate", children: groupItem.label })] }, groupItem.id))) })] }) }, item.group));
78
100
  }) }));
79
101
  };
80
102
  // ===================================================================
@@ -82,6 +104,6 @@ export const ApplicationLevelPreset_Menubar_Default = ({ mode, children }) => {
82
104
  // ===================================================================
83
105
  return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: menubarConfig.isOverlay ? SurfaceVariant.OVERLAY : SurfaceVariant.SUNKEN, children: _jsxs("div", { "data-component-area": "menubar", "data-component-type": ApplicationLevelComponentType.MENUBAR, "data-menubar-mode": menubarConfig.mode, "data-frontend-service-name": envLoader.loadEnvironmentConfig().frontendServiceName, "data-viewport": currentBreakpoint, role: "banner", "aria-label": tComponent(FrontendComponentType.APPLICATION_LEVEL_MENUBAR, 'menubarLabel'), className: cn(isContinuousShell
84
106
  ? 'bg-transparent text-foreground'
85
- : 'bg-surface-sunken text-surface-sunken-foreground border-b border-surface-sunken-border', menubarConfig.isOverlay && cn('absolute top-0 inset-inline-start-0 inset-inline-end-0 z-(--z-overlay)', overlayRecipe.base), menubarConfig.showMobileLayout ? 'px-card-sm py-item-xs' : 'px-card py-card-sm'), children: [_jsxs("div", { className: "grid w-full grid-cols-[1fr_auto_1fr] items-center", children: [_jsxs("div", { className: "flex items-center gap-item-xs justify-self-start", children: [isSidebarDrawerMode && (_jsx(Button, { type: "button", variant: ButtonVariants_Variant.GHOST, onClick: () => emit(FrontendEvents.HOTKEY_SIDEBAR_TOGGLE, {}), "aria-label": tComponent(FrontendComponentType.APPLICATION_LEVEL_MENUBAR, 'toggleSidebar'), "data-component-type": "sidebar-drawer-trigger", className: "h-auto shrink-0 px-card-sm py-item-xs", children: renderIcon(StandardIconReference.MENU, { size: IconSize.SM }) })), renderConfigComponents(HorizontalPlacement.START)] }), _jsxs("div", { className: "flex items-center gap-item-xs min-w-0 px-item-xs", children: [renderConfigComponents(HorizontalPlacement.MIDDLE), renderMenubarItems()] }), _jsx("div", { className: "flex items-center gap-item-xs justify-self-end", children: renderConfigComponents(HorizontalPlacement.END) })] }), children && (_jsx("div", { className: cn('px-card py-card-sm', !isContinuousShell && 'border-t border-surface-sunken-border'), children: children }))] }) }));
107
+ : 'bg-surface-sunken text-surface-sunken-foreground border-b border-surface-sunken-border', menubarConfig.isOverlay && cn('absolute top-0 inset-inline-start-0 inset-inline-end-0 z-(--z-overlay)', overlayRecipe.base), menubarConfig.showMobileLayout ? 'px-card-sm py-item-xs' : 'px-card py-card-sm'), children: [_jsxs("div", { className: "grid w-full grid-cols-[1fr_auto_1fr] items-center", children: [_jsxs("div", { className: "flex items-center gap-item-xs justify-self-start", children: [isSidebarDrawerMode && (_jsx(Button, { type: "button", variant: ButtonVariants_Variant.GHOST, onClick: () => emit(FrontendEvents.HOTKEY_SIDEBAR_TOGGLE, {}), "aria-label": tComponent(FrontendComponentType.APPLICATION_LEVEL_MENUBAR, 'toggleSidebar'), "data-component-type": "sidebar-drawer-trigger", className: "h-auto shrink-0 px-card-sm py-item-xs", children: renderIcon(StandardIconReference.MENU, { size: IconSize.SM }) })), renderBrandHeader(), renderConfigComponents(HorizontalPlacement.START)] }), _jsxs("div", { className: "flex items-center gap-item-xs min-w-0 px-item-xs", children: [renderConfigComponents(HorizontalPlacement.MIDDLE), renderMenubarItems()] }), _jsx("div", { className: "flex items-center gap-item-xs justify-self-end", children: renderConfigComponents(HorizontalPlacement.END) })] }), children && (_jsx("div", { className: cn('px-card py-card-sm', !isContinuousShell && 'border-t border-surface-sunken-border'), children: children }))] }) }));
86
108
  };
87
109
  //# sourceMappingURL=menubar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menubar.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/menubar.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Suspense } from 'react';\n\nimport {\n ApplicationLevelComponentType,\n ApplicationLevelProps_Menubar,\n useI18n,\n ComponentRegistryService,\n useUI,\n useMenuBarBehavior,\n useHostedComponentInteractions,\n useSidebarMobileDrawerMode,\n useEventBus,\n useIconRegistry,\n FrontendEvents,\n IconSize,\n StandardIconReference,\n envLoader,\n Button,\n ButtonVariants_Variant,\n cn,\n Surface,\n} from '@wildo-ai/saas-frontend-lib';\nimport { CorePresetNames, FrontendComponentType, HorizontalPlacement, ShellAppearance, SurfaceVariant, UIBehavior, VerticalPlacement } from '@wildo-ai/presets-components-models';\nimport { HostedTriggerAppearance } from '@wildo-ai/saas-frontend-lib';\n\nimport { Menubar } from '~wildo-presets/components/navigation/menu-bar';\n\nfunction humanizeMenubarGroup(group: string): string {\n return group\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/[-_]/g, ' ')\n .trim()\n .replace(/\\b\\w/g, character => character.toUpperCase());\n}\n\nexport const ApplicationLevelPreset_Menubar_Default: React.FC<ApplicationLevelProps_Menubar> = ({\n mode,\n children\n}) => {\n\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.APPLICATION_LEVEL_MENUBAR });\n const { UIConfig, getRecipe, shellAppearance } = useUI();\n const overlayRecipe = getRecipe(UIBehavior.SURFACE, SurfaceVariant.OVERLAY);\n\n const { containerComponents, items, menubarConfig } = useMenuBarBehavior({ mode });\n // Mobile burger: while the sidebar operates as an overlay drawer (BURGER policy\n // at/below its responsive breakpoint) nothing renders inline, so the menubar\n // provides the drawer's opening affordance. State stays owned by the sidebar's\n // behavior instance — the burger only speaks the existing toggle event.\n const isSidebarDrawerMode = useSidebarMobileDrawerMode();\n const { emit } = useEventBus();\n const { renderIcon } = useIconRegistry();\n // CONTINUOUS shell chrome: the menubar is a transparent strip of the shared\n // canvas — no sunken slab, no separating border-b. The overlay mode keeps its\n // own (opaque) recipe chrome: a floating bar must stay readable over content.\n const isContinuousShell = shellAppearance === ShellAppearance.CONTINUOUS && !menubarConfig.isOverlay;\n const { getHostedComponentProps } = useHostedComponentInteractions();\n const currentBreakpoint = UIConfig?.currentBreakpoint;\n\n if (!isReady) return null;\n\n // ===================================================================\n // Component Renderers\n // ===================================================================\n\n const renderResolvedComponent = (\n instanceId: string,\n appLevelType: ApplicationLevelComponentType,\n frontendComponentType: FrontendComponentType,\n placement: HorizontalPlacement | VerticalPlacement | undefined,\n presetName?: string,\n triggerWidth?: string | number,\n triggerAppearance?: HostedTriggerAppearance,\n ) => {\n const Component = ComponentRegistryService.resolve(\n frontendComponentType,\n presetName ?? CorePresetNames.DEFAULT\n );\n if (!Component) return null;\n\n return (\n <Suspense key={instanceId} fallback={<div className=\"h-8 w-8 animate-pulse motion-reduce:animate-none bg-muted rounded\" aria-hidden=\"true\" />}>\n <Component\n {...getHostedComponentProps(appLevelType, instanceId)}\n containerType={ApplicationLevelComponentType.MENUBAR}\n containerPlacement={placement}\n triggerWidth={triggerWidth}\n // A COMPACT declaration renders the hosted trigger as an icon button —\n // what belongs in a menubar cluster beside the bell and the avatar.\n // Passed as the component's existing `compact` prop so a preset that\n // already collapses for its own reasons (the sidebar's collapsed rail)\n // keeps one meaning for \"render small\".\n compact={triggerAppearance === HostedTriggerAppearance.COMPACT}\n />\n </Suspense>\n );\n };\n\n const renderConfigComponents = (targetPlacement: HorizontalPlacement) => {\n return containerComponents\n .filter(comp => comp.placement === targetPlacement)\n .map(comp => renderResolvedComponent(comp.instanceId, comp.component, comp.frontendComponentType, comp.placement, comp.presetName, comp.triggerWidth, comp.triggerAppearance));\n };\n\n const groupedItems = items.reduce((groups, item) => {\n if (!item.group) {\n return groups;\n }\n\n const existing = groups.get(item.group) ?? [];\n existing.push(item);\n groups.set(item.group, existing);\n return groups;\n }, new Map<string, typeof items>());\n\n const renderMenubarItems = () => {\n if (items.length === 0) {\n return null;\n }\n\n const renderedGroups = new Set<string>();\n\n return (\n <div className=\"flex items-center gap-item-xs min-w-0\">\n {items.map(item => {\n if (!item.group) {\n return (\n <Button\n key={item.id}\n type=\"button\"\n onClick={item.onExecute}\n variant={ButtonVariants_Variant.GHOST}\n className=\"h-auto gap-element px-card-sm py-item-xs text-sm font-medium\"\n >\n {item.icon && <span className=\"shrink-0\">{item.icon}</span>}\n <span className=\"truncate\">{item.label}</span>\n </Button>\n );\n }\n\n if (renderedGroups.has(item.group)) {\n return null;\n }\n\n renderedGroups.add(item.group);\n const groupItems = groupedItems.get(item.group) ?? [];\n\n return (\n <Menubar\n key={item.group}\n className=\"h-auto gap-item-xs rounded-none border-0 bg-transparent p-0 shadow-none\"\n >\n <Menubar.Menu>\n <Menubar.Trigger>{humanizeMenubarGroup(item.group)}</Menubar.Trigger>\n <Menubar.Content>\n {groupItems.map(groupItem => (\n <Menubar.Item\n key={groupItem.id}\n onSelect={groupItem.onExecute}\n >\n {groupItem.icon && <span className=\"shrink-0\">{groupItem.icon}</span>}\n <span className=\"truncate\">{groupItem.label}</span>\n </Menubar.Item>\n ))}\n </Menubar.Content>\n </Menubar.Menu>\n </Menubar>\n );\n })}\n </div>\n );\n };\n\n // ===================================================================\n // Render\n // ===================================================================\n\n return (\n <Surface\n asChild\n emitPolicyVars={false}\n variant={menubarConfig.isOverlay ? SurfaceVariant.OVERLAY : SurfaceVariant.SUNKEN}\n >\n <div\n data-component-area=\"menubar\"\n data-component-type={ApplicationLevelComponentType.MENUBAR}\n data-menubar-mode={menubarConfig.mode}\n data-frontend-service-name={envLoader.loadEnvironmentConfig().frontendServiceName}\n data-viewport={currentBreakpoint}\n role=\"banner\"\n aria-label={tComponent(FrontendComponentType.APPLICATION_LEVEL_MENUBAR, 'menubarLabel')}\n className={cn(\n isContinuousShell\n ? 'bg-transparent text-foreground'\n : 'bg-surface-sunken text-surface-sunken-foreground border-b border-surface-sunken-border',\n menubarConfig.isOverlay && cn('absolute top-0 inset-inline-start-0 inset-inline-end-0 z-(--z-overlay)', overlayRecipe.base),\n menubarConfig.showMobileLayout ? 'px-card-sm py-item-xs' : 'px-card py-card-sm',\n )}\n >\n {/*\n * Three-zone bar as a GRID, not a flex sandwich. `flex-1 justify-center`\n * centered the MIDDLE zone within the RESIDUAL space between the two\n * side groups, so whenever START and END had different widths (the\n * normal case — END carries bell + avatar while START may be empty at a\n * root route) the \"centered\" content drifted off the bar's true center\n * by (start − end)/2, and the drift changed as breakpoint-gated\n * components appeared. `1fr auto 1fr` anchors the MIDDLE column to the\n * bar's center whenever space allows, and degrades by pushing (never\n * overlapping) when a side group genuinely needs more than half the\n * remaining width.\n */}\n {/*\n * The bar has NO fixed height — only padding — and it is an intrinsic\n * flex item in the shell's `flex flex-col` column whose content area\n * takes `flex-1`. So it GROWS to fit its tallest hosted control (a\n * quick switcher declaring `LABEL_ABOVE` renders a stacked label ~63px\n * tall) and the content area shrinks by exactly that much; `items-center`\n * re-centres every shorter sibling in the taller row rather than\n * top-aligning them. Do not pin a height here to \"stabilise\" the bar:\n * that would clip the taller control instead of hosting it.\n */}\n <div className=\"grid w-full grid-cols-[1fr_auto_1fr] items-center\">\n <div className=\"flex items-center gap-item-xs justify-self-start\">\n {isSidebarDrawerMode && (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n onClick={() => emit(FrontendEvents.HOTKEY_SIDEBAR_TOGGLE, {})}\n aria-label={tComponent(FrontendComponentType.APPLICATION_LEVEL_MENUBAR, 'toggleSidebar')}\n data-component-type=\"sidebar-drawer-trigger\"\n className=\"h-auto shrink-0 px-card-sm py-item-xs\"\n >\n {renderIcon(StandardIconReference.MENU, { size: IconSize.SM })}\n </Button>\n )}\n {renderConfigComponents(HorizontalPlacement.START)}\n </div>\n\n <div className=\"flex items-center gap-item-xs min-w-0 px-item-xs\">\n {renderConfigComponents(HorizontalPlacement.MIDDLE)}\n {renderMenubarItems()}\n </div>\n\n <div className=\"flex items-center gap-item-xs justify-self-end\">\n {renderConfigComponents(HorizontalPlacement.END)}\n </div>\n </div>\n\n {children && (\n <div className={cn('px-card py-card-sm', !isContinuousShell && 'border-t border-surface-sunken-border')}>\n {children}\n </div>\n )}\n </div>\n </Surface>\n );\n};\n"]}
1
+ {"version":3,"file":"menubar.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/menubar.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Suspense } from 'react';\n\nimport {\n ApplicationLevelComponentType,\n ApplicationLevelProps_Menubar,\n useI18n,\n ComponentRegistryService,\n useUI,\n useMenuBarBehavior,\n useHostedComponentInteractions,\n useSidebarMobileDrawerMode,\n useEventBus,\n useIconRegistry,\n FrontendEvents,\n IconSize,\n StandardIconReference,\n envLoader,\n Button,\n ButtonVariants_Variant,\n cn,\n Surface,\n useBrandPresentation,\n} from '@wildo-ai/saas-frontend-lib';\nimport { CorePresetNames, FrontendComponentType, HorizontalPlacement, SelectableVariant, ShellAppearance, SurfaceVariant, UIBehavior, VerticalPlacement } from '@wildo-ai/presets-components-models';\nimport { HostedTriggerAppearance } from '@wildo-ai/saas-frontend-lib';\n\nimport { Menubar } from '~wildo-presets/components/navigation/menu-bar';\n\nexport const ApplicationLevelPreset_Menubar_Default: React.FC<ApplicationLevelProps_Menubar> = ({\n mode,\n children\n}) => {\n\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.APPLICATION_LEVEL_MENUBAR });\n const { UIConfig, getRecipe, shellAppearance } = useUI();\n const overlayRecipe = getRecipe(UIBehavior.SURFACE, SurfaceVariant.OVERLAY);\n /*\n * Destination items take the theme's SELECTABLE/FILLED recipe — the same vocabulary the sidebar\n * uses for \"the current destination\" — so a menubar-only shell reads which page it is on. Opt-in\n * via `data-active`, appended after the GHOST recipe so the selected wash wins over GHOST's.\n */\n const selectableRecipe = getRecipe(UIBehavior.SELECTABLE, SelectableVariant.FILLED);\n const itemStateClasses = cn(\n selectableRecipe.states.hover,\n selectableRecipe.states.selected,\n selectableRecipe.motion.transition,\n );\n\n const { containerComponents, items, menubarConfig, brandHeader, isHomeActive, handleHomeClick } = useMenuBarBehavior({ mode });\n /*\n * The same four data decisions the sidebar's brand header takes (a failed mark degrading to the\n * name, the latch resetting on a theme change, a wordmark replacing the name, nothing rendering\n * for an empty identity) live once in `useBrandPresentation`; what stays here is layout. Called\n * unconditionally, as a hook must be — `brandHeader` is `undefined` unless the config opted in,\n * and the hook answers `isEmpty` for that.\n */\n const brand = useBrandPresentation(brandHeader);\n // Mobile burger: while the sidebar operates as an overlay drawer (BURGER policy\n // at/below its responsive breakpoint) nothing renders inline, so the menubar\n // provides the drawer's opening affordance. State stays owned by the sidebar's\n // behavior instance — the burger only speaks the existing toggle event.\n const isSidebarDrawerMode = useSidebarMobileDrawerMode();\n const { emit } = useEventBus();\n const { renderIcon } = useIconRegistry();\n // CONTINUOUS shell chrome: the menubar is a transparent strip of the shared\n // canvas — no sunken slab, no separating border-b. The overlay mode keeps its\n // own (opaque) recipe chrome: a floating bar must stay readable over content.\n const isContinuousShell = shellAppearance === ShellAppearance.CONTINUOUS && !menubarConfig.isOverlay;\n const { getHostedComponentProps } = useHostedComponentInteractions();\n const currentBreakpoint = UIConfig?.currentBreakpoint;\n\n if (!isReady) return null;\n\n // ===================================================================\n // Component Renderers\n // ===================================================================\n\n const renderResolvedComponent = (\n instanceId: string,\n appLevelType: ApplicationLevelComponentType,\n frontendComponentType: FrontendComponentType,\n placement: HorizontalPlacement | VerticalPlacement | undefined,\n presetName?: string,\n triggerWidth?: string | number,\n triggerAppearance?: HostedTriggerAppearance,\n ) => {\n const Component = ComponentRegistryService.resolve(\n frontendComponentType,\n presetName ?? CorePresetNames.DEFAULT\n );\n if (!Component) return null;\n\n return (\n <Suspense key={instanceId} fallback={<div className=\"h-8 w-8 animate-pulse motion-reduce:animate-none bg-muted rounded\" aria-hidden=\"true\" />}>\n <Component\n {...getHostedComponentProps(appLevelType, instanceId)}\n containerType={ApplicationLevelComponentType.MENUBAR}\n containerPlacement={placement}\n triggerWidth={triggerWidth}\n // A COMPACT declaration renders the hosted trigger as an icon button —\n // what belongs in a menubar cluster beside the bell and the avatar.\n // Passed as the component's existing `compact` prop so a preset that\n // already collapses for its own reasons (the sidebar's collapsed rail)\n // keeps one meaning for \"render small\".\n compact={triggerAppearance === HostedTriggerAppearance.COMPACT}\n />\n </Suspense>\n );\n };\n\n const renderConfigComponents = (targetPlacement: HorizontalPlacement) => {\n return containerComponents\n .filter(comp => comp.placement === targetPlacement)\n .map(comp => renderResolvedComponent(comp.instanceId, comp.component, comp.frontendComponentType, comp.placement, comp.presetName, comp.triggerWidth, comp.triggerAppearance));\n };\n\n const groupedItems = items.reduce((groups, item) => {\n if (!item.group) {\n return groups;\n }\n\n const existing = groups.get(item.group) ?? [];\n existing.push(item);\n groups.set(item.group, existing);\n return groups;\n }, new Map<string, typeof items>());\n\n /**\n * The identity as the HOME affordance at the start of the bar (`brandHeader: true`) — the\n * horizontal counterpart of the sidebar's pinned brand header, for a shell that has no sidebar.\n * Mark beside name; a WORDMARK/LOCKUP already spells the name and replaces it. `aria-current`\n * stays truthful on the home route but NO `data-active`: the identity is not a menu item that\n * lights up (the sidebar records the same decision).\n */\n const renderBrandHeader = () => {\n if (!brandHeader || brand.isEmpty) return null;\n const { name, logoUrl, hasMark, markCarriesName, onMarkError } = brand;\n const showNameText = !(hasMark && markCarriesName);\n return (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n onClick={handleHomeClick}\n aria-current={isHomeActive ? 'page' : undefined}\n aria-label={showNameText ? undefined : name}\n data-slot=\"menubar-brand-header\"\n className=\"h-auto min-w-0 shrink-0 gap-element px-card-sm py-item-xs text-sm font-semibold\"\n >\n {hasMark && logoUrl && (\n <img\n src={logoUrl}\n alt={markCarriesName ? name : ''}\n aria-hidden={markCarriesName ? undefined : 'true'}\n onError={onMarkError}\n className={markCarriesName ? 'h-6 w-auto' : 'size-6 shrink-0 object-contain'}\n />\n )}\n {showNameText && <span className=\"truncate\">{name}</span>}\n </Button>\n );\n };\n\n const renderMenubarItems = () => {\n if (items.length === 0) {\n return null;\n }\n\n const renderedGroups = new Set<string>();\n\n return (\n <div className=\"flex items-center gap-item-xs min-w-0\">\n {items.map(item => {\n if (!item.group) {\n return (\n <Button\n key={item.id}\n type=\"button\"\n onClick={item.onExecute}\n variant={ButtonVariants_Variant.GHOST}\n aria-current={item.isActive ? 'page' : undefined}\n data-active={item.isActive || undefined}\n data-nav-item-id={item.id}\n className={cn('h-auto gap-element px-card-sm py-item-xs text-sm font-medium', itemStateClasses)}\n >\n {item.icon && <span className=\"shrink-0\">{item.icon}</span>}\n <span className=\"truncate\">{item.label}</span>\n </Button>\n );\n }\n\n if (renderedGroups.has(item.group)) {\n return null;\n }\n\n renderedGroups.add(item.group);\n const groupItems = groupedItems.get(item.group) ?? [];\n\n return (\n <Menubar\n key={item.group}\n className=\"h-auto gap-item-xs rounded-none border-0 bg-transparent p-0 shadow-none\"\n >\n <Menubar.Menu>\n {/*\n The group identifier AS AUTHORED. It used to be humanized into English here —\n `billingSettings` rendered as \"Billing Settings\" — which is display text produced\n by code: untranslatable, invisible to whoever owns the product's wording, and wrong\n on every acronym (`GDPR` became \"Gdpr\"). The identifier is what the application\n declared, so showing it unchanged is honest and makes an unlabelled group visibly\n unlabelled. Giving this trigger a label lookup is owed and needs a key per group.\n */}\n <Menubar.Trigger>{item.group}</Menubar.Trigger>\n <Menubar.Content>\n {groupItems.map(groupItem => (\n <Menubar.Item\n key={groupItem.id}\n onSelect={groupItem.onExecute}\n aria-current={groupItem.isActive ? 'page' : undefined}\n data-active={groupItem.isActive || undefined}\n data-nav-item-id={groupItem.id}\n >\n {groupItem.icon && <span className=\"shrink-0\">{groupItem.icon}</span>}\n <span className=\"truncate\">{groupItem.label}</span>\n </Menubar.Item>\n ))}\n </Menubar.Content>\n </Menubar.Menu>\n </Menubar>\n );\n })}\n </div>\n );\n };\n\n // ===================================================================\n // Render\n // ===================================================================\n\n return (\n <Surface\n asChild\n emitPolicyVars={false}\n variant={menubarConfig.isOverlay ? SurfaceVariant.OVERLAY : SurfaceVariant.SUNKEN}\n >\n <div\n data-component-area=\"menubar\"\n data-component-type={ApplicationLevelComponentType.MENUBAR}\n data-menubar-mode={menubarConfig.mode}\n data-frontend-service-name={envLoader.loadEnvironmentConfig().frontendServiceName}\n data-viewport={currentBreakpoint}\n role=\"banner\"\n aria-label={tComponent(FrontendComponentType.APPLICATION_LEVEL_MENUBAR, 'menubarLabel')}\n className={cn(\n isContinuousShell\n ? 'bg-transparent text-foreground'\n : 'bg-surface-sunken text-surface-sunken-foreground border-b border-surface-sunken-border',\n menubarConfig.isOverlay && cn('absolute top-0 inset-inline-start-0 inset-inline-end-0 z-(--z-overlay)', overlayRecipe.base),\n menubarConfig.showMobileLayout ? 'px-card-sm py-item-xs' : 'px-card py-card-sm',\n )}\n >\n {/*\n * Three-zone bar as a GRID, not a flex sandwich. `flex-1 justify-center`\n * centered the MIDDLE zone within the RESIDUAL space between the two\n * side groups, so whenever START and END had different widths (the\n * normal case — END carries bell + avatar while START may be empty at a\n * root route) the \"centered\" content drifted off the bar's true center\n * by (start − end)/2, and the drift changed as breakpoint-gated\n * components appeared. `1fr auto 1fr` anchors the MIDDLE column to the\n * bar's center whenever space allows, and degrades by pushing (never\n * overlapping) when a side group genuinely needs more than half the\n * remaining width.\n */}\n {/*\n * The bar has NO fixed height — only padding — and it is an intrinsic\n * flex item in the shell's `flex flex-col` column whose content area\n * takes `flex-1`. So it GROWS to fit its tallest hosted control (a\n * quick switcher declaring `LABEL_ABOVE` renders a stacked label ~63px\n * tall) and the content area shrinks by exactly that much; `items-center`\n * re-centres every shorter sibling in the taller row rather than\n * top-aligning them. Do not pin a height here to \"stabilise\" the bar:\n * that would clip the taller control instead of hosting it.\n */}\n <div className=\"grid w-full grid-cols-[1fr_auto_1fr] items-center\">\n <div className=\"flex items-center gap-item-xs justify-self-start\">\n {isSidebarDrawerMode && (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n onClick={() => emit(FrontendEvents.HOTKEY_SIDEBAR_TOGGLE, {})}\n aria-label={tComponent(FrontendComponentType.APPLICATION_LEVEL_MENUBAR, 'toggleSidebar')}\n data-component-type=\"sidebar-drawer-trigger\"\n className=\"h-auto shrink-0 px-card-sm py-item-xs\"\n >\n {renderIcon(StandardIconReference.MENU, { size: IconSize.SM })}\n </Button>\n )}\n {renderBrandHeader()}\n {renderConfigComponents(HorizontalPlacement.START)}\n </div>\n\n <div className=\"flex items-center gap-item-xs min-w-0 px-item-xs\">\n {renderConfigComponents(HorizontalPlacement.MIDDLE)}\n {renderMenubarItems()}\n </div>\n\n <div className=\"flex items-center gap-item-xs justify-self-end\">\n {renderConfigComponents(HorizontalPlacement.END)}\n </div>\n </div>\n\n {children && (\n <div className={cn('px-card py-card-sm', !isContinuousShell && 'border-t border-surface-sunken-border')}>\n {children}\n </div>\n )}\n </div>\n </Surface>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"menubar.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/menubar.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAO7C,eAAO,MAAM,6BAA6B,EAAE,mBAAmB,EAI9D,CAAC"}
1
+ {"version":3,"file":"menubar.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/menubar.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAO7C,eAAO,MAAM,6BAA6B,EAAE,mBAAmB,EAI9D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-back.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/navigation-back.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,6BAA6B,CAAC;AAExF,eAAO,MAAM,6CAA6C,EAAE,KAAK,CAAC,EAAE,CAAC,oCAAoC,CAwCxG,CAAC"}
1
+ {"version":3,"file":"navigation-back.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/navigation-back.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,6BAA6B,CAAC;AAExF,eAAO,MAAM,6CAA6C,EAAE,KAAK,CAAC,EAAE,CAAC,oCAAoC,CAiDxG,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { ButtonSize, FrontendComponentType } from '@wildo-ai/presets-components-models';
3
+ import { NavigationZoneName } from '@wildo-ai/saas-models';
3
4
  import { useI18n, useIconRegistry, useNavigationController, useNavigationState, resolveApplicationLevelNavigationBackZone, StandardIconReference, IconSize, Button, ButtonVariants_Variant, } from '@wildo-ai/saas-frontend-lib';
4
5
  export const ApplicationLevelPreset_NavigationBack_Default = ({ navigationZone,
5
6
  // V-7: drop the raw `hover:bg-muted` default — the Button GHOST recipe owns
@@ -12,13 +13,20 @@ className, ariaLabel, }) => {
12
13
  const { focusedZone } = useNavigationState();
13
14
  const { goBack, canGoBack } = useNavigationController();
14
15
  const resolvedZone = resolveApplicationLevelNavigationBackZone(navigationZone, focusedZone);
15
- if (!canGoBack(resolvedZone)) {
16
+ /*
17
+ * In the PRIMARY zone there is nothing to walk back to below the first entry, so the control
18
+ * hides. In an ADJACENT zone — a hosted pane beside a page — a single entry is still something to
19
+ * leave: `goBack` on a zone with nothing beneath is the controller's own way of closing it, and
20
+ * without this branch a one-entry pane had no close control at all (the workbench's conversation
21
+ * found it, 2026-09-22). The label stays "back": the gesture returns the page to what it was.
22
+ */
23
+ if (!canGoBack(resolvedZone) && resolvedZone === NavigationZoneName.PRIMARY) {
16
24
  return null;
17
25
  }
18
26
  if (!isReady)
19
27
  return null;
20
28
  const backIcon = renderIcon(StandardIconReference.BACK, { size: IconSize.SM });
21
29
  const label = ariaLabel || tComponent(FrontendComponentType.APPLICATION_LEVEL_NAVIGATION_BACK, 'back');
22
- return (_jsx(Button, { type: "button", variant: ButtonVariants_Variant.GHOST, size: ButtonSize.ICON_SM, onClick: () => goBack(resolvedZone), className: className, "aria-label": label, children: backIcon }));
30
+ return (_jsx(Button, { type: "button", variant: ButtonVariants_Variant.GHOST, size: ButtonSize.ICON_SM, onClick: () => goBack(resolvedZone), className: className, "aria-label": label, "data-navigation-back": resolvedZone, children: backIcon }));
23
31
  };
24
32
  //# sourceMappingURL=navigation-back.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-back.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/navigation-back.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAExF,OAAO,EACL,OAAO,EACP,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,yCAAyC,EACzC,qBAAqB,EAAE,QAAQ,EAC/B,MAAM,EAAE,sBAAsB,GAC/B,MAAM,6BAA6B,CAAC;AAIrC,MAAM,CAAC,MAAM,6CAA6C,GAAmD,CAAC,EAC5G,cAAc;AACd,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,+CAA+C;AAC/C,SAAS,EACT,SAAS,GACV,EAAE,EAAE;IACH,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,qBAAqB,CAAC,iCAAiC,EAAE,CAAC,CAAC;IAChH,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IACzC,MAAM,EAAE,WAAW,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAC7C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,uBAAuB,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,yCAAyC,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAE5F,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,QAAQ,GAAG,UAAU,CACzB,qBAAqB,CAAC,IAAI,EAC1B,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CACtB,CAAC;IAEF,MAAM,KAAK,GAAG,SAAS,IAAI,UAAU,CAAC,qBAAqB,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;IAEvG,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,sBAAsB,CAAC,KAAK,EACrC,IAAI,EAAE,UAAU,CAAC,OAAO,EACxB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EACnC,SAAS,EAAE,SAAS,gBACR,KAAK,YAEhB,QAAQ,GACF,CACV,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React from 'react';\nimport { ButtonSize, FrontendComponentType } from '@wildo-ai/presets-components-models';\n\nimport {\n useI18n,\n useIconRegistry,\n useNavigationController,\n useNavigationState,\n resolveApplicationLevelNavigationBackZone,\n StandardIconReference, IconSize,\n Button, ButtonVariants_Variant,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport type { ApplicationLevelProps_NavigationBack } from '@wildo-ai/saas-frontend-lib';\n\nexport const ApplicationLevelPreset_NavigationBack_Default: React.FC<ApplicationLevelProps_NavigationBack> = ({\n navigationZone,\n // V-7: drop the raw `hover:bg-muted` default — the Button GHOST recipe owns\n // the hover/focus/active treatment (theme-aware, focus-ring honored). Pass-\n // through `className` is still respected for downstream layout overrides\n // but the default is empty so the recipe wins.\n className,\n ariaLabel,\n}) => {\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.APPLICATION_LEVEL_NAVIGATION_BACK });\n const { renderIcon } = useIconRegistry();\n const { focusedZone } = useNavigationState();\n const { goBack, canGoBack } = useNavigationController();\n const resolvedZone = resolveApplicationLevelNavigationBackZone(navigationZone, focusedZone);\n\n if (!canGoBack(resolvedZone)) {\n return null;\n }\n\n if (!isReady) return null;\n\n const backIcon = renderIcon(\n StandardIconReference.BACK,\n { size: IconSize.SM }\n );\n\n const label = ariaLabel || tComponent(FrontendComponentType.APPLICATION_LEVEL_NAVIGATION_BACK, 'back');\n\n return (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.ICON_SM}\n onClick={() => goBack(resolvedZone)}\n className={className}\n aria-label={label}\n >\n {backIcon}\n </Button>\n );\n};\n"]}
1
+ {"version":3,"file":"navigation-back.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/navigation-back.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAExF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,OAAO,EACP,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,yCAAyC,EACzC,qBAAqB,EAAE,QAAQ,EAC/B,MAAM,EAAE,sBAAsB,GAC/B,MAAM,6BAA6B,CAAC;AAIrC,MAAM,CAAC,MAAM,6CAA6C,GAAmD,CAAC,EAC5G,cAAc;AACd,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,+CAA+C;AAC/C,SAAS,EACT,SAAS,GACV,EAAE,EAAE;IACH,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,SAAS,EAAE,qBAAqB,CAAC,iCAAiC,EAAE,CAAC,CAAC;IAChH,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IACzC,MAAM,EAAE,WAAW,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAC7C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,uBAAuB,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG,yCAAyC,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAE5F;;;;;;OAMG;IACH,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,YAAY,KAAK,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,QAAQ,GAAG,UAAU,CACzB,qBAAqB,CAAC,IAAI,EAC1B,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CACtB,CAAC;IAEF,MAAM,KAAK,GAAG,SAAS,IAAI,UAAU,CAAC,qBAAqB,CAAC,iCAAiC,EAAE,MAAM,CAAC,CAAC;IAEvG,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,sBAAsB,CAAC,KAAK,EACrC,IAAI,EAAE,UAAU,CAAC,OAAO,EACxB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EACnC,SAAS,EAAE,SAAS,gBACR,KAAK,0BAEK,YAAY,YAEjC,QAAQ,GACF,CACV,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React from 'react';\nimport { ButtonSize, FrontendComponentType } from '@wildo-ai/presets-components-models';\n\nimport { NavigationZoneName } from '@wildo-ai/saas-models';\nimport {\n useI18n,\n useIconRegistry,\n useNavigationController,\n useNavigationState,\n resolveApplicationLevelNavigationBackZone,\n StandardIconReference, IconSize,\n Button, ButtonVariants_Variant,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport type { ApplicationLevelProps_NavigationBack } from '@wildo-ai/saas-frontend-lib';\n\nexport const ApplicationLevelPreset_NavigationBack_Default: React.FC<ApplicationLevelProps_NavigationBack> = ({\n navigationZone,\n // V-7: drop the raw `hover:bg-muted` default — the Button GHOST recipe owns\n // the hover/focus/active treatment (theme-aware, focus-ring honored). Pass-\n // through `className` is still respected for downstream layout overrides\n // but the default is empty so the recipe wins.\n className,\n ariaLabel,\n}) => {\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.APPLICATION_LEVEL_NAVIGATION_BACK });\n const { renderIcon } = useIconRegistry();\n const { focusedZone } = useNavigationState();\n const { goBack, canGoBack } = useNavigationController();\n const resolvedZone = resolveApplicationLevelNavigationBackZone(navigationZone, focusedZone);\n\n /*\n * In the PRIMARY zone there is nothing to walk back to below the first entry, so the control\n * hides. In an ADJACENT zone — a hosted pane beside a page — a single entry is still something to\n * leave: `goBack` on a zone with nothing beneath is the controller's own way of closing it, and\n * without this branch a one-entry pane had no close control at all (the workbench's conversation\n * found it, 2026-09-22). The label stays \"back\": the gesture returns the page to what it was.\n */\n if (!canGoBack(resolvedZone) && resolvedZone === NavigationZoneName.PRIMARY) {\n return null;\n }\n\n if (!isReady) return null;\n\n const backIcon = renderIcon(\n StandardIconReference.BACK,\n { size: IconSize.SM }\n );\n\n const label = ariaLabel || tComponent(FrontendComponentType.APPLICATION_LEVEL_NAVIGATION_BACK, 'back');\n\n return (\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.ICON_SM}\n onClick={() => goBack(resolvedZone)}\n className={className}\n aria-label={label}\n /* An automation hook, i18n-independent, like `data-nav-item-id` on the sidebar: the zone this control walks back. */\n data-navigation-back={resolvedZone}\n >\n {backIcon}\n </Button>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-back.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/navigation-back.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,oCAAoC,EAAE,mBAAmB,EAErE,CAAC"}
1
+ {"version":3,"file":"navigation-back.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/navigation-back.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,oCAAoC,EAAE,mBAAmB,EAErE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"notification-center.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/notification-center.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAgBL,wCAAwC,EACzC,MAAM,6BAA6B,CAAC;AA2BrC,eAAO,MAAM,iDAAiD,EAAE,KAAK,CAAC,EAAE,CAAC,wCAAwC,CA0NhH,CAAC"}
1
+ {"version":3,"file":"notification-center.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/notification-center.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAgBL,wCAAwC,EACzC,MAAM,6BAA6B,CAAC;AA2BrC,eAAO,MAAM,iDAAiD,EAAE,KAAK,CAAC,EAAE,CAAC,wCAAwC,CA0NhH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"notification-center.js","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/notification-center.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC/L,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EACL,qBAAqB,EACrB,OAAO,EACP,eAAe,EACf,6BAA6B,EAC7B,QAAQ,EACR,qBAAqB,EACrB,KAAK,EACL,MAAM,EACN,sBAAsB,EACtB,OAAO,EACP,cAAc,EACd,cAAc,EACd,UAAU,EACV,EAAE,EACF,OAAO,GAER,MAAM,6BAA6B,CAAC;AAErC,SAAS,6BAA6B,CAAC,IAA8C;IACnF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS,CAAC,CAAC,OAAO,cAAc,CAAC;QACtC,KAAK,SAAS,CAAC,CAAC,OAAO,cAAc,CAAC;QACtC,KAAK,OAAO,CAAC,CAAC,OAAO,kBAAkB,CAAC;QACxC,KAAK,MAAM,CAAC;QACZ,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,SAAiE;IAEjE,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,mBAAmB,CAAC,KAAK;YAC5B,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;QACtE,KAAK,iBAAiB,CAAC,MAAM;YAC3B,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC;QACjE,KAAK,iBAAiB,CAAC,GAAG,CAAC;QAC3B,KAAK,mBAAmB,CAAC,GAAG,CAAC;QAC7B;YACE,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;IACtE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,iDAAiD,GAAuD,CAAC,EACpH,SAAS,EACT,MAAM,EAAE,cAAc,EACtB,YAAY,EACZ,gBAAgB,GACjB,EAAE,EAAE;IACH,MAAM,QAAQ,GAAG,6BAA6B,CAAC,cAAc,EAAE,YAAY,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACnG,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QACtC,SAAS,EAAE,qBAAqB,CAAC,qCAAqC;KACvE,CAAC,CAAC;IACH,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAC;IACzC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEhF;;;;;;;;OAQG;IACH,MAAM,EACJ,MAAM,EACN,SAAS,EACT,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,GACpB,GAAG,QAAQ,CAAC;IAEb,sEAAsE;IACtE,cAAc;IACd,sEAAsE;IAEtE,gFAAgF;IAChF,2EAA2E;IAC3E,MAAM,CAAC,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,qBAAqB,CAAC;QACvD,UAAU;QACV,aAAa,EAAE,qBAAqB,CAAC,qCAAqC;QAC1E,GAAG;KACJ,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAC9B;;;;OAIG;IACH,MAAM,oBAAoB,GAAG,CAAC,CAAC,4BAA4B,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAExD,sEAAsE;IACtE,QAAQ;IACR,sEAAsE;IAEtE,MAAM,QAAQ,GAAG,UAAU,CACzB,qBAAqB,CAAC,YAAY,EAClC,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CACtB,CAAC;IAEF,MAAM,WAAW,GAAG,UAAU,CAC5B,qBAAqB,CAAC,KAAK,EAC3B,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CACtB,CAAC;IAEF,sEAAsE;IACtE,2BAA2B;IAC3B,sEAAsE;IAEtE,MAAM,sBAAsB,GAAG,CAAC,YAAiD,EAAE,EAAE;QACnF,MAAM,QAAQ,GAAG,UAAU,CACzB,YAAY,CAAC,aAAa,EAC1B,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CACtB,CAAC;QACF,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,IAAI,cAAc,CAAC;QAE7D,OAAO,CACL,KAAC,OAAO,IAAuB,OAAO,QAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,YACzF,eACE,SAAS,EAAE,EAAE,CACX,0DAA0D,EAC1D,WAAW,CAAC,MAAM,CAAC,UAAU,EAC7B,WAAW,CAAC,MAAM,CAAC,KAAK,CACzB,aAGD,cAAK,SAAS,EAAE,wBAAwB,6BAA6B,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YACvF,QAAQ,GACL,EAGN,eAAK,SAAS,EAAC,gBAAgB,aAC7B,eAAK,SAAS,EAAC,8CAA8C,aAO3D,eAAK,SAAS,EAAC,2BAA2B,aACxC,YAAG,SAAS,EAAC,qCAAqC,YAC/C,YAAY,CAAC,YAAY,GACxB,EACH,YAAY,CAAC,cAAc,IAAI,CAC9B,YAAG,SAAS,EAAC,+CAA+C,YACzD,YAAY,CAAC,cAAc,GAC1B,CACL,EACD,YAAG,SAAS,EAAC,0CAA0C,YACpD,YAAY,CAAC,iBAAiB,GAC7B,IACA,EACN,KAAC,MAAM,IACL,OAAO,EAAE,sBAAsB,CAAC,KAAK,EACrC,IAAI,EAAE,UAAU,CAAC,EAAE,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,YAAY,CAAC,EAAE,CAAC,EACnD,SAAS,EAAC,uHAAuH,gBACrH,YAAY,YAEvB,WAAW,GACL,IACL,EACL,YAAY,CAAC,QAAQ,IAAI,CACxB,KAAC,MAAM,IACL,OAAO,EAAE,sBAAsB,CAAC,KAAK,EACrC,IAAI,EAAE,UAAU,CAAC,EAAE,EACnB,OAAO,EAAE,GAAG,EAAE;oCACZ,SAAS,CAAC,KAAK,CAAC,CAAC;oCACjB,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;gCACnC,CAAC,EACD,SAAS,EAAC,YAAY,YAErB,YAAY,CAAC,QAAQ,CAAC,KAAK,GACrB,CACV,IACG,IAEF,IA5DM,YAAY,CAAC,EAAE,CA6DnB,CACX,CAAC;IACJ,CAAC,CAAC;IAEF,sEAAsE;IACtE,4BAA4B;IAC5B,sEAAsE;IAEtE,sEAAsE;IACtE,SAAS;IACT,sEAAsE;IAEtE,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,OAAO,CACL,qCAAyB,qBAAqB,YAC5C,MAAC,OAAO,IAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,aAC5C,KAAC,cAAc,IAAC,OAAO,kBACrB,KAAC,MAAM,IACL,OAAO,EAAE,sBAAsB,CAAC,KAAK,EACrC,IAAI,EAAE,UAAU,CAAC,EAAE,EACnB,SAAS,EAAC,UAAU,gBACR,UAAU,YAErB,QAAQ,GACF,GACM,EAEjB,MAAC,cAAc,IACb,KAAK,EAAE,gBAAgB,CAAC,KAAK,EAC7B,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAC3B,SAAS,EAAC,UAAU,aAGpB,eAAK,SAAS,EAAC,sDAAsD,aACnE,aAAI,SAAS,EAAC,eAAe,YAC1B,UAAU,GACR,EACL,cAAK,SAAS,EAAC,+BAA+B,YAC5C,KAAC,MAAM,IACL,OAAO,EAAE,sBAAsB,CAAC,KAAK,EACrC,IAAI,EAAE,UAAU,CAAC,EAAE,EACnB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,iBAAiB,KAAK,CAAC,YAEhC,aAAa,GACP,GACL,IACF,EAGN,KAAC,UAAU,IAAC,SAAS,EAAC,WAAW,YAC/B,cAAK,SAAS,EAAC,4BAA4B,YACxC,oBAAoB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACnC,eAAK,SAAS,EAAC,qEAAqE,aAClF,cAAK,SAAS,EAAC,kCAAkC,YAC9C,UAAU,CACT,qBAAqB,CAAC,IAAI,EAC1B,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CACtB,GACG,EACN,YAAG,SAAS,EAAC,+BAA+B,YACzC,oBAAoB,GACnB,IACA,CACP,CAAC,CAAC,CAAC;gCACF,2EAA2E;gCAC3E,cAAK,SAAS,EAAC,iBAAiB,YAC7B,oBAAoB,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAC7C,CACP,GACG,GACK,IACE,IACT,GACN,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport { ButtonSize, FrontendComponentType, HorizontalPlacement, InteractiveVariant, PlacementSide, SurfaceVariant, UIBehavior, VerticalPlacement } from '@wildo-ai/presets-components-models';\nimport { HorizontalAlign } from '@wildo-ai/zod-decorators';\n\nimport {\n resolveComponentLabel,\n useI18n,\n useIconRegistry,\n useNotificationCenterBehavior,\n IconSize,\n StandardIconReference,\n useUI,\n Button,\n ButtonVariants_Variant,\n Popover,\n PopoverContent,\n PopoverTrigger,\n ScrollArea,\n cn,\n Surface,\n ApplicationLevelProps_NotificationCenter,\n} from '@wildo-ai/saas-frontend-lib';\n\nfunction getNotificationTypeColorClass(type: 'success' | 'warning' | 'error' | 'info'): string {\n switch (type) {\n case 'success': return 'text-success';\n case 'warning': return 'text-warning';\n case 'error': return 'text-destructive';\n case 'info':\n default: return 'text-info';\n }\n}\n\nfunction getPopoverPlacement(\n placement?: ApplicationLevelProps_NotificationCenter['placement'],\n): { align: HorizontalAlign; side: PlacementSide } {\n switch (placement) {\n case HorizontalPlacement.START:\n return { align: HorizontalAlign.START, side: PlacementSide.BOTTOM };\n case VerticalPlacement.BOTTOM:\n return { align: HorizontalAlign.END, side: PlacementSide.TOP };\n case VerticalPlacement.TOP:\n case HorizontalPlacement.END:\n default:\n return { align: HorizontalAlign.END, side: PlacementSide.BOTTOM };\n }\n}\n\nexport const ApplicationLevelPreset_NotificationCenter_Default: React.FC<ApplicationLevelProps_NotificationCenter> = ({\n placement,\n isOpen: externalIsOpen,\n onOpenChange,\n listenForHotkeys,\n}) => {\n const behavior = useNotificationCenterBehavior(externalIsOpen, onOpenChange, { listenForHotkeys });\n const { tComponent, isReady } = useI18n({\n component: FrontendComponentType.APPLICATION_LEVEL_NOTIFICATION_CENTER,\n });\n const { renderIcon } = useIconRegistry();\n const { getRecipe } = useUI();\n const ghostRecipe = getRecipe(UIBehavior.INTERACTIVE, InteractiveVariant.GHOST);\n\n /*\n * A SESSION FEED, not a message history (#412).\n *\n * The filter tabs, the mark-all-read control, the unread emphasis and the today/yesterday/older\n * grouping were removed on 2026-09-08. Every one of them presented a history over a store that is a\n * `useReducer` with no hydration: it starts empty on each page load, so \"unread\" meant \"arrived\n * since you opened the tab\", marking something read died with the page, and the `older` group was\n * unreachable by construction.\n */\n const {\n isOpen,\n setIsOpen,\n sessionNotifications,\n notificationCount,\n handleClearAll,\n dismissNotification,\n } = behavior;\n\n // ===================================================================\n // I18n Labels\n // ===================================================================\n\n // I-7: no English fallbacks — missing keys surface as `components.<type>.<key>`\n // for translation debugging (intentional, framework-wide i18n discipline).\n const t = (key: string): string => resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.APPLICATION_LEVEL_NOTIFICATION_CENTER,\n key,\n });\n const titleLabel = t('title');\n /*\n * Says the feed is empty because the page just loaded, not that nothing has happened (#412). The\n * distinction matters: a person who left a tab open, reloaded, and now sees \"No notifications\"\n * would reasonably conclude the system had been quiet.\n */\n const noNotificationsLabel = t('noNotificationsThisSession');\n const clearAllLabel = t('clearAll');\n const dismissLabel = t('dismiss');\n const popoverPlacement = getPopoverPlacement(placement);\n\n // ===================================================================\n // Icons\n // ===================================================================\n\n const bellIcon = renderIcon(\n StandardIconReference.NOTIFICATION,\n { size: IconSize.MD }\n );\n\n const dismissIcon = renderIcon(\n StandardIconReference.CLOSE,\n { size: IconSize.XS }\n );\n\n // ===================================================================\n // Render Notification Item\n // ===================================================================\n\n const renderNotificationItem = (notification: typeof sessionNotifications[number]) => {\n const typeIcon = renderIcon(\n notification.iconReference,\n { size: IconSize.SM }\n );\n const rowLabel = notification.displayTitle || 'Notification';\n\n return (\n <Surface key={notification.id} asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div\n className={cn(\n 'group flex items-start gap-field-sm rounded-lg p-card-sm',\n ghostRecipe.motion.transition,\n ghostRecipe.states.hover,\n )}\n >\n {/* Type Icon */}\n <div className={`flex-shrink-0 mt-0.5 ${getNotificationTypeColorClass(notification.type)}`}>\n {typeIcon}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-start justify-between gap-element\">\n {/*\n * A DIV, not a button. The row's only action was `handleNotificationClick`, whose sole\n * effect was marking it read — so once read state went, a button here would announce an\n * interactive control to a screen reader and then do nothing. The dismiss control and\n * the optional next-step button beside it remain the row's real actions.\n */}\n <div className=\"min-w-0 flex-1 text-start\">\n <p className=\"text-sm font-medium text-foreground\">\n {notification.displayTitle}\n </p>\n {notification.displayMessage && (\n <p className=\"mt-0.5 truncate text-xs text-muted-foreground\">\n {notification.displayMessage}\n </p>\n )}\n <p className=\"mt-item-xs text-xs text-muted-foreground\">\n {notification.relativeTimeLabel}\n </p>\n </div>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => dismissNotification(notification.id)}\n className=\"h-5 w-5 p-0 opacity-70 group-hover:opacity-100 hover:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100\"\n aria-label={dismissLabel}\n >\n {dismissIcon}\n </Button>\n </div>\n {notification.nextStep && (\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.XS}\n onClick={() => {\n setIsOpen(false);\n notification.nextStep?.onClick();\n }}\n className=\"mt-item-xs\"\n >\n {notification.nextStep.label}\n </Button>\n )}\n </div>\n\n </div>\n </Surface>\n );\n };\n\n // ===================================================================\n // Render Notification Group\n // ===================================================================\n\n // ===================================================================\n // Render\n // ===================================================================\n\n if (!isReady) return null;\n\n return (\n <div data-component-type=\"notification-center\">\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n className=\"relative\"\n aria-label={titleLabel}\n >\n {bellIcon}\n </Button>\n </PopoverTrigger>\n\n <PopoverContent\n align={popoverPlacement.align}\n side={popoverPlacement.side}\n className=\"w-80 p-0\"\n >\n {/* Header */}\n <div className=\"flex items-center justify-between p-card-sm border-b\">\n <h3 className=\"font-semibold\">\n {titleLabel}\n </h3>\n <div className=\"flex items-center gap-item-xs\">\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.XS}\n onClick={handleClearAll}\n disabled={notificationCount === 0}\n >\n {clearAllLabel}\n </Button>\n </div>\n </div>\n\n {/* Notifications list */}\n <ScrollArea className=\"h-[400px]\">\n <div className=\"p-card-sm space-y-field-sm\">\n {sessionNotifications.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-section-xl text-center\">\n <div className=\"text-muted-foreground mb-element\">\n {renderIcon(\n StandardIconReference.MAIL,\n { size: IconSize.LG }\n )}\n </div>\n <p className=\"text-sm text-muted-foreground\">\n {noNotificationsLabel}\n </p>\n </div>\n ) : (\n /* Flat, newest first. Nothing to group by: the buffer has no yesterday. */\n <div className=\"space-y-item-xs\">\n {sessionNotifications.map(renderNotificationItem)}\n </div>\n )}\n </div>\n </ScrollArea>\n </PopoverContent>\n </Popover>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"notification-center.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/notification-center.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { ButtonSize, FrontendComponentType, HorizontalPlacement, InteractiveVariant, PlacementSide, SurfaceVariant, UIBehavior, VerticalPlacement } from '@wildo-ai/presets-components-models';\nimport { HorizontalAlign } from '@wildo-ai/zod-decorators';\n\nimport {\n resolveComponentLabel,\n useI18n,\n useIconRegistry,\n useNotificationCenterBehavior,\n IconSize,\n StandardIconReference,\n useUI,\n Button,\n ButtonVariants_Variant,\n Popover,\n PopoverContent,\n PopoverTrigger,\n ScrollArea,\n cn,\n Surface,\n ApplicationLevelProps_NotificationCenter,\n} from '@wildo-ai/saas-frontend-lib';\n\nfunction getNotificationTypeColorClass(type: 'success' | 'warning' | 'error' | 'info'): string {\n switch (type) {\n case 'success': return 'text-success';\n case 'warning': return 'text-warning';\n case 'error': return 'text-destructive';\n case 'info':\n default: return 'text-info';\n }\n}\n\nfunction getPopoverPlacement(\n placement?: ApplicationLevelProps_NotificationCenter['placement'],\n): { align: HorizontalAlign; side: PlacementSide } {\n switch (placement) {\n case HorizontalPlacement.START:\n return { align: HorizontalAlign.START, side: PlacementSide.BOTTOM };\n case VerticalPlacement.BOTTOM:\n return { align: HorizontalAlign.END, side: PlacementSide.TOP };\n case VerticalPlacement.TOP:\n case HorizontalPlacement.END:\n default:\n return { align: HorizontalAlign.END, side: PlacementSide.BOTTOM };\n }\n}\n\nexport const ApplicationLevelPreset_NotificationCenter_Default: React.FC<ApplicationLevelProps_NotificationCenter> = ({\n placement,\n isOpen: externalIsOpen,\n onOpenChange,\n listenForHotkeys,\n}) => {\n const behavior = useNotificationCenterBehavior(externalIsOpen, onOpenChange, { listenForHotkeys });\n const { tComponent, isReady } = useI18n({\n component: FrontendComponentType.APPLICATION_LEVEL_NOTIFICATION_CENTER,\n });\n const { renderIcon } = useIconRegistry();\n const { getRecipe } = useUI();\n const ghostRecipe = getRecipe(UIBehavior.INTERACTIVE, InteractiveVariant.GHOST);\n\n /*\n * A SESSION FEED, not a message history (#412).\n *\n * The filter tabs, the mark-all-read control, the unread emphasis and the today/yesterday/older\n * grouping were removed on 2026-09-08. Every one of them presented a history over a store that is a\n * `useReducer` with no hydration: it starts empty on each page load, so \"unread\" meant \"arrived\n * since you opened the tab\", marking something read died with the page, and the `older` group was\n * unreachable by construction.\n */\n const {\n isOpen,\n setIsOpen,\n sessionNotifications,\n notificationCount,\n handleClearAll,\n dismissNotification,\n } = behavior;\n\n // ===================================================================\n // I18n Labels\n // ===================================================================\n\n // I-7: no English fallbacks — missing keys surface as `components.<type>.<key>`\n // for translation debugging (intentional, framework-wide i18n discipline).\n const t = (key: string): string => resolveComponentLabel({\n tComponent,\n componentType: FrontendComponentType.APPLICATION_LEVEL_NOTIFICATION_CENTER,\n key,\n });\n const titleLabel = t('title');\n /*\n * Says the feed is empty because the page just loaded, not that nothing has happened (#412). The\n * distinction matters: a person who left a tab open, reloaded, and now sees \"No notifications\"\n * would reasonably conclude the system had been quiet.\n */\n const noNotificationsLabel = t('noNotificationsThisSession');\n const clearAllLabel = t('clearAll');\n const dismissLabel = t('dismiss');\n const popoverPlacement = getPopoverPlacement(placement);\n\n // ===================================================================\n // Icons\n // ===================================================================\n\n const bellIcon = renderIcon(\n StandardIconReference.NOTIFICATION,\n { size: IconSize.MD }\n );\n\n const dismissIcon = renderIcon(\n StandardIconReference.CLOSE,\n { size: IconSize.XS }\n );\n\n // ===================================================================\n // Render Notification Item\n // ===================================================================\n\n const renderNotificationItem = (notification: typeof sessionNotifications[number]) => {\n const typeIcon = renderIcon(\n notification.iconReference,\n { size: IconSize.SM }\n );\n const rowLabel = notification.displayTitle || 'Notification';\n\n return (\n <Surface key={notification.id} asChild emitPolicyVars={false} variant={SurfaceVariant.INSET}>\n <div\n className={cn(\n 'group flex items-start gap-field-sm rounded-lg p-card-sm',\n ghostRecipe.motion.transition,\n ghostRecipe.states.hover,\n )}\n >\n {/* Type Icon */}\n <div className={`flex-shrink-0 mt-0.5 ${getNotificationTypeColorClass(notification.type)}`}>\n {typeIcon}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-start justify-between gap-element\">\n {/*\n * A DIV, not a button. The row's only action was `handleNotificationClick`, whose sole\n * effect was marking it read — so once read state went, a button here would announce an\n * interactive control to a screen reader and then do nothing. The dismiss control and\n * the optional next-step button beside it remain the row's real actions.\n */}\n <div className=\"min-w-0 flex-1 text-start\">\n <p className=\"text-sm font-medium text-foreground\">\n {notification.displayTitle}\n </p>\n {notification.displayMessage && (\n <p className=\"mt-0.5 truncate text-xs text-muted-foreground\">\n {notification.displayMessage}\n </p>\n )}\n <p className=\"mt-item-xs text-xs text-muted-foreground\">\n {notification.relativeTimeLabel}\n </p>\n </div>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => dismissNotification(notification.id)}\n className=\"h-5 w-5 p-0 opacity-70 group-hover:opacity-100 hover:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100\"\n aria-label={dismissLabel}\n >\n {dismissIcon}\n </Button>\n </div>\n {notification.nextStep && (\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.XS}\n onClick={() => {\n setIsOpen(false);\n notification.nextStep?.onClick();\n }}\n className=\"mt-item-xs\"\n >\n {notification.nextStep.label}\n </Button>\n )}\n </div>\n\n </div>\n </Surface>\n );\n };\n\n // ===================================================================\n // Render Notification Group\n // ===================================================================\n\n // ===================================================================\n // Render\n // ===================================================================\n\n if (!isReady) return null;\n\n return (\n <div data-component-type=\"notification-center\">\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n className=\"relative\"\n aria-label={titleLabel}\n >\n {bellIcon}\n </Button>\n </PopoverTrigger>\n\n <PopoverContent\n align={popoverPlacement.align}\n side={popoverPlacement.side}\n className=\"w-80 p-0\"\n >\n {/* Header */}\n <div className=\"flex items-center justify-between p-card-sm border-b\">\n <h3 className=\"font-semibold\">\n {titleLabel}\n </h3>\n <div className=\"flex items-center gap-item-xs\">\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.XS}\n onClick={handleClearAll}\n disabled={notificationCount === 0}\n >\n {clearAllLabel}\n </Button>\n </div>\n </div>\n\n {/* Notifications list */}\n <ScrollArea className=\"h-[400px]\">\n <div className=\"p-card-sm space-y-field-sm\">\n {sessionNotifications.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center py-section-xl text-center\">\n <div className=\"text-muted-foreground mb-element\">\n {renderIcon(\n StandardIconReference.MAIL,\n { size: IconSize.LG }\n )}\n </div>\n <p className=\"text-sm text-muted-foreground\">\n {noNotificationsLabel}\n </p>\n </div>\n ) : (\n /* Flat, newest first. Nothing to group by: the buffer has no yesterday. */\n <div className=\"space-y-item-xs\">\n {sessionNotifications.map(renderNotificationItem)}\n </div>\n )}\n </div>\n </ScrollArea>\n </PopoverContent>\n </Popover>\n </div>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"notification-center.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/notification-center.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,wCAAwC,EAAE,mBAAmB,EA0DzE,CAAC"}
1
+ {"version":3,"file":"notification-center.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/notification-center.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,wCAAwC,EAAE,mBAAmB,EAyEzE,CAAC"}
@@ -41,6 +41,21 @@ export const ApplicationLevelNotificationCenterLabels = [
41
41
  kind: LabelKind.MESSAGE,
42
42
  purpose: 'Last-resort body for a success notification with no explicit message',
43
43
  },
44
+ {
45
+ ref: 'bulkSucceeded',
46
+ kind: LabelKind.MESSAGE,
47
+ purpose: 'Body of the success notification after an action applied to several selected items at once: states how many items it was done for',
48
+ params: [{ key: 'count', meaning: 'how many items the action changed' }],
49
+ },
50
+ {
51
+ ref: 'bulkSucceededWithMessage',
52
+ kind: LabelKind.MESSAGE,
53
+ purpose: 'Body of the success notification after an action applied to several selected items at once, when the action already has a message of its own: keeps those words and states how many items they held for',
54
+ params: [
55
+ { key: 'message', meaning: "the action's own success message, as it would read for a single item" },
56
+ { key: 'count', meaning: 'how many items the action changed' },
57
+ ],
58
+ },
44
59
  { ref: 'defaultInfo', kind: LabelKind.MESSAGE, purpose: 'Last-resort body for an info notification with no explicit message' },
45
60
  {
46
61
  ref: 'defaultWarning',
@@ -1 +1 @@
1
- {"version":3,"file":"notification-center.labels.js","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/notification-center.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,SAAS,EAET,uBAAuB,GACxB,MAAM,qCAAqC,CAAC;AAE7C,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,wCAAwC,GAA0B;IAC7E,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,2CAA2C,EAAE;IAC/F;;;;OAIG;IACH;QACE,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,SAAS,CAAC,WAAW;QAC3B,OAAO,EAAE,iSAAiS;KAC3S;IACD,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,4DAA4D,EAAE;IAClH,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,6CAA6C,EAAE;IAClG,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,8CAA8C,EAAE;IACpG,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,6DAA6D,EAAE;IACrH;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,2EAA2E;QACpF,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;KACjE;IACD;QACE,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,yEAAyE;QAClF,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;KAC/D;IACD;QACE,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,wEAAwE;QACjF,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;KAC9D;IACD;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,sEAAsE;KAChF;IACD,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,oEAAoE,EAAE;IAC9H;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,sEAAsE;KAChF;IACD,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,qEAAqE,EAAE;IAChI;QACE,GAAG,EAAE,2BAA2B;QAChC,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,qEAAqE;QAC9E,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;KACtF;IACD;QACE,GAAG,EAAE,6BAA6B;QAClC,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,oEAAoE;QAC7E,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;KACrF;CACF,CAAC;AACF,uBAAuB,CAAC,qBAAqB,CAAC,qCAAqC,EAAE,wCAAwC,CAAC,CAAC","sourcesContent":["import {\n FrontendComponentType,\n LabelKind,\n type LabellingUnitaryDef,\n registerComponentLabels,\n} from '@wildo-ai/presets-components-models';\n\n// Companion-only label metadata for this component: keys + params + (where\n// authored) per-key purpose / kind / variable meaning. Statically scanned by\n// the dev companion; NOT imported at runtime, so it never ships in the bundle.\n\nexport const ApplicationLevelNotificationCenterLabels: LabellingUnitaryDef[] = [\n { ref: 'title', kind: LabelKind.HEADING, purpose: 'Heading for the notification-center panel' },\n /*\n * The empty state names WHY it is empty (#412). The centre is a session feed over a store with no\n * persistence, so it is empty on every page load; the retired `noNotifications` said \"no\n * notifications\", which a person who had just reloaded would read as \"nothing has happened\".\n */\n {\n ref: 'noNotificationsThisSession',\n kind: LabelKind.EMPTY_STATE,\n purpose: 'Shown when nothing has arrived since this page loaded. The notification centre is a session feed, not a history: it starts empty on every page load and holds only what arrived while this page has been open. The wording must make that clear rather than implying the system has been quiet.',\n },\n { ref: 'clearAll', kind: LabelKind.BUTTON, purpose: 'Button that clears all notifications from the session feed' },\n { ref: 'dismiss', kind: LabelKind.BUTTON, purpose: 'Action that dismisses a single notification' },\n { ref: 'showMore', kind: LabelKind.BUTTON, purpose: 'Button that reveals additional notifications' },\n { ref: 'timeJustNow', kind: LabelKind.LABEL, purpose: 'Relative timestamp for notifications less than a minute old' },\n {\n ref: 'timeMinutesAgo',\n kind: LabelKind.LABEL,\n purpose: 'Relative timestamp expressing how many minutes ago a notification arrived',\n params: [{ key: 'count', meaning: 'number of minutes elapsed' }],\n },\n {\n ref: 'timeHoursAgo',\n kind: LabelKind.LABEL,\n purpose: 'Relative timestamp expressing how many hours ago a notification arrived',\n params: [{ key: 'count', meaning: 'number of hours elapsed' }],\n },\n {\n ref: 'timeDaysAgo',\n kind: LabelKind.LABEL,\n purpose: 'Relative timestamp expressing how many days ago a notification arrived',\n params: [{ key: 'count', meaning: 'number of days elapsed' }],\n },\n {\n ref: 'defaultSuccess',\n kind: LabelKind.MESSAGE,\n purpose: 'Last-resort body for a success notification with no explicit message',\n },\n { ref: 'defaultInfo', kind: LabelKind.MESSAGE, purpose: 'Last-resort body for an info notification with no explicit message' },\n {\n ref: 'defaultWarning',\n kind: LabelKind.MESSAGE,\n purpose: 'Last-resort body for a warning notification with no explicit message',\n },\n { ref: 'defaultError', kind: LabelKind.MESSAGE, purpose: 'Last-resort body for an error notification with no explicit message' },\n {\n ref: 'resourceNotificationTitle',\n kind: LabelKind.MESSAGE,\n purpose: 'Fallback title for a notification generated by a resource operation',\n params: [{ key: 'resourceType', meaning: 'resource type the notification concerns' }],\n },\n {\n ref: 'resourceNotificationMessage',\n kind: LabelKind.MESSAGE,\n purpose: 'Fallback body for a notification generated by a resource operation',\n params: [{ key: 'operation', meaning: 'operation that triggered the notification' }],\n },\n];\nregisterComponentLabels(FrontendComponentType.APPLICATION_LEVEL_NOTIFICATION_CENTER, ApplicationLevelNotificationCenterLabels);\n"]}
1
+ {"version":3,"file":"notification-center.labels.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/notification-center.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,SAAS,EAET,uBAAuB,GACxB,MAAM,qCAAqC,CAAC;AAE7C,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,wCAAwC,GAA0B;IAC7E,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,2CAA2C,EAAE;IAC/F;;;;OAIG;IACH;QACE,GAAG,EAAE,4BAA4B;QACjC,IAAI,EAAE,SAAS,CAAC,WAAW;QAC3B,OAAO,EAAE,iSAAiS;KAC3S;IACD,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,4DAA4D,EAAE;IAClH,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,6CAA6C,EAAE;IAClG,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,8CAA8C,EAAE;IACpG,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,6DAA6D,EAAE;IACrH;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,2EAA2E;QACpF,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;KACjE;IACD;QACE,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,yEAAyE;QAClF,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;KAC/D;IACD;QACE,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,SAAS,CAAC,KAAK;QACrB,OAAO,EAAE,wEAAwE;QACjF,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;KAC9D;IACD;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,sEAAsE;KAChF;IACD;QACE,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,mIAAmI;QAC5I,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC;KACzE;IACD;QACE,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,yMAAyM;QAClN,MAAM,EAAE;YACN,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,sEAAsE,EAAE;YACnG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,mCAAmC,EAAE;SAC/D;KACF;IACD,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,oEAAoE,EAAE;IAC9H;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,sEAAsE;KAChF;IACD,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,qEAAqE,EAAE;IAChI;QACE,GAAG,EAAE,2BAA2B;QAChC,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,qEAAqE;QAC9E,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC;KACtF;IACD;QACE,GAAG,EAAE,6BAA6B;QAClC,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,OAAO,EAAE,oEAAoE;QAC7E,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC;KACrF;CACF,CAAC;AACF,uBAAuB,CAAC,qBAAqB,CAAC,qCAAqC,EAAE,wCAAwC,CAAC,CAAC","sourcesContent":["import {\n FrontendComponentType,\n LabelKind,\n type LabellingUnitaryDef,\n registerComponentLabels,\n} from '@wildo-ai/presets-components-models';\n\n// Companion-only label metadata for this component: keys + params + (where\n// authored) per-key purpose / kind / variable meaning. Statically scanned by\n// the dev companion; NOT imported at runtime, so it never ships in the bundle.\n\nexport const ApplicationLevelNotificationCenterLabels: LabellingUnitaryDef[] = [\n { ref: 'title', kind: LabelKind.HEADING, purpose: 'Heading for the notification-center panel' },\n /*\n * The empty state names WHY it is empty (#412). The centre is a session feed over a store with no\n * persistence, so it is empty on every page load; the retired `noNotifications` said \"no\n * notifications\", which a person who had just reloaded would read as \"nothing has happened\".\n */\n {\n ref: 'noNotificationsThisSession',\n kind: LabelKind.EMPTY_STATE,\n purpose: 'Shown when nothing has arrived since this page loaded. The notification centre is a session feed, not a history: it starts empty on every page load and holds only what arrived while this page has been open. The wording must make that clear rather than implying the system has been quiet.',\n },\n { ref: 'clearAll', kind: LabelKind.BUTTON, purpose: 'Button that clears all notifications from the session feed' },\n { ref: 'dismiss', kind: LabelKind.BUTTON, purpose: 'Action that dismisses a single notification' },\n { ref: 'showMore', kind: LabelKind.BUTTON, purpose: 'Button that reveals additional notifications' },\n { ref: 'timeJustNow', kind: LabelKind.LABEL, purpose: 'Relative timestamp for notifications less than a minute old' },\n {\n ref: 'timeMinutesAgo',\n kind: LabelKind.LABEL,\n purpose: 'Relative timestamp expressing how many minutes ago a notification arrived',\n params: [{ key: 'count', meaning: 'number of minutes elapsed' }],\n },\n {\n ref: 'timeHoursAgo',\n kind: LabelKind.LABEL,\n purpose: 'Relative timestamp expressing how many hours ago a notification arrived',\n params: [{ key: 'count', meaning: 'number of hours elapsed' }],\n },\n {\n ref: 'timeDaysAgo',\n kind: LabelKind.LABEL,\n purpose: 'Relative timestamp expressing how many days ago a notification arrived',\n params: [{ key: 'count', meaning: 'number of days elapsed' }],\n },\n {\n ref: 'defaultSuccess',\n kind: LabelKind.MESSAGE,\n purpose: 'Last-resort body for a success notification with no explicit message',\n },\n {\n ref: 'bulkSucceeded',\n kind: LabelKind.MESSAGE,\n purpose: 'Body of the success notification after an action applied to several selected items at once: states how many items it was done for',\n params: [{ key: 'count', meaning: 'how many items the action changed' }],\n },\n {\n ref: 'bulkSucceededWithMessage',\n kind: LabelKind.MESSAGE,\n purpose: 'Body of the success notification after an action applied to several selected items at once, when the action already has a message of its own: keeps those words and states how many items they held for',\n params: [\n { key: 'message', meaning: \"the action's own success message, as it would read for a single item\" },\n { key: 'count', meaning: 'how many items the action changed' },\n ],\n },\n { ref: 'defaultInfo', kind: LabelKind.MESSAGE, purpose: 'Last-resort body for an info notification with no explicit message' },\n {\n ref: 'defaultWarning',\n kind: LabelKind.MESSAGE,\n purpose: 'Last-resort body for a warning notification with no explicit message',\n },\n { ref: 'defaultError', kind: LabelKind.MESSAGE, purpose: 'Last-resort body for an error notification with no explicit message' },\n {\n ref: 'resourceNotificationTitle',\n kind: LabelKind.MESSAGE,\n purpose: 'Fallback title for a notification generated by a resource operation',\n params: [{ key: 'resourceType', meaning: 'resource type the notification concerns' }],\n },\n {\n ref: 'resourceNotificationMessage',\n kind: LabelKind.MESSAGE,\n purpose: 'Fallback body for a notification generated by a resource operation',\n params: [{ key: 'operation', meaning: 'operation that triggered the notification' }],\n },\n];\nregisterComponentLabels(FrontendComponentType.APPLICATION_LEVEL_NOTIFICATION_CENTER, ApplicationLevelNotificationCenterLabels);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"quick-action-button.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/quick-action-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAYL,uCAAuC,EACxC,MAAM,6BAA6B,CAAC;AAErC,eAAO,MAAM,gDAAgD,EAAE,KAAK,CAAC,EAAE,CAAC,uCAAuC,CAkI9G,CAAC"}
1
+ {"version":3,"file":"quick-action-button.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/quick-action-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAYL,uCAAuC,EACxC,MAAM,6BAA6B,CAAC;AAErC,eAAO,MAAM,gDAAgD,EAAE,KAAK,CAAC,EAAE,CAAC,uCAAuC,CAkI9G,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"quick-action-button.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/quick-action-button.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,uCAAuC,EAAE,mBAAmB,EAIxE,CAAC"}
1
+ {"version":3,"file":"quick-action-button.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/quick-action-button.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,uCAAuC,EAAE,mBAAmB,EAQxE,CAAC"}
@@ -6,6 +6,10 @@ export const ApplicationLevelQuickActionButtonLabels = [
6
6
  { ref: 'quickActions', kind: LabelKind.HEADING, purpose: 'Heading for the quick-actions menu opened from the action button' },
7
7
  { ref: 'createNew', kind: LabelKind.BUTTON, purpose: 'Primary quick-action that starts creating a new item' },
8
8
  { ref: 'noActions', kind: LabelKind.EMPTY_STATE, purpose: 'Shown when no quick actions are configured' },
9
+ // Read by the component and declared NOWHERE until 2026-09-19, so the browser rendered the raw
10
+ // key path. Found by `pnpm check:component-labels`, which is the mechanism that replaced
11
+ // noticing it by eye.
12
+ { ref: 'loading', kind: LabelKind.MESSAGE, purpose: 'Shown in the quick-action menu while the available actions are still being resolved' },
9
13
  ];
10
14
  registerComponentLabels(FrontendComponentType.APPLICATION_LEVEL_QUICK_ACTION_BUTTON, ApplicationLevelQuickActionButtonLabels);
11
15
  //# sourceMappingURL=quick-action-button.labels.js.map