@wildo-ai/presets-components 1.1.1 → 1.1.3

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 (503) hide show
  1. package/dist/esm/.native.tsbuildinfo +1 -0
  2. package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
  3. package/dist/esm/components/actions/action-bar.labels.d.ts.map +1 -1
  4. package/dist/esm/components/actions/action-button.d.ts +1 -4
  5. package/dist/esm/components/actions/action-button.d.ts.map +1 -1
  6. package/dist/esm/components/actions/action-button.js +21 -5
  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.labels.d.ts.map +1 -1
  12. package/dist/esm/components/ai-elements/artifacts/artifact-browser.d.ts.map +1 -1
  13. package/dist/esm/components/ai-elements/artifacts/artifact-browser.js +7 -3
  14. package/dist/esm/components/ai-elements/artifacts/artifact-browser.js.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.labels.d.ts.map +1 -1
  19. package/dist/esm/components/ai-elements/artifacts/image.d.ts.map +1 -1
  20. package/dist/esm/components/ai-elements/artifacts/image.labels.d.ts.map +1 -1
  21. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter-runtime.d.ts.map +1 -1
  22. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter.lazy.d.ts.map +1 -1
  23. package/dist/esm/components/ai-elements/artifacts/web-preview.d.ts.map +1 -1
  24. package/dist/esm/components/ai-elements/artifacts/web-preview.labels.d.ts.map +1 -1
  25. package/dist/esm/components/ai-elements/chat/conversation.d.ts.map +1 -1
  26. package/dist/esm/components/ai-elements/chat/conversation.labels.d.ts.map +1 -1
  27. package/dist/esm/components/ai-elements/chat/message.d.ts.map +1 -1
  28. package/dist/esm/components/ai-elements/chat/message.labels.d.ts.map +1 -1
  29. package/dist/esm/components/ai-elements/chat/prompt-input.d.ts.map +1 -1
  30. package/dist/esm/components/ai-elements/chat/prompt-input.labels.d.ts.map +1 -1
  31. package/dist/esm/components/ai-elements/chat/sources.d.ts.map +1 -1
  32. package/dist/esm/components/ai-elements/chat/sources.labels.d.ts.map +1 -1
  33. package/dist/esm/components/ai-elements/chat/suggestion.d.ts.map +1 -1
  34. package/dist/esm/components/ai-elements/chat/suggestion.labels.d.ts.map +1 -1
  35. package/dist/esm/components/ai-elements/decision/approval.d.ts +18 -3
  36. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  37. package/dist/esm/components/ai-elements/decision/approval.js +5 -3
  38. package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
  39. package/dist/esm/components/ai-elements/decision/decision-request.d.ts.map +1 -1
  40. package/dist/esm/components/ai-elements/decision/decision-request.labels.d.ts.map +1 -1
  41. package/dist/esm/components/ai-elements/execution/confirmation.d.ts.map +1 -1
  42. package/dist/esm/components/ai-elements/execution/confirmation.labels.d.ts.map +1 -1
  43. package/dist/esm/components/ai-elements/execution/queue.d.ts.map +1 -1
  44. package/dist/esm/components/ai-elements/execution/queue.labels.d.ts.map +1 -1
  45. package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
  46. package/dist/esm/components/ai-elements/execution/task.js +10 -2
  47. package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
  48. package/dist/esm/components/ai-elements/execution/task.labels.d.ts.map +1 -1
  49. package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
  50. package/dist/esm/components/ai-elements/execution/tool.labels.d.ts.map +1 -1
  51. package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
  52. package/dist/esm/components/ai-elements/graph/canvas.labels.d.ts.map +1 -1
  53. package/dist/esm/components/ai-elements/graph/connection.d.ts.map +1 -1
  54. package/dist/esm/components/ai-elements/graph/connection.labels.d.ts.map +1 -1
  55. package/dist/esm/components/ai-elements/graph/controls.d.ts.map +1 -1
  56. package/dist/esm/components/ai-elements/graph/controls.labels.d.ts.map +1 -1
  57. package/dist/esm/components/ai-elements/graph/edge.d.ts.map +1 -1
  58. package/dist/esm/components/ai-elements/graph/edge.labels.d.ts.map +1 -1
  59. package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts.map +1 -1
  60. package/dist/esm/components/ai-elements/graph/graph.lazy.d.ts.map +1 -1
  61. package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
  62. package/dist/esm/components/ai-elements/graph/node.labels.d.ts.map +1 -1
  63. package/dist/esm/components/ai-elements/graph/panel.d.ts.map +1 -1
  64. package/dist/esm/components/ai-elements/graph/panel.labels.d.ts.map +1 -1
  65. package/dist/esm/components/ai-elements/graph/toolbar.d.ts.map +1 -1
  66. package/dist/esm/components/ai-elements/graph/toolbar.labels.d.ts.map +1 -1
  67. package/dist/esm/components/ai-elements/meta/agent.d.ts.map +1 -1
  68. package/dist/esm/components/ai-elements/meta/agent.js +23 -3
  69. package/dist/esm/components/ai-elements/meta/agent.js.map +1 -1
  70. package/dist/esm/components/ai-elements/meta/context.d.ts.map +1 -1
  71. package/dist/esm/components/ai-elements/meta/context.labels.d.ts.map +1 -1
  72. package/dist/esm/components/ai-elements/meta/context.lazy.d.ts.map +1 -1
  73. package/dist/esm/components/ai-elements/meta/model-selector.d.ts.map +1 -1
  74. package/dist/esm/components/ai-elements/meta/model-selector.labels.d.ts.map +1 -1
  75. package/dist/esm/components/ai-elements/meta/open-in-chat.d.ts.map +1 -1
  76. package/dist/esm/components/ai-elements/meta/open-in-chat.labels.d.ts.map +1 -1
  77. package/dist/esm/components/ai-elements/shared/loader.d.ts.map +1 -1
  78. package/dist/esm/components/ai-elements/shared/loader.labels.d.ts.map +1 -1
  79. package/dist/esm/components/ai-elements/shared/shimmer.d.ts.map +1 -1
  80. package/dist/esm/components/ai-elements/shared/shimmer.labels.d.ts.map +1 -1
  81. package/dist/esm/components/ai-elements/stream/execution-stream.d.ts.map +1 -1
  82. package/dist/esm/components/ai-elements/stream/execution-stream.labels.d.ts.map +1 -1
  83. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts.map +1 -1
  84. package/dist/esm/components/ai-elements/trace/chain-of-thought.labels.d.ts.map +1 -1
  85. package/dist/esm/components/ai-elements/trace/checkpoint.d.ts.map +1 -1
  86. package/dist/esm/components/ai-elements/trace/checkpoint.labels.d.ts.map +1 -1
  87. package/dist/esm/components/ai-elements/trace/inline-citation.d.ts.map +1 -1
  88. package/dist/esm/components/ai-elements/trace/inline-citation.labels.d.ts.map +1 -1
  89. package/dist/esm/components/ai-elements/trace/plan.d.ts.map +1 -1
  90. package/dist/esm/components/ai-elements/trace/plan.labels.d.ts.map +1 -1
  91. package/dist/esm/components/ai-elements/trace/reasoning.d.ts.map +1 -1
  92. package/dist/esm/components/ai-elements/trace/reasoning.labels.d.ts.map +1 -1
  93. package/dist/esm/components/app/app-layout-main-container.d.ts.map +1 -1
  94. package/dist/esm/components/app/app-layout-main-container.labels.d.ts.map +1 -1
  95. package/dist/esm/components/app/app-layout-main-container.labels.js +10 -2
  96. package/dist/esm/components/app/app-layout-main-container.labels.js.map +1 -1
  97. package/dist/esm/components/app/public-layout-main-container.d.ts.map +1 -1
  98. package/dist/esm/components/app/public-layout-main-container.js +52 -5
  99. package/dist/esm/components/app/public-layout-main-container.js.map +1 -1
  100. package/dist/esm/components/app/public-layout-main-container.labels.d.ts.map +1 -1
  101. package/dist/esm/components/billing/billing-format.utils.d.ts.map +1 -1
  102. package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
  103. package/dist/esm/components/billing/billing-invoice-history.labels.d.ts.map +1 -1
  104. package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
  105. package/dist/esm/components/billing/billing-portal-link.labels.d.ts.map +1 -1
  106. package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
  107. package/dist/esm/components/billing/billing-pricing-table.labels.d.ts.map +1 -1
  108. package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
  109. package/dist/esm/components/billing/billing-subscription-status.labels.d.ts.map +1 -1
  110. package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
  111. package/dist/esm/components/billing/billing-usage-dashboard.labels.d.ts.map +1 -1
  112. package/dist/esm/components/data-display/avatar.d.ts.map +1 -1
  113. package/dist/esm/components/data-display/avatar.labels.d.ts.map +1 -1
  114. package/dist/esm/components/data-display/badge.d.ts.map +1 -1
  115. package/dist/esm/components/data-display/badge.labels.d.ts.map +1 -1
  116. package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
  117. package/dist/esm/components/data-display/description-list.js +10 -7
  118. package/dist/esm/components/data-display/description-list.js.map +1 -1
  119. package/dist/esm/components/data-display/description-list.labels.d.ts.map +1 -1
  120. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.d.ts.map +1 -1
  121. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.labels.d.ts.map +1 -1
  122. package/dist/esm/components/data-display/formatters/display-field-boolean.d.ts.map +1 -1
  123. package/dist/esm/components/data-display/formatters/display-field-boolean.js +20 -1
  124. package/dist/esm/components/data-display/formatters/display-field-boolean.js.map +1 -1
  125. package/dist/esm/components/data-display/formatters/display-field-boolean.labels.d.ts.map +1 -1
  126. package/dist/esm/components/data-display/formatters/display-field-code.d.ts.map +1 -1
  127. package/dist/esm/components/data-display/formatters/display-field-code.labels.d.ts.map +1 -1
  128. package/dist/esm/components/data-display/formatters/display-field-date.d.ts.map +1 -1
  129. package/dist/esm/components/data-display/formatters/display-field-date.labels.d.ts.map +1 -1
  130. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts.map +1 -1
  131. package/dist/esm/components/data-display/formatters/display-field-datetime.labels.d.ts.map +1 -1
  132. package/dist/esm/components/data-display/formatters/display-field-duration.d.ts.map +1 -1
  133. package/dist/esm/components/data-display/formatters/display-field-duration.labels.d.ts.map +1 -1
  134. package/dist/esm/components/data-display/formatters/display-field-enum.d.ts.map +1 -1
  135. package/dist/esm/components/data-display/formatters/display-field-enum.labels.d.ts.map +1 -1
  136. package/dist/esm/components/data-display/formatters/display-field-file-audio.d.ts.map +1 -1
  137. package/dist/esm/components/data-display/formatters/display-field-file-audio.labels.d.ts.map +1 -1
  138. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts.map +1 -1
  139. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.d.ts.map +1 -1
  140. package/dist/esm/components/data-display/formatters/display-field-file-gallery.d.ts.map +1 -1
  141. package/dist/esm/components/data-display/formatters/display-field-file-gallery.labels.d.ts.map +1 -1
  142. package/dist/esm/components/data-display/formatters/display-field-file-image.d.ts.map +1 -1
  143. package/dist/esm/components/data-display/formatters/display-field-file-image.labels.d.ts.map +1 -1
  144. package/dist/esm/components/data-display/formatters/display-field-file-video.d.ts.map +1 -1
  145. package/dist/esm/components/data-display/formatters/display-field-file-video.labels.d.ts.map +1 -1
  146. package/dist/esm/components/data-display/formatters/display-field-file.d.ts.map +1 -1
  147. package/dist/esm/components/data-display/formatters/display-field-file.labels.d.ts.map +1 -1
  148. package/dist/esm/components/data-display/formatters/display-field-format.utils.d.ts.map +1 -1
  149. package/dist/esm/components/data-display/formatters/display-field-i18n.utils.d.ts.map +1 -1
  150. package/dist/esm/components/data-display/formatters/display-field-money.d.ts.map +1 -1
  151. package/dist/esm/components/data-display/formatters/display-field-money.labels.d.ts.map +1 -1
  152. package/dist/esm/components/data-display/formatters/display-field-number.d.ts.map +1 -1
  153. package/dist/esm/components/data-display/formatters/display-field-number.labels.d.ts.map +1 -1
  154. package/dist/esm/components/data-display/formatters/display-field-phone.d.ts.map +1 -1
  155. package/dist/esm/components/data-display/formatters/display-field-phone.labels.d.ts.map +1 -1
  156. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.d.ts.map +1 -1
  157. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.labels.d.ts.map +1 -1
  158. package/dist/esm/components/data-display/formatters/display-field-range-date.d.ts.map +1 -1
  159. package/dist/esm/components/data-display/formatters/display-field-range-date.labels.d.ts.map +1 -1
  160. package/dist/esm/components/data-display/formatters/display-field-range-datetime.d.ts.map +1 -1
  161. package/dist/esm/components/data-display/formatters/display-field-range-datetime.labels.d.ts.map +1 -1
  162. package/dist/esm/components/data-display/formatters/display-field-range-money.d.ts.map +1 -1
  163. package/dist/esm/components/data-display/formatters/display-field-range-money.labels.d.ts.map +1 -1
  164. package/dist/esm/components/data-display/formatters/display-field-range-number.d.ts.map +1 -1
  165. package/dist/esm/components/data-display/formatters/display-field-range-number.labels.d.ts.map +1 -1
  166. package/dist/esm/components/data-display/formatters/display-field-range-time.d.ts.map +1 -1
  167. package/dist/esm/components/data-display/formatters/display-field-range-time.labels.d.ts.map +1 -1
  168. package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
  169. package/dist/esm/components/data-display/formatters/display-field-string.js +3 -0
  170. package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
  171. package/dist/esm/components/data-display/formatters/display-field-string.labels.d.ts.map +1 -1
  172. package/dist/esm/components/data-display/formatters/display-field-time.d.ts.map +1 -1
  173. package/dist/esm/components/data-display/formatters/display-field-time.labels.d.ts.map +1 -1
  174. package/dist/esm/components/data-display/markdown-content.d.ts.map +1 -1
  175. package/dist/esm/components/data-display/markdown-stream-runtime.d.ts.map +1 -1
  176. package/dist/esm/components/data-display/markdown-stream.lazy.d.ts.map +1 -1
  177. package/dist/esm/components/data-display/notification-indicator.d.ts.map +1 -1
  178. package/dist/esm/components/data-display/notification-indicator.labels.d.ts.map +1 -1
  179. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  180. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts.map +1 -1
  181. package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
  182. package/dist/esm/components/feedback/celebration-overlay.labels.d.ts.map +1 -1
  183. package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
  184. package/dist/esm/components/feedback/danger-zone.labels.d.ts.map +1 -1
  185. package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
  186. package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
  187. package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
  188. package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
  189. package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
  190. package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
  191. package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
  192. package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
  193. package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
  194. package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
  195. package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
  196. package/dist/esm/components/feedback/features/feature-unavailable-prompt.js +7 -0
  197. package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
  198. package/dist/esm/components/feedback/features/feature-unavailable-prompt.labels.d.ts.map +1 -1
  199. package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
  200. package/dist/esm/components/feedback/loading-overlay.labels.d.ts.map +1 -1
  201. package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
  202. package/dist/esm/components/feedback/loading-spinner.labels.d.ts.map +1 -1
  203. package/dist/esm/components/feedback/notification-center.d.ts +5 -3
  204. package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
  205. package/dist/esm/components/feedback/notification-center.js +7 -5
  206. package/dist/esm/components/feedback/notification-center.js.map +1 -1
  207. package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
  208. package/dist/esm/components/feedback/operations-confirm-critical.labels.d.ts.map +1 -1
  209. package/dist/esm/components/feedback/progress.d.ts.map +1 -1
  210. package/dist/esm/components/feedback/progress.labels.d.ts.map +1 -1
  211. package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
  212. package/dist/esm/components/feedback/skeleton.labels.d.ts.map +1 -1
  213. package/dist/esm/components/feedback/toast.d.ts.map +1 -1
  214. package/dist/esm/components/feedback/toast.labels.d.ts.map +1 -1
  215. package/dist/esm/components/form/autosave-indicator.d.ts.map +1 -1
  216. package/dist/esm/components/form/autosave-indicator.labels.d.ts.map +1 -1
  217. package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
  218. package/dist/esm/components/form/chromes/field.labels.d.ts.map +1 -1
  219. package/dist/esm/components/form/chromes/form-primitive.d.ts.map +1 -1
  220. package/dist/esm/components/form/chromes/form-primitive.labels.d.ts.map +1 -1
  221. package/dist/esm/components/form/chromes/form-primitive.labels.js +2 -2
  222. package/dist/esm/components/form/chromes/form-primitive.labels.js.map +1 -1
  223. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  224. package/dist/esm/components/form/combobox.labels.d.ts.map +1 -1
  225. package/dist/esm/components/form/controls/boolean/checkbox.d.ts.map +1 -1
  226. package/dist/esm/components/form/controls/boolean/checkbox.labels.d.ts.map +1 -1
  227. package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
  228. package/dist/esm/components/form/controls/boolean/switch.labels.d.ts.map +1 -1
  229. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
  230. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.labels.d.ts.map +1 -1
  231. package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
  232. package/dist/esm/components/form/controls/boolean/toggle.labels.d.ts.map +1 -1
  233. package/dist/esm/components/form/controls/code-editor/cm6-editor-appearance.d.ts.map +1 -1
  234. package/dist/esm/components/form/controls/code-editor/cm6-editor.d.ts.map +1 -1
  235. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.d.ts.map +1 -1
  236. package/dist/esm/components/form/controls/code-editor/form-field-code.d.ts.map +1 -1
  237. package/dist/esm/components/form/controls/code-editor/markdown-editor.d.ts.map +1 -1
  238. package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
  239. package/dist/esm/components/form/controls/date-time/calendar.labels.d.ts.map +1 -1
  240. package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
  241. package/dist/esm/components/form/controls/date-time/date-range-picker.labels.d.ts.map +1 -1
  242. package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
  243. package/dist/esm/components/form/controls/date-time/datepicker.labels.d.ts.map +1 -1
  244. package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
  245. package/dist/esm/components/form/controls/date-time/datetime-picker.labels.d.ts.map +1 -1
  246. package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
  247. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.d.ts.map +1 -1
  248. package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
  249. package/dist/esm/components/form/controls/date-time/time-picker.labels.d.ts.map +1 -1
  250. package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
  251. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.d.ts.map +1 -1
  252. package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
  253. package/dist/esm/components/form/controls/enum/radio.labels.d.ts.map +1 -1
  254. package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
  255. package/dist/esm/components/form/controls/enum/select-multiple.labels.d.ts.map +1 -1
  256. package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
  257. package/dist/esm/components/form/controls/enum/select.labels.d.ts.map +1 -1
  258. package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
  259. package/dist/esm/components/form/controls/enum/toggle-group.labels.d.ts.map +1 -1
  260. package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
  261. package/dist/esm/components/form/controls/file/file-upload.labels.d.ts.map +1 -1
  262. package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
  263. package/dist/esm/components/form/controls/file/image-crop.labels.d.ts.map +1 -1
  264. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
  265. package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
  266. package/dist/esm/components/form/controls/input-group.labels.d.ts.map +1 -1
  267. package/dist/esm/components/form/controls/input.d.ts.map +1 -1
  268. package/dist/esm/components/form/controls/input.labels.d.ts.map +1 -1
  269. package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
  270. package/dist/esm/components/form/controls/number/slider.labels.d.ts.map +1 -1
  271. package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
  272. package/dist/esm/components/form/controls/string/color-input.labels.d.ts.map +1 -1
  273. package/dist/esm/components/form/controls/string/color-picker-surface.d.ts.map +1 -1
  274. package/dist/esm/components/form/controls/string/color-picker-surface.js +1 -1
  275. package/dist/esm/components/form/controls/string/color-picker-surface.js.map +1 -1
  276. package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
  277. package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
  278. package/dist/esm/components/form/controls/string/input-otp.labels.d.ts.map +1 -1
  279. package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
  280. package/dist/esm/components/form/controls/string/password-input.labels.d.ts.map +1 -1
  281. package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
  282. package/dist/esm/components/form/controls/string/textarea.labels.d.ts.map +1 -1
  283. package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
  284. package/dist/esm/components/layout/aspect-ratio.labels.d.ts.map +1 -1
  285. package/dist/esm/components/layout/carousel.d.ts.map +1 -1
  286. package/dist/esm/components/layout/carousel.labels.d.ts.map +1 -1
  287. package/dist/esm/components/layout/divider.d.ts.map +1 -1
  288. package/dist/esm/components/layout/divider.labels.d.ts.map +1 -1
  289. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  290. package/dist/esm/components/layout/resizable.labels.d.ts.map +1 -1
  291. package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
  292. package/dist/esm/components/layout/scroll-area.labels.d.ts.map +1 -1
  293. package/dist/esm/components/layout/separator.d.ts.map +1 -1
  294. package/dist/esm/components/layout/separator.labels.d.ts.map +1 -1
  295. package/dist/esm/components/navigation/app-level/activity-bar.d.ts.map +1 -1
  296. package/dist/esm/components/navigation/app-level/activity-bar.labels.d.ts.map +1 -1
  297. package/dist/esm/components/navigation/app-level/command-menu.d.ts.map +1 -1
  298. package/dist/esm/components/navigation/app-level/command-menu.labels.d.ts.map +1 -1
  299. package/dist/esm/components/navigation/app-level/control-panel.d.ts.map +1 -1
  300. package/dist/esm/components/navigation/app-level/control-panel.labels.d.ts.map +1 -1
  301. package/dist/esm/components/navigation/app-level/menu-user-org.d.ts.map +1 -1
  302. package/dist/esm/components/navigation/app-level/menu-user-org.js +8 -2
  303. package/dist/esm/components/navigation/app-level/menu-user-org.js.map +1 -1
  304. package/dist/esm/components/navigation/app-level/menu-user-org.labels.d.ts.map +1 -1
  305. package/dist/esm/components/navigation/app-level/menubar.d.ts.map +1 -1
  306. package/dist/esm/components/navigation/app-level/menubar.labels.d.ts.map +1 -1
  307. package/dist/esm/components/navigation/app-level/navigation-back.d.ts.map +1 -1
  308. package/dist/esm/components/navigation/app-level/navigation-back.labels.d.ts.map +1 -1
  309. package/dist/esm/components/navigation/app-level/notification-center.d.ts.map +1 -1
  310. package/dist/esm/components/navigation/app-level/notification-center.js +22 -19
  311. package/dist/esm/components/navigation/app-level/notification-center.js.map +1 -1
  312. package/dist/esm/components/navigation/app-level/notification-center.labels.d.ts.map +1 -1
  313. package/dist/esm/components/navigation/app-level/notification-center.labels.js +11 -14
  314. package/dist/esm/components/navigation/app-level/notification-center.labels.js.map +1 -1
  315. package/dist/esm/components/navigation/app-level/quick-action-button.d.ts.map +1 -1
  316. package/dist/esm/components/navigation/app-level/quick-action-button.labels.d.ts.map +1 -1
  317. package/dist/esm/components/navigation/app-level/quick-switcher.d.ts.map +1 -1
  318. package/dist/esm/components/navigation/app-level/quick-switcher.labels.d.ts.map +1 -1
  319. package/dist/esm/components/navigation/app-level/sidebar.d.ts.map +1 -1
  320. package/dist/esm/components/navigation/app-level/sidebar.js +32 -15
  321. package/dist/esm/components/navigation/app-level/sidebar.js.map +1 -1
  322. package/dist/esm/components/navigation/app-level/sidebar.labels.d.ts.map +1 -1
  323. package/dist/esm/components/navigation/app-level/status-bar.d.ts.map +1 -1
  324. package/dist/esm/components/navigation/app-level/status-bar.labels.d.ts.map +1 -1
  325. package/dist/esm/components/navigation/app-level/toolbar.d.ts.map +1 -1
  326. package/dist/esm/components/navigation/app-level/toolbar.labels.d.ts.map +1 -1
  327. package/dist/esm/components/navigation/app-level/utility-panel.d.ts.map +1 -1
  328. package/dist/esm/components/navigation/app-level/utility-panel.js +41 -8
  329. package/dist/esm/components/navigation/app-level/utility-panel.js.map +1 -1
  330. package/dist/esm/components/navigation/app-level/utility-panel.labels.d.ts.map +1 -1
  331. package/dist/esm/components/navigation/app-level/utility-panel.labels.js +1 -0
  332. package/dist/esm/components/navigation/app-level/utility-panel.labels.js.map +1 -1
  333. package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
  334. package/dist/esm/components/navigation/breadcrumb.labels.d.ts.map +1 -1
  335. package/dist/esm/components/navigation/command.d.ts.map +1 -1
  336. package/dist/esm/components/navigation/command.labels.d.ts.map +1 -1
  337. package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
  338. package/dist/esm/components/navigation/menu-bar.labels.d.ts.map +1 -1
  339. package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
  340. package/dist/esm/components/navigation/navbar.labels.d.ts.map +1 -1
  341. package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
  342. package/dist/esm/components/navigation/sidebar.labels.d.ts.map +1 -1
  343. package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
  344. package/dist/esm/components/overlays/containers/alert-dialog.labels.d.ts.map +1 -1
  345. package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
  346. package/dist/esm/components/overlays/containers/alert.labels.d.ts.map +1 -1
  347. package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
  348. package/dist/esm/components/overlays/containers/dialog.labels.d.ts.map +1 -1
  349. package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
  350. package/dist/esm/components/overlays/containers/drawer.labels.d.ts.map +1 -1
  351. package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
  352. package/dist/esm/components/overlays/containers/sheet.js +2 -2
  353. package/dist/esm/components/overlays/containers/sheet.js.map +1 -1
  354. package/dist/esm/components/overlays/containers/sheet.labels.d.ts.map +1 -1
  355. package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
  356. package/dist/esm/components/overlays/floating/context-menu.labels.d.ts.map +1 -1
  357. package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
  358. package/dist/esm/components/overlays/floating/dropdown-menu.labels.d.ts.map +1 -1
  359. package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
  360. package/dist/esm/components/overlays/floating/hover-card.labels.d.ts.map +1 -1
  361. package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
  362. package/dist/esm/components/overlays/floating/popover.labels.d.ts.map +1 -1
  363. package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
  364. package/dist/esm/components/overlays/floating/tooltip.labels.d.ts.map +1 -1
  365. package/dist/esm/components/sections/accordion.d.ts.map +1 -1
  366. package/dist/esm/components/sections/accordion.js +43 -13
  367. package/dist/esm/components/sections/accordion.js.map +1 -1
  368. package/dist/esm/components/sections/accordion.labels.d.ts.map +1 -1
  369. package/dist/esm/components/sections/card.d.ts.map +1 -1
  370. package/dist/esm/components/sections/card.labels.d.ts.map +1 -1
  371. package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
  372. package/dist/esm/components/sections/collapsible.js +17 -3
  373. package/dist/esm/components/sections/collapsible.js.map +1 -1
  374. package/dist/esm/components/sections/collapsible.labels.d.ts.map +1 -1
  375. package/dist/esm/components/sections/content-section.d.ts.map +1 -1
  376. package/dist/esm/components/sections/content-section.js +11 -7
  377. package/dist/esm/components/sections/content-section.js.map +1 -1
  378. package/dist/esm/components/sections/disclosure-nesting.d.ts +20 -0
  379. package/dist/esm/components/sections/disclosure-nesting.d.ts.map +1 -0
  380. package/dist/esm/components/sections/disclosure-nesting.js +20 -0
  381. package/dist/esm/components/sections/disclosure-nesting.js.map +1 -0
  382. package/dist/esm/components/sections/pagination.d.ts.map +1 -1
  383. package/dist/esm/components/sections/pagination.labels.d.ts.map +1 -1
  384. package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
  385. package/dist/esm/components/sections/stacked-layout.labels.d.ts.map +1 -1
  386. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  387. package/dist/esm/components/sections/stepper.labels.d.ts.map +1 -1
  388. package/dist/esm/components/sections/table.d.ts.map +1 -1
  389. package/dist/esm/components/sections/table.labels.d.ts.map +1 -1
  390. package/dist/esm/components/sections/tabs.d.ts.map +1 -1
  391. package/dist/esm/components/sections/tabs.js +141 -10
  392. package/dist/esm/components/sections/tabs.js.map +1 -1
  393. package/dist/esm/components/sections/tabs.labels.d.ts.map +1 -1
  394. package/dist/esm/components/typography/heading.d.ts.map +1 -1
  395. package/dist/esm/components/typography/heading.labels.d.ts.map +1 -1
  396. package/dist/esm/components/typography/label.d.ts.map +1 -1
  397. package/dist/esm/components/typography/label.labels.d.ts.map +1 -1
  398. package/dist/esm/components/typography/link.d.ts.map +1 -1
  399. package/dist/esm/components/typography/link.labels.d.ts.map +1 -1
  400. package/dist/esm/components/typography/text.d.ts.map +1 -1
  401. package/dist/esm/components/typography/text.labels.d.ts.map +1 -1
  402. package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
  403. package/dist/esm/config/billing-shell.presets.d.ts.map +1 -1
  404. package/dist/esm/config/index.d.ts.map +1 -1
  405. package/dist/esm/config/preset-design-system.d.ts.map +1 -1
  406. package/dist/esm/config/preset-error-pages.d.ts.map +1 -1
  407. package/dist/esm/config/preset-kits.d.ts.map +1 -1
  408. package/dist/esm/config/preset-kits.js +0 -4
  409. package/dist/esm/config/preset-kits.js.map +1 -1
  410. package/dist/esm/config/preset-navigation.d.ts.map +1 -1
  411. package/dist/esm/config/preset-resources.d.ts.map +1 -1
  412. package/dist/esm/config/preset-shell.d.ts.map +1 -1
  413. package/dist/esm/config/preset-shell.js +0 -4
  414. package/dist/esm/config/preset-shell.js.map +1 -1
  415. package/dist/esm/config/preset-utils.d.ts.map +1 -1
  416. package/dist/esm/config/presets.d.ts.map +1 -1
  417. package/dist/esm/config/presets.js +0 -1
  418. package/dist/esm/config/presets.js.map +1 -1
  419. package/dist/esm/config/resources/application.resource-presets.d.ts.map +1 -1
  420. package/dist/esm/config/resources/application.resource-presets.js +6 -6
  421. package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
  422. package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
  423. package/dist/esm/config/resources/billing.resource-presets.js +8 -8
  424. package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
  425. package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
  426. package/dist/esm/config/resources/guidance.resource-presets.js +7 -7
  427. package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
  428. package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
  429. package/dist/esm/config/resources/identity.resource-presets.js +13 -7
  430. package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
  431. package/dist/esm/config/resources/index.d.ts +23 -1
  432. package/dist/esm/config/resources/index.d.ts.map +1 -1
  433. package/dist/esm/config/resources/index.js +24 -3
  434. package/dist/esm/config/resources/index.js.map +1 -1
  435. package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
  436. package/dist/esm/config/resources/organizations.resource-presets.js +8 -8
  437. package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
  438. package/dist/esm/config/resources/resource.config.utils.d.ts.map +1 -1
  439. package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
  440. package/dist/esm/config/resources/security.resource-presets.js +104 -13
  441. package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
  442. package/dist/esm/config/resources/webhooks.resource-presets.d.ts.map +1 -1
  443. package/dist/esm/index.d.ts +0 -3
  444. package/dist/esm/index.d.ts.map +1 -1
  445. package/dist/esm/index.js +0 -3
  446. package/dist/esm/index.js.map +1 -1
  447. package/dist/esm/lottie/lottie.content.definitions.d.ts.map +1 -1
  448. package/dist/esm/lottie/lottie.definitions.d.ts.map +1 -1
  449. package/dist/esm/mermaid-stub.d.ts.map +1 -1
  450. package/dist/esm/registration/register-common-enums.d.ts.map +1 -1
  451. package/dist/esm/registration/register-common-enums.js +20 -1
  452. package/dist/esm/registration/register-common-enums.js.map +1 -1
  453. package/dist/esm/registration/register-default-animations.d.ts.map +1 -1
  454. package/dist/esm/registration/register-default-icons.d.ts.map +1 -1
  455. package/dist/esm/registration/register-default-presets.d.ts.map +1 -1
  456. package/dist/esm/registration/register-default-presets.js +0 -4
  457. package/dist/esm/registration/register-default-presets.js.map +1 -1
  458. package/dist/esm/shiki-subset.d.ts.map +1 -1
  459. package/dist/esm/theme-exports.d.ts.map +1 -1
  460. package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
  461. package/dist/esm/themes/cozy.theme.js +8 -3
  462. package/dist/esm/themes/cozy.theme.js.map +1 -1
  463. package/dist/esm/themes/dense.theme.d.ts.map +1 -1
  464. package/dist/esm/themes/dense.theme.js +8 -5
  465. package/dist/esm/themes/dense.theme.js.map +1 -1
  466. package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
  467. package/dist/esm/themes/editorial.theme.js +8 -3
  468. package/dist/esm/themes/editorial.theme.js.map +1 -1
  469. package/dist/esm/themes/glass.theme.d.ts.map +1 -1
  470. package/dist/esm/themes/glass.theme.js +10 -4
  471. package/dist/esm/themes/glass.theme.js.map +1 -1
  472. package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
  473. package/dist/esm/themes/neo-brutalist.theme.js +8 -3
  474. package/dist/esm/themes/neo-brutalist.theme.js.map +1 -1
  475. package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
  476. package/dist/esm/themes/terminal.theme.js +8 -3
  477. package/dist/esm/themes/terminal.theme.js.map +1 -1
  478. package/dist/esm/themes/trading.theme.d.ts.map +1 -1
  479. package/dist/esm/themes/trading.theme.js +8 -3
  480. package/dist/esm/themes/trading.theme.js.map +1 -1
  481. package/dist/tsconfig.build.tsbuildinfo +1 -1
  482. package/package.json +7 -7
  483. package/dist/esm/.builder.pid +0 -9
  484. package/dist/esm/components/billing/billing-plan-change-preview.d.ts +0 -13
  485. package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +0 -1
  486. package/dist/esm/components/billing/billing-plan-change-preview.js +0 -44
  487. package/dist/esm/components/billing/billing-plan-change-preview.js.map +0 -1
  488. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts +0 -3
  489. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts.map +0 -1
  490. package/dist/esm/components/billing/billing-plan-change-preview.labels.js +0 -36
  491. package/dist/esm/components/billing/billing-plan-change-preview.labels.js.map +0 -1
  492. package/dist/esm/components/billing/billing-promotion-code-input.d.ts +0 -10
  493. package/dist/esm/components/billing/billing-promotion-code-input.d.ts.map +0 -1
  494. package/dist/esm/components/billing/billing-promotion-code-input.js +0 -68
  495. package/dist/esm/components/billing/billing-promotion-code-input.js.map +0 -1
  496. package/dist/esm/components/billing/billing-promotion-code-input.labels.d.ts +0 -3
  497. package/dist/esm/components/billing/billing-promotion-code-input.labels.d.ts.map +0 -1
  498. package/dist/esm/components/billing/billing-promotion-code-input.labels.js +0 -14
  499. package/dist/esm/components/billing/billing-promotion-code-input.labels.js.map +0 -1
  500. package/dist/esm/config/resources/infrastructure.resource-presets.d.ts +0 -16
  501. package/dist/esm/config/resources/infrastructure.resource-presets.d.ts.map +0 -1
  502. package/dist/esm/config/resources/infrastructure.resource-presets.js +0 -110
  503. package/dist/esm/config/resources/infrastructure.resource-presets.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"aspect-ratio.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/aspect-ratio.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,yBAAyB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"aspect-ratio.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/aspect-ratio.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,yBAAyB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/carousel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA8B,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAyO/F,eAAO,MAAM,QAAQ,kBAKnB,CAAA"}
