@wildo-ai/presets-components 1.1.4 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (780) hide show
  1. package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
  2. package/dist/esm/components/actions/action-bar.js +65 -8
  3. package/dist/esm/components/actions/action-bar.js.map +1 -1
  4. package/dist/esm/components/actions/action-bar.labels.d.ts.map +1 -1
  5. package/dist/esm/components/actions/action-button.d.ts.map +1 -1
  6. package/dist/esm/components/actions/action-button.js +3 -3
  7. package/dist/esm/components/actions/action-button.js.map +1 -1
  8. package/dist/esm/components/actions/action-button.labels.d.ts.map +1 -1
  9. package/dist/esm/components/actions/button-group.d.ts.map +1 -1
  10. package/dist/esm/components/actions/button.d.ts.map +1 -1
  11. package/dist/esm/components/actions/button.js +62 -3
  12. package/dist/esm/components/actions/button.js.map +1 -1
  13. package/dist/esm/components/actions/button.labels.d.ts.map +1 -1
  14. package/dist/esm/components/ai-elements/artifacts/artifact-browser.d.ts.map +1 -1
  15. package/dist/esm/components/ai-elements/artifacts/artifact.d.ts.map +1 -1
  16. package/dist/esm/components/ai-elements/artifacts/artifact.labels.d.ts.map +1 -1
  17. package/dist/esm/components/ai-elements/artifacts/code-block.d.ts.map +1 -1
  18. package/dist/esm/components/ai-elements/artifacts/code-block.js +1 -1
  19. package/dist/esm/components/ai-elements/artifacts/code-block.js.map +1 -1
  20. package/dist/esm/components/ai-elements/artifacts/code-block.labels.d.ts.map +1 -1
  21. package/dist/esm/components/ai-elements/artifacts/diff-block.d.ts +4 -0
  22. package/dist/esm/components/ai-elements/artifacts/diff-block.d.ts.map +1 -0
  23. package/dist/esm/components/ai-elements/artifacts/diff-block.js +165 -0
  24. package/dist/esm/components/ai-elements/artifacts/diff-block.js.map +1 -0
  25. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.d.ts +3 -0
  26. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.d.ts.map +1 -0
  27. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.js +63 -0
  28. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.js.map +1 -0
  29. package/dist/esm/components/ai-elements/artifacts/image.d.ts.map +1 -1
  30. package/dist/esm/components/ai-elements/artifacts/image.labels.d.ts.map +1 -1
  31. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter-runtime.d.ts.map +1 -1
  32. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter.lazy.d.ts.map +1 -1
  33. package/dist/esm/components/ai-elements/artifacts/web-preview.d.ts.map +1 -1
  34. package/dist/esm/components/ai-elements/artifacts/web-preview.labels.d.ts.map +1 -1
  35. package/dist/esm/components/ai-elements/chat/conversation.d.ts.map +1 -1
  36. package/dist/esm/components/ai-elements/chat/conversation.labels.d.ts.map +1 -1
  37. package/dist/esm/components/ai-elements/chat/message.d.ts.map +1 -1
  38. package/dist/esm/components/ai-elements/chat/message.labels.d.ts.map +1 -1
  39. package/dist/esm/components/ai-elements/chat/prompt-input.d.ts.map +1 -1
  40. package/dist/esm/components/ai-elements/chat/prompt-input.labels.d.ts.map +1 -1
  41. package/dist/esm/components/ai-elements/chat/sources.d.ts.map +1 -1
  42. package/dist/esm/components/ai-elements/chat/sources.labels.d.ts.map +1 -1
  43. package/dist/esm/components/ai-elements/chat/suggestion.d.ts.map +1 -1
  44. package/dist/esm/components/ai-elements/chat/suggestion.js +8 -1
  45. package/dist/esm/components/ai-elements/chat/suggestion.js.map +1 -1
  46. package/dist/esm/components/ai-elements/chat/suggestion.labels.d.ts.map +1 -1
  47. package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts +68 -0
  48. package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts.map +1 -0
  49. package/dist/esm/components/ai-elements/decision/approval-argument-fields.js +208 -0
  50. package/dist/esm/components/ai-elements/decision/approval-argument-fields.js.map +1 -0
  51. package/dist/esm/components/ai-elements/decision/approval.d.ts +124 -17
  52. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  53. package/dist/esm/components/ai-elements/decision/approval.js +105 -13
  54. package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
  55. package/dist/esm/components/ai-elements/decision/decision-request.d.ts.map +1 -1
  56. package/dist/esm/components/ai-elements/decision/decision-request.labels.d.ts.map +1 -1
  57. package/dist/esm/components/ai-elements/execution/confirmation.d.ts.map +1 -1
  58. package/dist/esm/components/ai-elements/execution/confirmation.labels.d.ts.map +1 -1
  59. package/dist/esm/components/ai-elements/execution/queue.d.ts.map +1 -1
  60. package/dist/esm/components/ai-elements/execution/queue.labels.d.ts.map +1 -1
  61. package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
  62. package/dist/esm/components/ai-elements/execution/task.js +1 -1
  63. package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
  64. package/dist/esm/components/ai-elements/execution/task.labels.d.ts.map +1 -1
  65. package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
  66. package/dist/esm/components/ai-elements/execution/tool.js +8 -1
  67. package/dist/esm/components/ai-elements/execution/tool.js.map +1 -1
  68. package/dist/esm/components/ai-elements/execution/tool.labels.d.ts.map +1 -1
  69. package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
  70. package/dist/esm/components/ai-elements/graph/canvas.labels.d.ts.map +1 -1
  71. package/dist/esm/components/ai-elements/graph/connection.d.ts.map +1 -1
  72. package/dist/esm/components/ai-elements/graph/connection.labels.d.ts.map +1 -1
  73. package/dist/esm/components/ai-elements/graph/controls.d.ts.map +1 -1
  74. package/dist/esm/components/ai-elements/graph/controls.labels.d.ts.map +1 -1
  75. package/dist/esm/components/ai-elements/graph/edge.d.ts.map +1 -1
  76. package/dist/esm/components/ai-elements/graph/edge.labels.d.ts.map +1 -1
  77. package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts +3 -1
  78. package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts.map +1 -1
  79. package/dist/esm/components/ai-elements/graph/graph-runtime.js +3 -1
  80. package/dist/esm/components/ai-elements/graph/graph-runtime.js.map +1 -1
  81. package/dist/esm/components/ai-elements/graph/graph.lazy.d.ts.map +1 -1
  82. package/dist/esm/components/ai-elements/graph/graph.lazy.js +15 -15
  83. package/dist/esm/components/ai-elements/graph/graph.lazy.js.map +1 -1
  84. package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
  85. package/dist/esm/components/ai-elements/graph/node.labels.d.ts.map +1 -1
  86. package/dist/esm/components/ai-elements/graph/panel.d.ts.map +1 -1
  87. package/dist/esm/components/ai-elements/graph/panel.labels.d.ts.map +1 -1
  88. package/dist/esm/components/ai-elements/graph/toolbar.d.ts.map +1 -1
  89. package/dist/esm/components/ai-elements/graph/toolbar.labels.d.ts.map +1 -1
  90. package/dist/esm/components/ai-elements/meta/agent.d.ts +0 -1
  91. package/dist/esm/components/ai-elements/meta/agent.d.ts.map +1 -1
  92. package/dist/esm/components/ai-elements/meta/agent.js +23 -18
  93. package/dist/esm/components/ai-elements/meta/agent.js.map +1 -1
  94. package/dist/esm/components/ai-elements/meta/context.d.ts.map +1 -1
  95. package/dist/esm/components/ai-elements/meta/context.labels.d.ts.map +1 -1
  96. package/dist/esm/components/ai-elements/meta/context.lazy.d.ts.map +1 -1
  97. package/dist/esm/components/ai-elements/meta/context.lazy.js +13 -11
  98. package/dist/esm/components/ai-elements/meta/context.lazy.js.map +1 -1
  99. package/dist/esm/components/ai-elements/meta/model-selector.d.ts.map +1 -1
  100. package/dist/esm/components/ai-elements/meta/model-selector.labels.d.ts.map +1 -1
  101. package/dist/esm/components/ai-elements/meta/open-in-chat.d.ts.map +1 -1
  102. package/dist/esm/components/ai-elements/meta/open-in-chat.labels.d.ts.map +1 -1
  103. package/dist/esm/components/ai-elements/shared/loader.d.ts.map +1 -1
  104. package/dist/esm/components/ai-elements/shared/loader.labels.d.ts.map +1 -1
  105. package/dist/esm/components/ai-elements/shared/shimmer.d.ts.map +1 -1
  106. package/dist/esm/components/ai-elements/shared/shimmer.labels.d.ts.map +1 -1
  107. package/dist/esm/components/ai-elements/stream/execution-stream.d.ts.map +1 -1
  108. package/dist/esm/components/ai-elements/stream/execution-stream.labels.d.ts.map +1 -1
  109. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts +6 -0
  110. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts.map +1 -1
  111. package/dist/esm/components/ai-elements/trace/chain-of-thought.js +13 -1
  112. package/dist/esm/components/ai-elements/trace/chain-of-thought.js.map +1 -1
  113. package/dist/esm/components/ai-elements/trace/chain-of-thought.labels.d.ts.map +1 -1
  114. package/dist/esm/components/ai-elements/trace/checkpoint.d.ts.map +1 -1
  115. package/dist/esm/components/ai-elements/trace/checkpoint.labels.d.ts.map +1 -1
  116. package/dist/esm/components/ai-elements/trace/inline-citation.d.ts.map +1 -1
  117. package/dist/esm/components/ai-elements/trace/inline-citation.labels.d.ts.map +1 -1
  118. package/dist/esm/components/ai-elements/trace/plan.d.ts.map +1 -1
  119. package/dist/esm/components/ai-elements/trace/plan.labels.d.ts.map +1 -1
  120. package/dist/esm/components/ai-elements/trace/reasoning.d.ts.map +1 -1
  121. package/dist/esm/components/ai-elements/trace/reasoning.labels.d.ts.map +1 -1
  122. package/dist/esm/components/app/app-layout-consent-gate.d.ts +23 -0
  123. package/dist/esm/components/app/app-layout-consent-gate.d.ts.map +1 -0
  124. package/dist/esm/components/app/app-layout-consent-gate.js +133 -0
  125. package/dist/esm/components/app/app-layout-consent-gate.js.map +1 -0
  126. package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts +19 -0
  127. package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts.map +1 -0
  128. package/dist/esm/components/app/app-layout-document-acceptance-gate.js +56 -0
  129. package/dist/esm/components/app/app-layout-document-acceptance-gate.js.map +1 -0
  130. package/dist/esm/components/app/app-layout-main-container.d.ts +9 -0
  131. package/dist/esm/components/app/app-layout-main-container.d.ts.map +1 -1
  132. package/dist/esm/components/app/app-layout-main-container.js +17 -23
  133. package/dist/esm/components/app/app-layout-main-container.js.map +1 -1
  134. package/dist/esm/components/app/app-layout-main-container.labels.d.ts.map +1 -1
  135. package/dist/esm/components/app/app-layout-main-container.labels.js +48 -0
  136. package/dist/esm/components/app/app-layout-main-container.labels.js.map +1 -1
  137. package/dist/esm/components/app/public-layout-main-container.d.ts +1 -1
  138. package/dist/esm/components/app/public-layout-main-container.d.ts.map +1 -1
  139. package/dist/esm/components/app/public-layout-main-container.js +9 -8
  140. package/dist/esm/components/app/public-layout-main-container.js.map +1 -1
  141. package/dist/esm/components/app/public-layout-main-container.labels.d.ts.map +1 -1
  142. package/dist/esm/components/app/public-layout-terms.d.ts +46 -0
  143. package/dist/esm/components/app/public-layout-terms.d.ts.map +1 -0
  144. package/dist/esm/components/app/public-layout-terms.js +137 -0
  145. package/dist/esm/components/app/public-layout-terms.js.map +1 -0
  146. package/dist/esm/components/billing/billing-format.utils.d.ts.map +1 -1
  147. package/dist/esm/components/billing/billing-invoice-history.d.ts +1 -1
  148. package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
  149. package/dist/esm/components/billing/billing-invoice-history.js +3 -1
  150. package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
  151. package/dist/esm/components/billing/billing-invoice-history.labels.d.ts.map +1 -1
  152. package/dist/esm/components/billing/billing-invoice-history.labels.js +1 -0
  153. package/dist/esm/components/billing/billing-invoice-history.labels.js.map +1 -1
  154. package/dist/esm/components/billing/billing-plan-change-preview.d.ts +5 -0
  155. package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +1 -0
  156. package/dist/esm/components/billing/billing-plan-change-preview.js +25 -0
  157. package/dist/esm/components/billing/billing-plan-change-preview.js.map +1 -0
  158. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts +3 -0
  159. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts.map +1 -0
  160. package/dist/esm/components/billing/billing-plan-change-preview.labels.js +22 -0
  161. package/dist/esm/components/billing/billing-plan-change-preview.labels.js.map +1 -0
  162. package/dist/esm/components/billing/billing-portal-link.d.ts +1 -1
  163. package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
  164. package/dist/esm/components/billing/billing-portal-link.js +3 -1
  165. package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
  166. package/dist/esm/components/billing/billing-portal-link.labels.d.ts.map +1 -1
  167. package/dist/esm/components/billing/billing-portal-link.labels.js +1 -0
  168. package/dist/esm/components/billing/billing-portal-link.labels.js.map +1 -1
  169. package/dist/esm/components/billing/billing-pricing-table.d.ts +1 -1
  170. package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
  171. package/dist/esm/components/billing/billing-pricing-table.js +10 -4
  172. package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
  173. package/dist/esm/components/billing/billing-pricing-table.labels.d.ts.map +1 -1
  174. package/dist/esm/components/billing/billing-pricing-table.labels.js +8 -1
  175. package/dist/esm/components/billing/billing-pricing-table.labels.js.map +1 -1
  176. package/dist/esm/components/billing/billing-subscription-status.d.ts +1 -1
  177. package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
  178. package/dist/esm/components/billing/billing-subscription-status.js +3 -1
  179. package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
  180. package/dist/esm/components/billing/billing-subscription-status.labels.d.ts.map +1 -1
  181. package/dist/esm/components/billing/billing-subscription-status.labels.js +1 -0
  182. package/dist/esm/components/billing/billing-subscription-status.labels.js.map +1 -1
  183. package/dist/esm/components/billing/billing-usage-dashboard.d.ts +1 -1
  184. package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
  185. package/dist/esm/components/billing/billing-usage-dashboard.js +10 -7
  186. package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
  187. package/dist/esm/components/billing/billing-usage-dashboard.labels.d.ts.map +1 -1
  188. package/dist/esm/components/billing/billing-usage-dashboard.labels.js +4 -1
  189. package/dist/esm/components/billing/billing-usage-dashboard.labels.js.map +1 -1
  190. package/dist/esm/components/data-display/avatar.d.ts.map +1 -1
  191. package/dist/esm/components/data-display/avatar.labels.d.ts.map +1 -1
  192. package/dist/esm/components/data-display/badge.d.ts.map +1 -1
  193. package/dist/esm/components/data-display/badge.js +16 -15
  194. package/dist/esm/components/data-display/badge.js.map +1 -1
  195. package/dist/esm/components/data-display/badge.labels.d.ts.map +1 -1
  196. package/dist/esm/components/data-display/description-list.d.ts +2 -1
  197. package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
  198. package/dist/esm/components/data-display/description-list.js +24 -8
  199. package/dist/esm/components/data-display/description-list.js.map +1 -1
  200. package/dist/esm/components/data-display/description-list.labels.d.ts.map +1 -1
  201. package/dist/esm/components/data-display/duration.d.ts +15 -0
  202. package/dist/esm/components/data-display/duration.d.ts.map +1 -0
  203. package/dist/esm/components/data-display/duration.js +50 -0
  204. package/dist/esm/components/data-display/duration.js.map +1 -0
  205. package/dist/esm/components/data-display/duration.labels.d.ts +15 -0
  206. package/dist/esm/components/data-display/duration.labels.d.ts.map +1 -0
  207. package/dist/esm/components/data-display/duration.labels.js +35 -0
  208. package/dist/esm/components/data-display/duration.labels.js.map +1 -0
  209. package/dist/esm/components/data-display/formatters/display-field-address.d.ts +21 -0
  210. package/dist/esm/components/data-display/formatters/display-field-address.d.ts.map +1 -0
  211. package/dist/esm/components/data-display/formatters/display-field-address.js +75 -0
  212. package/dist/esm/components/data-display/formatters/display-field-address.js.map +1 -0
  213. package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts +3 -0
  214. package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts.map +1 -0
  215. package/dist/esm/components/data-display/formatters/display-field-address.labels.js +13 -0
  216. package/dist/esm/components/data-display/formatters/display-field-address.labels.js.map +1 -0
  217. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.d.ts.map +1 -1
  218. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js +6 -2
  219. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js.map +1 -1
  220. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.labels.d.ts.map +1 -1
  221. package/dist/esm/components/data-display/formatters/display-field-boolean.d.ts.map +1 -1
  222. package/dist/esm/components/data-display/formatters/display-field-boolean.js +2 -2
  223. package/dist/esm/components/data-display/formatters/display-field-boolean.js.map +1 -1
  224. package/dist/esm/components/data-display/formatters/display-field-boolean.labels.d.ts.map +1 -1
  225. package/dist/esm/components/data-display/formatters/display-field-code.d.ts.map +1 -1
  226. package/dist/esm/components/data-display/formatters/display-field-code.js +2 -2
  227. package/dist/esm/components/data-display/formatters/display-field-code.js.map +1 -1
  228. package/dist/esm/components/data-display/formatters/display-field-code.labels.d.ts.map +1 -1
  229. package/dist/esm/components/data-display/formatters/display-field-date.d.ts +3 -3
  230. package/dist/esm/components/data-display/formatters/display-field-date.d.ts.map +1 -1
  231. package/dist/esm/components/data-display/formatters/display-field-date.js +17 -4
  232. package/dist/esm/components/data-display/formatters/display-field-date.js.map +1 -1
  233. package/dist/esm/components/data-display/formatters/display-field-date.labels.d.ts.map +1 -1
  234. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts +3 -3
  235. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts.map +1 -1
  236. package/dist/esm/components/data-display/formatters/display-field-datetime.js +17 -4
  237. package/dist/esm/components/data-display/formatters/display-field-datetime.js.map +1 -1
  238. package/dist/esm/components/data-display/formatters/display-field-datetime.labels.d.ts.map +1 -1
  239. package/dist/esm/components/data-display/formatters/display-field-duration.d.ts.map +1 -1
  240. package/dist/esm/components/data-display/formatters/display-field-duration.labels.d.ts.map +1 -1
  241. package/dist/esm/components/data-display/formatters/display-field-enum.d.ts.map +1 -1
  242. package/dist/esm/components/data-display/formatters/display-field-enum.js +29 -11
  243. package/dist/esm/components/data-display/formatters/display-field-enum.js.map +1 -1
  244. package/dist/esm/components/data-display/formatters/display-field-enum.labels.d.ts.map +1 -1
  245. package/dist/esm/components/data-display/formatters/display-field-file-audio.d.ts.map +1 -1
  246. package/dist/esm/components/data-display/formatters/display-field-file-audio.js +2 -1
  247. package/dist/esm/components/data-display/formatters/display-field-file-audio.js.map +1 -1
  248. package/dist/esm/components/data-display/formatters/display-field-file-audio.labels.d.ts.map +1 -1
  249. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts +4 -1
  250. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts.map +1 -1
  251. package/dist/esm/components/data-display/formatters/display-field-file-document.js +18 -5
  252. package/dist/esm/components/data-display/formatters/display-field-file-document.js.map +1 -1
  253. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.d.ts.map +1 -1
  254. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js +20 -0
  255. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js.map +1 -1
  256. package/dist/esm/components/data-display/formatters/display-field-file-gallery.d.ts.map +1 -1
  257. package/dist/esm/components/data-display/formatters/display-field-file-gallery.labels.d.ts.map +1 -1
  258. package/dist/esm/components/data-display/formatters/display-field-file-image.d.ts.map +1 -1
  259. package/dist/esm/components/data-display/formatters/display-field-file-image.js +3 -1
  260. package/dist/esm/components/data-display/formatters/display-field-file-image.js.map +1 -1
  261. package/dist/esm/components/data-display/formatters/display-field-file-image.labels.d.ts.map +1 -1
  262. package/dist/esm/components/data-display/formatters/display-field-file-video.d.ts.map +1 -1
  263. package/dist/esm/components/data-display/formatters/display-field-file-video.labels.d.ts.map +1 -1
  264. package/dist/esm/components/data-display/formatters/display-field-file.d.ts.map +1 -1
  265. package/dist/esm/components/data-display/formatters/display-field-file.js +14 -15
  266. package/dist/esm/components/data-display/formatters/display-field-file.js.map +1 -1
  267. package/dist/esm/components/data-display/formatters/display-field-file.labels.d.ts.map +1 -1
  268. package/dist/esm/components/data-display/formatters/display-field-file.labels.js +2 -0
  269. package/dist/esm/components/data-display/formatters/display-field-file.labels.js.map +1 -1
  270. package/dist/esm/components/data-display/formatters/display-field-format.utils.d.ts.map +1 -1
  271. package/dist/esm/components/data-display/formatters/display-field-i18n.utils.d.ts.map +1 -1
  272. package/dist/esm/components/data-display/formatters/display-field-money.d.ts.map +1 -1
  273. package/dist/esm/components/data-display/formatters/display-field-money.labels.d.ts.map +1 -1
  274. package/dist/esm/components/data-display/formatters/display-field-number.d.ts.map +1 -1
  275. package/dist/esm/components/data-display/formatters/display-field-number.js +8 -3
  276. package/dist/esm/components/data-display/formatters/display-field-number.js.map +1 -1
  277. package/dist/esm/components/data-display/formatters/display-field-number.labels.d.ts.map +1 -1
  278. package/dist/esm/components/data-display/formatters/display-field-number.labels.js +5 -2
  279. package/dist/esm/components/data-display/formatters/display-field-number.labels.js.map +1 -1
  280. package/dist/esm/components/data-display/formatters/display-field-phone.d.ts.map +1 -1
  281. package/dist/esm/components/data-display/formatters/display-field-phone.labels.d.ts.map +1 -1
  282. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.d.ts.map +1 -1
  283. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.labels.d.ts.map +1 -1
  284. package/dist/esm/components/data-display/formatters/display-field-range-date.d.ts.map +1 -1
  285. package/dist/esm/components/data-display/formatters/display-field-range-date.labels.d.ts.map +1 -1
  286. package/dist/esm/components/data-display/formatters/display-field-range-datetime.d.ts.map +1 -1
  287. package/dist/esm/components/data-display/formatters/display-field-range-datetime.labels.d.ts.map +1 -1
  288. package/dist/esm/components/data-display/formatters/display-field-range-money.d.ts.map +1 -1
  289. package/dist/esm/components/data-display/formatters/display-field-range-money.labels.d.ts.map +1 -1
  290. package/dist/esm/components/data-display/formatters/display-field-range-number.d.ts.map +1 -1
  291. package/dist/esm/components/data-display/formatters/display-field-range-number.labels.d.ts.map +1 -1
  292. package/dist/esm/components/data-display/formatters/display-field-range-time.d.ts.map +1 -1
  293. package/dist/esm/components/data-display/formatters/display-field-range-time.labels.d.ts.map +1 -1
  294. package/dist/esm/components/data-display/formatters/display-field-string.d.ts +1 -1
  295. package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
  296. package/dist/esm/components/data-display/formatters/display-field-string.js +129 -15
  297. package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
  298. package/dist/esm/components/data-display/formatters/display-field-string.labels.d.ts.map +1 -1
  299. package/dist/esm/components/data-display/formatters/display-field-time.d.ts.map +1 -1
  300. package/dist/esm/components/data-display/formatters/display-field-time.labels.d.ts.map +1 -1
  301. package/dist/esm/components/data-display/identifier.d.ts +19 -0
  302. package/dist/esm/components/data-display/identifier.d.ts.map +1 -0
  303. package/dist/esm/components/data-display/identifier.js +21 -0
  304. package/dist/esm/components/data-display/identifier.js.map +1 -0
  305. package/dist/esm/components/data-display/kbd.d.ts +17 -0
  306. package/dist/esm/components/data-display/kbd.d.ts.map +1 -0
  307. package/dist/esm/components/data-display/kbd.js +18 -0
  308. package/dist/esm/components/data-display/kbd.js.map +1 -0
  309. package/dist/esm/components/data-display/markdown-content.d.ts.map +1 -1
  310. package/dist/esm/components/data-display/markdown-stream-runtime.d.ts.map +1 -1
  311. package/dist/esm/components/data-display/markdown-stream.lazy.d.ts.map +1 -1
  312. package/dist/esm/components/data-display/markdown-stream.lazy.js +13 -2
  313. package/dist/esm/components/data-display/markdown-stream.lazy.js.map +1 -1
  314. package/dist/esm/components/data-display/notification-indicator.d.ts.map +1 -1
  315. package/dist/esm/components/data-display/notification-indicator.js +3 -11
  316. package/dist/esm/components/data-display/notification-indicator.js.map +1 -1
  317. package/dist/esm/components/data-display/notification-indicator.labels.d.ts.map +1 -1
  318. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts +63 -0
  319. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts.map +1 -0
  320. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js +75 -0
  321. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js.map +1 -0
  322. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts +32 -0
  323. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts.map +1 -0
  324. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js +36 -0
  325. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js.map +1 -0
  326. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts +46 -6
  327. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  328. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js +70 -46
  329. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js.map +1 -1
  330. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts +12 -2
  331. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts.map +1 -1
  332. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js +3 -2
  333. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js.map +1 -1
  334. package/dist/esm/components/data-display/timeline.d.ts +3 -0
  335. package/dist/esm/components/data-display/timeline.d.ts.map +1 -0
  336. package/dist/esm/components/data-display/timeline.js +92 -0
  337. package/dist/esm/components/data-display/timeline.js.map +1 -0
  338. package/dist/esm/components/data-display/untrusted-html-content.d.ts +55 -0
  339. package/dist/esm/components/data-display/untrusted-html-content.d.ts.map +1 -0
  340. package/dist/esm/components/data-display/untrusted-html-content.js +67 -0
  341. package/dist/esm/components/data-display/untrusted-html-content.js.map +1 -0
  342. package/dist/esm/components/feedback/celebration-overlay.d.ts +13 -4
  343. package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
  344. package/dist/esm/components/feedback/celebration-overlay.js +146 -22
  345. package/dist/esm/components/feedback/celebration-overlay.js.map +1 -1
  346. package/dist/esm/components/feedback/celebration-overlay.labels.d.ts.map +1 -1
  347. package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
  348. package/dist/esm/components/feedback/danger-zone.labels.d.ts.map +1 -1
  349. package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
  350. package/dist/esm/components/feedback/empty-state.js.map +1 -1
  351. package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
  352. package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
  353. package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
  354. package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
  355. package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
  356. package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
  357. package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
  358. package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
  359. package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
  360. package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
  361. package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
  362. package/dist/esm/components/feedback/features/feature-unavailable-prompt.labels.d.ts.map +1 -1
  363. package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
  364. package/dist/esm/components/feedback/loading-overlay.labels.d.ts.map +1 -1
  365. package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
  366. package/dist/esm/components/feedback/loading-spinner.labels.d.ts.map +1 -1
  367. package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
  368. package/dist/esm/components/feedback/notification-center.js +5 -5
  369. package/dist/esm/components/feedback/notification-center.js.map +1 -1
  370. package/dist/esm/components/feedback/operations-confirm-critical.d.ts +1 -1
  371. package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
  372. package/dist/esm/components/feedback/operations-confirm-critical.js +9 -7
  373. package/dist/esm/components/feedback/operations-confirm-critical.js.map +1 -1
  374. package/dist/esm/components/feedback/operations-confirm-critical.labels.d.ts.map +1 -1
  375. package/dist/esm/components/feedback/progress.d.ts.map +1 -1
  376. package/dist/esm/components/feedback/progress.labels.d.ts.map +1 -1
  377. package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
  378. package/dist/esm/components/feedback/skeleton.labels.d.ts.map +1 -1
  379. package/dist/esm/components/feedback/toast.d.ts.map +1 -1
  380. package/dist/esm/components/feedback/toast.labels.d.ts.map +1 -1
  381. package/dist/esm/components/form/autosave-indicator.d.ts.map +1 -1
  382. package/dist/esm/components/form/autosave-indicator.labels.d.ts.map +1 -1
  383. package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
  384. package/dist/esm/components/form/chromes/field.js +11 -3
  385. package/dist/esm/components/form/chromes/field.js.map +1 -1
  386. package/dist/esm/components/form/chromes/field.labels.d.ts.map +1 -1
  387. package/dist/esm/components/form/chromes/form-primitive.d.ts.map +1 -1
  388. package/dist/esm/components/form/chromes/form-primitive.labels.d.ts.map +1 -1
  389. package/dist/esm/components/form/chromes/form-primitive.labels.js +37 -0
  390. package/dist/esm/components/form/chromes/form-primitive.labels.js.map +1 -1
  391. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  392. package/dist/esm/components/form/combobox.js +14 -13
  393. package/dist/esm/components/form/combobox.js.map +1 -1
  394. package/dist/esm/components/form/combobox.labels.d.ts.map +1 -1
  395. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.adapter.d.ts +42 -0
  396. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.adapter.d.ts.map +1 -0
  397. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.adapter.js +120 -0
  398. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.adapter.js.map +1 -0
  399. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.d.ts +16 -0
  400. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.d.ts.map +1 -0
  401. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.js +8 -0
  402. package/dist/esm/components/form/controls/address/providers/google-places-address-lookup.js.map +1 -0
  403. package/dist/esm/components/form/controls/boolean/checkbox.d.ts.map +1 -1
  404. package/dist/esm/components/form/controls/boolean/checkbox.js +2 -2
  405. package/dist/esm/components/form/controls/boolean/checkbox.js.map +1 -1
  406. package/dist/esm/components/form/controls/boolean/checkbox.labels.d.ts.map +1 -1
  407. package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
  408. package/dist/esm/components/form/controls/boolean/switch.labels.d.ts.map +1 -1
  409. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
  410. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.labels.d.ts.map +1 -1
  411. package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
  412. package/dist/esm/components/form/controls/boolean/toggle.labels.d.ts.map +1 -1
  413. package/dist/esm/components/form/controls/code-editor/cm6-editor-appearance.d.ts.map +1 -1
  414. package/dist/esm/components/form/controls/code-editor/cm6-editor.d.ts.map +1 -1
  415. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.d.ts.map +1 -1
  416. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js +11 -2
  417. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js.map +1 -1
  418. package/dist/esm/components/form/controls/code-editor/form-field-code.d.ts.map +1 -1
  419. package/dist/esm/components/form/controls/code-editor/markdown-editor.d.ts.map +1 -1
  420. package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
  421. package/dist/esm/components/form/controls/date-time/calendar.labels.d.ts.map +1 -1
  422. package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
  423. package/dist/esm/components/form/controls/date-time/date-range-picker.labels.d.ts.map +1 -1
  424. package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
  425. package/dist/esm/components/form/controls/date-time/datepicker.labels.d.ts.map +1 -1
  426. package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
  427. package/dist/esm/components/form/controls/date-time/datetime-picker.labels.d.ts.map +1 -1
  428. package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
  429. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.d.ts.map +1 -1
  430. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js +11 -2
  431. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js.map +1 -1
  432. package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
  433. package/dist/esm/components/form/controls/date-time/time-picker.labels.d.ts.map +1 -1
  434. package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
  435. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.d.ts.map +1 -1
  436. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js +11 -2
  437. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js.map +1 -1
  438. package/dist/esm/components/form/controls/enum/radio.d.ts +1 -1
  439. package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
  440. package/dist/esm/components/form/controls/enum/radio.js +13 -12
  441. package/dist/esm/components/form/controls/enum/radio.js.map +1 -1
  442. package/dist/esm/components/form/controls/enum/radio.labels.d.ts.map +1 -1
  443. package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
  444. package/dist/esm/components/form/controls/enum/select-multiple.js +5 -3
  445. package/dist/esm/components/form/controls/enum/select-multiple.js.map +1 -1
  446. package/dist/esm/components/form/controls/enum/select-multiple.labels.d.ts.map +1 -1
  447. package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
  448. package/dist/esm/components/form/controls/enum/select.labels.d.ts.map +1 -1
  449. package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
  450. package/dist/esm/components/form/controls/enum/toggle-group.js +96 -5
  451. package/dist/esm/components/form/controls/enum/toggle-group.js.map +1 -1
  452. package/dist/esm/components/form/controls/enum/toggle-group.labels.d.ts.map +1 -1
  453. package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
  454. package/dist/esm/components/form/controls/file/file-upload.labels.d.ts.map +1 -1
  455. package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
  456. package/dist/esm/components/form/controls/file/image-crop.labels.d.ts.map +1 -1
  457. package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts +44 -0
  458. package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts.map +1 -0
  459. package/dist/esm/components/form/controls/file/providers/dropbox-picker.js +137 -0
  460. package/dist/esm/components/form/controls/file/providers/dropbox-picker.js.map +1 -0
  461. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts +22 -0
  462. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts.map +1 -0
  463. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js +27 -0
  464. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js.map +1 -0
  465. package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts +3 -1
  466. package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts.map +1 -1
  467. package/dist/esm/components/form/controls/file/providers/google-drive-picker.js +3 -1
  468. package/dist/esm/components/form/controls/file/providers/google-drive-picker.js.map +1 -1
  469. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts +6 -0
  470. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts.map +1 -1
  471. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js +8 -1
  472. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js.map +1 -1
  473. package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts +6 -2
  474. package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts.map +1 -1
  475. package/dist/esm/components/form/controls/file/providers/onedrive-picker.js +6 -2
  476. package/dist/esm/components/form/controls/file/providers/onedrive-picker.js.map +1 -1
  477. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts +6 -0
  478. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts.map +1 -1
  479. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js +8 -1
  480. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js.map +1 -1
  481. package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
  482. package/dist/esm/components/form/controls/input-group.labels.d.ts.map +1 -1
  483. package/dist/esm/components/form/controls/input.d.ts.map +1 -1
  484. package/dist/esm/components/form/controls/input.labels.d.ts.map +1 -1
  485. package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
  486. package/dist/esm/components/form/controls/number/slider.labels.d.ts.map +1 -1
  487. package/dist/esm/components/form/controls/number/slider.labels.js +9 -2
  488. package/dist/esm/components/form/controls/number/slider.labels.js.map +1 -1
  489. package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
  490. package/dist/esm/components/form/controls/string/color-input.labels.d.ts.map +1 -1
  491. package/dist/esm/components/form/controls/string/color-picker-surface.d.ts.map +1 -1
  492. package/dist/esm/components/form/controls/string/color-picker-surface.js.map +1 -1
  493. package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
  494. package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
  495. package/dist/esm/components/form/controls/string/input-otp.labels.d.ts.map +1 -1
  496. package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
  497. package/dist/esm/components/form/controls/string/password-input.labels.d.ts.map +1 -1
  498. package/dist/esm/components/form/controls/string/password-input.labels.js +9 -2
  499. package/dist/esm/components/form/controls/string/password-input.labels.js.map +1 -1
  500. package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
  501. package/dist/esm/components/form/controls/string/textarea.labels.d.ts.map +1 -1
  502. package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
  503. package/dist/esm/components/layout/aspect-ratio.labels.d.ts.map +1 -1
  504. package/dist/esm/components/layout/carousel.d.ts.map +1 -1
  505. package/dist/esm/components/layout/carousel.labels.d.ts.map +1 -1
  506. package/dist/esm/components/layout/divider.d.ts.map +1 -1
  507. package/dist/esm/components/layout/divider.labels.d.ts.map +1 -1
  508. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  509. package/dist/esm/components/layout/resizable.labels.d.ts.map +1 -1
  510. package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
  511. package/dist/esm/components/layout/scroll-area.labels.d.ts.map +1 -1
  512. package/dist/esm/components/layout/separator.d.ts.map +1 -1
  513. package/dist/esm/components/layout/separator.labels.d.ts.map +1 -1
  514. package/dist/esm/components/navigation/app-level/activity-bar.d.ts.map +1 -1
  515. package/dist/esm/components/navigation/app-level/activity-bar.js +2 -2
  516. package/dist/esm/components/navigation/app-level/activity-bar.js.map +1 -1
  517. package/dist/esm/components/navigation/app-level/activity-bar.labels.d.ts.map +1 -1
  518. package/dist/esm/components/navigation/app-level/command-menu.d.ts.map +1 -1
  519. package/dist/esm/components/navigation/app-level/command-menu.js +2 -2
  520. package/dist/esm/components/navigation/app-level/command-menu.js.map +1 -1
  521. package/dist/esm/components/navigation/app-level/command-menu.labels.d.ts.map +1 -1
  522. package/dist/esm/components/navigation/app-level/control-panel.d.ts.map +1 -1
  523. package/dist/esm/components/navigation/app-level/control-panel.labels.d.ts.map +1 -1
  524. package/dist/esm/components/navigation/app-level/menu-user-org.d.ts.map +1 -1
  525. package/dist/esm/components/navigation/app-level/menu-user-org.js +10 -4
  526. package/dist/esm/components/navigation/app-level/menu-user-org.js.map +1 -1
  527. package/dist/esm/components/navigation/app-level/menu-user-org.labels.d.ts.map +1 -1
  528. package/dist/esm/components/navigation/app-level/menu-user-org.labels.js +7 -0
  529. package/dist/esm/components/navigation/app-level/menu-user-org.labels.js.map +1 -1
  530. package/dist/esm/components/navigation/app-level/menubar.d.ts.map +1 -1
  531. package/dist/esm/components/navigation/app-level/menubar.js +36 -14
  532. package/dist/esm/components/navigation/app-level/menubar.js.map +1 -1
  533. package/dist/esm/components/navigation/app-level/menubar.labels.d.ts.map +1 -1
  534. package/dist/esm/components/navigation/app-level/navigation-back.d.ts.map +1 -1
  535. package/dist/esm/components/navigation/app-level/navigation-back.js +31 -5
  536. package/dist/esm/components/navigation/app-level/navigation-back.js.map +1 -1
  537. package/dist/esm/components/navigation/app-level/navigation-back.labels.d.ts.map +1 -1
  538. package/dist/esm/components/navigation/app-level/notification-center.d.ts.map +1 -1
  539. package/dist/esm/components/navigation/app-level/notification-center.js.map +1 -1
  540. package/dist/esm/components/navigation/app-level/notification-center.labels.d.ts.map +1 -1
  541. package/dist/esm/components/navigation/app-level/notification-center.labels.js +15 -0
  542. package/dist/esm/components/navigation/app-level/notification-center.labels.js.map +1 -1
  543. package/dist/esm/components/navigation/app-level/quick-action-button.d.ts.map +1 -1
  544. package/dist/esm/components/navigation/app-level/quick-action-button.labels.d.ts.map +1 -1
  545. package/dist/esm/components/navigation/app-level/quick-action-button.labels.js +4 -0
  546. package/dist/esm/components/navigation/app-level/quick-action-button.labels.js.map +1 -1
  547. package/dist/esm/components/navigation/app-level/quick-switcher.d.ts.map +1 -1
  548. package/dist/esm/components/navigation/app-level/quick-switcher.labels.d.ts.map +1 -1
  549. package/dist/esm/components/navigation/app-level/sidebar.d.ts.map +1 -1
  550. package/dist/esm/components/navigation/app-level/sidebar.js +41 -25
  551. package/dist/esm/components/navigation/app-level/sidebar.js.map +1 -1
  552. package/dist/esm/components/navigation/app-level/sidebar.labels.d.ts.map +1 -1
  553. package/dist/esm/components/navigation/app-level/sidebar.labels.js +1 -0
  554. package/dist/esm/components/navigation/app-level/sidebar.labels.js.map +1 -1
  555. package/dist/esm/components/navigation/app-level/status-bar.d.ts.map +1 -1
  556. package/dist/esm/components/navigation/app-level/status-bar.js +2 -2
  557. package/dist/esm/components/navigation/app-level/status-bar.js.map +1 -1
  558. package/dist/esm/components/navigation/app-level/status-bar.labels.d.ts.map +1 -1
  559. package/dist/esm/components/navigation/app-level/toolbar.d.ts.map +1 -1
  560. package/dist/esm/components/navigation/app-level/toolbar.js +2 -2
  561. package/dist/esm/components/navigation/app-level/toolbar.js.map +1 -1
  562. package/dist/esm/components/navigation/app-level/toolbar.labels.d.ts.map +1 -1
  563. package/dist/esm/components/navigation/app-level/utility-panel.d.ts.map +1 -1
  564. package/dist/esm/components/navigation/app-level/utility-panel.js +24 -6
  565. package/dist/esm/components/navigation/app-level/utility-panel.js.map +1 -1
  566. package/dist/esm/components/navigation/app-level/utility-panel.labels.d.ts.map +1 -1
  567. package/dist/esm/components/navigation/app-level/utility-panel.labels.js.map +1 -1
  568. package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
  569. package/dist/esm/components/navigation/breadcrumb.js +1 -1
  570. package/dist/esm/components/navigation/breadcrumb.js.map +1 -1
  571. package/dist/esm/components/navigation/breadcrumb.labels.d.ts.map +1 -1
  572. package/dist/esm/components/navigation/command.d.ts.map +1 -1
  573. package/dist/esm/components/navigation/command.js +2 -2
  574. package/dist/esm/components/navigation/command.js.map +1 -1
  575. package/dist/esm/components/navigation/command.labels.d.ts.map +1 -1
  576. package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
  577. package/dist/esm/components/navigation/menu-bar.labels.d.ts.map +1 -1
  578. package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
  579. package/dist/esm/components/navigation/navbar.labels.d.ts.map +1 -1
  580. package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
  581. package/dist/esm/components/navigation/sidebar.labels.d.ts.map +1 -1
  582. package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
  583. package/dist/esm/components/overlays/containers/alert-dialog.js +11 -1
  584. package/dist/esm/components/overlays/containers/alert-dialog.js.map +1 -1
  585. package/dist/esm/components/overlays/containers/alert-dialog.labels.d.ts.map +1 -1
  586. package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
  587. package/dist/esm/components/overlays/containers/alert.labels.d.ts.map +1 -1
  588. package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
  589. package/dist/esm/components/overlays/containers/dialog.js +11 -1
  590. package/dist/esm/components/overlays/containers/dialog.js.map +1 -1
  591. package/dist/esm/components/overlays/containers/dialog.labels.d.ts.map +1 -1
  592. package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
  593. package/dist/esm/components/overlays/containers/drawer.labels.d.ts.map +1 -1
  594. package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
  595. package/dist/esm/components/overlays/containers/sheet.labels.d.ts.map +1 -1
  596. package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
  597. package/dist/esm/components/overlays/floating/context-menu.labels.d.ts.map +1 -1
  598. package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
  599. package/dist/esm/components/overlays/floating/dropdown-menu.labels.d.ts.map +1 -1
  600. package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
  601. package/dist/esm/components/overlays/floating/hover-card.labels.d.ts.map +1 -1
  602. package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
  603. package/dist/esm/components/overlays/floating/popover.labels.d.ts.map +1 -1
  604. package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
  605. package/dist/esm/components/overlays/floating/tooltip.labels.d.ts.map +1 -1
  606. package/dist/esm/components/sections/accordion.d.ts.map +1 -1
  607. package/dist/esm/components/sections/accordion.labels.d.ts.map +1 -1
  608. package/dist/esm/components/sections/card.d.ts.map +1 -1
  609. package/dist/esm/components/sections/card.js +71 -6
  610. package/dist/esm/components/sections/card.js.map +1 -1
  611. package/dist/esm/components/sections/card.labels.d.ts.map +1 -1
  612. package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
  613. package/dist/esm/components/sections/collapsible.labels.d.ts.map +1 -1
  614. package/dist/esm/components/sections/content-section.d.ts.map +1 -1
  615. package/dist/esm/components/sections/content-section.js +36 -6
  616. package/dist/esm/components/sections/content-section.js.map +1 -1
  617. package/dist/esm/components/sections/disclosure-nesting.d.ts.map +1 -1
  618. package/dist/esm/components/sections/option-gesture.d.ts +15 -0
  619. package/dist/esm/components/sections/option-gesture.d.ts.map +1 -0
  620. package/dist/esm/components/sections/option-gesture.js +66 -0
  621. package/dist/esm/components/sections/option-gesture.js.map +1 -0
  622. package/dist/esm/components/sections/pagination.d.ts.map +1 -1
  623. package/dist/esm/components/sections/pagination.labels.d.ts.map +1 -1
  624. package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
  625. package/dist/esm/components/sections/stacked-layout.labels.d.ts.map +1 -1
  626. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  627. package/dist/esm/components/sections/stepper.js +5 -3
  628. package/dist/esm/components/sections/stepper.js.map +1 -1
  629. package/dist/esm/components/sections/stepper.labels.d.ts.map +1 -1
  630. package/dist/esm/components/sections/table.d.ts.map +1 -1
  631. package/dist/esm/components/sections/table.labels.d.ts.map +1 -1
  632. package/dist/esm/components/sections/tabs.d.ts.map +1 -1
  633. package/dist/esm/components/sections/tabs.js +60 -15
  634. package/dist/esm/components/sections/tabs.js.map +1 -1
  635. package/dist/esm/components/sections/tabs.labels.d.ts.map +1 -1
  636. package/dist/esm/components/typography/heading.d.ts.map +1 -1
  637. package/dist/esm/components/typography/heading.labels.d.ts.map +1 -1
  638. package/dist/esm/components/typography/label.d.ts.map +1 -1
  639. package/dist/esm/components/typography/label.labels.d.ts.map +1 -1
  640. package/dist/esm/components/typography/link.d.ts.map +1 -1
  641. package/dist/esm/components/typography/link.js +9 -3
  642. package/dist/esm/components/typography/link.js.map +1 -1
  643. package/dist/esm/components/typography/link.labels.d.ts.map +1 -1
  644. package/dist/esm/components/typography/text.d.ts +1 -1
  645. package/dist/esm/components/typography/text.d.ts.map +1 -1
  646. package/dist/esm/components/typography/text.js +3 -2
  647. package/dist/esm/components/typography/text.js.map +1 -1
  648. package/dist/esm/components/typography/text.labels.d.ts.map +1 -1
  649. package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
  650. package/dist/esm/config/billing-shell.presets.d.ts.map +1 -1
  651. package/dist/esm/config/index.d.ts.map +1 -1
  652. package/dist/esm/config/preset-design-system.d.ts.map +1 -1
  653. package/dist/esm/config/preset-design-system.js +37 -60
  654. package/dist/esm/config/preset-design-system.js.map +1 -1
  655. package/dist/esm/config/preset-error-pages.d.ts.map +1 -1
  656. package/dist/esm/config/preset-kits.d.ts.map +1 -1
  657. package/dist/esm/config/preset-navigation.d.ts.map +1 -1
  658. package/dist/esm/config/preset-navigation.js +23 -7
  659. package/dist/esm/config/preset-navigation.js.map +1 -1
  660. package/dist/esm/config/preset-resources.d.ts.map +1 -1
  661. package/dist/esm/config/preset-shell.d.ts.map +1 -1
  662. package/dist/esm/config/preset-utils.d.ts.map +1 -1
  663. package/dist/esm/config/presets.d.ts.map +1 -1
  664. package/dist/esm/config/resources/agent-work.resource-presets.d.ts +4 -0
  665. package/dist/esm/config/resources/agent-work.resource-presets.d.ts.map +1 -0
  666. package/dist/esm/config/resources/agent-work.resource-presets.js +115 -0
  667. package/dist/esm/config/resources/agent-work.resource-presets.js.map +1 -0
  668. package/dist/esm/config/resources/api-key-rotation-window.d.ts +22 -0
  669. package/dist/esm/config/resources/api-key-rotation-window.d.ts.map +1 -0
  670. package/dist/esm/config/resources/api-key-rotation-window.js +45 -0
  671. package/dist/esm/config/resources/api-key-rotation-window.js.map +1 -0
  672. package/dist/esm/config/resources/application.resource-presets.d.ts +2 -0
  673. package/dist/esm/config/resources/application.resource-presets.d.ts.map +1 -1
  674. package/dist/esm/config/resources/application.resource-presets.js +268 -26
  675. package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
  676. package/dist/esm/config/resources/billing.resource-presets.d.ts +4 -3
  677. package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
  678. package/dist/esm/config/resources/billing.resource-presets.js +241 -111
  679. package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
  680. package/dist/esm/config/resources/conversation-threads.resource-presets.d.ts +4 -0
  681. package/dist/esm/config/resources/conversation-threads.resource-presets.d.ts.map +1 -0
  682. package/dist/esm/config/resources/conversation-threads.resource-presets.js +105 -0
  683. package/dist/esm/config/resources/conversation-threads.resource-presets.js.map +1 -0
  684. package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
  685. package/dist/esm/config/resources/guidance.resource-presets.js +39 -16
  686. package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
  687. package/dist/esm/config/resources/identity.resource-presets.d.ts +0 -13
  688. package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
  689. package/dist/esm/config/resources/identity.resource-presets.js +71 -17
  690. package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
  691. package/dist/esm/config/resources/inbound-deliveries.resource-presets.d.ts +6 -0
  692. package/dist/esm/config/resources/inbound-deliveries.resource-presets.d.ts.map +1 -0
  693. package/dist/esm/config/resources/inbound-deliveries.resource-presets.js +112 -0
  694. package/dist/esm/config/resources/inbound-deliveries.resource-presets.js.map +1 -0
  695. package/dist/esm/config/resources/inbound-email.resource-presets.d.ts +4 -0
  696. package/dist/esm/config/resources/inbound-email.resource-presets.d.ts.map +1 -0
  697. package/dist/esm/config/resources/inbound-email.resource-presets.js +182 -0
  698. package/dist/esm/config/resources/inbound-email.resource-presets.js.map +1 -0
  699. package/dist/esm/config/resources/index.d.ts.map +1 -1
  700. package/dist/esm/config/resources/index.js +9 -2
  701. package/dist/esm/config/resources/index.js.map +1 -1
  702. package/dist/esm/config/resources/legal-holds.resource-presets.d.ts +4 -0
  703. package/dist/esm/config/resources/legal-holds.resource-presets.d.ts.map +1 -0
  704. package/dist/esm/config/resources/legal-holds.resource-presets.js +76 -0
  705. package/dist/esm/config/resources/legal-holds.resource-presets.js.map +1 -0
  706. package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
  707. package/dist/esm/config/resources/organizations.resource-presets.js +216 -35
  708. package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
  709. package/dist/esm/config/resources/resource.config.utils.d.ts +20 -0
  710. package/dist/esm/config/resources/resource.config.utils.d.ts.map +1 -1
  711. package/dist/esm/config/resources/resource.config.utils.js +20 -0
  712. package/dist/esm/config/resources/resource.config.utils.js.map +1 -1
  713. package/dist/esm/config/resources/retention-enforcement.resource-presets.d.ts +5 -0
  714. package/dist/esm/config/resources/retention-enforcement.resource-presets.d.ts.map +1 -0
  715. package/dist/esm/config/resources/retention-enforcement.resource-presets.js +74 -0
  716. package/dist/esm/config/resources/retention-enforcement.resource-presets.js.map +1 -0
  717. package/dist/esm/config/resources/security.resource-presets.d.ts +11 -3
  718. package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
  719. package/dist/esm/config/resources/security.resource-presets.js +685 -99
  720. package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
  721. package/dist/esm/config/resources/service-providers.resource-presets.d.ts +4 -0
  722. package/dist/esm/config/resources/service-providers.resource-presets.d.ts.map +1 -0
  723. package/dist/esm/config/resources/service-providers.resource-presets.js +321 -0
  724. package/dist/esm/config/resources/service-providers.resource-presets.js.map +1 -0
  725. package/dist/esm/config/resources/webhooks.resource-presets.d.ts +4 -3
  726. package/dist/esm/config/resources/webhooks.resource-presets.d.ts.map +1 -1
  727. package/dist/esm/config/resources/webhooks.resource-presets.js +102 -26
  728. package/dist/esm/config/resources/webhooks.resource-presets.js.map +1 -1
  729. package/dist/esm/index.d.ts +7 -1
  730. package/dist/esm/index.d.ts.map +1 -1
  731. package/dist/esm/index.js +7 -1
  732. package/dist/esm/index.js.map +1 -1
  733. package/dist/esm/lottie/lottie.content.definitions.d.ts.map +1 -1
  734. package/dist/esm/lottie/lottie.definitions.d.ts.map +1 -1
  735. package/dist/esm/mermaid-stub.d.ts.map +1 -1
  736. package/dist/esm/registration/register-common-enums.d.ts.map +1 -1
  737. package/dist/esm/registration/register-common-enums.js +63 -34
  738. package/dist/esm/registration/register-common-enums.js.map +1 -1
  739. package/dist/esm/registration/register-default-animations.d.ts.map +1 -1
  740. package/dist/esm/registration/register-default-icons.d.ts.map +1 -1
  741. package/dist/esm/registration/register-default-icons.js +3 -1
  742. package/dist/esm/registration/register-default-icons.js.map +1 -1
  743. package/dist/esm/registration/register-default-presets.d.ts.map +1 -1
  744. package/dist/esm/registration/register-default-presets.js +32 -4
  745. package/dist/esm/registration/register-default-presets.js.map +1 -1
  746. package/dist/esm/registration/register-provider-components.d.ts.map +1 -1
  747. package/dist/esm/registration/register-provider-components.js +11 -0
  748. package/dist/esm/registration/register-provider-components.js.map +1 -1
  749. package/dist/esm/shiki-subset.d.ts +11 -3
  750. package/dist/esm/shiki-subset.d.ts.map +1 -1
  751. package/dist/esm/shiki-subset.js +10 -2
  752. package/dist/esm/shiki-subset.js.map +1 -1
  753. package/dist/esm/theme-exports.d.ts.map +1 -1
  754. package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
  755. package/dist/esm/themes/cozy.theme.js +19 -5
  756. package/dist/esm/themes/cozy.theme.js.map +1 -1
  757. package/dist/esm/themes/dense.theme.d.ts.map +1 -1
  758. package/dist/esm/themes/dense.theme.js +76 -10
  759. package/dist/esm/themes/dense.theme.js.map +1 -1
  760. package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
  761. package/dist/esm/themes/editorial.theme.js +19 -5
  762. package/dist/esm/themes/editorial.theme.js.map +1 -1
  763. package/dist/esm/themes/glass.theme.d.ts.map +1 -1
  764. package/dist/esm/themes/glass.theme.js +5 -1
  765. package/dist/esm/themes/glass.theme.js.map +1 -1
  766. package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
  767. package/dist/esm/themes/neo-brutalist.theme.js +9 -2
  768. package/dist/esm/themes/neo-brutalist.theme.js.map +1 -1
  769. package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
  770. package/dist/esm/themes/terminal.theme.js +19 -5
  771. package/dist/esm/themes/terminal.theme.js.map +1 -1
  772. package/dist/esm/themes/trading.theme.d.ts.map +1 -1
  773. package/dist/esm/themes/trading.theme.js +22 -6
  774. package/dist/esm/themes/trading.theme.js.map +1 -1
  775. package/dist/tsconfig.build.tsbuildinfo +1 -1
  776. package/package.json +31 -45
  777. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts +0 -16
  778. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +0 -1
  779. package/dist/esm/components/form/controls/form-field-checkbox-group.js +0 -143
  780. package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"app-layout-main-container.js","sourceRoot":"","sources":["../../../../../src/components/app/app-layout-main-container.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\n\nimport { FrontendComponentType, HorizontalPlacement, ShellAppearance, SurfaceVariant, VerticalPlacement } from '@wildo-ai/presets-components-models';\nimport {\n AppLayoutPreset_MainContainer_DefaultProps,\n ApplicationLevel_StatusBar,\n ApplicationLevel_MenuBar,\n ApplicationLevel_Toolbar,\n ApplicationLevel_ActivityBar,\n ApplicationLevel_QuickActionButton,\n ApplicationLevel_Sidebar,\n ApplicationLevel_UtilityPanel,\n NavigationContentAreas,\n NavigationOverlays,\n useAppShellLayout,\n HostedComponentInteractionsProvider,\n PortalContainerContext,\n GuidanceRenderer,\n LoadingSpinner,\n NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE,\n Surface,\n cn,\n useUI,\n} from '@wildo-ai/saas-frontend-lib';\n\nexport const AppLayoutPreset_MainContainer_Default = ({ children }: AppLayoutPreset_MainContainer_DefaultProps): React.JSX.Element => {\n const layoutInfo = useAppShellLayout();\n const { shellAppearance } = useUI();\n // CONTINUOUS shell chrome: the root paints NOTHING so the theme's fixed\n // `backgroundLayer` (rendered by UIProvider behind the app) is the single\n // continuous canvas under sidebar, bars, and content alike.\n const isContinuousShell = shellAppearance === ShellAppearance.CONTINUOUS;\n const [portalContainer, setPortalContainer] = useState<HTMLElement | null>(null);\n const portalRef = useCallback((node: HTMLDivElement | null) => {\n setPortalContainer(node);\n }, []);\n\n // ===================================================================\n // Loading State\n // ===================================================================\n\n // Latch the FIRST layout-ready flip. `isLayoutReady` derives from config presence\n // and can transiently drop after bootstrap (e.g. an org switch reloading config);\n // replacing the whole mounted shell with a spinner on such a drop unmounts every\n // provider/zone below it and destroys navigation state — the same failure mode\n // AppLoadingGate documents. The spinner branch therefore only applies BEFORE the\n // shell has ever been ready; later drops keep the shell mounted (per-component\n // `has*` flags simply render nothing while config is absent).\n const [hasLayoutBeenReady, setHasLayoutBeenReady] = useState(false);\n useEffect(() => {\n if (layoutInfo.isLayoutReady) setHasLayoutBeenReady(true);\n }, [layoutInfo.isLayoutReady]);\n\n if (!layoutInfo.isLayoutReady && !hasLayoutBeenReady) {\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.SHELL} policyOverride={NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE}>\n <div className=\"h-screen w-screen bg-background flex items-center justify-center\" role=\"status\" aria-live=\"polite\">\n <div className=\"text-center\">\n <LoadingSpinner size={32} className=\"text-primary mx-auto mb-field\" aria-hidden=\"true\" />\n </div>\n </div>\n </Surface>\n );\n }\n\n // ===================================================================\n // Main Layout Rendering - PLACEMENT ONLY\n // ===================================================================\n\n return (\n <PortalContainerContext.Provider value={portalContainer}>\n <HostedComponentInteractionsProvider>\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.SHELL} policyOverride={NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE}>\n <div className={cn('h-screen w-screen flex overflow-hidden', isContinuousShell ? 'bg-transparent' : 'bg-background')}>\n {/* Activity Bar - leftmost */}\n {layoutInfo.hasActivityBar && (\n <ApplicationLevel_ActivityBar />\n )}\n\n {/* Sidebar - START (full height) */}\n {layoutInfo.hasSidebar && layoutInfo.sidebarPlacement === HorizontalPlacement.START && (\n <ApplicationLevel_Sidebar placement={HorizontalPlacement.START} />\n )}\n\n {/* Utility Panel trigger - START */}\n {layoutInfo.hasUtilityPanel && layoutInfo.utilityPanelPlacement === HorizontalPlacement.START && (\n <ApplicationLevel_UtilityPanel position={HorizontalPlacement.START} />\n )}\n\n {/* Right side: Menubar, Toolbar, Content, Status Bar */}\n <div className=\"flex-1 flex flex-col min-w-0 min-h-0\">\n {/* Status Bar - TOP */}\n {layoutInfo.hasStatusBar && layoutInfo.statusBarPlacement === VerticalPlacement.TOP && (\n <ApplicationLevel_StatusBar placement={VerticalPlacement.TOP} />\n )}\n\n {/* Menubar */}\n {layoutInfo.hasMenubar && (\n <ApplicationLevel_MenuBar />\n )}\n\n {/* Toolbar */}\n {layoutInfo.hasToolbar && (\n <ApplicationLevel_Toolbar />\n )}\n\n {/* Main Content Area */}\n <div className=\"flex-1 flex min-h-0\">\n <main ref={portalRef} className=\"flex-1 relative min-w-0\">\n <NavigationContentAreas routerChildren={children} />\n\n {/* Floating Quick Action Button */}\n {layoutInfo.hasQuickActionButton && (\n <ApplicationLevel_QuickActionButton placement=\"floating\" />\n )}\n </main>\n\n {/* Sidebar - END (full height within content area) */}\n {layoutInfo.hasSidebar && layoutInfo.sidebarPlacement === HorizontalPlacement.END && (\n <ApplicationLevel_Sidebar placement={HorizontalPlacement.END} />\n )}\n </div>\n\n {/* Status Bar - BOTTOM */}\n {layoutInfo.hasStatusBar && layoutInfo.statusBarPlacement === VerticalPlacement.BOTTOM && (\n <ApplicationLevel_StatusBar placement={VerticalPlacement.BOTTOM} />\n )}\n </div>\n\n {/* Navigation Overlays (Dialog & Sheet) */}\n <NavigationOverlays />\n <GuidanceRenderer />\n\n {/* Utility Panel trigger - END */}\n {layoutInfo.hasUtilityPanel && layoutInfo.utilityPanelPlacement === HorizontalPlacement.END && (\n <ApplicationLevel_UtilityPanel position={HorizontalPlacement.END} />\n )}\n </div>\n </Surface>\n </HostedComponentInteractionsProvider>\n </PortalContainerContext.Provider>\n );\n};\n"]}
