@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
@@ -3,6 +3,27 @@ import * as React from "react";
3
3
  import { cn, useUI, useIconRegistry, StandardIconReference, IconSize, Surface, Heading, Text, Collapsible, CollapsibleTrigger, CollapsibleContent, } from '@wildo-ai/saas-frontend-lib';
4
4
  import { SectionMode } from "@wildo-ai/zod-decorators";
5
5
  import { SurfaceVariant, UIBehavior, TextVariant, TextSize } from "@wildo-ai/presets-components-models";
6
+ /**
7
+ * Every section branch that renders a native `<fieldset>` carries this.
8
+ *
9
+ * The browser's UA stylesheet gives `fieldset` `min-width: min-content` — the
10
+ * ONE element with that default — so a fieldset refuses to shrink below the
11
+ * widest thing inside it, whatever its container says. A flex/grid child's
12
+ * `min-width: auto` has the same effect, and `min-w-0` answers both.
13
+ *
14
+ * Measured 2026-09-22 on the Wonder Todos todo READ overlay: the dialog is
15
+ * `width: 672px; max-width: 672px; overflow-x: auto`, and the fieldset inside it
16
+ * measured **747px** — its `md:grid-cols-2 xl:grid-cols-3` body reported a
17
+ * min-content width larger than the dialog, so the dialog scrolled sideways and
18
+ * the overlay's right edge (its actions) was clipped out of reach. Everything
19
+ * between the two inherited the 747.
20
+ *
21
+ * Do not "simplify" this away: nothing else in the chain resets it, and the
22
+ * symptom only appears once a section's content is wider than its container —
23
+ * a dialog, a narrow panel, a small viewport — never in the page-width case a
24
+ * component is usually authored against.
25
+ */
26
+ const FIELDSET_SHRINK_RESET = 'min-w-0';
6
27
  /**
7
28
  * ContentSectionLegend preset — section heading. DOM-identical to the legacy
8
29
  * FieldLegend preset (`data-slot="field-legend"` + classes) so existing CSS and
@@ -72,14 +93,23 @@ function ContentSection({ className, appearance = SectionMode.DEFAULT, legend, d
72
93
  // compile on hot-reload (only on a full restart / production build). To stay
73
94
  // reliable on every reload we instead detect the settings-row children at
74
95
  // runtime and toggle between ALREADY-EMITTED utilities (`p-0`/`p-card`). The
75
- // effect runs each commit with a change-guard (no re-render loop); `bodyRef`
76
- // is null for the non-CARD branches, so this is inert there.
96
+ // effect runs each commit but sets state only when the detection CHANGES,
97
+ // compared against the rendered value; `bodyRef` is null for the non-CARD
98
+ // branches, so this is inert there.
99
+ //
100
+ // Do not turn the guard back into a functional updater. `setState(prev => …)`
101
+ // still enqueues an update on every commit whenever React cannot bail out
102
+ // eagerly, which made every section — including the form-wide DEFAULT one —
103
+ // a participant in any other component's update loop and the component React
104
+ // blamed for it ("Maximum update depth exceeded" at ContentSection when an
105
+ // avatar crop was applied, 2026-09-15; the loop was in the file field).
77
106
  const cardBodyRef = React.useRef(null);
78
107
  const [cardBodyIsSettingsList, setCardBodyIsSettingsList] = React.useState(false);
79
108
  React.useLayoutEffect(() => {
80
109
  const el = cardBodyRef.current;
81
110
  const next = !!el && !!el.querySelector(':scope > [data-chrome-mode="settings_row"]');
82
- setCardBodyIsSettingsList((prev) => (prev === next ? prev : next));
111
+ if (next !== cardBodyIsSettingsList)
112
+ setCardBodyIsSettingsList(next);
83
113
  });
84
114
  // Explicit CARD sections — solo AND container-panel `card-each` — ALWAYS paint
85
115
  // their themed card chrome (elevated fill + border). The `when-orphan` frame
@@ -116,7 +146,7 @@ function ContentSection({ className, appearance = SectionMode.DEFAULT, legend, d
116
146
  // (a bordered card panel in every theme) on the element itself — the
117
147
  // wrapper is kept for the policy context only. See the solo DEFAULT
118
148
  // branch below for the full account of this trap.
119
- className: cn(isCardEach ? cardRecipe.base : 'space-y-field rounded-none border-0 bg-transparent p-0 shadow-none', className), ...props, style: isCardEach
149
+ className: cn(FIELDSET_SHRINK_RESET, isCardEach ? cardRecipe.base : 'space-y-field rounded-none border-0 bg-transparent p-0 shadow-none', className), ...props, style: isCardEach
120
150
  ? props.style
121
151
  : { borderWidth: 0, background: 'transparent', boxShadow: 'none', borderRadius: 0, padding: 0, ...props.style }, children: [hasHeading && (_jsxs("div", { className: isCardEach ? 'p-card border-b' : 'space-y-item-xs', children: [(legend != null || icon != null) && (_jsxs(Heading, { level: headingLevel, className: "text-base font-semibold", children: [icon != null && _jsx("span", { className: "me-element inline-flex items-center", children: icon }), legend] })), description != null && _jsx(Text, { variant: TextVariant.MUTED, size: TextSize.SM, children: description })] })), _jsx("div", { className: isCardEach ? 'p-card' : undefined, children: children })] }) }));
122
152
  }
@@ -162,7 +192,7 @@ function ContentSection({ className, appearance = SectionMode.DEFAULT, legend, d
162
192
  // beat `shadow-none`), while an inline declaration always wins; caller-passed
163
193
  // style still overrides via the trailing spread.
164
194
  if (!isCard) {
165
- return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.BASE, policyOverride: { nesting: { framingMode: 'never' } }, children: _jsxs("fieldset", { "data-slot": "field-set", "data-appearance": appearance, "data-section-frame": "suppressed", disabled: disabled, className: cn(baseStyles, 'rounded-none border-0 bg-transparent p-0 shadow-none', className), ...props, style: { borderWidth: 0, background: 'transparent', boxShadow: 'none', borderRadius: 0, padding: 0, ...props.style }, children: [structuredLegend, structuredDescription, children] }) }));
195
+ return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.BASE, policyOverride: { nesting: { framingMode: 'never' } }, children: _jsxs("fieldset", { "data-slot": "field-set", "data-appearance": appearance, "data-section-frame": "suppressed", disabled: disabled, className: cn(FIELDSET_SHRINK_RESET, baseStyles, 'rounded-none border-0 bg-transparent p-0 shadow-none', className), ...props, style: { borderWidth: 0, background: 'transparent', boxShadow: 'none', borderRadius: 0, padding: 0, ...props.style }, children: [structuredLegend, structuredDescription, children] }) }));
166
196
  }
167
197
  // CARD — the section title + description sit ABOVE the card as a group heading
168
198
  // (the macOS/iOS/Linear "settings group" pattern), and the themed card chrome
@@ -183,7 +213,7 @@ function ContentSection({ className, appearance = SectionMode.DEFAULT, legend, d
183
213
  // `p-card`.
184
214
  const headingId = `${reactId}-legend`;
185
215
  const hasHeading = legend != null && legend !== false;
186
- return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.CARD, policyOverride: { nesting: { framingMode: 'always' } }, children: _jsxs("fieldset", { "data-slot": "field-set", "data-appearance": appearance, "data-section-frame": "rendered", disabled: disabled, "aria-labelledby": hasHeading ? headingId : undefined, className: cn("flex flex-col gap-field-sm border-0 bg-transparent p-0", className), ...props, children: [hasHeading && (_jsxs("div", { className: "space-y-item-xs", children: [_jsx(Heading, { level: 3, id: headingId, "data-slot": "field-legend", "data-variant": "legend", className: "text-base font-medium leading-tight", children: legend }), structuredDescription] })), _jsx("div", { ref: cardBodyRef, "data-slot": "section-card-body", "data-settings-list": cardBodyIsSettingsList || undefined, className: cn(cardRecipe.base, "flex flex-col",
216
+ return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.CARD, policyOverride: { nesting: { framingMode: 'always' } }, children: _jsxs("fieldset", { "data-slot": "field-set", "data-appearance": appearance, "data-section-frame": "rendered", disabled: disabled, "aria-labelledby": hasHeading ? headingId : undefined, className: cn(FIELDSET_SHRINK_RESET, "flex flex-col gap-field-sm border-0 bg-transparent p-0", className), ...props, children: [hasHeading && (_jsxs("div", { className: "space-y-item-xs", children: [_jsx(Heading, { level: 3, id: headingId, "data-slot": "field-legend", "data-variant": "legend", className: "text-base font-medium leading-tight", children: legend }), structuredDescription] })), _jsx("div", { ref: cardBodyRef, "data-slot": "section-card-body", "data-settings-list": cardBodyIsSettingsList || undefined, className: cn(cardRecipe.base, "flex flex-col",
187
217
  // Settings-row list → zero body padding + clip so each row's
188
218
  // `border-b` runs full-bleed to the rounded card edge (rows re-inset
189
219
  // with their own `px-card`, owned by the SETTINGS_ROW chrome).
@@ -1 +1 @@
1
- {"version":3,"file":"content-section.js","sourceRoot":"","sources":["../../../../../src/components/sections/content-section.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\"\n\nimport {\n cn,\n useUI,\n useIconRegistry,\n StandardIconReference,\n IconSize,\n Surface,\n Heading,\n Text,\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n type ContentSectionProps,\n type ContentSectionGroupProps,\n type ContentSectionLegendProps,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { SectionMode } from \"@wildo-ai/zod-decorators\"\nimport { SurfaceVariant, UIBehavior, TextVariant, TextSize } from \"@wildo-ai/presets-components-models\"\n\n/**\n * ContentSectionLegend preset — section heading. DOM-identical to the legacy\n * FieldLegend preset (`data-slot=\"field-legend\"` + classes) so existing CSS and\n * the `FieldDescription` legend-adjacency rule keep working unchanged.\n */\nfunction ContentSectionLegend({\n className,\n variant = \"legend\",\n ...props\n}: ContentSectionLegendProps): React.JSX.Element {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-field-sm font-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\n/**\n * ContentSectionGroup preset — child-grouping container. DOM-identical to the\n * legacy FieldGroup preset (`data-slot=\"field-group\"`, `@container/field-group`,\n * `group/field-group`) so the responsive `Field` orientation + `FieldSeparator`\n * selectors keyed off those container/group names keep resolving.\n */\nfunction ContentSectionGroup({ className, ...props }: ContentSectionGroupProps): React.JSX.Element {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-section-lg data-[slot=checkbox-group]:gap-field-sm [&>[data-slot=field-group]]:gap-field\",\n className\n )}\n {...props}\n />\n )\n}\n\n/**\n * Collapsible heading chevron — rendered through the icon registry\n * (`StandardIconReference.CHEVRON_DOWN`) instead of a hand-drawn `<svg>`, so it\n * tracks the app's icon set. The `[[data-state=open]_&]` selector rotates it\n * when the ancestor `CollapsibleTrigger` is open (Radix sets `data-state=open`).\n */\nfunction CollapsibleChevron(): React.ReactNode {\n const { renderIcon } = useIconRegistry();\n return renderIcon(StandardIconReference.CHEVRON_DOWN, {\n size: IconSize.SM,\n className:\n \"shrink-0 text-muted-foreground transition-transform duration-200 [[data-state=open]_&]:rotate-180\",\n });\n}\n\n/**\n * ContentSection preset — the section chrome workhorse.\n *\n * DEFAULT / CARD: ported verbatim from the FieldSet preset — a `<Surface>`-wrapped\n * native `<fieldset>` (the `disabled` cascade carrier) with the `when-orphan`\n * frame de-duplication, the inter-field `gap-field` ownership + checkbox/radio +\n * settings-row flush exceptions, and truthful SurfacePolicy publication\n * (`framingMode` = `when-orphan` for framed modes, `never` for flat). DOM is\n * byte-identical to the old FieldSet (`data-slot=\"field-set\"`), so there is no\n * CSS / visual / test regression by construction.\n *\n * GHOST: a flat `<div>` (no fieldset/frame), and COLLAPSIBLE: a `Collapsible`\n * toggle with the legend as the clickable trigger — both ported from the\n * hand-branched solo-mode logic that used to live in `Section.tsx`, so all four\n * solo appearances now flow through this one primitive.\n *\n * `legend` / `description` are structured props (rendered in the mode-appropriate\n * position). When omitted, the imperative composite/record/array sites pass\n * `<ContentSectionLegend>` / `<ContentSectionGroup>` as children instead — both\n * shapes produce the same fieldset DOM for DEFAULT.\n */\nfunction ContentSection({\n className,\n appearance = SectionMode.DEFAULT,\n legend,\n description,\n defaultOpen = true,\n disabled,\n panel = false,\n icon,\n headingTag,\n children,\n ...props\n}: ContentSectionProps): React.JSX.Element {\n const { getRecipe } = useUI();\n // CARD sections paint the active theme's CARD recipe — an elevated\n // `surface-raised` fill + border (or a translucent liquid-glass tile under the\n // glass theme). Resolved once per render.\n const cardRecipe = getRecipe(UIBehavior.SURFACE, SurfaceVariant.CARD);\n // Stable id for the CARD group heading ↔ fieldset `aria-labelledby` wiring.\n // Called unconditionally (hooks rule) even though only the CARD branch uses it.\n const reactId = React.useId();\n\n // CARD body full-bleed detection. A CARD whose body hosts SETTINGS_ROW\n // list-items drops its inline padding so each row's `border-b` divider runs\n // corner-to-corner; free-form content keeps `p-card`. The natural expression\n // is a CSS `has-[>[data-chrome-mode=settings_row]]:p-0` variant, but that is a\n // NET-NEW arbitrary-variant class string, and Tailwind v4 only scans engine\n // `@source` dirs at dev-server STARTUP — so a new variant class does not\n // compile on hot-reload (only on a full restart / production build). To stay\n // reliable on every reload we instead detect the settings-row children at\n // runtime and toggle between ALREADY-EMITTED utilities (`p-0`/`p-card`). The\n // effect runs each commit with a change-guard (no re-render loop); `bodyRef`\n // is null for the non-CARD branches, so this is inert there.\n const cardBodyRef = React.useRef<HTMLDivElement>(null);\n const [cardBodyIsSettingsList, setCardBodyIsSettingsList] = React.useState(false);\n React.useLayoutEffect(() => {\n const el = cardBodyRef.current;\n const next = !!el && !!el.querySelector(':scope > [data-chrome-mode=\"settings_row\"]');\n setCardBodyIsSettingsList((prev) => (prev === next ? prev : next));\n });\n\n // Explicit CARD sections — solo AND container-panel `card-each` — ALWAYS paint\n // their themed card chrome (elevated fill + border). The `when-orphan` frame\n // de-dup is intentionally NOT applied to an authored card: the author chose a\n // card, so it stays a card in every context (dialog, page, nested). DEFAULT /\n // GHOST stay flat; COLLAPSIBLE is its own toggle.\n\n // GHOST / COLLAPSIBLE render a <div>, not a <fieldset>. `props` is typed for a\n // fieldset (ref/form/name); the only passthrough the section render sites use\n // on these modes is data-*/aria-*/className, all valid on a div — so narrow the\n // type for the div branches. (The <fieldset> branch keeps the full fieldset props.)\n const divPassthrough = props as unknown as React.HTMLAttributes<HTMLDivElement>;\n\n const structuredLegend =\n legend != null && legend !== false ? <ContentSectionLegend>{legend}</ContentSectionLegend> : null;\n const structuredDescription =\n description != null && description !== false ? (\n <Text variant={TextVariant.MUTED} size={TextSize.SM}>{description}</Text>\n ) : null;\n\n // CONTAINER-PANEL chrome (ContentSectionContainer's tabs/grid/accordion/… panels).\n // Renders a heading element (not a <legend>) with a header-bar/divider layout.\n // Per appearance: CARD = card-each, which paints the SAME themed card chrome as\n // a solo CARD section (the elevated `surface-raised` fill + border + radius from\n // the active theme's CARD recipe), ALWAYS — so a grid/columns of cards reads as\n // distinct cards in every context; DEFAULT = flat. Stays a <fieldset> so the\n // disabled cascade applies — the consolidation that lets container panels share\n // the section primitive. Heading omitted entirely when there is no title/icon/\n // description (content-only panels, e.g. tab bodies whose heading is the tab).\n if (panel) {\n // Semantic heading level (h3 default; h4 when nested under a collapsible-all\n // <h3>), rendered via the Heading primitive. `text-base` pins the size to the\n // prior inherited size — the heading recipe's default h3 size would be larger.\n const headingLevel = headingTag === 'h4' ? 4 : 3;\n const isCardEach = appearance === SectionMode.CARD;\n const hasHeading = legend != null || icon != null || description != null;\n return (\n <Surface\n asChild\n emitPolicyVars={false}\n variant={isCardEach ? SurfaceVariant.CARD : SurfaceVariant.BASE}\n policyOverride={{\n nesting: { framingMode: isCardEach ? ('always' as const) : ('never' as const) },\n }}\n >\n <fieldset\n data-slot=\"field-set\"\n data-appearance={appearance}\n data-section-frame={isCardEach ? 'rendered' : 'suppressed'}\n disabled={disabled}\n // Non-card panels are FLAT: neutralize the Surface-painted BASE recipe\n // (a bordered card panel in every theme) on the element itself — the\n // wrapper is kept for the policy context only. See the solo DEFAULT\n // branch below for the full account of this trap.\n className={cn(\n isCardEach ? cardRecipe.base : 'space-y-field rounded-none border-0 bg-transparent p-0 shadow-none',\n className,\n )}\n {...props}\n style={\n isCardEach\n ? props.style\n : { borderWidth: 0, background: 'transparent', boxShadow: 'none', borderRadius: 0, padding: 0, ...props.style }\n }\n >\n {hasHeading && (\n <div className={isCardEach ? 'p-card border-b' : 'space-y-item-xs'}>\n {(legend != null || icon != null) && (\n <Heading level={headingLevel} className=\"text-base font-semibold\">\n {icon != null && <span className=\"me-element inline-flex items-center\">{icon}</span>}\n {legend}\n </Heading>\n )}\n {description != null && <Text variant={TextVariant.MUTED} size={TextSize.SM}>{description}</Text>}\n </div>\n )}\n <div className={isCardEach ? 'p-card' : undefined}>{children}</div>\n </fieldset>\n </Surface>\n );\n }\n\n // COLLAPSIBLE — toggle with the legend as the clickable trigger, framed as a CARD\n // (decided 2026-08-31; it was a flat div first). A fold needs a boundary: the closed\n // header must read as an affordance with an extent, and an open one must say where its\n // content ends — a frameless collapsed row was indistinguishable from a plain heading.\n // Item-level content inside stays UNframed (the display pipeline's entry items draw a\n // left accent line, not a card), so the frame stays the SECTION's alone.\n if (appearance === SectionMode.COLLAPSIBLE) {\n return (\n <Collapsible defaultOpen={defaultOpen}>\n <Surface\n asChild\n emitPolicyVars={false}\n variant={SurfaceVariant.CARD}\n policyOverride={{ nesting: { framingMode: 'always' as const } }}\n >\n <div className={cn(cardRecipe.base, className)} {...divPassthrough}>\n {structuredLegend && (\n // No `asChild` + raw <button>: Radix's CollapsibleTrigger renders its\n // own <button data-slot=\"collapsible-trigger\"> — the framework element,\n // no bespoke button chrome to add.\n <CollapsibleTrigger className=\"flex w-full items-center justify-between p-card text-left\">\n {structuredLegend}\n <CollapsibleChevron />\n </CollapsibleTrigger>\n )}\n {structuredDescription && <div className=\"px-card pb-card-sm\">{structuredDescription}</div>}\n <CollapsibleContent className=\"space-y-field p-card pt-0\">{children}</CollapsibleContent>\n </div>\n </Surface>\n </Collapsible>\n );\n }\n\n // GHOST — flat div, no fieldset/frame. The form-level <fieldset> (Form.tsx)\n // already owns the disabled cascade, so a flat section loses nothing.\n if (appearance === SectionMode.GHOST) {\n return (\n <div className={cn('space-y-field', className)} {...divPassthrough}>\n {structuredLegend}\n {structuredDescription}\n {children}\n </div>\n );\n }\n\n const isCard = appearance === SectionMode.CARD;\n // ⚠ The settings-row match is `^=settings` (prefix), NOT `=settings_row`:\n // Tailwind converts an unescaped `_` inside an arbitrary variant to a SPACE,\n // so the original `…=settings_row]]:gap-0` spelling emitted the invalid\n // selector `[data-chrome-mode=settings row]` and was silently DEAD CSS\n // (verified against the served stylesheet, 2026-08-19). Only `settings_row`\n // starts with `settings`, so the prefix match is exact.\n const baseStyles =\n \"flex flex-col gap-field has-[>[data-slot=checkbox-group]]:gap-field-sm has-[>[data-slot=radio-group]]:gap-field-sm has-[>[data-chrome-mode^=settings]]:gap-0\";\n\n // DEFAULT — a flat fieldset that owns only inter-field spacing (no frame). The\n // form-level <fieldset> already owns the disabled cascade; the legend renders\n // in place at the top. Truthfully publishes `framingMode: 'never'` to descendants.\n //\n // The Surface wrapper exists for the POLICY context only, but `Surface` always\n // paints its variant recipe (policy and appearance are separate axes), and\n // every theme paints `SurfaceVariant.BASE` as a bordered card panel (it is the\n // anchor card surface). Without the frame neutralizers below, this \"flat\"\n // section rendered a card frame whose native <legend> straddled the top border\n // (the todo-lists READ \"header section glitch\", 2026-08-19). Same idiom as the\n // CARD branch's transparent fieldset: neutralize the paint on the element, keep\n // the policy context. The inline style is the deterministic half: recipe vs\n // neutralizer utility classes race on STYLESHEET order (measured: `shadow-sm`\n // beat `shadow-none`), while an inline declaration always wins; caller-passed\n // style still overrides via the trailing spread.\n if (!isCard) {\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.BASE} policyOverride={{ nesting: { framingMode: 'never' as const } }}>\n <fieldset\n data-slot=\"field-set\"\n data-appearance={appearance}\n data-section-frame=\"suppressed\"\n disabled={disabled}\n className={cn(baseStyles, 'rounded-none border-0 bg-transparent p-0 shadow-none', className)}\n {...props}\n style={{ borderWidth: 0, background: 'transparent', boxShadow: 'none', borderRadius: 0, padding: 0, ...props.style }}\n >\n {structuredLegend}\n {structuredDescription}\n {children}\n </fieldset>\n </Surface>\n );\n }\n\n // CARD — the section title + description sit ABOVE the card as a group heading\n // (the macOS/iOS/Linear \"settings group\" pattern), and the themed card chrome\n // (elevated fill + border + radius from the active theme's CARD recipe) wraps\n // ONLY the body. The <fieldset> stays the outer element so its `disabled`\n // cascade still reaches every control, and it is `aria-labelledby` the heading\n // so the group keeps its accessible name.\n //\n // An explicit CARD ALWAYS paints its themed chrome (the `when-orphan` de-dup\n // does NOT apply — the author chose a card, so it stays a card in every\n // context, truthfully publishing `framingMode: 'always'` to descendants).\n //\n // Body padding is CONTENT-AWARE (see `cardBodyIsSettingsList` above): a body\n // hosting SETTINGS_ROW list-items drops its inline padding and clips, so each\n // row's hairline `border-b` divider runs corner-to-corner (full-bleed) instead\n // of floating inset; the rows then re-inset their own content with `px-card`\n // (owned by the SETTINGS_ROW chrome). Free-form content keeps a comfortable\n // `p-card`.\n const headingId = `${reactId}-legend`;\n const hasHeading = legend != null && legend !== false;\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.CARD} policyOverride={{ nesting: { framingMode: 'always' as const } }}>\n <fieldset\n data-slot=\"field-set\"\n data-appearance={appearance}\n data-section-frame=\"rendered\"\n disabled={disabled}\n aria-labelledby={hasHeading ? headingId : undefined}\n className={cn(\"flex flex-col gap-field-sm border-0 bg-transparent p-0\", className)}\n {...props}\n >\n {hasHeading && (\n <div className=\"space-y-item-xs\">\n {/*\n Group heading ABOVE the card body. Rendered via the Heading primitive\n at semantic level 3; `id` (the fieldset's aria-labelledby target),\n `data-slot=\"field-legend\"` + `data-variant=\"legend\"` (CSS hooks) are\n forwarded, and `text-base font-medium` pins the size (the heading\n recipe's default h3 size would be larger).\n */}\n <Heading\n level={3}\n id={headingId}\n data-slot=\"field-legend\"\n data-variant=\"legend\"\n className=\"text-base font-medium leading-tight\"\n >\n {legend}\n </Heading>\n {structuredDescription}\n </div>\n )}\n <div\n ref={cardBodyRef}\n data-slot=\"section-card-body\"\n data-settings-list={cardBodyIsSettingsList || undefined}\n className={cn(\n cardRecipe.base,\n \"flex flex-col\",\n // Settings-row list → zero body padding + clip so each row's\n // `border-b` runs full-bleed to the rounded card edge (rows re-inset\n // with their own `px-card`, owned by the SETTINGS_ROW chrome).\n // Free-form content → comfortable `p-card`. All utilities here are\n // already-emitted (no new arbitrary-variant strings), so the toggle\n // works on hot-reload — see `cardBodyIsSettingsList` above.\n cardBodyIsSettingsList\n ? \"gap-0 p-0 overflow-hidden\"\n : \"gap-field p-card has-[>[data-slot=checkbox-group]]:gap-field-sm has-[>[data-slot=radio-group]]:gap-field-sm\",\n )}\n >\n {children}\n </div>\n </fieldset>\n </Surface>\n );\n}\n\nexport { ContentSection, ContentSectionGroup, ContentSectionLegend }\n"]}
1
+ {"version":3,"file":"content-section.js","sourceRoot":"","sources":["../../../../../src/components/sections/content-section.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\"\n\nimport {\n cn,\n useUI,\n useIconRegistry,\n StandardIconReference,\n IconSize,\n Surface,\n Heading,\n Text,\n Collapsible,\n CollapsibleTrigger,\n CollapsibleContent,\n type ContentSectionProps,\n type ContentSectionGroupProps,\n type ContentSectionLegendProps,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { SectionMode } from \"@wildo-ai/zod-decorators\"\nimport { SurfaceVariant, UIBehavior, TextVariant, TextSize } from \"@wildo-ai/presets-components-models\"\n\n/**\n * Every section branch that renders a native `<fieldset>` carries this.\n *\n * The browser's UA stylesheet gives `fieldset` `min-width: min-content` — the\n * ONE element with that default — so a fieldset refuses to shrink below the\n * widest thing inside it, whatever its container says. A flex/grid child's\n * `min-width: auto` has the same effect, and `min-w-0` answers both.\n *\n * Measured 2026-09-22 on the Wonder Todos todo READ overlay: the dialog is\n * `width: 672px; max-width: 672px; overflow-x: auto`, and the fieldset inside it\n * measured **747px** — its `md:grid-cols-2 xl:grid-cols-3` body reported a\n * min-content width larger than the dialog, so the dialog scrolled sideways and\n * the overlay's right edge (its actions) was clipped out of reach. Everything\n * between the two inherited the 747.\n *\n * Do not \"simplify\" this away: nothing else in the chain resets it, and the\n * symptom only appears once a section's content is wider than its container —\n * a dialog, a narrow panel, a small viewport — never in the page-width case a\n * component is usually authored against.\n */\nconst FIELDSET_SHRINK_RESET = 'min-w-0';\n\n/**\n * ContentSectionLegend preset — section heading. DOM-identical to the legacy\n * FieldLegend preset (`data-slot=\"field-legend\"` + classes) so existing CSS and\n * the `FieldDescription` legend-adjacency rule keep working unchanged.\n */\nfunction ContentSectionLegend({\n className,\n variant = \"legend\",\n ...props\n}: ContentSectionLegendProps): React.JSX.Element {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-field-sm font-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\n/**\n * ContentSectionGroup preset — child-grouping container. DOM-identical to the\n * legacy FieldGroup preset (`data-slot=\"field-group\"`, `@container/field-group`,\n * `group/field-group`) so the responsive `Field` orientation + `FieldSeparator`\n * selectors keyed off those container/group names keep resolving.\n */\nfunction ContentSectionGroup({ className, ...props }: ContentSectionGroupProps): React.JSX.Element {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-section-lg data-[slot=checkbox-group]:gap-field-sm [&>[data-slot=field-group]]:gap-field\",\n className\n )}\n {...props}\n />\n )\n}\n\n/**\n * Collapsible heading chevron — rendered through the icon registry\n * (`StandardIconReference.CHEVRON_DOWN`) instead of a hand-drawn `<svg>`, so it\n * tracks the app's icon set. The `[[data-state=open]_&]` selector rotates it\n * when the ancestor `CollapsibleTrigger` is open (Radix sets `data-state=open`).\n */\nfunction CollapsibleChevron(): React.ReactNode {\n const { renderIcon } = useIconRegistry();\n return renderIcon(StandardIconReference.CHEVRON_DOWN, {\n size: IconSize.SM,\n className:\n \"shrink-0 text-muted-foreground transition-transform duration-200 [[data-state=open]_&]:rotate-180\",\n });\n}\n\n/**\n * ContentSection preset — the section chrome workhorse.\n *\n * DEFAULT / CARD: ported verbatim from the FieldSet preset — a `<Surface>`-wrapped\n * native `<fieldset>` (the `disabled` cascade carrier) with the `when-orphan`\n * frame de-duplication, the inter-field `gap-field` ownership + checkbox/radio +\n * settings-row flush exceptions, and truthful SurfacePolicy publication\n * (`framingMode` = `when-orphan` for framed modes, `never` for flat). DOM is\n * byte-identical to the old FieldSet (`data-slot=\"field-set\"`), so there is no\n * CSS / visual / test regression by construction.\n *\n * GHOST: a flat `<div>` (no fieldset/frame), and COLLAPSIBLE: a `Collapsible`\n * toggle with the legend as the clickable trigger — both ported from the\n * hand-branched solo-mode logic that used to live in `Section.tsx`, so all four\n * solo appearances now flow through this one primitive.\n *\n * `legend` / `description` are structured props (rendered in the mode-appropriate\n * position). When omitted, the imperative composite/record/array sites pass\n * `<ContentSectionLegend>` / `<ContentSectionGroup>` as children instead — both\n * shapes produce the same fieldset DOM for DEFAULT.\n */\nfunction ContentSection({\n className,\n appearance = SectionMode.DEFAULT,\n legend,\n description,\n defaultOpen = true,\n disabled,\n panel = false,\n icon,\n headingTag,\n children,\n ...props\n}: ContentSectionProps): React.JSX.Element {\n const { getRecipe } = useUI();\n // CARD sections paint the active theme's CARD recipe — an elevated\n // `surface-raised` fill + border (or a translucent liquid-glass tile under the\n // glass theme). Resolved once per render.\n const cardRecipe = getRecipe(UIBehavior.SURFACE, SurfaceVariant.CARD);\n // Stable id for the CARD group heading ↔ fieldset `aria-labelledby` wiring.\n // Called unconditionally (hooks rule) even though only the CARD branch uses it.\n const reactId = React.useId();\n\n // CARD body full-bleed detection. A CARD whose body hosts SETTINGS_ROW\n // list-items drops its inline padding so each row's `border-b` divider runs\n // corner-to-corner; free-form content keeps `p-card`. The natural expression\n // is a CSS `has-[>[data-chrome-mode=settings_row]]:p-0` variant, but that is a\n // NET-NEW arbitrary-variant class string, and Tailwind v4 only scans engine\n // `@source` dirs at dev-server STARTUP — so a new variant class does not\n // compile on hot-reload (only on a full restart / production build). To stay\n // reliable on every reload we instead detect the settings-row children at\n // runtime and toggle between ALREADY-EMITTED utilities (`p-0`/`p-card`). The\n // effect runs each commit but sets state only when the detection CHANGES,\n // compared against the rendered value; `bodyRef` is null for the non-CARD\n // branches, so this is inert there.\n //\n // Do not turn the guard back into a functional updater. `setState(prev => …)`\n // still enqueues an update on every commit whenever React cannot bail out\n // eagerly, which made every section — including the form-wide DEFAULT one —\n // a participant in any other component's update loop and the component React\n // blamed for it (\"Maximum update depth exceeded\" at ContentSection when an\n // avatar crop was applied, 2026-09-15; the loop was in the file field).\n const cardBodyRef = React.useRef<HTMLDivElement>(null);\n const [cardBodyIsSettingsList, setCardBodyIsSettingsList] = React.useState(false);\n React.useLayoutEffect(() => {\n const el = cardBodyRef.current;\n const next = !!el && !!el.querySelector(':scope > [data-chrome-mode=\"settings_row\"]');\n if (next !== cardBodyIsSettingsList) setCardBodyIsSettingsList(next);\n });\n\n // Explicit CARD sections — solo AND container-panel `card-each` — ALWAYS paint\n // their themed card chrome (elevated fill + border). The `when-orphan` frame\n // de-dup is intentionally NOT applied to an authored card: the author chose a\n // card, so it stays a card in every context (dialog, page, nested). DEFAULT /\n // GHOST stay flat; COLLAPSIBLE is its own toggle.\n\n // GHOST / COLLAPSIBLE render a <div>, not a <fieldset>. `props` is typed for a\n // fieldset (ref/form/name); the only passthrough the section render sites use\n // on these modes is data-*/aria-*/className, all valid on a div — so narrow the\n // type for the div branches. (The <fieldset> branch keeps the full fieldset props.)\n const divPassthrough = props as unknown as React.HTMLAttributes<HTMLDivElement>;\n\n const structuredLegend =\n legend != null && legend !== false ? <ContentSectionLegend>{legend}</ContentSectionLegend> : null;\n const structuredDescription =\n description != null && description !== false ? (\n <Text variant={TextVariant.MUTED} size={TextSize.SM}>{description}</Text>\n ) : null;\n\n // CONTAINER-PANEL chrome (ContentSectionContainer's tabs/grid/accordion/… panels).\n // Renders a heading element (not a <legend>) with a header-bar/divider layout.\n // Per appearance: CARD = card-each, which paints the SAME themed card chrome as\n // a solo CARD section (the elevated `surface-raised` fill + border + radius from\n // the active theme's CARD recipe), ALWAYS — so a grid/columns of cards reads as\n // distinct cards in every context; DEFAULT = flat. Stays a <fieldset> so the\n // disabled cascade applies — the consolidation that lets container panels share\n // the section primitive. Heading omitted entirely when there is no title/icon/\n // description (content-only panels, e.g. tab bodies whose heading is the tab).\n if (panel) {\n // Semantic heading level (h3 default; h4 when nested under a collapsible-all\n // <h3>), rendered via the Heading primitive. `text-base` pins the size to the\n // prior inherited size — the heading recipe's default h3 size would be larger.\n const headingLevel = headingTag === 'h4' ? 4 : 3;\n const isCardEach = appearance === SectionMode.CARD;\n const hasHeading = legend != null || icon != null || description != null;\n return (\n <Surface\n asChild\n emitPolicyVars={false}\n variant={isCardEach ? SurfaceVariant.CARD : SurfaceVariant.BASE}\n policyOverride={{\n nesting: { framingMode: isCardEach ? ('always' as const) : ('never' as const) },\n }}\n >\n <fieldset\n data-slot=\"field-set\"\n data-appearance={appearance}\n data-section-frame={isCardEach ? 'rendered' : 'suppressed'}\n disabled={disabled}\n // Non-card panels are FLAT: neutralize the Surface-painted BASE recipe\n // (a bordered card panel in every theme) on the element itself — the\n // wrapper is kept for the policy context only. See the solo DEFAULT\n // branch below for the full account of this trap.\n className={cn(\n FIELDSET_SHRINK_RESET,\n isCardEach ? cardRecipe.base : 'space-y-field rounded-none border-0 bg-transparent p-0 shadow-none',\n className,\n )}\n {...props}\n style={\n isCardEach\n ? props.style\n : { borderWidth: 0, background: 'transparent', boxShadow: 'none', borderRadius: 0, padding: 0, ...props.style }\n }\n >\n {hasHeading && (\n <div className={isCardEach ? 'p-card border-b' : 'space-y-item-xs'}>\n {(legend != null || icon != null) && (\n <Heading level={headingLevel} className=\"text-base font-semibold\">\n {icon != null && <span className=\"me-element inline-flex items-center\">{icon}</span>}\n {legend}\n </Heading>\n )}\n {description != null && <Text variant={TextVariant.MUTED} size={TextSize.SM}>{description}</Text>}\n </div>\n )}\n <div className={isCardEach ? 'p-card' : undefined}>{children}</div>\n </fieldset>\n </Surface>\n );\n }\n\n // COLLAPSIBLE — toggle with the legend as the clickable trigger, framed as a CARD\n // (decided 2026-08-31; it was a flat div first). A fold needs a boundary: the closed\n // header must read as an affordance with an extent, and an open one must say where its\n // content ends — a frameless collapsed row was indistinguishable from a plain heading.\n // Item-level content inside stays UNframed (the display pipeline's entry items draw a\n // left accent line, not a card), so the frame stays the SECTION's alone.\n if (appearance === SectionMode.COLLAPSIBLE) {\n return (\n <Collapsible defaultOpen={defaultOpen}>\n <Surface\n asChild\n emitPolicyVars={false}\n variant={SurfaceVariant.CARD}\n policyOverride={{ nesting: { framingMode: 'always' as const } }}\n >\n <div className={cn(cardRecipe.base, className)} {...divPassthrough}>\n {structuredLegend && (\n // No `asChild` + raw <button>: Radix's CollapsibleTrigger renders its\n // own <button data-slot=\"collapsible-trigger\"> — the framework element,\n // no bespoke button chrome to add.\n <CollapsibleTrigger className=\"flex w-full items-center justify-between p-card text-left\">\n {structuredLegend}\n <CollapsibleChevron />\n </CollapsibleTrigger>\n )}\n {structuredDescription && <div className=\"px-card pb-card-sm\">{structuredDescription}</div>}\n <CollapsibleContent className=\"space-y-field p-card pt-0\">{children}</CollapsibleContent>\n </div>\n </Surface>\n </Collapsible>\n );\n }\n\n // GHOST — flat div, no fieldset/frame. The form-level <fieldset> (Form.tsx)\n // already owns the disabled cascade, so a flat section loses nothing.\n if (appearance === SectionMode.GHOST) {\n return (\n <div className={cn('space-y-field', className)} {...divPassthrough}>\n {structuredLegend}\n {structuredDescription}\n {children}\n </div>\n );\n }\n\n const isCard = appearance === SectionMode.CARD;\n // ⚠ The settings-row match is `^=settings` (prefix), NOT `=settings_row`:\n // Tailwind converts an unescaped `_` inside an arbitrary variant to a SPACE,\n // so the original `…=settings_row]]:gap-0` spelling emitted the invalid\n // selector `[data-chrome-mode=settings row]` and was silently DEAD CSS\n // (verified against the served stylesheet, 2026-08-19). Only `settings_row`\n // starts with `settings`, so the prefix match is exact.\n const baseStyles =\n \"flex flex-col gap-field has-[>[data-slot=checkbox-group]]:gap-field-sm has-[>[data-slot=radio-group]]:gap-field-sm has-[>[data-chrome-mode^=settings]]:gap-0\";\n\n // DEFAULT — a flat fieldset that owns only inter-field spacing (no frame). The\n // form-level <fieldset> already owns the disabled cascade; the legend renders\n // in place at the top. Truthfully publishes `framingMode: 'never'` to descendants.\n //\n // The Surface wrapper exists for the POLICY context only, but `Surface` always\n // paints its variant recipe (policy and appearance are separate axes), and\n // every theme paints `SurfaceVariant.BASE` as a bordered card panel (it is the\n // anchor card surface). Without the frame neutralizers below, this \"flat\"\n // section rendered a card frame whose native <legend> straddled the top border\n // (the todo-lists READ \"header section glitch\", 2026-08-19). Same idiom as the\n // CARD branch's transparent fieldset: neutralize the paint on the element, keep\n // the policy context. The inline style is the deterministic half: recipe vs\n // neutralizer utility classes race on STYLESHEET order (measured: `shadow-sm`\n // beat `shadow-none`), while an inline declaration always wins; caller-passed\n // style still overrides via the trailing spread.\n if (!isCard) {\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.BASE} policyOverride={{ nesting: { framingMode: 'never' as const } }}>\n <fieldset\n data-slot=\"field-set\"\n data-appearance={appearance}\n data-section-frame=\"suppressed\"\n disabled={disabled}\n className={cn(FIELDSET_SHRINK_RESET, baseStyles, 'rounded-none border-0 bg-transparent p-0 shadow-none', className)}\n {...props}\n style={{ borderWidth: 0, background: 'transparent', boxShadow: 'none', borderRadius: 0, padding: 0, ...props.style }}\n >\n {structuredLegend}\n {structuredDescription}\n {children}\n </fieldset>\n </Surface>\n );\n }\n\n // CARD — the section title + description sit ABOVE the card as a group heading\n // (the macOS/iOS/Linear \"settings group\" pattern), and the themed card chrome\n // (elevated fill + border + radius from the active theme's CARD recipe) wraps\n // ONLY the body. The <fieldset> stays the outer element so its `disabled`\n // cascade still reaches every control, and it is `aria-labelledby` the heading\n // so the group keeps its accessible name.\n //\n // An explicit CARD ALWAYS paints its themed chrome (the `when-orphan` de-dup\n // does NOT apply — the author chose a card, so it stays a card in every\n // context, truthfully publishing `framingMode: 'always'` to descendants).\n //\n // Body padding is CONTENT-AWARE (see `cardBodyIsSettingsList` above): a body\n // hosting SETTINGS_ROW list-items drops its inline padding and clips, so each\n // row's hairline `border-b` divider runs corner-to-corner (full-bleed) instead\n // of floating inset; the rows then re-inset their own content with `px-card`\n // (owned by the SETTINGS_ROW chrome). Free-form content keeps a comfortable\n // `p-card`.\n const headingId = `${reactId}-legend`;\n const hasHeading = legend != null && legend !== false;\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.CARD} policyOverride={{ nesting: { framingMode: 'always' as const } }}>\n <fieldset\n data-slot=\"field-set\"\n data-appearance={appearance}\n data-section-frame=\"rendered\"\n disabled={disabled}\n aria-labelledby={hasHeading ? headingId : undefined}\n className={cn(FIELDSET_SHRINK_RESET, \"flex flex-col gap-field-sm border-0 bg-transparent p-0\", className)}\n {...props}\n >\n {hasHeading && (\n <div className=\"space-y-item-xs\">\n {/*\n Group heading ABOVE the card body. Rendered via the Heading primitive\n at semantic level 3; `id` (the fieldset's aria-labelledby target),\n `data-slot=\"field-legend\"` + `data-variant=\"legend\"` (CSS hooks) are\n forwarded, and `text-base font-medium` pins the size (the heading\n recipe's default h3 size would be larger).\n */}\n <Heading\n level={3}\n id={headingId}\n data-slot=\"field-legend\"\n data-variant=\"legend\"\n className=\"text-base font-medium leading-tight\"\n >\n {legend}\n </Heading>\n {structuredDescription}\n </div>\n )}\n <div\n ref={cardBodyRef}\n data-slot=\"section-card-body\"\n data-settings-list={cardBodyIsSettingsList || undefined}\n className={cn(\n cardRecipe.base,\n \"flex flex-col\",\n // Settings-row list → zero body padding + clip so each row's\n // `border-b` runs full-bleed to the rounded card edge (rows re-inset\n // with their own `px-card`, owned by the SETTINGS_ROW chrome).\n // Free-form content → comfortable `p-card`. All utilities here are\n // already-emitted (no new arbitrary-variant strings), so the toggle\n // works on hot-reload — see `cardBodyIsSettingsList` above.\n cardBodyIsSettingsList\n ? \"gap-0 p-0 overflow-hidden\"\n : \"gap-field p-card has-[>[data-slot=checkbox-group]]:gap-field-sm has-[>[data-slot=radio-group]]:gap-field-sm\",\n )}\n >\n {children}\n </div>\n </fieldset>\n </Surface>\n );\n}\n\nexport { ContentSection, ContentSectionGroup, ContentSectionLegend }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"disclosure-nesting.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/disclosure-nesting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,wBAAwB,wBAA6B,CAAA"}
1
+ {"version":3,"file":"disclosure-nesting.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/disclosure-nesting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,wBAAwB,wBAA6B,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type * as React from "react";
2
+ /**
3
+ * Whether a gesture started on a CONTROL inside the option — that control's gesture, never the
4
+ * row's. A Revert button inside a write record must not also open the record.
5
+ */
6
+ export declare function startsInsideControl(event: {
7
+ target: EventTarget | null;
8
+ currentTarget: EventTarget | null;
9
+ }): boolean;
10
+ /** The click and key handlers of one option row, given what selecting it does. */
11
+ export declare function optionGestureHandlers<TElement extends HTMLElement>(onSelect: () => void): {
12
+ readonly onClick: (event: React.MouseEvent<TElement>) => void;
13
+ readonly onKeyDown: (event: React.KeyboardEvent<TElement>) => void;
14
+ };
15
+ //# sourceMappingURL=option-gesture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-gesture.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/option-gesture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAA;AAYnC;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAAC,aAAa,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,GAAG,OAAO,CAMrH;AAsBD,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,QAAQ,SAAS,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG;IACzF,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAA;IAC7D,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAA;CACnE,CAsBA"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * The gesture layer every pickable item shares — a listbox card (`Card option`), a grid-row card and
3
+ * a timeline entry all select on click, Enter and Space, move focus to the sibling item on the arrow
4
+ * keys, and leave a gesture that started on a CONTROL inside the item to that control.
5
+ *
6
+ * One implementation, because the second pickable list on a surface is exactly where the first one's
7
+ * rules get re-typed with one difference (#1317, #1318).
8
+ */
9
+ const INTERACTIVE_ANCESTOR = 'button, a, input, textarea, select, [role="button"], [role="link"], [contenteditable="true"]';
10
+ /**
11
+ * Whether a gesture started on a CONTROL inside the option — that control's gesture, never the
12
+ * row's. A Revert button inside a write record must not also open the record.
13
+ */
14
+ export function startsInsideControl(event) {
15
+ const target = event.target instanceof Element ? event.target : null;
16
+ const row = event.currentTarget instanceof Element ? event.currentTarget : null;
17
+ if (target === null || row === null)
18
+ return false;
19
+ const control = target.closest(INTERACTIVE_ANCESTOR);
20
+ return control !== null && control !== row && row.contains(control);
21
+ }
22
+ /**
23
+ * The next or previous pickable item, in either shape (`SelectableItemSemantics`).
24
+ *
25
+ * An OPTION is a direct child of its listbox, so its sibling is the next element. A ROW's focusable
26
+ * element is the `gridcell` INSIDE a `row` wrapper, so its sibling is one level up and one level
27
+ * back down. Anything that is not the same kind of item ends the walk: focus never jumps into an
28
+ * unrelated neighbour.
29
+ */
30
+ function siblingItem(item, forward) {
31
+ const step = (element) => element === null ? null : forward ? element.nextElementSibling : element.previousElementSibling;
32
+ if (item.getAttribute('role') === 'gridcell') {
33
+ const row = step(item.parentElement);
34
+ const cell = row?.getAttribute('role') === 'row' ? row.querySelector(':scope > [role="gridcell"]') : null;
35
+ return cell instanceof HTMLElement ? cell : null;
36
+ }
37
+ const sibling = step(item);
38
+ return sibling instanceof HTMLElement && sibling.getAttribute('role') === 'option' ? sibling : null;
39
+ }
40
+ /** The click and key handlers of one option row, given what selecting it does. */
41
+ export function optionGestureHandlers(onSelect) {
42
+ return {
43
+ onClick: (event) => {
44
+ if (startsInsideControl(event))
45
+ return;
46
+ onSelect();
47
+ },
48
+ onKeyDown: (event) => {
49
+ if (startsInsideControl(event))
50
+ return;
51
+ if (event.key === 'Enter' || event.key === ' ') {
52
+ event.preventDefault();
53
+ onSelect();
54
+ return;
55
+ }
56
+ if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
57
+ const sibling = siblingItem(event.currentTarget, event.key === 'ArrowDown');
58
+ if (sibling !== null) {
59
+ event.preventDefault();
60
+ sibling.focus();
61
+ }
62
+ }
63
+ },
64
+ };
65
+ }
66
+ //# sourceMappingURL=option-gesture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-gesture.js","sourceRoot":"","sources":["../../../../../src/components/sections/option-gesture.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAAG,8FAA8F,CAAA;AAE3H;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAwE;IAC1G,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;IACpE,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAA;IAC/E,IAAI,MAAM,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACpD,OAAO,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AACrE,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,WAAW,CAAC,IAAiB,EAAE,OAAgB;IACtD,MAAM,IAAI,GAAG,CAAC,OAAuB,EAAkB,EAAE,CACvD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAA;IACjG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACpC,MAAM,IAAI,GAAG,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACzG,OAAO,IAAI,YAAY,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAClD,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1B,OAAO,OAAO,YAAY,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;AACrG,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,qBAAqB,CAA+B,QAAoB;IAItF,OAAO;QACL,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,mBAAmB,CAAC,KAAK,CAAC;gBAAE,OAAM;YACtC,QAAQ,EAAE,CAAA;QACZ,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,IAAI,mBAAmB,CAAC,KAAK,CAAC;gBAAE,OAAM;YACtC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC/C,KAAK,CAAC,cAAc,EAAE,CAAA;gBACtB,QAAQ,EAAE,CAAA;gBACV,OAAM;YACR,CAAC;YACD,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;gBACzD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,KAAK,WAAW,CAAC,CAAA;gBAC3E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACrB,KAAK,CAAC,cAAc,EAAE,CAAA;oBACtB,OAAO,CAAC,KAAK,EAAE,CAAA;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC","sourcesContent":["import type * as React from \"react\"\n\n/**\n * The gesture layer every pickable item shares — a listbox card (`Card option`), a grid-row card and\n * a timeline entry all select on click, Enter and Space, move focus to the sibling item on the arrow\n * keys, and leave a gesture that started on a CONTROL inside the item to that control.\n *\n * One implementation, because the second pickable list on a surface is exactly where the first one's\n * rules get re-typed with one difference (#1317, #1318).\n */\nconst INTERACTIVE_ANCESTOR = 'button, a, input, textarea, select, [role=\"button\"], [role=\"link\"], [contenteditable=\"true\"]'\n\n/**\n * Whether a gesture started on a CONTROL inside the option — that control's gesture, never the\n * row's. A Revert button inside a write record must not also open the record.\n */\nexport function startsInsideControl(event: { target: EventTarget | null; currentTarget: EventTarget | null }): boolean {\n const target = event.target instanceof Element ? event.target : null\n const row = event.currentTarget instanceof Element ? event.currentTarget : null\n if (target === null || row === null) return false\n const control = target.closest(INTERACTIVE_ANCESTOR)\n return control !== null && control !== row && row.contains(control)\n}\n\n/**\n * The next or previous pickable item, in either shape (`SelectableItemSemantics`).\n *\n * An OPTION is a direct child of its listbox, so its sibling is the next element. A ROW's focusable\n * element is the `gridcell` INSIDE a `row` wrapper, so its sibling is one level up and one level\n * back down. Anything that is not the same kind of item ends the walk: focus never jumps into an\n * unrelated neighbour.\n */\nfunction siblingItem(item: HTMLElement, forward: boolean): HTMLElement | null {\n const step = (element: Element | null): Element | null =>\n element === null ? null : forward ? element.nextElementSibling : element.previousElementSibling\n if (item.getAttribute('role') === 'gridcell') {\n const row = step(item.parentElement)\n const cell = row?.getAttribute('role') === 'row' ? row.querySelector(':scope > [role=\"gridcell\"]') : null\n return cell instanceof HTMLElement ? cell : null\n }\n const sibling = step(item)\n return sibling instanceof HTMLElement && sibling.getAttribute('role') === 'option' ? sibling : null\n}\n\n/** The click and key handlers of one option row, given what selecting it does. */\nexport function optionGestureHandlers<TElement extends HTMLElement>(onSelect: () => void): {\n readonly onClick: (event: React.MouseEvent<TElement>) => void\n readonly onKeyDown: (event: React.KeyboardEvent<TElement>) => void\n} {\n return {\n onClick: (event) => {\n if (startsInsideControl(event)) return\n onSelect()\n },\n onKeyDown: (event) => {\n if (startsInsideControl(event)) return\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n onSelect()\n return\n }\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n const sibling = siblingItem(event.currentTarget, event.key === 'ArrowDown')\n if (sibling !== null) {\n event.preventDefault()\n sibling.focus()\n }\n }\n },\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/pagination.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AA+HrE,eAAO,MAAM,UAAU,oBAOrB,CAAA"}
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/pagination.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AA+HrE,eAAO,MAAM,UAAU,oBAOrB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/pagination.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAKzD,CAAC"}
1
+ {"version":3,"file":"pagination.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/pagination.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAKzD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stacked-layout.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/stacked-layout.tsx"],"names":[],"mappings":"AACA,OAAO,EASL,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AAgOrC,eAAO,MAAM,aAAa,uBAUxB,CAAA"}
1
+ {"version":3,"file":"stacked-layout.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/stacked-layout.tsx"],"names":[],"mappings":"AACA,OAAO,EASL,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AAgOrC,eAAO,MAAM,aAAa,uBAUxB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"stacked-layout.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/stacked-layout.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,2BAA2B,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"stacked-layout.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/stacked-layout.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,2BAA2B,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stepper.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/stepper.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAOV,eAAe,EAChB,MAAM,6BAA6B,CAAA;AA6NpC,eAAO,MAAM,OAAO,iBAA4L,CAAA"}
1
+ {"version":3,"file":"stepper.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/stepper.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAOV,eAAe,EAChB,MAAM,6BAA6B,CAAA;AA8NpC,eAAO,MAAM,OAAO,iBAA4L,CAAA"}
@@ -37,7 +37,9 @@ function StepperIndicator({ step, className, ...props }) {
37
37
  const { renderIcon } = useIconRegistry();
38
38
  const completed = isCompleted(step);
39
39
  const current = isCurrent(step);
40
- return (_jsx("div", { "data-slot": "stepper-indicator", "data-step": step, "data-state": completed ? "completed" : current ? "current" : "pending", className: cn("flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 transition-all", completed && "border-primary bg-primary text-primary-foreground", current && "border-primary bg-background text-primary", !completed && !current && "border-muted-foreground/30 bg-background text-muted-foreground", className), ...props, children: completed ? (renderIcon(StandardIconReference.CHECK, { size: IconSize.SM })) : (_jsx("span", { className: "text-sm font-semibold", children: step })) }));
40
+ return (_jsx("div", { "data-slot": "stepper-indicator", "data-step": step, "data-state": completed ? "completed" : current ? "current" : "pending", className: cn("flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 transition-all", completed && "border-primary bg-primary text-primary-foreground", current && "border-primary bg-background text-primary", !completed && !current && "border-muted-foreground/30 bg-background text-muted-foreground", className), ...props, children: completed ? (renderIcon(StandardIconReference.CHECK, { size: IconSize.SM })) : (
41
+ // `step` is a 0-based POSITION (the same base as `currentStep`); a person counts from 1.
42
+ _jsx("span", { className: "text-sm font-semibold", children: step + 1 })) }));
41
43
  }
42
44
  // ============================================================================
43
45
  // StepperSeparator
@@ -45,8 +47,8 @@ function StepperIndicator({ step, className, ...props }) {
45
47
  function StepperSeparator({ step, className, ...props }) {
46
48
  const { isCompleted, orientation, totalSteps } = useStepperContext();
47
49
  const completed = isCompleted(step);
48
- // Don't render separator after the last step
49
- if (step >= totalSteps)
50
+ // Don't render a separator after the last step (0-based: the last position is `totalSteps - 1`).
51
+ if (step >= totalSteps - 1)
50
52
  return null;
51
53
  return (_jsx("div", { "data-slot": "stepper-separator", "data-step": step, "data-state": completed ? "completed" : "pending", className: cn("transition-all", orientation === DisplayDirection.VERTICAL && "w-0.5 h-12 mt-item", orientation === DisplayDirection.HORIZONTAL && "h-0.5 flex-1 mx-field", completed ? "bg-primary" : "bg-muted-foreground/30", className), ...props }));
52
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stepper.js","sourceRoot":"","sources":["../../../../../src/components/sections/stepper.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport type {\n StepperProps,\n StepperItemProps,\n StepperIndicatorProps,\n StepperSeparatorProps,\n StepperTitleProps,\n StepperDescriptionProps,\n StepperCompound,\n} from \"@wildo-ai/saas-frontend-lib\"\nimport { createCompoundPreset, cn, useIconRegistry, StandardIconReference, IconSize, useUI } from \"@wildo-ai/saas-frontend-lib\"\nimport { FrontendComponentType, TypographyVariant, UIBehavior } from \"@wildo-ai/presets-components-models\"\nimport { DisplayDirection } from \"@wildo-ai/zod-decorators\"\n\n// ============================================================================\n// Context\n// ============================================================================\n\ninterface StepperContextType {\n currentStep: number\n totalSteps: number\n orientation: DisplayDirection\n isCompleted: (step: number) => boolean\n isCurrent: (step: number) => boolean\n completedSteps?: Set<number>\n}\n\nconst StepperContext = React.createContext<StepperContextType | undefined>(undefined)\n\nfunction useStepperContext(): StepperContextType | undefined {\n const context = React.useContext(StepperContext)\n if (!context) {\n throw new Error(\"Stepper components must be used within a Stepper\")\n }\n return context\n}\n\n// ============================================================================\n// Stepper (Root)\n// ============================================================================\n\nfunction StepperRoot({\n currentStep,\n totalSteps,\n orientation = DisplayDirection.VERTICAL,\n completedSteps,\n className,\n children,\n ...props\n}: StepperProps): React.JSX.Element {\n const isCompleted = (step: number) => completedSteps?.has(step) || step < currentStep\n const isCurrent = (step: number) => step === currentStep\n\n return (\n <StepperContext.Provider value={{ currentStep, totalSteps, orientation, isCompleted, isCurrent, completedSteps }}>\n <div\n data-slot=\"stepper\"\n data-orientation={orientation}\n className={cn(\n \"w-full\",\n orientation === DisplayDirection.HORIZONTAL && \"flex items-center justify-between\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </StepperContext.Provider>\n )\n}\n\n// ============================================================================\n// StepperItem\n// ============================================================================\n\nfunction StepperItem({\n step,\n className,\n children,\n ...props\n}: StepperItemProps): React.JSX.Element {\n const { isCompleted, isCurrent, orientation, totalSteps } = useStepperContext()\n const completed = isCompleted(step)\n const current = isCurrent(step)\n\n return (\n <div\n data-slot=\"stepper-item\"\n data-step={step}\n data-state={completed ? \"completed\" : current ? \"current\" : \"pending\"}\n className={cn(\n orientation === DisplayDirection.VERTICAL && \"flex items-start gap-field\",\n orientation === DisplayDirection.HORIZONTAL && \"flex flex-col items-center gap-element\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n\n// ============================================================================\n// StepperIndicator\n// ============================================================================\n\nfunction StepperIndicator({\n step,\n className,\n ...props\n}: StepperIndicatorProps): React.JSX.Element {\n const { isCompleted, isCurrent } = useStepperContext()\n const { renderIcon } = useIconRegistry()\n const completed = isCompleted(step)\n const current = isCurrent(step)\n\n return (\n <div\n data-slot=\"stepper-indicator\"\n data-step={step}\n data-state={completed ? \"completed\" : current ? \"current\" : \"pending\"}\n className={cn(\n \"flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 transition-all\",\n completed && \"border-primary bg-primary text-primary-foreground\",\n current && \"border-primary bg-background text-primary\",\n !completed && !current && \"border-muted-foreground/30 bg-background text-muted-foreground\",\n className\n )}\n {...props}\n >\n {completed ? (\n renderIcon(StandardIconReference.CHECK, { size: IconSize.SM })\n ) : (\n <span className=\"text-sm font-semibold\">{step}</span>\n )}\n </div>\n )\n}\n\n// ============================================================================\n// StepperSeparator\n// ============================================================================\n\nfunction StepperSeparator({\n step,\n className,\n ...props\n}: StepperSeparatorProps): React.JSX.Element {\n const { isCompleted, orientation, totalSteps } = useStepperContext()\n const completed = isCompleted(step)\n\n // Don't render separator after the last step\n if (step >= totalSteps) return null\n\n return (\n <div\n data-slot=\"stepper-separator\"\n data-step={step}\n data-state={completed ? \"completed\" : \"pending\"}\n className={cn(\n \"transition-all\",\n orientation === DisplayDirection.VERTICAL && \"w-0.5 h-12 mt-item\",\n orientation === DisplayDirection.HORIZONTAL && \"h-0.5 flex-1 mx-field\",\n completed ? \"bg-primary\" : \"bg-muted-foreground/30\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ============================================================================\n// StepperTitle\n// ============================================================================\n\nfunction StepperTitle({\n step,\n className,\n children,\n ...props\n}: StepperTitleProps): React.JSX.Element {\n const { isCurrent } = useStepperContext()\n const current = isCurrent(step)\n\n return (\n <h4\n data-slot=\"stepper-title\"\n data-step={step}\n data-state={current ? \"current\" : \"inactive\"}\n className={cn(\n \"text-sm font-medium transition-colors\",\n current ? \"text-foreground\" : \"text-muted-foreground\",\n className\n )}\n {...props}\n >\n {children}\n </h4>\n )\n}\n\n// ============================================================================\n// StepperDescription\n// ============================================================================\n\nfunction StepperDescription({\n step,\n className,\n children,\n ...props\n}: StepperDescriptionProps): React.JSX.Element {\n const { getRecipe } = useUI()\n const recipe = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.DESCRIPTION)\n\n return (\n <p\n data-slot=\"stepper-description\"\n data-step={step}\n className={cn(\n \"text-xs mt-item-xs\",\n recipe.base,\n className\n )}\n {...props}\n >\n {children}\n </p>\n )\n}\n\nexport const Stepper = createCompoundPreset<StepperCompound>(StepperRoot, { Item: StepperItem, Indicator: StepperIndicator, Separator: StepperSeparator, Title: StepperTitle, Description: StepperDescription })\n\n"]}
1
+ {"version":3,"file":"stepper.js","sourceRoot":"","sources":["../../../../../src/components/sections/stepper.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport type {\n StepperProps,\n StepperItemProps,\n StepperIndicatorProps,\n StepperSeparatorProps,\n StepperTitleProps,\n StepperDescriptionProps,\n StepperCompound,\n} from \"@wildo-ai/saas-frontend-lib\"\nimport { createCompoundPreset, cn, useIconRegistry, StandardIconReference, IconSize, useUI } from \"@wildo-ai/saas-frontend-lib\"\nimport { FrontendComponentType, TypographyVariant, UIBehavior } from \"@wildo-ai/presets-components-models\"\nimport { DisplayDirection } from \"@wildo-ai/zod-decorators\"\n\n// ============================================================================\n// Context\n// ============================================================================\n\ninterface StepperContextType {\n currentStep: number\n totalSteps: number\n orientation: DisplayDirection\n isCompleted: (step: number) => boolean\n isCurrent: (step: number) => boolean\n completedSteps?: Set<number>\n}\n\nconst StepperContext = React.createContext<StepperContextType | undefined>(undefined)\n\nfunction useStepperContext(): StepperContextType | undefined {\n const context = React.useContext(StepperContext)\n if (!context) {\n throw new Error(\"Stepper components must be used within a Stepper\")\n }\n return context\n}\n\n// ============================================================================\n// Stepper (Root)\n// ============================================================================\n\nfunction StepperRoot({\n currentStep,\n totalSteps,\n orientation = DisplayDirection.VERTICAL,\n completedSteps,\n className,\n children,\n ...props\n}: StepperProps): React.JSX.Element {\n const isCompleted = (step: number) => completedSteps?.has(step) || step < currentStep\n const isCurrent = (step: number) => step === currentStep\n\n return (\n <StepperContext.Provider value={{ currentStep, totalSteps, orientation, isCompleted, isCurrent, completedSteps }}>\n <div\n data-slot=\"stepper\"\n data-orientation={orientation}\n className={cn(\n \"w-full\",\n orientation === DisplayDirection.HORIZONTAL && \"flex items-center justify-between\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </StepperContext.Provider>\n )\n}\n\n// ============================================================================\n// StepperItem\n// ============================================================================\n\nfunction StepperItem({\n step,\n className,\n children,\n ...props\n}: StepperItemProps): React.JSX.Element {\n const { isCompleted, isCurrent, orientation, totalSteps } = useStepperContext()\n const completed = isCompleted(step)\n const current = isCurrent(step)\n\n return (\n <div\n data-slot=\"stepper-item\"\n data-step={step}\n data-state={completed ? \"completed\" : current ? \"current\" : \"pending\"}\n className={cn(\n orientation === DisplayDirection.VERTICAL && \"flex items-start gap-field\",\n orientation === DisplayDirection.HORIZONTAL && \"flex flex-col items-center gap-element\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n\n// ============================================================================\n// StepperIndicator\n// ============================================================================\n\nfunction StepperIndicator({\n step,\n className,\n ...props\n}: StepperIndicatorProps): React.JSX.Element {\n const { isCompleted, isCurrent } = useStepperContext()\n const { renderIcon } = useIconRegistry()\n const completed = isCompleted(step)\n const current = isCurrent(step)\n\n return (\n <div\n data-slot=\"stepper-indicator\"\n data-step={step}\n data-state={completed ? \"completed\" : current ? \"current\" : \"pending\"}\n className={cn(\n \"flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 transition-all\",\n completed && \"border-primary bg-primary text-primary-foreground\",\n current && \"border-primary bg-background text-primary\",\n !completed && !current && \"border-muted-foreground/30 bg-background text-muted-foreground\",\n className\n )}\n {...props}\n >\n {completed ? (\n renderIcon(StandardIconReference.CHECK, { size: IconSize.SM })\n ) : (\n // `step` is a 0-based POSITION (the same base as `currentStep`); a person counts from 1.\n <span className=\"text-sm font-semibold\">{step + 1}</span>\n )}\n </div>\n )\n}\n\n// ============================================================================\n// StepperSeparator\n// ============================================================================\n\nfunction StepperSeparator({\n step,\n className,\n ...props\n}: StepperSeparatorProps): React.JSX.Element {\n const { isCompleted, orientation, totalSteps } = useStepperContext()\n const completed = isCompleted(step)\n\n // Don't render a separator after the last step (0-based: the last position is `totalSteps - 1`).\n if (step >= totalSteps - 1) return null\n\n return (\n <div\n data-slot=\"stepper-separator\"\n data-step={step}\n data-state={completed ? \"completed\" : \"pending\"}\n className={cn(\n \"transition-all\",\n orientation === DisplayDirection.VERTICAL && \"w-0.5 h-12 mt-item\",\n orientation === DisplayDirection.HORIZONTAL && \"h-0.5 flex-1 mx-field\",\n completed ? \"bg-primary\" : \"bg-muted-foreground/30\",\n className\n )}\n {...props}\n />\n )\n}\n\n// ============================================================================\n// StepperTitle\n// ============================================================================\n\nfunction StepperTitle({\n step,\n className,\n children,\n ...props\n}: StepperTitleProps): React.JSX.Element {\n const { isCurrent } = useStepperContext()\n const current = isCurrent(step)\n\n return (\n <h4\n data-slot=\"stepper-title\"\n data-step={step}\n data-state={current ? \"current\" : \"inactive\"}\n className={cn(\n \"text-sm font-medium transition-colors\",\n current ? \"text-foreground\" : \"text-muted-foreground\",\n className\n )}\n {...props}\n >\n {children}\n </h4>\n )\n}\n\n// ============================================================================\n// StepperDescription\n// ============================================================================\n\nfunction StepperDescription({\n step,\n className,\n children,\n ...props\n}: StepperDescriptionProps): React.JSX.Element {\n const { getRecipe } = useUI()\n const recipe = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.DESCRIPTION)\n\n return (\n <p\n data-slot=\"stepper-description\"\n data-step={step}\n className={cn(\n \"text-xs mt-item-xs\",\n recipe.base,\n className\n )}\n {...props}\n >\n {children}\n </p>\n )\n}\n\nexport const Stepper = createCompoundPreset<StepperCompound>(StepperRoot, { Item: StepperItem, Indicator: StepperIndicator, Separator: StepperSeparator, Title: StepperTitle, Description: StepperDescription })\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"stepper.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/stepper.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"stepper.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/stepper.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/table.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AA0LhE,eAAO,MAAM,KAAK,eAQhB,CAAA"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/table.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AA0LhE,eAAO,MAAM,KAAK,eAQhB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"table.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/table.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"table.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/table.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/tabs.tsx"],"names":[],"mappings":"AAMA,OAAO,EACL,YAAY,EAKb,MAAM,6BAA6B,CAAC;AAoRrC,eAAO,MAAM,IAAI,cAA+G,CAAA"}
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/tabs.tsx"],"names":[],"mappings":"AAMA,OAAO,EACL,YAAY,EAOb,MAAM,6BAA6B,CAAC;AAuWrC,eAAO,MAAM,IAAI,cAA+G,CAAA"}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import * as TabsPrimitive from "@radix-ui/react-tabs";
5
5
  import { ChevronLeft, ChevronRight } from "lucide-react";
6
- import { createCompoundPreset, cn, useUI, Surface, } from '@wildo-ai/saas-frontend-lib';
7
- import { SelectableVariant, SurfaceVariant, UIBehavior } from "@wildo-ai/presets-components-models";
6
+ import { TabsLevel, TabsLevelContext, createCompoundPreset, cn, useUI, Surface, } from '@wildo-ai/saas-frontend-lib';
7
+ import { IndicatorVariant, SelectableVariant, SurfaceVariant, UIBehavior } from "@wildo-ai/presets-components-models";
8
8
  /**
9
9
  * Orientation shared from TabsRoot down to List/Trigger so each sub-component can
10
10
  * choose the right `SELECTABLE` recipe. Radix exposes orientation only as a
@@ -18,9 +18,29 @@ import { SelectableVariant, SurfaceVariant, UIBehavior } from "@wildo-ai/presets
18
18
  * the selected rail item).
19
19
  */
20
20
  const TabsOrientationContext = React.createContext('horizontal');
21
- function TabsRoot({ className, orientation = 'horizontal', ...props }) {
21
+ function TabsRoot({ className, orientation = 'horizontal', level, ...props }) {
22
22
  const resolved = orientation === 'vertical' ? 'vertical' : 'horizontal';
23
- return (_jsx(TabsOrientationContext.Provider, { value: resolved, children: _jsx(TabsPrimitive.Root, { "data-slot": "tabs", orientation: orientation, className: cn("flex flex-col gap-element data-[orientation=vertical]:flex-row data-[orientation=vertical]:gap-card", className), ...props }) }));
23
+ /*
24
+ * The LEVEL defaults from nesting (`TabsLevel`): inside another tab set this one is SECONDARY
25
+ * unless the caller says otherwise. Read from the contract's own context so every preset —
26
+ * and the section pipeline, which never names a level — takes part in the same rule.
27
+ */
28
+ const enclosing = React.useContext(TabsLevelContext);
29
+ const resolvedLevel = level ?? (enclosing === null ? TabsLevel.PRIMARY : TabsLevel.SECONDARY);
30
+ return (_jsx(TabsOrientationContext.Provider, { value: resolved, children: _jsx(TabsLevelContext.Provider, { value: resolvedLevel, children: _jsx(TabsPrimitive.Root, { "data-slot": "tabs", "data-level": resolvedLevel, orientation: orientation, className: cn("flex flex-col gap-element data-[orientation=vertical]:flex-row data-[orientation=vertical]:gap-card", className), ...props }) }) }));
31
+ }
32
+ /**
33
+ * The COUNT on a trigger — how many things are behind the tab — through the theme's INDICATOR
34
+ * recipe so its tone is the same tone a badge of that kind wears anywhere else. Nothing renders for
35
+ * zero: an empty count is not information (see the contract). `tabular-nums` so `2` and `14` sit
36
+ * on the same baseline as the strip re-counts.
37
+ */
38
+ function TabsTriggerCount({ count, tone }) {
39
+ const { getRecipe } = useUI();
40
+ const recipe = getRecipe(UIBehavior.INDICATOR, tone);
41
+ return (_jsx("span", { "data-slot": "tabs-trigger-count", "data-tone": tone, className: cn("inline-flex min-w-5 items-center justify-center font-semibold leading-4 tabular-nums", recipe.base,
42
+ // The recipe's chip geometry is for a badge; a count in a tab is a smaller, rounder thing.
43
+ "rounded-full px-1.5 py-0 text-2xs"), children: count }));
24
44
  }
25
45
  /**
26
46
  * Overflow state of the horizontal scrollport — which edges have more content.
@@ -99,6 +119,7 @@ function TabsListSlideAffordance({ side, onSlide }) {
99
119
  }
100
120
  function TabsList({ className, ...props }) {
101
121
  const isVertical = React.useContext(TabsOrientationContext) === 'vertical';
122
+ const isSecondary = React.useContext(TabsLevelContext) === TabsLevel.SECONDARY;
102
123
  const listRef = React.useRef(null);
103
124
  const overflow = useHorizontalOverflow(listRef);
104
125
  /*
@@ -136,6 +157,14 @@ function TabsList({ className, ...props }) {
136
157
  // Vertical: clean nav rail (column of items, no boxed container).
137
158
  className: cn("flex flex-col items-stretch justify-start gap-item-xs", className), ...props }));
138
159
  }
160
+ /*
161
+ * SECONDARY: a wrapping row of pills with NO rule beneath it. The rule is what makes a strip read
162
+ * as the page's navigation; a nested set must not claim that, and pills wrap rather than scroll
163
+ * because a record's seven tabs on a narrow pane are better on two lines than behind a fade.
164
+ */
165
+ if (isSecondary) {
166
+ return (_jsx(TabsPrimitive.List, { ref: listRef, "data-slot": "tabs-list", className: cn("flex w-full flex-wrap items-center gap-item-xs", className), ...props }));
167
+ }
139
168
  /*
140
169
  * Horizontal: underline tab bar that SCROLLS when it overflows, instead of
141
170
  * widening the page (measured on the workbench artifact list, whose concern
@@ -161,27 +190,43 @@ function TabsList({ className, ...props }) {
161
190
  */
162
191
  return (_jsxs("div", { "data-slot": "tabs-list-scrollport", className: "relative w-full", children: [_jsx("span", { "aria-hidden": "true", className: "pointer-events-none absolute inset-x-0 bottom-0 h-px bg-border" }), _jsx(TabsPrimitive.List, { ref: listRef, "data-slot": "tabs-list", style: { maskImage: fadeMask, WebkitMaskImage: fadeMask }, className: cn("relative flex w-full items-center gap-card overflow-x-auto overscroll-x-contain [scrollbar-width:none] [&::-webkit-scrollbar]:hidden", className), ...props }), overflow.start && _jsx(TabsListSlideAffordance, { side: "start", onSlide: () => slideBy(-1) }), overflow.end && _jsx(TabsListSlideAffordance, { side: "end", onSlide: () => slideBy(1) })] }));
163
192
  }
164
- function TabsTrigger({ className, ...props }) {
193
+ function TabsTrigger({ className, count, countTone = IndicatorVariant.NEUTRAL, children, ...props }) {
165
194
  const isVertical = React.useContext(TabsOrientationContext) === 'vertical';
195
+ const isSecondary = React.useContext(TabsLevelContext) === TabsLevel.SECONDARY;
166
196
  const { getRecipe } = useUI();
167
- // Vertical rail → FILLED (soft fill on select); horizontal → UNDERLINE.
168
- const recipe = getRecipe(UIBehavior.SELECTABLE, isVertical ? SelectableVariant.FILLED : SelectableVariant.UNDERLINE);
169
- return (_jsx(TabsPrimitive.Trigger, { "data-slot": "tabs-trigger", className: cn(
197
+ // Vertical rail → FILLED (soft fill on select); horizontal → UNDERLINE; a nested set → PILL.
198
+ const variant = isVertical
199
+ ? SelectableVariant.FILLED
200
+ : isSecondary ? SelectableVariant.PILL : SelectableVariant.UNDERLINE;
201
+ const recipe = getRecipe(UIBehavior.SELECTABLE, variant);
202
+ return (_jsxs(TabsPrimitive.Trigger, { "data-slot": "tabs-trigger", className: cn(
170
203
  // `cursor-pointer` sits here rather than in the recipe, matching the
171
204
  // accordion trigger: an element that switches the visible panel must
172
205
  // read as clickable whatever the theme dresses it in.
173
206
  "inline-flex cursor-pointer items-center gap-1.5 text-sm font-medium whitespace-nowrap [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", isVertical
174
207
  // Vertical: full-width, left-aligned rail item (FILLED recipe fills it).
175
208
  ? "w-full justify-start rounded-md px-card-sm py-item"
176
- // Horizontal: content-width underline tab (UNDERLINE recipe draws the
177
- // bottom border). No `-mb-px` overlap here: the list is a scrollport
178
- // (which would clip it) and the 1px rule is the wrapper's own layer,
179
- // sharing the wrapper's last pixel row with this indicator.
180
- : "justify-center px-card-sm py-item",
209
+ : isSecondary
210
+ // Nested: a small pill (the PILL recipe's `sm` size draws the shape).
211
+ ? cn("justify-center", recipe.sizes?.sm)
212
+ // Horizontal: content-width underline tab (UNDERLINE recipe draws the
213
+ // bottom border). No `-mb-px` overlap here: the list is a scrollport
214
+ // (which would clip it) and the 1px rule is the wrapper's own layer,
215
+ // sharing the wrapper's last pixel row with this indicator.
216
+ : "justify-center px-card-sm py-item",
181
217
  // Style from the orientation-appropriate SELECTABLE recipe.
182
- recipe.base, recipe.states.focus, recipe.states.selected, recipe.states.disabled, recipe.motion.transition, className), ...props }));
218
+ recipe.base, recipe.states.focus, recipe.states.selected, recipe.states.disabled, recipe.motion.transition, className), ...props, children: [children, count !== undefined && count > 0 && _jsxs(_Fragment, { children: [' ', _jsx(TabsTriggerCount, { count: count, tone: countTone })] })] }));
183
219
  }
184
220
  function TabsContent({ className, ...props }) {
221
+ const isSecondary = React.useContext(TabsLevelContext) === TabsLevel.SECONDARY;
222
+ /*
223
+ * A nested set draws NO panel surface: the enclosing panel already frames it, and a `TAB_PANEL`
224
+ * inside a `TAB_PANEL` is the frame-in-a-frame the level exists to remove. Plain content, and
225
+ * a little air under the pills.
226
+ */
227
+ if (isSecondary) {
228
+ return (_jsx(TabsPrimitive.Content, { "data-slot": "tabs-content", className: cn("flex-1 pt-item outline-none", className), ...props }));
229
+ }
185
230
  return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.TAB_PANEL, children: _jsx(TabsPrimitive.Content, { "data-slot": "tabs-content", className: cn("flex-1 outline-none", className), ...props }) }));
186
231
  }
187
232
  export const Tabs = createCompoundPreset(TabsRoot, { List: TabsList, Trigger: TabsTrigger, Content: TabsContent });