1
+ {"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/carousel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA8B,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAyO/F,eAAO,MAAM,QAAQ,kBAKnB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/carousel.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAGvD,CAAC"}
1
+ {"version":3,"file":"carousel.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/carousel.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAGvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"divider.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/divider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE/D,wBAAgB,OAAO,CAAC,EACtB,IAAY,EACZ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmBlC"}
1
+ {"version":3,"file":"divider.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/divider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE/D,wBAAgB,OAAO,CAAC,EACtB,IAAY,EACZ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmBlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"divider.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/divider.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"divider.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/divider.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resizable.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/resizable.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAuE,2BAA2B,EAAE,MAAM,6BAA6B,CAAA;AAmDnJ,eAAO,MAAM,mBAAmB,6BAAiI,CAAA"}
1
+ {"version":3,"file":"resizable.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/resizable.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAuE,2BAA2B,EAAE,MAAM,6BAA6B,CAAA;AAmDnJ,eAAO,MAAM,mBAAmB,6BAAiI,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"resizable.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/resizable.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,iCAAiC,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"resizable.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/resizable.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,iCAAiC,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-area.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/scroll-area.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAmC,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAkEtG,eAAO,MAAM,UAAU,oBAA0E,CAAA"}
1
+ {"version":3,"file":"scroll-area.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/scroll-area.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAmC,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAkEtG,eAAO,MAAM,UAAU,oBAA0E,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-area.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/scroll-area.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"scroll-area.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/scroll-area.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/separator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAIjE,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,WAAyC,EACzC,UAAiB,EACjB,GAAG,KAAK,EACT,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkBpC;AAED,OAAO,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/separator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAIjE,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,WAAyC,EACzC,UAAiB,EACjB,GAAG,KAAK,EACT,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkBpC;AAED,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"separator.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/separator.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,uBAAuB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"separator.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/separator.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,uBAAuB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"activity-bar.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/activity-bar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAcL,iCAAiC,EAClC,MAAM,6BAA6B,CAAC;AAKrC,eAAO,MAAM,0CAA0C,EAAE,KAAK,CAAC,EAAE,CAAC,iCAAiC,CAkFlG,CAAC"}
1
+ {"version":3,"file":"activity-bar.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/activity-bar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAcL,iCAAiC,EAClC,MAAM,6BAA6B,CAAC;AAKrC,eAAO,MAAM,0CAA0C,EAAE,KAAK,CAAC,EAAE,CAAC,iCAAiC,CAkFlG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"activity-bar.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/activity-bar.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,iCAAiC,EAAE,mBAAmB,EAGlE,CAAC"}
1
+ {"version":3,"file":"activity-bar.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/activity-bar.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,iCAAiC,EAAE,mBAAmB,EAGlE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"command-menu.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/command-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA8B/B,OAAO,KAAK,EACV,iCAAiC,EAElC,MAAM,6BAA6B,CAAC;AAsDrC,eAAO,MAAM,0CAA0C,EAAE,KAAK,CAAC,EAAE,CAAC,iCAAiC,CAqPlG,CAAC"}
1
+ {"version":3,"file":"command-menu.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/command-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA8B/B,OAAO,KAAK,EACV,iCAAiC,EAElC,MAAM,6BAA6B,CAAC;AAsDrC,eAAO,MAAM,0CAA0C,EAAE,KAAK,CAAC,EAAE,CAAC,iCAAiC,CAqPlG,CAAC"}
@@ -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,CAySlG,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"}
@@ -40,7 +40,7 @@ export const ApplicationLevelPreset_MenuUserOrg_Default = ({ containerType, cont
40
40
  /* Multiple orgs — full selectable list */
41
41
  _jsxs("div", { className: "p-item", children: [_jsx("p", { className: "text-xs text-muted-foreground mb-item px-card-sm", children: orgsLabel }), _jsx("div", { className: "space-y-item-xs", children: organizations.map(org => {
42
42
  const isSelected = org._id === currentOrganization?._id;
43
- return (_jsxs(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, onClick: () => handleSwitchOrg(org._id), className: cn('w-full justify-start text-sm rounded-sm', isSelected && 'bg-primary/10 text-primary hover:bg-primary/15'), children: [_jsx("span", { className: cn('flex-shrink-0', isSelected ? 'text-primary' : 'invisible'), children: checkIcon }), _jsx("span", { className: "truncate", children: org.name })] }, org._id));
43
+ return (_jsxs(Button, { "data-component-type": "user-org-menu-option", "data-organization-id": org._id, "data-selected": isSelected ? 'true' : 'false', variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, onClick: () => handleSwitchOrg(org._id), className: cn('w-full justify-start text-sm rounded-sm', isSelected && 'bg-primary/10 text-primary hover:bg-primary/15'), children: [_jsx("span", { className: cn('flex-shrink-0', isSelected ? 'text-primary' : 'invisible'), children: checkIcon }), _jsx("span", { className: "truncate", children: org.name })] }, org._id));
44
44
  }) })] })) : (
45
45
  /* Single org — non-interactive display */
46
46
  _jsxs("div", { className: "px-card py-card-sm", children: [_jsx("p", { className: "text-xs text-muted-foreground leading-none", children: orgsLabel }), _jsx("p", { className: "text-sm font-medium leading-none mt-element truncate", children: currentOrganization?.name ?? '' })] }))] }));