1
+ {"version":3,"file":"app-layout-main-container.js","sourceRoot":"","sources":["../../../../../src/components/app/app-layout-main-container.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC3I,OAAO,EAEL,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,2CAA2C,EAC3C,OAAO,EACP,EAAE,EACF,KAAK,GACN,MAAM,6BAA6B,CAAC;AAErC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,EAAE,QAAQ,EAA8C,EAAqB,EAAE;IACnI,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,CAAC;IACpC,wEAAwE;IACxE,0EAA0E;IAC1E,4DAA4D;IAC5D,MAAM,iBAAiB,GAAG,eAAe,KAAK,eAAe,CAAC,UAAU,CAAC;IAEzE,sEAAsE;IACtE,gBAAgB;IAChB,sEAAsE;IAEtE,wGAAwG;IACxG,2FAA2F;IAC3F,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAE3E,IAAI,CAAC,UAAU,CAAC,aAAa,IAAI,CAAC,kBAAkB;QAAE,OAAO,KAAC,oBAAoB,KAAG,CAAC;IAEtF,sEAAsE;IACtE,yCAAyC;IACzC,sEAAsE;IAEtE,OAAO,CACL,KAAC,iBAAiB,IAAC,MAAM,EAAE,UAAU,YACnC,KAAC,OAAO,IAAC,OAAO,QAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,2CAA2C,YAahI,eAAK,SAAS,EAAE,EAAE,CAAC,iDAAiD,EAAE,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC,aAE3H,KAAC,oBAAoB,IAAC,MAAM,EAAE,WAAW,CAAC,YAAY,GAAI,EAG1D,KAAC,oBAAoB,IAAC,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,mBAAmB,CAAC,KAAK,GAAI,EAG3F,KAAC,oBAAoB,IAAC,MAAM,EAAE,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,mBAAmB,CAAC,KAAK,GAAI,EAGjG,eAAK,SAAS,EAAC,sCAAsC,aAEnD,KAAC,oBAAoB,IAAC,MAAM,EAAE,WAAW,CAAC,UAAU,EAAE,SAAS,EAAE,iBAAiB,CAAC,GAAG,GAAI,EAG1F,KAAC,oBAAoB,IAAC,MAAM,EAAE,WAAW,CAAC,OAAO,GAAI,EAGrD,KAAC,oBAAoB,IAAC,MAAM,EAAE,WAAW,CAAC,OAAO,GAAI,EAGrD,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,qBAAqB,IAAC,SAAS,EAAC,yBAAyB,YAAE,QAAQ,GAAyB,EAG7F,KAAC,oBAAoB,IAAC,MAAM,EAAE,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,mBAAmB,CAAC,GAAG,GAAI,IACrF,EAGN,KAAC,oBAAoB,IAAC,MAAM,EAAE,WAAW,CAAC,UAAU,EAAE,SAAS,EAAE,iBAAiB,CAAC,MAAM,GAAI,IACzF,EAGN,KAAC,sBAAsB,KAAG,EAG1B,KAAC,oBAAoB,IAAC,MAAM,EAAE,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,mBAAmB,CAAC,GAAG,GAAI,IAC3F,GACE,GACQ,CACrB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport { HorizontalPlacement, ShellAppearance, ShellRegion, SurfaceVariant, VerticalPlacement } from '@wildo-ai/presets-components-models';\nimport {\n AppLayoutPreset_MainContainer_DefaultProps,\n AppShellContentOutlet,\n AppShellLoadingState,\n AppShellOverlaysOutlet,\n AppShellProviders,\n AppShellRegionOutlet,\n useAppShellFirstReady,\n useAppShellLayout,\n NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE,\n Surface,\n cn,\n useUI,\n} from '@wildo-ai/saas-frontend-lib';\n\n/**\n * The default signed-in shell: the regions in a flex arrangement — activity bar and sidebar at the start edge,\n * a column of status bar / menubar / toolbar / content / status bar, the utility panel at the end edge.\n *\n * Composed from the shell building blocks (`AppShellProviders`, `AppShellRegionOutlet`, `AppShellContentOutlet`,\n * `AppShellOverlaysOutlet`, `useAppShellFirstReady`, #1842), so this file decides only the ARRANGEMENT and the\n * shell's own surface; another layout can arrange the same regions differently without copying it. Its rendered\n * DOM is pinned for every layout configuration by `app-layout-main-container.dom-snapshot.test.tsx`.\n */\nexport const AppLayoutPreset_MainContainer_Default = ({ children }: AppLayoutPreset_MainContainer_DefaultProps): React.JSX.Element => {\n const layoutInfo = useAppShellLayout();\n const { shellAppearance } = useUI();\n // CONTINUOUS shell chrome: the root paints NOTHING so the theme's fixed\n // `backgroundLayer` (rendered by UIProvider behind the app) is the single\n // continuous canvas under sidebar, bars, and content alike.\n const isContinuousShell = shellAppearance === ShellAppearance.CONTINUOUS;\n\n // ===================================================================\n // Loading State\n // ===================================================================\n\n // The spinner applies only BEFORE the shell has ever been ready: a later transient drop keeps the shell\n // mounted (see `useAppShellFirstReady` for why a remount there destroys navigation state).\n const hasLayoutBeenReady = useAppShellFirstReady(layoutInfo.isLayoutReady);\n\n if (!layoutInfo.isLayoutReady && !hasLayoutBeenReady) return <AppShellLoadingState />;\n\n // ===================================================================\n // Main Layout Rendering - PLACEMENT ONLY\n // ===================================================================\n\n return (\n <AppShellProviders layout={layoutInfo}>\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.SHELL} policyOverride={NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE}>\n {/*\n `relative` is load-bearing (#1830). A theme's decorative `backgroundLayer` is rendered by `UIContext`\n in an `isolate` wrapper, which paints at the z-index:0 level — ABOVE ordinary in-flow content (see the\n note there, and #1204 for the public layout). A shell text with no positioned ancestor therefore\n vanished under the gradient: the status bar's \"Connected\" did, 1 of the shell's 91 visible texts.\n Positioning the root lifts the WHOLE shell to that level, after the layer in tree order.\n Deliberately NOT `isolate`: that would also make the shell one stacking context, so the consent\n prompt (`z-50`, outside the shell) would paint over the shell's own dialogs (`--z-overlay`, 300).\n A positioned root with `z-index: auto` creates no stacking context, so every z-index inside keeps\n its current global order. The root spans the unscrolled viewport, so no absolutely positioned\n descendant moves either.\n */}\n <div className={cn('relative h-screen w-screen flex overflow-hidden', isContinuousShell ? 'bg-transparent' : 'bg-background')}>\n {/* Activity Bar - leftmost */}\n <AppShellRegionOutlet region={ShellRegion.ACTIVITY_BAR} />\n\n {/* Sidebar - START (full height) */}\n <AppShellRegionOutlet region={ShellRegion.SIDEBAR} placement={HorizontalPlacement.START} />\n\n {/* Utility Panel trigger - START */}\n <AppShellRegionOutlet region={ShellRegion.UTILITY_PANEL} placement={HorizontalPlacement.START} />\n\n {/* Right side: Menubar, Toolbar, Content, Status Bar */}\n <div className=\"flex-1 flex flex-col min-w-0 min-h-0\">\n {/* Status Bar - TOP */}\n <AppShellRegionOutlet region={ShellRegion.STATUS_BAR} placement={VerticalPlacement.TOP} />\n\n {/* Menubar */}\n <AppShellRegionOutlet region={ShellRegion.MENUBAR} />\n\n {/* Toolbar */}\n <AppShellRegionOutlet region={ShellRegion.TOOLBAR} />\n\n {/* Main Content Area */}\n <div className=\"flex-1 flex min-h-0\">\n <AppShellContentOutlet className=\"flex-1 relative min-w-0\">{children}</AppShellContentOutlet>\n\n {/* Sidebar - END (full height within content area) */}\n <AppShellRegionOutlet region={ShellRegion.SIDEBAR} placement={HorizontalPlacement.END} />\n </div>\n\n {/* Status Bar - BOTTOM */}\n <AppShellRegionOutlet region={ShellRegion.STATUS_BAR} placement={VerticalPlacement.BOTTOM} />\n </div>\n\n {/* Navigation Overlays (Dialog & Sheet) and guidance */}\n <AppShellOverlaysOutlet />\n\n {/* Utility Panel trigger - END */}\n <AppShellRegionOutlet region={ShellRegion.UTILITY_PANEL} placement={HorizontalPlacement.END} />\n </div>\n </Surface>\n </AppShellProviders>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"app-layout-main-container.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/app/app-layout-main-container.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,6BAA6B,EAAE,mBAAmB,EAS9D,CAAC"}
1
+ {"version":3,"file":"app-layout-main-container.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/app/app-layout-main-container.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,6BAA6B,EAAE,mBAAmB,EAgE9D,CAAC"}
@@ -10,6 +10,54 @@ export const AppLayoutsMainContainerLabels = [
10
10
  + 'empty via onEmpty: EMPTY_STATE — tells the reader the pane is waiting for a selection rather '
11
11
  + 'than broken. Not shown when the zone collapses instead.',
12
12
  },
13
+ {
14
+ ref: 'zoneExpand',
15
+ kind: LabelKind.BUTTON,
16
+ purpose: 'The control on an adjacent content zone (detail / companion pane) that gives that pane the '
17
+ + 'WHOLE content area, folding the list it opened from out of view. Short, imperative, one or '
18
+ + 'two words; it also names the control for screen readers.',
19
+ },
20
+ {
21
+ ref: 'zoneDismiss',
22
+ kind: LabelKind.BUTTON,
23
+ purpose: 'The control that CLOSES an adjacent content zone (detail / companion pane) outright, handing '
24
+ + 'its width back to the pane beside it. Offered only where the layout declares the zone '
25
+ + 'collapses when empty, because that is where closing it actually returns room. Short, '
26
+ + 'imperative, one or two words; it also names the control for screen readers.',
27
+ },
28
+ {
29
+ ref: 'zoneRestore',
30
+ kind: LabelKind.BUTTON,
31
+ purpose: 'The inverse of zoneExpand, shown while a pane has the whole content area: hands the room back '
32
+ + 'to the split so the list appears beside the pane again. Escape does the same.',
33
+ },
34
+ {
35
+ ref: 'zoneRegionPrimary',
36
+ kind: LabelKind.ARIA,
37
+ purpose: 'Names the MAIN content column for screen readers, so a reader moving by landmark can tell it '
38
+ + 'from the detail and companion panes beside it. Never read aloud on screen; two or three '
39
+ + 'words naming what the column holds, in the reader\'s terms rather than the framework\'s.',
40
+ },
41
+ {
42
+ ref: 'zoneRegionSecondary',
43
+ kind: LabelKind.ARIA,
44
+ purpose: 'Names the adjacent DETAIL pane — the one a record opens into beside the list — for screen '
45
+ + 'readers. Distinct from zoneRegionCompanion: a reader jumping between landmarks hears only '
46
+ + 'these names, so two panes sharing one name is the same as neither being named.',
47
+ },
48
+ {
49
+ ref: 'zoneRegionCompanion',
50
+ kind: LabelKind.ARIA,
51
+ purpose: 'Names the third COMPANION pane (assistant, context, activity) for screen readers. See '
52
+ + 'zoneRegionSecondary — the two must not be interchangeable.',
53
+ },
54
+ {
55
+ ref: 'zoneResizeHandle',
56
+ kind: LabelKind.ARIA,
57
+ purpose: 'Names the draggable divider between two content panes, which is also operable with the arrow '
58
+ + 'keys once focused. A reader hears this instead of an unnamed "separator", so it should say '
59
+ + 'what dragging it does (resize the panes), not what it looks like.',
60
+ },
13
61
  ];
14
62
  registerComponentLabels(FrontendComponentType.APP_LAYOUTS_MAIN_CONTAINER, AppLayoutsMainContainerLabels);
15
63
  //# sourceMappingURL=app-layout-main-container.labels.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-layout-main-container.labels.js","sourceRoot":"","sources":["../../../../../src/components/app/app-layout-main-container.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAA4B,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE1I,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,6BAA6B,GAA0B;IAClE;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,SAAS,CAAC,WAAW;QAC3B,OAAO,EACL,gGAAgG;cAC9F,+FAA+F;cAC/F,yDAAyD;KAC9D;CACF,CAAC;AACF,uBAAuB,CAAC,qBAAqB,CAAC,0BAA0B,EAAE,6BAA6B,CAAC,CAAC","sourcesContent":["import { FrontendComponentType, LabelKind, type LabellingUnitaryDef, registerComponentLabels } 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 AppLayoutsMainContainerLabels: LabellingUnitaryDef[] = [\n {\n ref: 'zoneEmptyState',\n kind: LabelKind.EMPTY_STATE,\n purpose:\n 'Shown in an adjacent content zone (detail / companion pane) that a layout keeps VISIBLE while '\n + 'empty via onEmpty: EMPTY_STATE — tells the reader the pane is waiting for a selection rather '\n + 'than broken. Not shown when the zone collapses instead.',\n },\n];\nregisterComponentLabels(FrontendComponentType.APP_LAYOUTS_MAIN_CONTAINER, AppLayoutsMainContainerLabels);\n"]}
1
+ {"version":3,"file":"app-layout-main-container.labels.js","sourceRoot":"","sources":["../../../../../src/components/app/app-layout-main-container.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAA4B,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE1I,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,6BAA6B,GAA0B;IAClE;QACE,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,SAAS,CAAC,WAAW;QAC3B,OAAO,EACL,gGAAgG;cAC9F,+FAA+F;cAC/F,yDAAyD;KAC9D;IACD;QACE,GAAG,EAAE,YAAY;QACjB,IAAI,EAAE,SAAS,CAAC,MAAM;QACtB,OAAO,EACL,6FAA6F;cAC3F,6FAA6F;cAC7F,0DAA0D;KAC/D;IACD;QACE,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,SAAS,CAAC,MAAM;QACtB,OAAO,EACL,+FAA+F;cAC7F,wFAAwF;cACxF,uFAAuF;cACvF,6EAA6E;KAClF;IACD;QACE,GAAG,EAAE,aAAa;QAClB,IAAI,EAAE,SAAS,CAAC,MAAM;QACtB,OAAO,EACL,gGAAgG;cAC9F,+EAA+E;KACpF;IACD;QACE,GAAG,EAAE,mBAAmB;QACxB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,OAAO,EACL,+FAA+F;cAC7F,0FAA0F;cAC1F,0FAA0F;KAC/F;IACD;QACE,GAAG,EAAE,qBAAqB;QAC1B,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,OAAO,EACL,4FAA4F;cAC1F,4FAA4F;cAC5F,gFAAgF;KACrF;IACD;QACE,GAAG,EAAE,qBAAqB;QAC1B,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,OAAO,EACL,wFAAwF;cACtF,4DAA4D;KACjE;IACD;QACE,GAAG,EAAE,kBAAkB;QACvB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,OAAO,EACL,+FAA+F;cAC7F,6FAA6F;cAC7F,mEAAmE;KACxE;CACF,CAAC;AACF,uBAAuB,CAAC,qBAAqB,CAAC,0BAA0B,EAAE,6BAA6B,CAAC,CAAC","sourcesContent":["import { FrontendComponentType, LabelKind, type LabellingUnitaryDef, registerComponentLabels } 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 AppLayoutsMainContainerLabels: LabellingUnitaryDef[] = [\n {\n ref: 'zoneEmptyState',\n kind: LabelKind.EMPTY_STATE,\n purpose:\n 'Shown in an adjacent content zone (detail / companion pane) that a layout keeps VISIBLE while '\n + 'empty via onEmpty: EMPTY_STATE — tells the reader the pane is waiting for a selection rather '\n + 'than broken. Not shown when the zone collapses instead.',\n },\n {\n ref: 'zoneExpand',\n kind: LabelKind.BUTTON,\n purpose:\n 'The control on an adjacent content zone (detail / companion pane) that gives that pane the '\n + 'WHOLE content area, folding the list it opened from out of view. Short, imperative, one or '\n + 'two words; it also names the control for screen readers.',\n },\n {\n ref: 'zoneDismiss',\n kind: LabelKind.BUTTON,\n purpose:\n 'The control that CLOSES an adjacent content zone (detail / companion pane) outright, handing '\n + 'its width back to the pane beside it. Offered only where the layout declares the zone '\n + 'collapses when empty, because that is where closing it actually returns room. Short, '\n + 'imperative, one or two words; it also names the control for screen readers.',\n },\n {\n ref: 'zoneRestore',\n kind: LabelKind.BUTTON,\n purpose:\n 'The inverse of zoneExpand, shown while a pane has the whole content area: hands the room back '\n + 'to the split so the list appears beside the pane again. Escape does the same.',\n },\n {\n ref: 'zoneRegionPrimary',\n kind: LabelKind.ARIA,\n purpose:\n 'Names the MAIN content column for screen readers, so a reader moving by landmark can tell it '\n + 'from the detail and companion panes beside it. Never read aloud on screen; two or three '\n + 'words naming what the column holds, in the reader\\'s terms rather than the framework\\'s.',\n },\n {\n ref: 'zoneRegionSecondary',\n kind: LabelKind.ARIA,\n purpose:\n 'Names the adjacent DETAIL pane — the one a record opens into beside the list — for screen '\n + 'readers. Distinct from zoneRegionCompanion: a reader jumping between landmarks hears only '\n + 'these names, so two panes sharing one name is the same as neither being named.',\n },\n {\n ref: 'zoneRegionCompanion',\n kind: LabelKind.ARIA,\n purpose:\n 'Names the third COMPANION pane (assistant, context, activity) for screen readers. See '\n + 'zoneRegionSecondary — the two must not be interchangeable.',\n },\n {\n ref: 'zoneResizeHandle',\n kind: LabelKind.ARIA,\n purpose:\n 'Names the draggable divider between two content panes, which is also operable with the arrow '\n + 'keys once focused. A reader hears this instead of an unnamed \"separator\", so it should say '\n + 'what dragging it does (resize the panes), not what it looks like.',\n },\n];\nregisterComponentLabels(FrontendComponentType.APP_LAYOUTS_MAIN_CONTAINER, AppLayoutsMainContainerLabels);\n"]}
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  import { PublicLayoutPreset_MainContainer_DefaultProps } from '@wildo-ai/saas-frontend-lib';
3
- export declare const PublicLayoutPreset_MainContainer_Default: ({ children, useCardLayout, className }: PublicLayoutPreset_MainContainer_DefaultProps) => React.JSX.Element;
3
+ export declare const PublicLayoutPreset_MainContainer_Default: ({ children, useCardLayout, organizationBranding, className }: PublicLayoutPreset_MainContainer_DefaultProps) => React.JSX.Element;
4
4
  //# sourceMappingURL=public-layout-main-container.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public-layout-main-container.d.ts","sourceRoot":"","sources":["../../../../src/components/app/public-layout-main-container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,6CAA6C,EAU9C,MAAM,6BAA6B,CAAC;AAuErC,eAAO,MAAM,wCAAwC,GAAI,wCAItD,6CAA6C,KAAG,KAAK,CAAC,GAAG,CAAC,OAmE5D,CAAC"}
1
+ {"version":3,"file":"public-layout-main-container.d.ts","sourceRoot":"","sources":["../../../../../src/components/app/public-layout-main-container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,6CAA6C,EAU9C,MAAM,6BAA6B,CAAC;AAyErC,eAAO,MAAM,wCAAwC,GAAI,8DAKtD,6CAA6C,KAAG,KAAK,CAAC,GAAG,CAAC,OAuG5D,CAAC"}
@@ -18,8 +18,9 @@ import { SurfaceVariant, TypographyVariant, UIBehavior } from "@wildo-ai/presets
18
18
  * where it is most visible: a cold load on a slow link, which is the first impression the page
19
19
  * exists to make. The `h-14` box is fixed and `w-auto` lets a wide lockup keep its aspect ratio
20
20
  * inside it — sized against the name beneath rather than picked in the abstract, so mark and name
21
- * read as one unit (hence the tighter `gap-element-sm` between them, and the wider `mb-group` below
22
- * the pair).
21
+ * read as one unit (hence the tighter `gap-element-sm` between them). Below the pair sits a
22
+ * SECTION gap, not a group gap: the identity and the form's own heading are two different things
23
+ * ("this is <product>" / "sign in"), and at `mb-group` the heading read as a caption of the logo.
23
24
  *
24
25
  * ## Why the name is styled from the recipe and is NOT a heading
25
26
  *
@@ -34,13 +35,13 @@ import { SurfaceVariant, TypographyVariant, UIBehavior } from "@wildo-ai/presets
34
35
  * this same card. A second one would give the document two competing top-level headings; the recipe
35
36
  * supplies the LOOK while the outline stays owned by the content.
36
37
  */
37
- const PublicShellBrandHeader = ({ identity }) => {
38
+ const PublicShellBrandHeader = ({ identity, accentColor }) => {
38
39
  const { name, logoUrl, hasMark, markCarriesName, isEmpty, onMarkError } = useBrandPresentation(identity);
39
40
  const { getRecipe } = useUI();
40
41
  const headingRecipe = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.HEADING);
41
42
  if (isEmpty)
42
43
  return null;
43
- return (_jsxs("div", { className: "flex flex-col items-center gap-element-sm mb-group", children: [hasMark && (_jsx("div", { className: "flex h-14 items-center justify-center", children: _jsx("img", { src: logoUrl,
44
+ return (_jsxs("div", { className: "flex flex-col items-center gap-element-sm mb-section-lg", children: [accentColor && _jsx("span", { "aria-hidden": "true", className: "h-1 w-12 rounded-full", style: { backgroundColor: accentColor } }), hasMark && (_jsx("div", { className: "flex h-14 items-center justify-center", children: _jsx("img", { src: logoUrl,
44
45
  /*
45
46
  * A mark that CARRIES the name is the only thing announcing it, so it is the accessible
46
47
  * name. A symbol sits beside the name text below and is decorative — announcing it too
@@ -48,11 +49,11 @@ const PublicShellBrandHeader = ({ identity }) => {
48
49
  */
49
50
  alt: markCarriesName ? name : '', "aria-hidden": markCarriesName ? undefined : 'true', onError: onMarkError, className: "max-h-14 w-auto object-contain" }) })), !markCarriesName && name !== '' && (_jsx("p", { className: cn(headingRecipe.base, headingRecipe.sizes?.h1 ?? 'text-3xl', 'text-center text-foreground'), children: name }))] }));
50
51
  };
51
- export const PublicLayoutPreset_MainContainer_Default = ({ children = null, useCardLayout = false, className = "" }) => {
52
- const { brandHeader } = usePublicShellLayout(useCardLayout);
52
+ export const PublicLayoutPreset_MainContainer_Default = ({ children = null, useCardLayout = false, organizationBranding, className = "" }) => {
53
+ const { brandHeader, brandAccentColor } = usePublicShellLayout(useCardLayout, organizationBranding);
53
54
  if (useCardLayout) {
54
- return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.SHELL, policyOverride: NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE, children: _jsx("div", { className: "h-screen w-screen overflow-auto", children: _jsx("main", { className: "min-h-full flex items-center justify-center p-container", children: _jsx(Card, { className: cn('w-full max-w-md', className), policyOverride: { a11y: { landmarkRole: 'none' } }, children: _jsxs(CardContent, { className: "p-container-xl", children: [brandHeader && _jsx(PublicShellBrandHeader, { identity: brandHeader }), children] }) }) }) }) }));
55
+ return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.SHELL, policyOverride: NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE, children: _jsx("div", { className: "h-screen w-screen overflow-auto", children: _jsx("main", { className: "isolate min-h-full flex items-center justify-center p-container", children: _jsx(Card, { className: cn('w-full max-w-md', className), policyOverride: { a11y: { landmarkRole: 'none' } }, children: _jsxs(CardContent, { className: "p-container-xl", children: [brandHeader && _jsx(PublicShellBrandHeader, { identity: brandHeader, accentColor: brandAccentColor }), children] }) }) }) }) }));
55
56
  }
56
- return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.SHELL, policyOverride: NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE, children: _jsx("div", { className: cn('h-screen w-screen overflow-auto', className), children: _jsx("main", { className: "min-h-full py-section", children: _jsx("div", { className: "max-w-7xl mx-auto px-card sm:px-container lg:px-container-lg", children: children }) }) }) }));
57
+ return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.SHELL, policyOverride: NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE, children: _jsx("div", { tabIndex: 0, className: cn('h-screen w-screen overflow-auto focus-ring-inset', className), children: _jsx("main", { className: "isolate min-h-full py-section", children: _jsx("div", { className: "max-w-7xl mx-auto px-card sm:px-container lg:px-container-lg", children: children }) }) }) }));
57
58
  };
58
59
  //# sourceMappingURL=public-layout-main-container.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"public-layout-main-container.js","sourceRoot":"","sources":["../../../../src/components/app/public-layout-main-container.tsx"],"names":[],"mappings":";AAEA,OAAO,EAEL,IAAI,EACJ,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,EACL,EAAE,EACF,2CAA2C,EAC3C,OAAO,GAER,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAyB,cAAc,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAE1H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,sBAAsB,GAAG,CAAC,EAAE,QAAQ,EAA+B,EAA4B,EAAE;IACrG,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACzG,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAElF,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IAEzB,OAAO,CACL,eAAK,SAAS,EAAC,oDAAoD,aAChE,OAAO,IAAI,CACV,cAAK,SAAS,EAAC,uCAAuC,YACpD,cACE,GAAG,EAAE,OAAO;oBACZ;;;;uBAIG;oBACH,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,iBACnB,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EACjD,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,gCAAgC,GAC1C,GACE,CACP,EACA,CAAC,eAAe,IAAI,IAAI,KAAK,EAAE,IAAI,CAClC,YAAG,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,UAAU,EAAE,6BAA6B,CAAC,YACvG,IAAI,GACH,CACL,IACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wCAAwC,GAAG,CAAC,EACvD,QAAQ,GAAG,IAAI,EACf,aAAa,GAAG,KAAK,EACrB,SAAS,GAAG,EAAE,EACgC,EAAqB,EAAE;IAErE,MAAM,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAE5D,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CACL,KAAC,OAAO,IAAC,OAAO,QAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,2CAA2C,YAChI,cAAK,SAAS,EAAC,iCAAiC,YAgB9C,eAAM,SAAS,EAAC,yDAAyD,YASvE,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,EAC3C,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,YAElD,MAAC,WAAW,IAAC,SAAS,EAAC,gBAAgB,aAUpC,WAAW,IAAI,KAAC,sBAAsB,IAAC,QAAQ,EAAE,WAAW,GAAI,EAChE,QAAQ,IACG,GACT,GACF,GACH,GACE,CACX,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,OAAO,IAAC,OAAO,QAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,2CAA2C,YAChI,cAAK,SAAS,EAAE,EAAE,CAAC,iCAAiC,EAAE,SAAS,CAAC,YAC9D,eAAM,SAAS,EAAC,uBAAuB,YACrC,cAAK,SAAS,EAAC,8DAA8D,YAC1E,QAAQ,GACL,GACD,GACH,GACE,CACX,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport {\n PublicLayoutPreset_MainContainer_DefaultProps,\n Card,\n CardContent,\n usePublicShellLayout,\n useBrandPresentation,\n useUI,\n cn,\n NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE,\n Surface,\n type BrandIdentity,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { FrontendComponentType, SurfaceVariant, TypographyVariant, UIBehavior } from \"@wildo-ai/presets-components-models\"\n\n/**\n * The surface's identity, at the top of the public card.\n *\n * Rendered ONLY when the application opted in (`publicShellIdentityMode`) — `usePublicShellLayout`\n * gates that, so reaching this component at all is the permission. What it draws is decided from the\n * DATA, and each branch is a defect that would otherwise ship silently:\n *\n * - a WORDMARK/LOCKUP already contains the name, so the name label is dropped rather than printed\n * twice — the brand resolver returns one for an application that generated no symbol;\n * - a mark whose URL 404s degrades to the name alone instead of a browser broken-image glyph;\n * - an identity with neither mark nor name renders nothing, not an empty gap above the card.\n *\n * The height is RESERVED rather than left to the image. A login card that jumps downward when a logo\n * finishes loading is the \"glitch\" this feature is most likely to introduce, and it is worst exactly\n * where it is most visible: a cold load on a slow link, which is the first impression the page\n * exists to make. The `h-14` box is fixed and `w-auto` lets a wide lockup keep its aspect ratio\n * inside it — sized against the name beneath rather than picked in the abstract, so mark and name\n * read as one unit (hence the tighter `gap-element-sm` between them, and the wider `mb-group` below\n * the pair).\n *\n * ## Why the name is styled from the recipe and is NOT a heading\n *\n * The type comes from the design system's `TYPOGRAPHY.HEADING` recipe rather than from classes\n * chosen here, so an application that restyles its headings restyles this too — the same thing\n * `CardTitle` does, and the reason it is worth a hook call for one line of text. `h1` SIZE — the top\n * of the design system's ordinary ladder — because the identity is what the card is opening with; at\n * `h2` it rendered visibly smaller than the action heading beneath it and read as a caption on the\n * logo rather than as the product's name. Measured on a screenshot, not reasoned about.\n *\n * It renders as a `<p>`, not a heading, because `Auth_Main` already emits the page's `<h1>` inside\n * this same card. A second one would give the document two competing top-level headings; the recipe\n * supplies the LOOK while the outline stays owned by the content.\n */\nconst PublicShellBrandHeader = ({ identity }: { identity: BrandIdentity }): React.JSX.Element | null => {\n const { name, logoUrl, hasMark, markCarriesName, isEmpty, onMarkError } = useBrandPresentation(identity);\n const { getRecipe } = useUI();\n const headingRecipe = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.HEADING);\n\n if (isEmpty) return null;\n\n return (\n <div className=\"flex flex-col items-center gap-element-sm mb-group\">\n {hasMark && (\n <div className=\"flex h-14 items-center justify-center\">\n <img\n src={logoUrl}\n /*\n * A mark that CARRIES the name is the only thing announcing it, so it is the accessible\n * name. A symbol sits beside the name text below and is decorative — announcing it too\n * would read the product name twice to a screen reader.\n */\n alt={markCarriesName ? name : ''}\n aria-hidden={markCarriesName ? undefined : 'true'}\n onError={onMarkError}\n className=\"max-h-14 w-auto object-contain\"\n />\n </div>\n )}\n {!markCarriesName && name !== '' && (\n <p className={cn(headingRecipe.base, headingRecipe.sizes?.h1 ?? 'text-3xl', 'text-center text-foreground')}>\n {name}\n </p>\n )}\n </div>\n );\n};\n\nexport const PublicLayoutPreset_MainContainer_Default = ({\n children = null,\n useCardLayout = false,\n className = \"\"\n}: PublicLayoutPreset_MainContainer_DefaultProps): React.JSX.Element => {\n\n const { brandHeader } = usePublicShellLayout(useCardLayout);\n\n if (useCardLayout) {\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.SHELL} policyOverride={NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE}>\n <div className=\"h-screen w-screen overflow-auto\">\n {/*\n A `<main>`, exactly like the wide branch below — the two branches are the same page at\n different widths, and only one of them had a landmark.\n\n The card branch is every public AUTH surface (sign-in, register, invitation, password\n reset, MFA challenge), so its content sat in no landmark at all: axe reported\n `landmark-one-main` plus three `region` violations on `/login` in the first accessibility\n audit ever run against this product (#533). A screen-reader user had no \"skip to main\"\n target and no way to jump to the form.\n\n It goes HERE, on the centring wrapper, rather than on the card: `Card` deliberately opts\n out of a landmark (`landmarkRole: 'none'` below) because it is presentational chrome, and\n the shell `<div>` above owns scrolling. This element is the one that actually bounds the\n page's content.\n */}\n <main className=\"min-h-full flex items-center justify-center p-container\">\n {/*\n `landmarkRole: 'none'` opts this card out of the BASE variant's\n default `region` landmark. The card here is presentational\n chrome wrapping the public-auth panel — it doesn't represent a\n distinct semantic region on the page. Without the override the\n card would emit `role=\"region\"` without a label (no header,\n no aria-label) and the framework would warn on every render.\n */}\n <Card\n className={cn('w-full max-w-md', className)}\n policyOverride={{ a11y: { landmarkRole: 'none' } }}\n >\n <CardContent className=\"p-container-xl\">\n {/*\n The identity sits INSIDE the card, above the form's own heading — so the box reads\n as one object (\"this is <product>, sign in\") rather than as a card with a caption\n floating over it.\n\n Only the CARD branch carries it. The other branch is the wide static-content layout\n (terms, legal pages), which is reached with the application's chrome around it and\n does not ask \"sign in to what\".\n */}\n {brandHeader && <PublicShellBrandHeader identity={brandHeader} />}\n {children}\n </CardContent>\n </Card>\n </main>\n </div>\n </Surface>\n );\n }\n\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.SHELL} policyOverride={NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE}>\n <div className={cn('h-screen w-screen overflow-auto', className)}>\n <main className=\"min-h-full py-section\">\n <div className=\"max-w-7xl mx-auto px-card sm:px-container lg:px-container-lg\">\n {children}\n </div>\n </main>\n </div>\n </Surface>\n );\n};\n"]}
1
+ {"version":3,"file":"public-layout-main-container.js","sourceRoot":"","sources":["../../../../../src/components/app/public-layout-main-container.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n PublicLayoutPreset_MainContainer_DefaultProps,\n Card,\n CardContent,\n usePublicShellLayout,\n useBrandPresentation,\n useUI,\n cn,\n NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE,\n Surface,\n type BrandIdentity,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { FrontendComponentType, SurfaceVariant, TypographyVariant, UIBehavior } from \"@wildo-ai/presets-components-models\"\n\n/**\n * The surface's identity, at the top of the public card.\n *\n * Rendered ONLY when the application opted in (`publicShellIdentityMode`) — `usePublicShellLayout`\n * gates that, so reaching this component at all is the permission. What it draws is decided from the\n * DATA, and each branch is a defect that would otherwise ship silently:\n *\n * - a WORDMARK/LOCKUP already contains the name, so the name label is dropped rather than printed\n * twice — the brand resolver returns one for an application that generated no symbol;\n * - a mark whose URL 404s degrades to the name alone instead of a browser broken-image glyph;\n * - an identity with neither mark nor name renders nothing, not an empty gap above the card.\n *\n * The height is RESERVED rather than left to the image. A login card that jumps downward when a logo\n * finishes loading is the \"glitch\" this feature is most likely to introduce, and it is worst exactly\n * where it is most visible: a cold load on a slow link, which is the first impression the page\n * exists to make. The `h-14` box is fixed and `w-auto` lets a wide lockup keep its aspect ratio\n * inside it — sized against the name beneath rather than picked in the abstract, so mark and name\n * read as one unit (hence the tighter `gap-element-sm` between them). Below the pair sits a\n * SECTION gap, not a group gap: the identity and the form's own heading are two different things\n * (\"this is <product>\" / \"sign in\"), and at `mb-group` the heading read as a caption of the logo.\n *\n * ## Why the name is styled from the recipe and is NOT a heading\n *\n * The type comes from the design system's `TYPOGRAPHY.HEADING` recipe rather than from classes\n * chosen here, so an application that restyles its headings restyles this too — the same thing\n * `CardTitle` does, and the reason it is worth a hook call for one line of text. `h1` SIZE — the top\n * of the design system's ordinary ladder — because the identity is what the card is opening with; at\n * `h2` it rendered visibly smaller than the action heading beneath it and read as a caption on the\n * logo rather than as the product's name. Measured on a screenshot, not reasoned about.\n *\n * It renders as a `<p>`, not a heading, because `Auth_Main` already emits the page's `<h1>` inside\n * this same card. A second one would give the document two competing top-level headings; the recipe\n * supplies the LOOK while the outline stays owned by the content.\n */\nconst PublicShellBrandHeader = ({ identity, accentColor }: { identity: BrandIdentity; accentColor?: string }): React.JSX.Element | null => {\n const { name, logoUrl, hasMark, markCarriesName, isEmpty, onMarkError } = useBrandPresentation(identity);\n const { getRecipe } = useUI();\n const headingRecipe = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.HEADING);\n\n if (isEmpty) return null;\n\n return (\n <div className=\"flex flex-col items-center gap-element-sm mb-section-lg\">\n {accentColor && <span aria-hidden=\"true\" className=\"h-1 w-12 rounded-full\" style={{ backgroundColor: accentColor }} />}\n {hasMark && (\n <div className=\"flex h-14 items-center justify-center\">\n <img\n src={logoUrl}\n /*\n * A mark that CARRIES the name is the only thing announcing it, so it is the accessible\n * name. A symbol sits beside the name text below and is decorative — announcing it too\n * would read the product name twice to a screen reader.\n */\n alt={markCarriesName ? name : ''}\n aria-hidden={markCarriesName ? undefined : 'true'}\n onError={onMarkError}\n className=\"max-h-14 w-auto object-contain\"\n />\n </div>\n )}\n {!markCarriesName && name !== '' && (\n <p className={cn(headingRecipe.base, headingRecipe.sizes?.h1 ?? 'text-3xl', 'text-center text-foreground')}>\n {name}\n </p>\n )}\n </div>\n );\n};\n\nexport const PublicLayoutPreset_MainContainer_Default = ({\n children = null,\n useCardLayout = false,\n organizationBranding,\n className = \"\"\n}: PublicLayoutPreset_MainContainer_DefaultProps): React.JSX.Element => {\n\n const { brandHeader, brandAccentColor } = usePublicShellLayout(useCardLayout, organizationBranding);\n\n if (useCardLayout) {\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.SHELL} policyOverride={NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE}>\n <div className=\"h-screen w-screen overflow-auto\">\n {/*\n A `<main>`, exactly like the wide branch below — the two branches are the same page at\n different widths, and only one of them had a landmark.\n\n The card branch is every public AUTH surface (sign-in, register, invitation, password\n reset, MFA challenge), so its content sat in no landmark at all: axe reported\n `landmark-one-main` plus three `region` violations on `/login` in the first accessibility\n audit ever run against this product (#533). A screen-reader user had no \"skip to main\"\n target and no way to jump to the form.\n\n It goes HERE, on the centring wrapper, rather than on the card: `Card` deliberately opts\n out of a landmark (`landmarkRole: 'none'` below) because it is presentational chrome, and\n the shell `<div>` above owns scrolling. This element is the one that actually bounds the\n page's content.\n */}\n {/* `isolate` for the same reason as the wide branch below — stated rather than left to\n `Card`'s incidental `z-index: 0`, which is what happened to keep this branch visible. */}\n <main className=\"isolate min-h-full flex items-center justify-center p-container\">\n {/*\n `landmarkRole: 'none'` opts this card out of the BASE variant's\n default `region` landmark. The card here is presentational\n chrome wrapping the public-auth panel — it doesn't represent a\n distinct semantic region on the page. Without the override the\n card would emit `role=\"region\"` without a label (no header,\n no aria-label) and the framework would warn on every render.\n */}\n <Card\n className={cn('w-full max-w-md', className)}\n policyOverride={{ a11y: { landmarkRole: 'none' } }}\n >\n <CardContent className=\"p-container-xl\">\n {/*\n The identity sits INSIDE the card, above the form's own heading — so the box reads\n as one object (\"this is <product>, sign in\") rather than as a card with a caption\n floating over it.\n\n Only the CARD branch carries it. The other branch is the wide static-content layout\n (terms, legal pages), which is reached with the application's chrome around it and\n does not ask \"sign in to what\".\n */}\n {brandHeader && <PublicShellBrandHeader identity={brandHeader} accentColor={brandAccentColor} />}\n {children}\n </CardContent>\n </Card>\n </main>\n </div>\n </Surface>\n );\n }\n\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.SHELL} policyOverride={NON_CANONICAL_SHELL_SURFACE_POLICY_OVERRIDE}>\n {/*\n FOCUSABLE, because this element is the only thing that scrolls. The product sets\n `html, body { overflow: hidden }`, so the page never scrolls — each shell owns it — and a\n scroll container can only be scrolled from the keyboard while focus is inside it.\n\n The card branch above needs none of this: every surface it serves has form fields. This\n branch serves the static public pages, and `/terms` is pure prose with nothing focusable in\n it at all — so a keyboard user could not read past the first screen of the terms they were\n being asked to accept. The first accessibility run against it reported exactly that\n (`scrollable-region-focusable`, #1385). `/privacy` passed only because it happens to\n contain a link, which is luck rather than design.\n\n `focus-ring-inset` rather than offset: an offset ring on a viewport-sized box is drawn\n outside the viewport and nobody sees it.\n */}\n <div tabIndex={0} className={cn('h-screen w-screen overflow-auto focus-ring-inset', className)}>\n {/*\n `isolate` is load-bearing: it is what makes this page's content VISIBLE.\n\n A theme's decorative background layer is rendered by `UIContext` inside an `isolate`\n wrapper, and `isolation: isolate` on a NON-POSITIONED element promotes that wrapper to\n the z-index:0 painting level (CSS 2.1 painting order step 8) rather than leaving it with\n in-flow block backgrounds and inline content at steps 3-5. So the layer paints ABOVE all\n ordinary content, and being an earlier DOM sibling does not lower it — DOM order only\n orders peers within the SAME painting level.\n\n Content therefore has to reach that level too. The card branch got there by accident:\n `Card` is a flex item carrying `z-index: 0`, so it paints at the same level and, being\n later in DOM order, lands above the layer. This branch is plain prose with no z-index,\n so its whole document painted underneath the layer and the page rendered as an empty\n gradient — 13,453 characters of privacy notice in the DOM and nothing on screen (#1204).\n\n Isolating the CONTENT rather than the shell is deliberate: the shell's own fill stays\n below the layer, so the decorative ground is unchanged and only the content rises.\n */}\n <main className=\"isolate min-h-full py-section\">\n <div className=\"max-w-7xl mx-auto px-card sm:px-container lg:px-container-lg\">\n {children}\n </div>\n </main>\n </div>\n </Surface>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"public-layout-main-container.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/app/public-layout-main-container.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,gCAAgC,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"public-layout-main-container.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/app/public-layout-main-container.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,gCAAgC,EAAE,mBAAmB,EAAO,CAAC"}
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import { type PublicLayoutPreset_Terms_DefaultProps } from '@wildo-ai/saas-frontend-lib';
3
+ /**
4
+ * The public governed-document page. Issue #168, and #968 for what it serves.
5
+ *
6
+ * Reads the application's own `compliance.publicDocuments` — each entry a composed release with the
7
+ * text it carries, or the latest draft of a document the application has never released. The page
8
+ * is a RENDERING of that specification, never a second description of it, which is why it takes no
9
+ * title, no body and no effective date as props: every one of them would be a place the page could
10
+ * disagree with the document.
11
+ *
12
+ * ## Four states
13
+ *
14
+ * **Not settled** — labels are still resolving. A loading line, because rendering a legal document
15
+ * with unresolved labels around it is worse than rendering nothing for a moment.
16
+ *
17
+ * **Nothing to show** — no release for this ref is in force (or none is approved, when the gate is
18
+ * armed), and no draft may stand in. The page says so and shows NO content. There is deliberately no
19
+ * partial render: a legal statement half-shown is worse than one not shown, because a reader cannot
20
+ * tell which half is missing.
21
+ *
22
+ * **Released** — the document, its sections and clauses in their declared order, with the release
23
+ * version and effective date beneath the title. `bodyMarkdown` goes through `MarkdownContent`, which
24
+ * renders markdown as TEXT through the active theme's typography recipes; the schema's own note says
25
+ * public content "is never trusted as raw HTML", and this is where that holds.
26
+ *
27
+ * **Unreleased draft** — the same rendering, with a notice in place of the release metadata saying
28
+ * the reader is looking at a draft. There is no effective date to show because nothing took effect.
29
+ * It exists so that neither a missing approval nor a missing release leaves the page empty (#968).
30
+ *
31
+ * ## Unestablished clauses are MARKED, in either state
32
+ *
33
+ * A clause the drafter could not yet establish is rendered with a note beneath it saying so and what
34
+ * is missing. Omitting it would narrow the document; showing it bare would state as settled what the
35
+ * application itself wrote down as unsettled.
36
+ *
37
+ * ## What it does not decide
38
+ *
39
+ * Whether an UNAPPROVED release — or a draft — may be shown. That is the application's approval gate,
40
+ * `compliance.governedDocumentApprovalGate`, read through `requiresApprovedGovernedDocuments` — the same
41
+ * reading every acceptance surface uses, so the page cannot be armed without them (#1565). It used to
42
+ * be a prop the route passed, which is exactly how it could be armed here alone. See
43
+ * `.claude/rules/one-source-of-truth.md` D5 for why arming it belongs to Gate 3.
44
+ */
45
+ export declare const PublicLayoutPreset_Terms_Default: ({ documentRef, }: PublicLayoutPreset_Terms_DefaultProps) => React.JSX.Element;
46
+ //# sourceMappingURL=public-layout-terms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-layout-terms.d.ts","sourceRoot":"","sources":["../../../../../src/components/app/public-layout-terms.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EASL,KAAK,qCAAqC,EAC3C,MAAM,6BAA6B,CAAC;AAiBrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,eAAO,MAAM,gCAAgC,GAAI,kBAE9C,qCAAqC,KAAG,KAAK,CAAC,GAAG,CAAC,OA6JpD,CAAC"}
@@ -0,0 +1,137 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ import { PublicLayout_MainContainer, cn, getManualCallsHttpClient, useAnonymousSession, useApplication, useI18n, useUI, useUserOrgs, } from '@wildo-ai/saas-frontend-lib';
4
+ import { GovernedDocumentInteractionKind, GovernedDocumentPublicClauseStanding, GovernedDocumentPublicDocumentKind, requiresApprovedGovernedDocuments, resolveInForcePublicDocument, } from '@wildo-ai/saas-models';
5
+ // The markdown renderer is THIS package's, so it is reached by its own path rather than through the
6
+ // engine barrel — `presets-components` is where the theme-mapped renderer lives.
7
+ import { MarkdownContent } from '../../components/data-display/markdown-content.js';
8
+ import { FrontendComponentType, PublicLayoutsTermsLabel, TypographyVariant, UIBehavior } from '@wildo-ai/presets-components-models';
9
+ const CT = FrontendComponentType.PUBLIC_LAYOUTS_TERMS;
10
+ /**
11
+ * The public governed-document page. Issue #168, and #968 for what it serves.
12
+ *
13
+ * Reads the application's own `compliance.publicDocuments` — each entry a composed release with the
14
+ * text it carries, or the latest draft of a document the application has never released. The page
15
+ * is a RENDERING of that specification, never a second description of it, which is why it takes no
16
+ * title, no body and no effective date as props: every one of them would be a place the page could
17
+ * disagree with the document.
18
+ *
19
+ * ## Four states
20
+ *
21
+ * **Not settled** — labels are still resolving. A loading line, because rendering a legal document
22
+ * with unresolved labels around it is worse than rendering nothing for a moment.
23
+ *
24
+ * **Nothing to show** — no release for this ref is in force (or none is approved, when the gate is
25
+ * armed), and no draft may stand in. The page says so and shows NO content. There is deliberately no
26
+ * partial render: a legal statement half-shown is worse than one not shown, because a reader cannot
27
+ * tell which half is missing.
28
+ *
29
+ * **Released** — the document, its sections and clauses in their declared order, with the release
30
+ * version and effective date beneath the title. `bodyMarkdown` goes through `MarkdownContent`, which
31
+ * renders markdown as TEXT through the active theme's typography recipes; the schema's own note says
32
+ * public content "is never trusted as raw HTML", and this is where that holds.
33
+ *
34
+ * **Unreleased draft** — the same rendering, with a notice in place of the release metadata saying
35
+ * the reader is looking at a draft. There is no effective date to show because nothing took effect.
36
+ * It exists so that neither a missing approval nor a missing release leaves the page empty (#968).
37
+ *
38
+ * ## Unestablished clauses are MARKED, in either state
39
+ *
40
+ * A clause the drafter could not yet establish is rendered with a note beneath it saying so and what
41
+ * is missing. Omitting it would narrow the document; showing it bare would state as settled what the
42
+ * application itself wrote down as unsettled.
43
+ *
44
+ * ## What it does not decide
45
+ *
46
+ * Whether an UNAPPROVED release — or a draft — may be shown. That is the application's approval gate,
47
+ * `compliance.governedDocumentApprovalGate`, read through `requiresApprovedGovernedDocuments` — the same
48
+ * reading every acceptance surface uses, so the page cannot be armed without them (#1565). It used to
49
+ * be a prop the route passed, which is exactly how it could be armed here alone. See
50
+ * `.claude/rules/one-source-of-truth.md` D5 for why arming it belongs to Gate 3.
51
+ */
52
+ export const PublicLayoutPreset_Terms_Default = ({ documentRef, }) => {
53
+ const { appConfig } = useApplication();
54
+ const { tComponent, isReady } = useI18n({ component: CT });
55
+ const { getRecipe } = useUI();
56
+ const { user, auth } = useUserOrgs();
57
+ const { initAnonymousSession } = useAnonymousSession();
58
+ const heading = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.HEADING);
59
+ const body = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.BODY);
60
+ /*
61
+ * Pinned at mount rather than re-evaluated per render. A release taking effect while somebody is
62
+ * READING would otherwise swap the document under them mid-paragraph — the reading equivalent of
63
+ * the registration form's own "what am I agreeing to" hazard.
64
+ */
65
+ const document = React.useMemo(() => resolveInForcePublicDocument(appConfig.compliance?.publicDocuments ?? [], documentRef, new Date().toISOString(), { requireApproved: requiresApprovedGovernedDocuments(appConfig.compliance) }),
66
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- pinned at mount, deliberately; see above.
67
+ [appConfig.compliance?.publicDocuments, documentRef, appConfig.compliance?.governedDocumentApprovalGate]);
68
+ /*
69
+ * Record NOTICE_DELIVERED once, on MOUNT — never per render — for the exact release this page is
70
+ * showing (#1258 Step 5 / R11). Fire-and-forget: a delivery record failing to write must never
71
+ * affect the page the reader already sees.
72
+ *
73
+ * Two guards keep this from writing the "47 identical reads" the #51 lesson warns about
74
+ * (`recordGovernedDocumentAcceptances`'s own header cites it): the effect's own empty-ish deps
75
+ * fire it once per mount, and a `sessionStorage` flag skips a repeat visit to the same document +
76
+ * release within the same browser tab. Neither is a hard guarantee against every duplicate — the
77
+ * recorder's own JSDoc explains why a rare true duplicate is tolerated rather than built out with a
78
+ * second queryable resource.
79
+ *
80
+ * Reader identity: a signed-in person's own bearer-token route, or the anonymous-session door —
81
+ * whichever the person currently is. **Waits for `auth.isRestoringSession` to clear first**, and
82
+ * that wait is load-bearing, not cosmetic (review finding F1, #1258 Steps 4-5): a stored access
83
+ * token resolves ASYNCHRONOUSLY, over a real network round-trip
84
+ * (`AuthSessionContext`/`UserOrgsContext`) — an earlier draft of this comment claimed the resolve
85
+ * was synchronous and that "signed out" and "not yet known" were indistinguishable, and both
86
+ * halves were wrong. A signed-in person landing directly on `/terms` or `/privacy` on a fresh page
87
+ * load (an emailed link, the R7 re-acceptance redirect) would otherwise be read as signed-out for
88
+ * the one render this effect fires on, mint a throwaway anonymous session via
89
+ * `initAnonymousSession()`, and have their delivery permanently misattributed to it — nothing ever
90
+ * reconciles a stray session created this way back onto the account, unlike Step 1's carry, which
91
+ * only runs at registration/authentication. `AppLayout_AuthenticatedRoute.tsx` already gates on
92
+ * exactly this signal for exactly this reason; this effect now does the same.
93
+ */
94
+ React.useEffect(() => {
95
+ if (auth.isRestoringSession)
96
+ return;
97
+ if (document?.kind !== GovernedDocumentPublicDocumentKind.RELEASED)
98
+ return;
99
+ if (!document.release.allowedInteractionKinds.includes(GovernedDocumentInteractionKind.NOTICE_DELIVERED))
100
+ return;
101
+ const sessionKey = `wildo:notice-delivered:${documentRef}:${document.release.identity.releaseId}@${document.release.identity.releaseVersion}`;
102
+ try {
103
+ if (window.sessionStorage.getItem(sessionKey))
104
+ return;
105
+ window.sessionStorage.setItem(sessionKey, '1');
106
+ }
107
+ catch {
108
+ // Storage unavailable (private browsing, quota) — proceed and risk a duplicate row rather than
109
+ // never recording delivery at all.
110
+ }
111
+ const client = getManualCallsHttpClient();
112
+ if (user !== null) {
113
+ void client.recordGovernedDocumentNoticeDelivered(documentRef);
114
+ }
115
+ else {
116
+ // A first-ever visit has no anonymous session yet — `record_consent`'s own door needed the
117
+ // same thing before Step 1a existed. `initAnonymousSession` is a no-op returning the existing
118
+ // id when one is already ACTIVE, so this is safe to call unconditionally here.
119
+ initAnonymousSession();
120
+ void client.recordAnonymousGovernedDocumentNoticeDelivered(documentRef);
121
+ }
122
+ // `auth.isRestoringSession` is a real dependency, not a suppressed one: this effect must re-run
123
+ // the instant it clears, which is the whole point of the gate above. `user`/`initAnonymousSession`
124
+ // are read fresh inside the effect and are stable enough not to cause a spurious re-fire past the
125
+ // sessionStorage guard, which is what the suppression below still covers.
126
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- fires once per mount for this release; see above.
127
+ }, [document, documentRef, auth.isRestoringSession]);
128
+ if (!isReady) {
129
+ return (_jsx(PublicLayout_MainContainer, { children: _jsx("p", { className: cn(body.base, 'text-muted-foreground'), children: tComponent(CT, PublicLayoutsTermsLabel.LOADING) }) }));
130
+ }
131
+ if (!document) {
132
+ return (_jsx(PublicLayout_MainContainer, { children: _jsxs("div", { className: "mx-auto flex max-w-prose flex-col gap-element", children: [_jsx("h1", { className: cn(heading.base, heading.sizes?.h1 ?? 'text-3xl'), children: tComponent(CT, PublicLayoutsTermsLabel.UNAVAILABLE_TITLE) }), _jsx("p", { className: cn(body.base, 'text-muted-foreground'), children: tComponent(CT, PublicLayoutsTermsLabel.UNAVAILABLE_DESCRIPTION) })] }) }));
133
+ }
134
+ const { content } = document;
135
+ return (_jsx(PublicLayout_MainContainer, { children: _jsxs("article", { className: "mx-auto flex max-w-prose flex-col gap-section", lang: content.locale, children: [_jsxs("header", { className: "flex flex-col gap-element-sm", children: [_jsx("h1", { className: cn(heading.base, heading.sizes?.h1 ?? 'text-3xl'), children: content.title }), document.kind === GovernedDocumentPublicDocumentKind.RELEASED ? (_jsxs("dl", { className: cn(body.base, 'flex flex-wrap gap-field text-sm text-muted-foreground'), children: [_jsxs("div", { className: "flex gap-element-sm", children: [_jsx("dt", { children: tComponent(CT, PublicLayoutsTermsLabel.EFFECTIVE_AT) }), _jsx("dd", { children: _jsx("time", { dateTime: document.release.effectiveAt, children: new Date(document.release.effectiveAt).toLocaleDateString() }) })] }), _jsx("div", { className: "flex gap-element-sm", children: _jsx("dt", { children: tComponent(CT, PublicLayoutsTermsLabel.RELEASE_VERSION, { releaseVersion: document.release.identity.releaseVersion }) }) })] })) : (_jsx("p", { role: "note", className: cn(body.base, 'text-sm text-muted-foreground'), children: tComponent(CT, PublicLayoutsTermsLabel.UNRELEASED_DRAFT_NOTICE) }))] }), content.sections.map((section) => (_jsxs("section", { className: "flex flex-col gap-element", children: [_jsx("h2", { className: cn(heading.base, heading.sizes?.h2 ?? 'text-2xl'), children: section.title }), section.clauses.map((clause) => (_jsxs("div", { className: "flex flex-col gap-element-sm", children: [_jsx(MarkdownContent, { value: clause.bodyMarkdown }), clause.standing === GovernedDocumentPublicClauseStanding.NOT_YET_ESTABLISHED && (_jsxs("p", { role: "note", className: cn(body.base, 'text-sm text-muted-foreground'), children: [_jsx("span", { children: tComponent(CT, PublicLayoutsTermsLabel.CLAUSE_NOT_YET_ESTABLISHED) }), " ", _jsx("span", { children: clause.missingInformation })] }))] }, clause.clauseRef)))] }, section.sectionRef)))] }) }));
136
+ };
137
+ //# sourceMappingURL=public-layout-terms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-layout-terms.js","sourceRoot":"","sources":["../../../../../src/components/app/public-layout-terms.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport {\n PublicLayout_MainContainer,\n cn,\n getManualCallsHttpClient,\n useAnonymousSession,\n useApplication,\n useI18n,\n useUI,\n useUserOrgs,\n type PublicLayoutPreset_Terms_DefaultProps,\n} from '@wildo-ai/saas-frontend-lib';\nimport {\n GovernedDocumentInteractionKind,\n GovernedDocumentPublicClauseStanding,\n GovernedDocumentPublicDocumentKind,\n requiresApprovedGovernedDocuments,\n resolveInForcePublicDocument,\n type GovernedDocumentPublicDocument,\n} from '@wildo-ai/saas-models';\n\n// The markdown renderer is THIS package's, so it is reached by its own path rather than through the\n// engine barrel — `presets-components` is where the theme-mapped renderer lives.\nimport { MarkdownContent } from '~wildo-presets/components/data-display/markdown-content';\nimport { FrontendComponentType, PublicLayoutsTermsLabel, TypographyVariant, UIBehavior } from '@wildo-ai/presets-components-models';\n\nconst CT = FrontendComponentType.PUBLIC_LAYOUTS_TERMS;\n\n/**\n * The public governed-document page. Issue #168, and #968 for what it serves.\n *\n * Reads the application's own `compliance.publicDocuments` — each entry a composed release with the\n * text it carries, or the latest draft of a document the application has never released. The page\n * is a RENDERING of that specification, never a second description of it, which is why it takes no\n * title, no body and no effective date as props: every one of them would be a place the page could\n * disagree with the document.\n *\n * ## Four states\n *\n * **Not settled** — labels are still resolving. A loading line, because rendering a legal document\n * with unresolved labels around it is worse than rendering nothing for a moment.\n *\n * **Nothing to show** — no release for this ref is in force (or none is approved, when the gate is\n * armed), and no draft may stand in. The page says so and shows NO content. There is deliberately no\n * partial render: a legal statement half-shown is worse than one not shown, because a reader cannot\n * tell which half is missing.\n *\n * **Released** — the document, its sections and clauses in their declared order, with the release\n * version and effective date beneath the title. `bodyMarkdown` goes through `MarkdownContent`, which\n * renders markdown as TEXT through the active theme's typography recipes; the schema's own note says\n * public content \"is never trusted as raw HTML\", and this is where that holds.\n *\n * **Unreleased draft** — the same rendering, with a notice in place of the release metadata saying\n * the reader is looking at a draft. There is no effective date to show because nothing took effect.\n * It exists so that neither a missing approval nor a missing release leaves the page empty (#968).\n *\n * ## Unestablished clauses are MARKED, in either state\n *\n * A clause the drafter could not yet establish is rendered with a note beneath it saying so and what\n * is missing. Omitting it would narrow the document; showing it bare would state as settled what the\n * application itself wrote down as unsettled.\n *\n * ## What it does not decide\n *\n * Whether an UNAPPROVED release — or a draft — may be shown. That is the application's approval gate,\n * `compliance.governedDocumentApprovalGate`, read through `requiresApprovedGovernedDocuments` — the same\n * reading every acceptance surface uses, so the page cannot be armed without them (#1565). It used to\n * be a prop the route passed, which is exactly how it could be armed here alone. See\n * `.claude/rules/one-source-of-truth.md` D5 for why arming it belongs to Gate 3.\n */\nexport const PublicLayoutPreset_Terms_Default = ({\n documentRef,\n}: PublicLayoutPreset_Terms_DefaultProps): React.JSX.Element => {\n const { appConfig } = useApplication();\n const { tComponent, isReady } = useI18n({ component: CT });\n const { getRecipe } = useUI();\n const { user, auth } = useUserOrgs();\n const { initAnonymousSession } = useAnonymousSession();\n const heading = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.HEADING);\n const body = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.BODY);\n\n /*\n * Pinned at mount rather than re-evaluated per render. A release taking effect while somebody is\n * READING would otherwise swap the document under them mid-paragraph — the reading equivalent of\n * the registration form's own \"what am I agreeing to\" hazard.\n */\n const document = React.useMemo<GovernedDocumentPublicDocument | undefined>(\n () => resolveInForcePublicDocument(\n appConfig.compliance?.publicDocuments ?? [],\n documentRef,\n new Date().toISOString(),\n { requireApproved: requiresApprovedGovernedDocuments(appConfig.compliance) },\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- pinned at mount, deliberately; see above.\n [appConfig.compliance?.publicDocuments, documentRef, appConfig.compliance?.governedDocumentApprovalGate],\n );\n\n /*\n * Record NOTICE_DELIVERED once, on MOUNT — never per render — for the exact release this page is\n * showing (#1258 Step 5 / R11). Fire-and-forget: a delivery record failing to write must never\n * affect the page the reader already sees.\n *\n * Two guards keep this from writing the \"47 identical reads\" the #51 lesson warns about\n * (`recordGovernedDocumentAcceptances`'s own header cites it): the effect's own empty-ish deps\n * fire it once per mount, and a `sessionStorage` flag skips a repeat visit to the same document +\n * release within the same browser tab. Neither is a hard guarantee against every duplicate — the\n * recorder's own JSDoc explains why a rare true duplicate is tolerated rather than built out with a\n * second queryable resource.\n *\n * Reader identity: a signed-in person's own bearer-token route, or the anonymous-session door —\n * whichever the person currently is. **Waits for `auth.isRestoringSession` to clear first**, and\n * that wait is load-bearing, not cosmetic (review finding F1, #1258 Steps 4-5): a stored access\n * token resolves ASYNCHRONOUSLY, over a real network round-trip\n * (`AuthSessionContext`/`UserOrgsContext`) — an earlier draft of this comment claimed the resolve\n * was synchronous and that \"signed out\" and \"not yet known\" were indistinguishable, and both\n * halves were wrong. A signed-in person landing directly on `/terms` or `/privacy` on a fresh page\n * load (an emailed link, the R7 re-acceptance redirect) would otherwise be read as signed-out for\n * the one render this effect fires on, mint a throwaway anonymous session via\n * `initAnonymousSession()`, and have their delivery permanently misattributed to it — nothing ever\n * reconciles a stray session created this way back onto the account, unlike Step 1's carry, which\n * only runs at registration/authentication. `AppLayout_AuthenticatedRoute.tsx` already gates on\n * exactly this signal for exactly this reason; this effect now does the same.\n */\n React.useEffect(() => {\n if (auth.isRestoringSession) return;\n if (document?.kind !== GovernedDocumentPublicDocumentKind.RELEASED) return;\n if (!document.release.allowedInteractionKinds.includes(GovernedDocumentInteractionKind.NOTICE_DELIVERED)) return;\n\n const sessionKey = `wildo:notice-delivered:${documentRef}:${document.release.identity.releaseId}@${document.release.identity.releaseVersion}`;\n try {\n if (window.sessionStorage.getItem(sessionKey)) return;\n window.sessionStorage.setItem(sessionKey, '1');\n } catch {\n // Storage unavailable (private browsing, quota) — proceed and risk a duplicate row rather than\n // never recording delivery at all.\n }\n\n const client = getManualCallsHttpClient();\n if (user !== null) {\n void client.recordGovernedDocumentNoticeDelivered(documentRef);\n } else {\n // A first-ever visit has no anonymous session yet — `record_consent`'s own door needed the\n // same thing before Step 1a existed. `initAnonymousSession` is a no-op returning the existing\n // id when one is already ACTIVE, so this is safe to call unconditionally here.\n initAnonymousSession();\n void client.recordAnonymousGovernedDocumentNoticeDelivered(documentRef);\n }\n // `auth.isRestoringSession` is a real dependency, not a suppressed one: this effect must re-run\n // the instant it clears, which is the whole point of the gate above. `user`/`initAnonymousSession`\n // are read fresh inside the effect and are stable enough not to cause a spurious re-fire past the\n // sessionStorage guard, which is what the suppression below still covers.\n // eslint-disable-next-line react-hooks/exhaustive-deps -- fires once per mount for this release; see above.\n }, [document, documentRef, auth.isRestoringSession]);\n\n if (!isReady) {\n return (\n <PublicLayout_MainContainer>\n <p className={cn(body.base, 'text-muted-foreground')}>{tComponent(CT, PublicLayoutsTermsLabel.LOADING)}</p>\n </PublicLayout_MainContainer>\n );\n }\n\n if (!document) {\n return (\n <PublicLayout_MainContainer>\n <div className=\"mx-auto flex max-w-prose flex-col gap-element\">\n <h1 className={cn(heading.base, heading.sizes?.h1 ?? 'text-3xl')}>\n {tComponent(CT, PublicLayoutsTermsLabel.UNAVAILABLE_TITLE)}\n </h1>\n <p className={cn(body.base, 'text-muted-foreground')}>\n {tComponent(CT, PublicLayoutsTermsLabel.UNAVAILABLE_DESCRIPTION)}\n </p>\n </div>\n </PublicLayout_MainContainer>\n );\n }\n\n const { content } = document;\n\n return (\n <PublicLayout_MainContainer>\n {/*\n * `lang` is the document's OWN locale, not the reader's. A French notice read in an English\n * browser is still French, and announcing it as English makes a screen reader pronounce it\n * wrongly — the one accessibility defect a document page can introduce that its own content\n * cannot fix.\n */}\n <article className=\"mx-auto flex max-w-prose flex-col gap-section\" lang={content.locale}>\n <header className=\"flex flex-col gap-element-sm\">\n <h1 className={cn(heading.base, heading.sizes?.h1 ?? 'text-3xl')}>{content.title}</h1>\n {document.kind === GovernedDocumentPublicDocumentKind.RELEASED ? (\n <dl className={cn(body.base, 'flex flex-wrap gap-field text-sm text-muted-foreground')}>\n <div className=\"flex gap-element-sm\">\n <dt>{tComponent(CT, PublicLayoutsTermsLabel.EFFECTIVE_AT)}</dt>\n {/* The machine-readable value stays in `dateTime`; the text is the reader's locale. */}\n <dd>\n <time dateTime={document.release.effectiveAt}>{new Date(document.release.effectiveAt).toLocaleDateString()}</time>\n </dd>\n </div>\n <div className=\"flex gap-element-sm\">\n <dt>\n {tComponent(CT, PublicLayoutsTermsLabel.RELEASE_VERSION, { releaseVersion: document.release.identity.releaseVersion })}\n </dt>\n </div>\n </dl>\n ) : (\n <p role=\"note\" className={cn(body.base, 'text-sm text-muted-foreground')}>\n {tComponent(CT, PublicLayoutsTermsLabel.UNRELEASED_DRAFT_NOTICE)}\n </p>\n )}\n </header>\n {content.sections.map((section) => (\n <section key={section.sectionRef} className=\"flex flex-col gap-element\">\n <h2 className={cn(heading.base, heading.sizes?.h2 ?? 'text-2xl')}>{section.title}</h2>\n {section.clauses.map((clause) => (\n <div key={clause.clauseRef} className=\"flex flex-col gap-element-sm\">\n <MarkdownContent value={clause.bodyMarkdown} />\n {clause.standing === GovernedDocumentPublicClauseStanding.NOT_YET_ESTABLISHED && (\n <p role=\"note\" className={cn(body.base, 'text-sm text-muted-foreground')}>\n <span>{tComponent(CT, PublicLayoutsTermsLabel.CLAUSE_NOT_YET_ESTABLISHED)}</span> <span>{clause.missingInformation}</span>\n </p>\n )}\n </div>\n ))}\n </section>\n ))}\n </article>\n </PublicLayout_MainContainer>\n );\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"billing-format.utils.d.ts","sourceRoot":"","sources":["../../../../src/components/billing/billing-format.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAK3D;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAe9D"}
1
+ {"version":3,"file":"billing-format.utils.d.ts","sourceRoot":"","sources":["../../../../../src/components/billing/billing-format.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAK3D;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,CAAC,KAAK,EAAE,UAAU,KAAK,MAAM,CAe9D"}
@@ -9,5 +9,5 @@
9
9
  */
10
10
  import { InvoiceHistoryProps } from '@wildo-ai/saas-frontend-lib';
11
11
  import React from 'react';
12
- export declare function InvoiceHistory({ invoices, providerName, isLoading, error, onViewAll, limit, }: InvoiceHistoryProps): React.JSX.Element | null;
12
+ export declare function InvoiceHistory({ invoices, providerName, isLoading, error, unavailable, onViewAll, limit, }: InvoiceHistoryProps): React.JSX.Element | null;
13
13
  //# sourceMappingURL=billing-invoice-history.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"billing-invoice-history.d.ts","sourceRoot":"","sources":["../../../../src/components/billing/billing-invoice-history.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,mBAAmB,EAapB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAA+B,MAAM,OAAO,CAAC;AAoBpD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,KAAK,EACL,SAAS,EACT,KAAU,GACX,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA2IhD"}
1
+ {"version":3,"file":"billing-invoice-history.d.ts","sourceRoot":"","sources":["../../../../../src/components/billing/billing-invoice-history.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,mBAAmB,EAapB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAA+B,MAAM,OAAO,CAAC;AAoBpD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,KAAK,EACL,WAAW,EACX,SAAS,EACT,KAAU,GACX,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA6IhD"}
@@ -21,7 +21,7 @@ const STATUS_BADGE_CONFIG = {
21
21
  uncollectible: { labelKey: 'uncollectibleBadge', indicatorVariant: IndicatorVariant.ERROR },
22
22
  };
23
23
  // ── Component ───────────────────────────────────────────────────────
24
- export function InvoiceHistory({ invoices, providerName, isLoading, error, onViewAll, limit = 10, }) {
24
+ export function InvoiceHistory({ invoices, providerName, isLoading, error, unavailable, onViewAll, limit = 10, }) {
25
25
  const { getRecipe } = useUI();
26
26
  const { makeTrComponent, formatDate, isReady } = useI18n({ component: FrontendComponentType.LOW_LEVEL_BILLING_INVOICE_HISTORY });
27
27
  const { renderIcon } = useIconRegistry();
@@ -45,6 +45,8 @@ export function InvoiceHistory({ invoices, providerName, isLoading, error, onVie
45
45
  }
46
46
  if (!isReady)
47
47
  return null;
48
+ if (unavailable)
49
+ return _jsx(Alert, { variant: "destructive", children: _jsx(AlertDescription, { children: t('unavailable') }) });
48
50
  return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.BASE, children: _jsxs("div", { className: cn("p-card", surfaceRecipe.base), children: [_jsxs("div", { className: "flex items-center justify-between mb-section", children: [_jsx("h3", { className: cn(headingRecipe.base, headingRecipe.sizes?.md), children: t('title') }), onViewAll && invoices.length > limit && (_jsxs(Button, { variant: ButtonVariants_Variant.GHOST, size: ButtonSize.SM, onClick: onViewAll, children: [_jsx("span", { children: t('viewAll') }), providerName && (_jsx("span", { className: cn(descriptionRecipe.base, "text-xs"), children: providerName }))] }))] }), displayInvoices.length === 0 && (_jsx("p", { className: cn(descriptionRecipe.base, "py-4 text-center"), children: t('emptyState') })), displayInvoices.length > 0 && (_jsx("div", { className: "divide-y divide-border", children: displayInvoices.map((invoice) => {
49
51
  const badgeConfig = STATUS_BADGE_CONFIG[invoice.status] ?? STATUS_BADGE_CONFIG.draft;
50
52
  const badgeRecipe = getRecipe(UIBehavior.INDICATOR, badgeConfig.indicatorVariant);