@@ -96,7 +96,13 @@ export const ApplicationLevelPreset_MenuUserOrg_Default = ({ containerType, cont
96
96
  * aria-hidden-on-a-focused-ancestor by construction. Outside-click and
97
97
  * Escape dismissal still work via the DismissableLayer.
98
98
  */
99
- _jsxs(DropdownMenu, { open: isOpen, onOpenChange: setIsOpen, modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: isAvatarOnly ? ButtonSize.ICON : ButtonSize.SM, className: isAvatarOnly
99
+ _jsxs(DropdownMenu, { open: isOpen, onOpenChange: setIsOpen, modal: false, children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button
100
+ /*
101
+ * The only i18n-INDEPENDENT handle on this menu. Its `aria-label` is a translated string,
102
+ * so a browser scenario keying on it would break in any locale but the default — the same
103
+ * discipline `quick-switcher` follows with `data-component-type`.
104
+ */
105
+ , { "data-component-type": "user-org-menu", variant: ButtonVariants_Variant.GHOST, size: isAvatarOnly ? ButtonSize.ICON : ButtonSize.SM, className: isAvatarOnly
100
106
  ? 'rounded-full h-9 w-9'
101
107
  : 'rounded-full pe-card-sm', "aria-label": tc('userMenuLabel'), children: renderTriggerContent() }) }), _jsxs(DropdownMenuContent, { align: popupAlignment.align, side: popupAlignment.side, className: "w-72 max-w-[calc(100vw-2rem)] p-0", children: [renderUserInfoSection(), renderOrgSection(), renderSettingsSection(), renderLogoutSection()] })] }));
102
108
  };
@@ -1 +1 @@
1
- {"version":3,"file":"menu-user-org.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/menu-user-org.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback } from 'react';\nimport {\n UserDropdownSection,\n UserDropdownAvatarDisplay,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { ButtonSize, FrontendComponentType } from '@wildo-ai/presets-components-models';\n\nimport {\n DropdownMenu, DropdownMenuContent, DropdownMenuTrigger,\n Avatar, AvatarFallback, AvatarImage,\n Button, ButtonVariants_Variant,\n Separator,\n useI18n,\n useIconRegistry,\n useMenuUserOrgBehavior,\n IconSize, StandardIconReference,\n cn,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport type { ApplicationLevelProps_MenuUserOrg } from '@wildo-ai/saas-frontend-lib';\n\nexport const ApplicationLevelPreset_MenuUserOrg_Default: React.FC<ApplicationLevelProps_MenuUserOrg> = ({\n containerType,\n containerPlacement,\n}) => {\n const behavior = useMenuUserOrgBehavior(containerType, containerPlacement);\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.APPLICATION_LEVEL_USER_DROPDOWN });\n const { renderIcon } = useIconRegistry();\n\n const {\n isOpen,\n setIsOpen,\n isUserAuthenticated,\n userInitials,\n displayName,\n email,\n avatarUrl,\n currentOrganization,\n organizations,\n sections,\n avatarDisplay,\n showOrgSwitcher,\n showLogout,\n settingsTarget,\n settingsTargets,\n popupAlignment,\n handleLogout,\n handleSwitchOrg,\n handleNavigateToSettingsTarget,\n } = behavior;\n\n const tc = useCallback(\n (key: string) => tComponent(FrontendComponentType.APPLICATION_LEVEL_USER_DROPDOWN, key),\n [tComponent],\n );\n\n // ===================================================================\n // Render Helpers\n // ===================================================================\n\n const renderTriggerContent = () => {\n\n switch (avatarDisplay) {\n case UserDropdownAvatarDisplay.AVATAR_NAME:\n return (\n <div className=\"flex items-center gap-element\">\n <Avatar className=\"h-8 w-8\">\n <AvatarImage src={avatarUrl} alt={displayName} />\n <AvatarFallback className=\"text-xs\">{userInitials}</AvatarFallback>\n </Avatar>\n <span className=\"text-sm font-medium max-w-[120px] truncate\">{displayName}</span>\n </div>\n );\n case UserDropdownAvatarDisplay.AVATAR_ORG:\n return (\n <div className=\"flex items-center gap-element\">\n <Avatar className=\"h-8 w-8\">\n <AvatarImage src={avatarUrl} alt={displayName} />\n <AvatarFallback className=\"text-xs\">{userInitials}</AvatarFallback>\n </Avatar>\n <span className=\"text-sm font-medium max-w-[120px] truncate\">\n {currentOrganization?.name ?? displayName}\n </span>\n </div>\n );\n case UserDropdownAvatarDisplay.FULL:\n return (\n <div className=\"flex items-center gap-element\">\n <Avatar className=\"h-8 w-8\">\n <AvatarImage src={avatarUrl} alt={displayName} />\n <AvatarFallback className=\"text-xs\">{userInitials}</AvatarFallback>\n </Avatar>\n <div className=\"flex flex-col items-start\">\n <span className=\"text-sm font-medium max-w-[120px] truncate\">{displayName}</span>\n <span className=\"text-xs text-muted-foreground max-w-[120px] truncate\">\n {currentOrganization?.name}\n </span>\n </div>\n </div>\n );\n case UserDropdownAvatarDisplay.AVATAR_ONLY:\n default:\n return (\n <Avatar className=\"h-8 w-8\">\n <AvatarImage src={avatarUrl} alt={displayName} />\n <AvatarFallback className=\"text-xs\">{userInitials}</AvatarFallback>\n </Avatar>\n );\n }\n };\n\n const renderUserInfoSection = () => {\n if (!sections.includes(UserDropdownSection.USER_INFO)) return null;\n\n return (\n <div className=\"px-card py-card-sm\">\n <p className=\"text-sm font-medium leading-none truncate\">{displayName}</p>\n <p className=\"text-xs leading-none text-muted-foreground mt-item truncate\">{email}</p>\n </div>\n );\n };\n\n const renderOrgSection = () => {\n if (!sections.includes(UserDropdownSection.ORG_SWITCHER)) return null;\n\n const hasMultipleOrgs = organizations && organizations.length > 1;\n const orgsLabel = tc('organizations');\n\n const checkIcon = renderIcon(\n StandardIconReference.CHECK,\n { size: IconSize.SM }\n );\n\n return (\n <>\n <Separator />\n\n {hasMultipleOrgs && showOrgSwitcher && sections.includes(UserDropdownSection.ORG_SWITCHER) ? (\n /* Multiple orgs — full selectable list */\n <div className=\"p-item\">\n <p className=\"text-xs text-muted-foreground mb-item px-card-sm\">{orgsLabel}</p>\n <div className=\"space-y-item-xs\">\n {organizations.map(org => {\n const isSelected = org._id === currentOrganization?._id;\n return (\n <Button\n key={org._id}\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => handleSwitchOrg(org._id)}\n className={cn('w-full justify-start text-sm rounded-sm', isSelected && 'bg-primary/10 text-primary hover:bg-primary/15')}\n >\n <span className={cn('flex-shrink-0', isSelected ? 'text-primary' : 'invisible')}>\n {checkIcon}\n </span>\n <span className=\"truncate\">{org.name}</span>\n </Button>\n );\n })}\n </div>\n </div>\n ) : (\n /* Single org — non-interactive display */\n <div className=\"px-card py-card-sm\">\n <p className=\"text-xs text-muted-foreground leading-none\">{orgsLabel}</p>\n <p className=\"text-sm font-medium leading-none mt-element truncate\">\n {currentOrganization?.name ?? ''}\n </p>\n </div>\n )}\n </>\n );\n };\n\n const renderSettingsSection = () => {\n if (!sections.includes(UserDropdownSection.SETTINGS)) return null;\n\n const settingsLabel = tc('settings');\n const settingsIcon = renderIcon(\n StandardIconReference.SETTINGS,\n { size: IconSize.SM }\n );\n\n // Authored settings entries render inline (icon + label), one per entry,\n // instead of a single \"Settings\" button. The list IS the intent — there is\n // no separate enable flag that could disagree with it.\n if (settingsTargets.length > 0) {\n return (\n <>\n <Separator />\n <div className=\"p-item\">\n <p className=\"text-xs text-muted-foreground mb-item px-card-sm\">{settingsLabel}</p>\n <div className=\"space-y-item-xs\">\n {settingsTargets.map(item => (\n <Button\n key={item.id}\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n className=\"w-full justify-start rounded-sm\"\n onClick={() => handleNavigateToSettingsTarget(item)}\n >\n {item.icon ?? settingsIcon}\n <span className=\"truncate\">{item.label}</span>\n </Button>\n ))}\n </div>\n </div>\n </>\n );\n }\n\n return (\n <>\n <Separator />\n <div className=\"p-item\">\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n className=\"w-full justify-start rounded-sm\"\n disabled={!settingsTarget}\n onClick={() => settingsTarget && handleNavigateToSettingsTarget(settingsTarget)}\n >\n {settingsIcon}\n {settingsLabel}\n </Button>\n </div>\n </>\n );\n };\n\n const renderLogoutSection = () => {\n if (!sections.includes(UserDropdownSection.LOGOUT) || !showLogout) return null;\n\n const logoutLabel = tc('logout');\n const logoutIcon = renderIcon(\n StandardIconReference.LOGOUT,\n { size: IconSize.SM }\n );\n\n return (\n <>\n <Separator />\n <div className=\"p-item\">\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={handleLogout}\n className=\"w-full justify-start rounded-sm text-destructive hover:text-destructive\"\n >\n {logoutIcon}\n {logoutLabel}\n </Button>\n </div>\n </>\n );\n };\n\n // ===================================================================\n // Early Return - Not Authenticated\n // ===================================================================\n\n if (!isUserAuthenticated) {\n return null;\n }\n\n if (!isReady) return null;\n\n // ===================================================================\n // Render\n // ===================================================================\n\n const isAvatarOnly = avatarDisplay === UserDropdownAvatarDisplay.AVATAR_ONLY\n || (!avatarDisplay);\n\n return (\n /*\n * `modal={false}` is required, not cosmetic.\n *\n * The trigger below lives INSIDE the menubar (`role=\"banner\"`), while the\n * dropdown content is portaled OUT of it. Radix's default `modal={true}`\n * runs `hideOthers(content)` on open, which sets `aria-hidden=\"true\"` on\n * every subtree outside the portaled content — including the menubar that\n * still hosts the focused trigger (the click that opened the menu focuses\n * the avatar button). The browser then blocks that aria-hidden with\n * \"descendant retained focus\", an accessibility violation.\n *\n * A transient account menu needs none of the modal guarantees (scroll\n * lock, outside-pointer blocking, background AT-hiding), so going\n * non-modal is both the correct UX and removes the invalid\n * aria-hidden-on-a-focused-ancestor by construction. Outside-click and\n * Escape dismissal still work via the DismissableLayer.\n */\n <DropdownMenu open={isOpen} onOpenChange={setIsOpen} modal={false}>\n <DropdownMenuTrigger asChild>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={isAvatarOnly ? ButtonSize.ICON : ButtonSize.SM}\n className={isAvatarOnly\n ? 'rounded-full h-9 w-9'\n : 'rounded-full pe-card-sm'\n }\n aria-label={tc('userMenuLabel')}\n >\n {renderTriggerContent()}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={popupAlignment.align}\n side={popupAlignment.side}\n className=\"w-72 max-w-[calc(100vw-2rem)] p-0\"\n >\n {renderUserInfoSection()}\n {renderOrgSection()}\n {renderSettingsSection()}\n {renderLogoutSection()}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"]}
1
+ {"version":3,"file":"menu-user-org.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/menu-user-org.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback } from 'react';\nimport {\n UserDropdownSection,\n UserDropdownAvatarDisplay,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { ButtonSize, FrontendComponentType } from '@wildo-ai/presets-components-models';\n\nimport {\n DropdownMenu, DropdownMenuContent, DropdownMenuTrigger,\n Avatar, AvatarFallback, AvatarImage,\n Button, ButtonVariants_Variant,\n Separator,\n useI18n,\n useIconRegistry,\n useMenuUserOrgBehavior,\n IconSize, StandardIconReference,\n cn,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport type { ApplicationLevelProps_MenuUserOrg } from '@wildo-ai/saas-frontend-lib';\n\nexport const ApplicationLevelPreset_MenuUserOrg_Default: React.FC<ApplicationLevelProps_MenuUserOrg> = ({\n containerType,\n containerPlacement,\n}) => {\n const behavior = useMenuUserOrgBehavior(containerType, containerPlacement);\n const { tComponent, isReady } = useI18n({ component: FrontendComponentType.APPLICATION_LEVEL_USER_DROPDOWN });\n const { renderIcon } = useIconRegistry();\n\n const {\n isOpen,\n setIsOpen,\n isUserAuthenticated,\n userInitials,\n displayName,\n email,\n avatarUrl,\n currentOrganization,\n organizations,\n sections,\n avatarDisplay,\n showOrgSwitcher,\n showLogout,\n settingsTarget,\n settingsTargets,\n popupAlignment,\n handleLogout,\n handleSwitchOrg,\n handleNavigateToSettingsTarget,\n } = behavior;\n\n const tc = useCallback(\n (key: string) => tComponent(FrontendComponentType.APPLICATION_LEVEL_USER_DROPDOWN, key),\n [tComponent],\n );\n\n // ===================================================================\n // Render Helpers\n // ===================================================================\n\n const renderTriggerContent = () => {\n\n switch (avatarDisplay) {\n case UserDropdownAvatarDisplay.AVATAR_NAME:\n return (\n <div className=\"flex items-center gap-element\">\n <Avatar className=\"h-8 w-8\">\n <AvatarImage src={avatarUrl} alt={displayName} />\n <AvatarFallback className=\"text-xs\">{userInitials}</AvatarFallback>\n </Avatar>\n <span className=\"text-sm font-medium max-w-[120px] truncate\">{displayName}</span>\n </div>\n );\n case UserDropdownAvatarDisplay.AVATAR_ORG:\n return (\n <div className=\"flex items-center gap-element\">\n <Avatar className=\"h-8 w-8\">\n <AvatarImage src={avatarUrl} alt={displayName} />\n <AvatarFallback className=\"text-xs\">{userInitials}</AvatarFallback>\n </Avatar>\n <span className=\"text-sm font-medium max-w-[120px] truncate\">\n {currentOrganization?.name ?? displayName}\n </span>\n </div>\n );\n case UserDropdownAvatarDisplay.FULL:\n return (\n <div className=\"flex items-center gap-element\">\n <Avatar className=\"h-8 w-8\">\n <AvatarImage src={avatarUrl} alt={displayName} />\n <AvatarFallback className=\"text-xs\">{userInitials}</AvatarFallback>\n </Avatar>\n <div className=\"flex flex-col items-start\">\n <span className=\"text-sm font-medium max-w-[120px] truncate\">{displayName}</span>\n <span className=\"text-xs text-muted-foreground max-w-[120px] truncate\">\n {currentOrganization?.name}\n </span>\n </div>\n </div>\n );\n case UserDropdownAvatarDisplay.AVATAR_ONLY:\n default:\n return (\n <Avatar className=\"h-8 w-8\">\n <AvatarImage src={avatarUrl} alt={displayName} />\n <AvatarFallback className=\"text-xs\">{userInitials}</AvatarFallback>\n </Avatar>\n );\n }\n };\n\n const renderUserInfoSection = () => {\n if (!sections.includes(UserDropdownSection.USER_INFO)) return null;\n\n return (\n <div className=\"px-card py-card-sm\">\n <p className=\"text-sm font-medium leading-none truncate\">{displayName}</p>\n <p className=\"text-xs leading-none text-muted-foreground mt-item truncate\">{email}</p>\n </div>\n );\n };\n\n const renderOrgSection = () => {\n if (!sections.includes(UserDropdownSection.ORG_SWITCHER)) return null;\n\n const hasMultipleOrgs = organizations && organizations.length > 1;\n const orgsLabel = tc('organizations');\n\n const checkIcon = renderIcon(\n StandardIconReference.CHECK,\n { size: IconSize.SM }\n );\n\n return (\n <>\n <Separator />\n\n {hasMultipleOrgs && showOrgSwitcher && sections.includes(UserDropdownSection.ORG_SWITCHER) ? (\n /* Multiple orgs — full selectable list */\n <div className=\"p-item\">\n <p className=\"text-xs text-muted-foreground mb-item px-card-sm\">{orgsLabel}</p>\n <div className=\"space-y-item-xs\">\n {organizations.map(org => {\n const isSelected = org._id === currentOrganization?._id;\n return (\n <Button\n key={org._id}\n /*\n * The org's IDENTITY on the element, not its name: a scenario asserting which\n * organization is active must not have to match a display name it did not choose,\n * and `data-selected` states the current one without reading the check icon —\n * which is an icon, and therefore not assertable text at all.\n */\n data-component-type=\"user-org-menu-option\"\n data-organization-id={org._id}\n data-selected={isSelected ? 'true' : 'false'}\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => handleSwitchOrg(org._id)}\n className={cn('w-full justify-start text-sm rounded-sm', isSelected && 'bg-primary/10 text-primary hover:bg-primary/15')}\n >\n <span className={cn('flex-shrink-0', isSelected ? 'text-primary' : 'invisible')}>\n {checkIcon}\n </span>\n <span className=\"truncate\">{org.name}</span>\n </Button>\n );\n })}\n </div>\n </div>\n ) : (\n /* Single org — non-interactive display */\n <div className=\"px-card py-card-sm\">\n <p className=\"text-xs text-muted-foreground leading-none\">{orgsLabel}</p>\n <p className=\"text-sm font-medium leading-none mt-element truncate\">\n {currentOrganization?.name ?? ''}\n </p>\n </div>\n )}\n </>\n );\n };\n\n const renderSettingsSection = () => {\n if (!sections.includes(UserDropdownSection.SETTINGS)) return null;\n\n const settingsLabel = tc('settings');\n const settingsIcon = renderIcon(\n StandardIconReference.SETTINGS,\n { size: IconSize.SM }\n );\n\n // Authored settings entries render inline (icon + label), one per entry,\n // instead of a single \"Settings\" button. The list IS the intent — there is\n // no separate enable flag that could disagree with it.\n if (settingsTargets.length > 0) {\n return (\n <>\n <Separator />\n <div className=\"p-item\">\n <p className=\"text-xs text-muted-foreground mb-item px-card-sm\">{settingsLabel}</p>\n <div className=\"space-y-item-xs\">\n {settingsTargets.map(item => (\n <Button\n key={item.id}\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n className=\"w-full justify-start rounded-sm\"\n onClick={() => handleNavigateToSettingsTarget(item)}\n >\n {item.icon ?? settingsIcon}\n <span className=\"truncate\">{item.label}</span>\n </Button>\n ))}\n </div>\n </div>\n </>\n );\n }\n\n return (\n <>\n <Separator />\n <div className=\"p-item\">\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n className=\"w-full justify-start rounded-sm\"\n disabled={!settingsTarget}\n onClick={() => settingsTarget && handleNavigateToSettingsTarget(settingsTarget)}\n >\n {settingsIcon}\n {settingsLabel}\n </Button>\n </div>\n </>\n );\n };\n\n const renderLogoutSection = () => {\n if (!sections.includes(UserDropdownSection.LOGOUT) || !showLogout) return null;\n\n const logoutLabel = tc('logout');\n const logoutIcon = renderIcon(\n StandardIconReference.LOGOUT,\n { size: IconSize.SM }\n );\n\n return (\n <>\n <Separator />\n <div className=\"p-item\">\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={handleLogout}\n className=\"w-full justify-start rounded-sm text-destructive hover:text-destructive\"\n >\n {logoutIcon}\n {logoutLabel}\n </Button>\n </div>\n </>\n );\n };\n\n // ===================================================================\n // Early Return - Not Authenticated\n // ===================================================================\n\n if (!isUserAuthenticated) {\n return null;\n }\n\n if (!isReady) return null;\n\n // ===================================================================\n // Render\n // ===================================================================\n\n const isAvatarOnly = avatarDisplay === UserDropdownAvatarDisplay.AVATAR_ONLY\n || (!avatarDisplay);\n\n return (\n /*\n * `modal={false}` is required, not cosmetic.\n *\n * The trigger below lives INSIDE the menubar (`role=\"banner\"`), while the\n * dropdown content is portaled OUT of it. Radix's default `modal={true}`\n * runs `hideOthers(content)` on open, which sets `aria-hidden=\"true\"` on\n * every subtree outside the portaled content — including the menubar that\n * still hosts the focused trigger (the click that opened the menu focuses\n * the avatar button). The browser then blocks that aria-hidden with\n * \"descendant retained focus\", an accessibility violation.\n *\n * A transient account menu needs none of the modal guarantees (scroll\n * lock, outside-pointer blocking, background AT-hiding), so going\n * non-modal is both the correct UX and removes the invalid\n * aria-hidden-on-a-focused-ancestor by construction. Outside-click and\n * Escape dismissal still work via the DismissableLayer.\n */\n <DropdownMenu open={isOpen} onOpenChange={setIsOpen} modal={false}>\n <DropdownMenuTrigger asChild>\n <Button\n /*\n * The only i18n-INDEPENDENT handle on this menu. Its `aria-label` is a translated string,\n * so a browser scenario keying on it would break in any locale but the default — the same\n * discipline `quick-switcher` follows with `data-component-type`.\n */\n data-component-type=\"user-org-menu\"\n variant={ButtonVariants_Variant.GHOST}\n size={isAvatarOnly ? ButtonSize.ICON : ButtonSize.SM}\n className={isAvatarOnly\n ? 'rounded-full h-9 w-9'\n : 'rounded-full pe-card-sm'\n }\n aria-label={tc('userMenuLabel')}\n >\n {renderTriggerContent()}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={popupAlignment.align}\n side={popupAlignment.side}\n className=\"w-72 max-w-[calc(100vw-2rem)] p-0\"\n >\n {renderUserInfoSection()}\n {renderOrgSection()}\n {renderSettingsSection()}\n {renderLogoutSection()}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n"]}
@@ -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,EAiB9B,MAAM,6BAA6B,CAAC;AAcrC,eAAO,MAAM,sCAAsC,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CA6N1F,CAAC"}
@@ -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;AAa1B,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,6BAA6B,CAAC;AAExF,eAAO,MAAM,6CAA6C,EAAE,KAAK,CAAC,EAAE,CAAC,oCAAoC,CAwCxG,CAAC"}
@@ -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,EAEzC,MAAM,6BAA6B,CAAC;AA2BrC,eAAO,MAAM,iDAAiD,EAAE,KAAK,CAAC,EAAE,CAAC,wCAAwC,CA0QhH,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,7 +1,7 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { ButtonSize, FrontendComponentType, HorizontalPlacement, InteractiveVariant, PlacementSide, SurfaceVariant, UIBehavior, VerticalPlacement } from '@wildo-ai/presets-components-models';
3
3
  import { HorizontalAlign } from '@wildo-ai/zod-decorators';
4
- import { resolveComponentLabel, useI18n, useIconRegistry, useNotificationCenterBehavior, IconSize, StandardIconReference, useUI, Button, ButtonVariants_Variant, Popover, PopoverContent, PopoverTrigger, ScrollArea, cn, Surface, NotificationCenterFilter, } from '@wildo-ai/saas-frontend-lib';
4
+ import { resolveComponentLabel, useI18n, useIconRegistry, useNotificationCenterBehavior, IconSize, StandardIconReference, useUI, Button, ButtonVariants_Variant, Popover, PopoverContent, PopoverTrigger, ScrollArea, cn, Surface, } from '@wildo-ai/saas-frontend-lib';
5
5
  function getNotificationTypeColorClass(type) {
6
6
  switch (type) {
7
7
  case 'success': return 'text-success';
@@ -31,7 +31,16 @@ export const ApplicationLevelPreset_NotificationCenter_Default = ({ placement, i
31
31
  const { renderIcon } = useIconRegistry();
32
32
  const { getRecipe } = useUI();
33
33
  const ghostRecipe = getRecipe(UIBehavior.INTERACTIVE, InteractiveVariant.GHOST);
34
- const { isOpen, setIsOpen, filter, setFilter, unreadCount, filteredNotifications, groupedNotifications, notificationCount, handleNotificationClick, handleMarkAllAsRead, handleClearAll, dismissNotification, } = behavior;
34
+ /*
35
+ * A SESSION FEED, not a message history (#412).
36
+ *
37
+ * The filter tabs, the mark-all-read control, the unread emphasis and the today/yesterday/older
38
+ * grouping were removed on 2026-09-08. Every one of them presented a history over a store that is a
39
+ * `useReducer` with no hydration: it starts empty on each page load, so "unread" meant "arrived
40
+ * since you opened the tab", marking something read died with the page, and the `older` group was
41
+ * unreachable by construction.
42
+ */
43
+ const { isOpen, setIsOpen, sessionNotifications, notificationCount, handleClearAll, dismissNotification, } = behavior;
35
44
  // ===================================================================
36
45
  // I18n Labels
37
46
  // ===================================================================
@@ -43,16 +52,14 @@ export const ApplicationLevelPreset_NotificationCenter_Default = ({ placement, i
43
52
  key,
44
53
  });
45
54
  const titleLabel = t('title');
46
- const noNotificationsLabel = t('noNotifications');
47
- const markAllReadLabel = t('markAllRead');
55
+ /*
56
+ * Says the feed is empty because the page just loaded, not that nothing has happened (#412). The
57
+ * distinction matters: a person who left a tab open, reloaded, and now sees "No notifications"
58
+ * would reasonably conclude the system had been quiet.
59
+ */
60
+ const noNotificationsLabel = t('noNotificationsThisSession');
48
61
  const clearAllLabel = t('clearAll');
49
62
  const dismissLabel = t('dismiss');
50
- const unreadLabel = t('unread');
51
- const allLabel = t('all');
52
- const filtersLabel = t('filters');
53
- const todayLabel = t('groupToday');
54
- const yesterdayLabel = t('groupYesterday');
55
- const olderLabel = t('groupOlder');
56
63
  const popoverPlacement = getPopoverPlacement(placement);
57
64
  // ===================================================================
58
65
  // Icons
@@ -65,8 +72,7 @@ export const ApplicationLevelPreset_NotificationCenter_Default = ({ placement, i
65
72
  const renderNotificationItem = (notification) => {
66
73
  const typeIcon = renderIcon(notification.iconReference, { size: IconSize.SM });
67
74
  const rowLabel = notification.displayTitle || 'Notification';
68
- return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.INSET, children: _jsxs("div", { className: cn('group flex items-start gap-field-sm rounded-lg p-card-sm', ghostRecipe.motion.transition, ghostRecipe.states.hover, !notification.isRead && 'bg-accent/50'), children: [_jsx("div", { className: `flex-shrink-0 mt-0.5 ${getNotificationTypeColorClass(notification.type)}`, children: typeIcon }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsxs("div", { className: "flex items-start justify-between gap-element", children: [_jsxs("button", { type: "button", onClick: () => handleNotificationClick(notification), className: "min-w-0 flex-1 text-start rounded-sm focus:outline-none focus-ring-offset", "aria-label": rowLabel, children: [_jsx("p", { className: `text-sm font-medium ${!notification.isRead ? 'text-foreground' : 'text-muted-foreground'}`, children: notification.displayTitle }), notification.displayMessage && (_jsx("p", { className: "mt-0.5 truncate text-xs text-muted-foreground", children: notification.displayMessage })), _jsx("p", { className: "mt-item-xs text-xs text-muted-foreground", children: notification.relativeTimeLabel })] }), _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, onClick: () => dismissNotification(notification.id), className: "h-5 w-5 p-0 opacity-70 group-hover:opacity-100 hover:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100", "aria-label": dismissLabel, children: dismissIcon })] }), notification.nextStep && (_jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.XS, onClick: () => {
69
- handleNotificationClick(notification);
75
+ return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.INSET, children: _jsxs("div", { className: cn('group flex items-start gap-field-sm rounded-lg p-card-sm', ghostRecipe.motion.transition, ghostRecipe.states.hover), children: [_jsx("div", { className: `flex-shrink-0 mt-0.5 ${getNotificationTypeColorClass(notification.type)}`, children: typeIcon }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsxs("div", { className: "flex items-start justify-between gap-element", children: [_jsxs("div", { className: "min-w-0 flex-1 text-start", children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: notification.displayTitle }), notification.displayMessage && (_jsx("p", { className: "mt-0.5 truncate text-xs text-muted-foreground", children: notification.displayMessage })), _jsx("p", { className: "mt-item-xs text-xs text-muted-foreground", children: notification.relativeTimeLabel })] }), _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, onClick: () => dismissNotification(notification.id), className: "h-5 w-5 p-0 opacity-70 group-hover:opacity-100 hover:opacity-100 focus-visible:opacity-100 pointer-coarse:opacity-100", "aria-label": dismissLabel, children: dismissIcon })] }), notification.nextStep && (_jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.XS, onClick: () => {
70
76
  setIsOpen(false);
71
77
  notification.nextStep?.onClick();
72
78
  }, className: "mt-item-xs", children: notification.nextStep.label }))] })] }) }, notification.id));
@@ -74,16 +80,13 @@ export const ApplicationLevelPreset_NotificationCenter_Default = ({ placement, i
74
80
  // ===================================================================
75
81
  // Render Notification Group
76
82
  // ===================================================================
77
- const renderNotificationGroup = (groupLabel, items) => {
78
- if (items.length === 0)
79
- return null;
80
- return (_jsxs("div", { className: "space-y-item-xs", children: [_jsx("div", { className: "px-card-sm py-item-xs text-xs font-medium text-muted-foreground uppercase tracking-wider", children: groupLabel }), items.map(renderNotificationItem)] }));
81
- };
82
83
  // ===================================================================
83
84
  // Render
84
85
  // ===================================================================
85
86
  if (!isReady)
86
87
  return null;
87
- return (_jsx("div", { "data-component-type": "notification-center", children: _jsxs(Popover, { open: isOpen, onOpenChange: setIsOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, className: "relative", "aria-label": titleLabel, children: bellIcon }) }), _jsxs(PopoverContent, { align: popoverPlacement.align, side: popoverPlacement.side, className: "w-80 p-0", children: [_jsxs("div", { className: "flex items-center justify-between p-card-sm border-b", children: [_jsx("h3", { className: "font-semibold", children: titleLabel }), _jsxs("div", { className: "flex items-center gap-item-xs", children: [_jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.XS, onClick: handleMarkAllAsRead, disabled: unreadCount === 0, children: markAllReadLabel }), _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.XS, onClick: handleClearAll, disabled: notificationCount === 0, children: clearAllLabel })] })] }), _jsxs("div", { className: "flex border-b", role: "group", "aria-label": filtersLabel, children: [_jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, onClick: () => setFilter(NotificationCenterFilter.ALL), "aria-pressed": filter === NotificationCenterFilter.ALL, className: cn('flex-1 rounded-none', filter === NotificationCenterFilter.ALL && 'border-b-2 border-primary'), children: allLabel }), _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, onClick: () => setFilter(NotificationCenterFilter.UNREAD), "aria-pressed": filter === NotificationCenterFilter.UNREAD, className: cn('flex-1 rounded-none', filter === NotificationCenterFilter.UNREAD && 'border-b-2 border-primary'), children: unreadLabel })] }), _jsx(ScrollArea, { className: "h-[400px]", children: _jsx("div", { className: "p-card-sm space-y-field-sm", children: filteredNotifications.length === 0 ? (_jsxs("div", { className: "flex flex-col items-center justify-center py-section-xl text-center", children: [_jsx("div", { className: "text-muted-foreground mb-element", children: renderIcon(StandardIconReference.MAIL, { size: IconSize.LG }) }), _jsx("p", { className: "text-sm text-muted-foreground", children: noNotificationsLabel })] })) : (_jsxs(_Fragment, { children: [renderNotificationGroup(todayLabel, groupedNotifications.today), renderNotificationGroup(yesterdayLabel, groupedNotifications.yesterday), renderNotificationGroup(olderLabel, groupedNotifications.older)] })) }) })] })] }) }));
88
+ return (_jsx("div", { "data-component-type": "notification-center", children: _jsxs(Popover, { open: isOpen, onOpenChange: setIsOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, className: "relative", "aria-label": titleLabel, children: bellIcon }) }), _jsxs(PopoverContent, { align: popoverPlacement.align, side: popoverPlacement.side, className: "w-80 p-0", children: [_jsxs("div", { className: "flex items-center justify-between p-card-sm border-b", children: [_jsx("h3", { className: "font-semibold", children: titleLabel }), _jsx("div", { className: "flex items-center gap-item-xs", children: _jsx(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.XS, onClick: handleClearAll, disabled: notificationCount === 0, children: clearAllLabel }) })] }), _jsx(ScrollArea, { className: "h-[400px]", children: _jsx("div", { className: "p-card-sm space-y-field-sm", children: sessionNotifications.length === 0 ? (_jsxs("div", { className: "flex flex-col items-center justify-center py-section-xl text-center", children: [_jsx("div", { className: "text-muted-foreground mb-element", children: renderIcon(StandardIconReference.MAIL, { size: IconSize.LG }) }), _jsx("p", { className: "text-sm text-muted-foreground", children: noNotificationsLabel })] })) : (
89
+ /* Flat, newest first. Nothing to group by: the buffer has no yesterday. */
90
+ _jsx("div", { className: "space-y-item-xs", children: sessionNotifications.map(renderNotificationItem) })) }) })] })] }) }));
88
91
  };
89
92
  //# sourceMappingURL=notification-center.js.map
@@ -1 +1 @@
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 NotificationCenterFilter,\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 const {\n isOpen,\n setIsOpen,\n filter,\n setFilter,\n unreadCount,\n filteredNotifications,\n groupedNotifications,\n notificationCount,\n handleNotificationClick,\n handleMarkAllAsRead,\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 const noNotificationsLabel = t('noNotifications');\n const markAllReadLabel = t('markAllRead');\n const clearAllLabel = t('clearAll');\n const dismissLabel = t('dismiss');\n const unreadLabel = t('unread');\n const allLabel = t('all');\n const filtersLabel = t('filters');\n\n const todayLabel = t('groupToday');\n const yesterdayLabel = t('groupYesterday');\n const olderLabel = t('groupOlder');\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 filteredNotifications[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 !notification.isRead && 'bg-accent/50',\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 <button\n type=\"button\"\n onClick={() => handleNotificationClick(notification)}\n className=\"min-w-0 flex-1 text-start rounded-sm focus:outline-none focus-ring-offset\"\n aria-label={rowLabel}\n >\n <p className={`text-sm font-medium ${!notification.isRead ? 'text-foreground' : 'text-muted-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 </button>\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 handleNotificationClick(notification);\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 const renderNotificationGroup = (\n groupLabel: string,\n items: typeof groupedNotifications.today,\n ) => {\n if (items.length === 0) return null;\n\n return (\n <div className=\"space-y-item-xs\">\n <div className=\"px-card-sm py-item-xs text-xs font-medium text-muted-foreground uppercase tracking-wider\">\n {groupLabel}\n </div>\n {items.map(renderNotificationItem)}\n </div>\n );\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={handleMarkAllAsRead}\n disabled={unreadCount === 0}\n >\n {markAllReadLabel}\n </Button>\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 {/* Filter tabs */}\n <div className=\"flex border-b\" role=\"group\" aria-label={filtersLabel}>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => setFilter(NotificationCenterFilter.ALL)}\n aria-pressed={filter === NotificationCenterFilter.ALL}\n className={cn('flex-1 rounded-none', filter === NotificationCenterFilter.ALL && 'border-b-2 border-primary')}\n >\n {allLabel}\n </Button>\n <Button\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.SM}\n onClick={() => setFilter(NotificationCenterFilter.UNREAD)}\n aria-pressed={filter === NotificationCenterFilter.UNREAD}\n className={cn('flex-1 rounded-none', filter === NotificationCenterFilter.UNREAD && 'border-b-2 border-primary')}\n >\n {unreadLabel}\n </Button>\n </div>\n\n {/* Notifications list */}\n <ScrollArea className=\"h-[400px]\">\n <div className=\"p-card-sm space-y-field-sm\">\n {filteredNotifications.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 <>\n {renderNotificationGroup(todayLabel, groupedNotifications.today)}\n {renderNotificationGroup(yesterdayLabel, groupedNotifications.yesterday)}\n {renderNotificationGroup(olderLabel, groupedNotifications.older)}\n </>\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,EA6DzE,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,EA0DzE,CAAC"}
@@ -4,19 +4,19 @@ import { FrontendComponentType, LabelKind, registerComponentLabels, } from '@wil
4
4
  // the dev companion; NOT imported at runtime, so it never ships in the bundle.
5
5
  export const ApplicationLevelNotificationCenterLabels = [
6
6
  { ref: 'title', kind: LabelKind.HEADING, purpose: 'Heading for the notification-center panel' },
7
- { ref: 'noNotifications', kind: LabelKind.EMPTY_STATE, purpose: 'Shown when the inbox has no notifications' },
8
- { ref: 'markAllRead', kind: LabelKind.BUTTON, purpose: 'Button that marks every notification as read' },
9
- { ref: 'clearAll', kind: LabelKind.BUTTON, purpose: 'Button that clears all notifications from the inbox' },
10
- { ref: 'dismiss', kind: LabelKind.BUTTON, purpose: 'Action that dismisses a single notification' },
11
- { ref: 'showMore', kind: LabelKind.BUTTON, purpose: 'Button that reveals additional notifications' },
12
- { ref: 'unread', kind: LabelKind.LABEL, purpose: 'Filter label restricting the list to unread notifications' },
13
- { ref: 'all', kind: LabelKind.LABEL, purpose: 'Filter label showing all notifications' },
7
+ /*
8
+ * The empty state names WHY it is empty (#412). The centre is a session feed over a store with no
9
+ * persistence, so it is empty on every page load; the retired `noNotifications` said "no
10
+ * notifications", which a person who had just reloaded would read as "nothing has happened".
11
+ */
14
12
  {
15
- ref: 'unreadCount',
16
- kind: LabelKind.LABEL,
17
- purpose: 'Badge summarizing how many notifications are unread',
18
- params: [{ key: 'count', meaning: 'number of unread notifications' }],
13
+ ref: 'noNotificationsThisSession',
14
+ kind: LabelKind.EMPTY_STATE,
15
+ 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.',
19
16
  },
17
+ { ref: 'clearAll', kind: LabelKind.BUTTON, purpose: 'Button that clears all notifications from the session feed' },
18
+ { ref: 'dismiss', kind: LabelKind.BUTTON, purpose: 'Action that dismisses a single notification' },
19
+ { ref: 'showMore', kind: LabelKind.BUTTON, purpose: 'Button that reveals additional notifications' },
20
20
  { ref: 'timeJustNow', kind: LabelKind.LABEL, purpose: 'Relative timestamp for notifications less than a minute old' },
21
21
  {
22
22
  ref: 'timeMinutesAgo',
@@ -36,9 +36,6 @@ export const ApplicationLevelNotificationCenterLabels = [
36
36
  purpose: 'Relative timestamp expressing how many days ago a notification arrived',
37
37
  params: [{ key: 'count', meaning: 'number of days elapsed' }],
38
38
  },
39
- { ref: 'groupToday', kind: LabelKind.HEADING, purpose: 'Group header for notifications received today' },
40
- { ref: 'groupYesterday', kind: LabelKind.HEADING, purpose: 'Group header for notifications received yesterday' },
41
- { ref: 'groupOlder', kind: LabelKind.HEADING, purpose: 'Group header for notifications older than yesterday' },
42
39
  {
43
40
  ref: 'defaultSuccess',
44
41
  kind: LabelKind.MESSAGE,
@@ -1 +1 @@
1
- {"version":3,"file":"notification-center.labels.js","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/notification-center.labels.ts"],"names":[],"mappings":"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","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 { ref: 'noNotifications', kind: LabelKind.EMPTY_STATE, purpose: 'Shown when the inbox has no notifications' },\n { ref: 'markAllRead', kind: LabelKind.BUTTON, purpose: 'Button that marks every notification as read' },\n { ref: 'clearAll', kind: LabelKind.BUTTON, purpose: 'Button that clears all notifications from the inbox' },\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: 'unread', kind: LabelKind.LABEL, purpose: 'Filter label restricting the list to unread notifications' },\n { ref: 'all', kind: LabelKind.LABEL, purpose: 'Filter label showing all notifications' },\n {\n ref: 'unreadCount',\n kind: LabelKind.LABEL,\n purpose: 'Badge summarizing how many notifications are unread',\n params: [{ key: 'count', meaning: 'number of unread notifications' }],\n },\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 { ref: 'groupToday', kind: LabelKind.HEADING, purpose: 'Group header for notifications received today' },\n { ref: 'groupYesterday', kind: LabelKind.HEADING, purpose: 'Group header for notifications received yesterday' },\n { ref: 'groupOlder', kind: LabelKind.HEADING, purpose: 'Group header for notifications older than yesterday' },\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,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 +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,EAIxE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"quick-switcher.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/quick-switcher.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAkB1D,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,6BAA6B,CAAC;AAGvF,eAAO,MAAM,4CAA4C,EAAE,KAAK,CAAC,EAAE,CAAC,mCAAmC,CAqJtG,CAAC"}
1
+ {"version":3,"file":"quick-switcher.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/quick-switcher.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAkB1D,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,6BAA6B,CAAC;AAGvF,eAAO,MAAM,4CAA4C,EAAE,KAAK,CAAC,EAAE,CAAC,mCAAmC,CAqJtG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"quick-switcher.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/quick-switcher.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,mCAAmC,EAAE,mBAAmB,EAOpE,CAAC"}
1
+ {"version":3,"file":"quick-switcher.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/quick-switcher.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EAEzB,MAAM,qCAAqC,CAAC;AAM7C,eAAO,MAAM,mCAAmC,EAAE,mBAAmB,EAOpE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../../../src/components/navigation/app-level/sidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAOL,6BAA6B,EA6B9B,MAAM,6BAA6B,CAAC;AAerC,eAAO,MAAM,sCAAsC,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAs4B1F,CAAC"}
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../../src/components/navigation/app-level/sidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAOL,6BAA6B,EA6B9B,MAAM,6BAA6B,CAAC;AAerC,eAAO,MAAM,sCAAsC,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAw5B1F,CAAC"}