@wildo-ai/presets-components 1.1.3 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (707) hide show
  1. package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
  2. package/dist/esm/components/actions/action-bar.js +61 -7
  3. package/dist/esm/components/actions/action-bar.js.map +1 -1
  4. package/dist/esm/components/actions/action-bar.labels.d.ts.map +1 -1
  5. package/dist/esm/components/actions/action-button.d.ts.map +1 -1
  6. package/dist/esm/components/actions/action-button.js +3 -3
  7. package/dist/esm/components/actions/action-button.js.map +1 -1
  8. package/dist/esm/components/actions/action-button.labels.d.ts.map +1 -1
  9. package/dist/esm/components/actions/button-group.d.ts.map +1 -1
  10. package/dist/esm/components/actions/button.d.ts.map +1 -1
  11. package/dist/esm/components/actions/button.js +62 -3
  12. package/dist/esm/components/actions/button.js.map +1 -1
  13. package/dist/esm/components/actions/button.labels.d.ts.map +1 -1
  14. package/dist/esm/components/ai-elements/artifacts/artifact-browser.d.ts.map +1 -1
  15. package/dist/esm/components/ai-elements/artifacts/artifact.d.ts.map +1 -1
  16. package/dist/esm/components/ai-elements/artifacts/artifact.labels.d.ts.map +1 -1
  17. package/dist/esm/components/ai-elements/artifacts/code-block.d.ts.map +1 -1
  18. package/dist/esm/components/ai-elements/artifacts/code-block.js +1 -1
  19. package/dist/esm/components/ai-elements/artifacts/code-block.js.map +1 -1
  20. package/dist/esm/components/ai-elements/artifacts/code-block.labels.d.ts.map +1 -1
  21. package/dist/esm/components/ai-elements/artifacts/diff-block.d.ts +4 -0
  22. package/dist/esm/components/ai-elements/artifacts/diff-block.d.ts.map +1 -0
  23. package/dist/esm/components/ai-elements/artifacts/diff-block.js +165 -0
  24. package/dist/esm/components/ai-elements/artifacts/diff-block.js.map +1 -0
  25. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.d.ts +3 -0
  26. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.d.ts.map +1 -0
  27. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.js +63 -0
  28. package/dist/esm/components/ai-elements/artifacts/diff-block.labels.js.map +1 -0
  29. package/dist/esm/components/ai-elements/artifacts/image.d.ts.map +1 -1
  30. package/dist/esm/components/ai-elements/artifacts/image.labels.d.ts.map +1 -1
  31. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter-runtime.d.ts.map +1 -1
  32. package/dist/esm/components/ai-elements/artifacts/shiki-highlighter.lazy.d.ts.map +1 -1
  33. package/dist/esm/components/ai-elements/artifacts/web-preview.d.ts.map +1 -1
  34. package/dist/esm/components/ai-elements/artifacts/web-preview.labels.d.ts.map +1 -1
  35. package/dist/esm/components/ai-elements/chat/conversation.d.ts.map +1 -1
  36. package/dist/esm/components/ai-elements/chat/conversation.labels.d.ts.map +1 -1
  37. package/dist/esm/components/ai-elements/chat/message.d.ts.map +1 -1
  38. package/dist/esm/components/ai-elements/chat/message.labels.d.ts.map +1 -1
  39. package/dist/esm/components/ai-elements/chat/prompt-input.d.ts.map +1 -1
  40. package/dist/esm/components/ai-elements/chat/prompt-input.labels.d.ts.map +1 -1
  41. package/dist/esm/components/ai-elements/chat/sources.d.ts.map +1 -1
  42. package/dist/esm/components/ai-elements/chat/sources.labels.d.ts.map +1 -1
  43. package/dist/esm/components/ai-elements/chat/suggestion.d.ts.map +1 -1
  44. package/dist/esm/components/ai-elements/chat/suggestion.labels.d.ts.map +1 -1
  45. package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts +68 -0
  46. package/dist/esm/components/ai-elements/decision/approval-argument-fields.d.ts.map +1 -0
  47. package/dist/esm/components/ai-elements/decision/approval-argument-fields.js +208 -0
  48. package/dist/esm/components/ai-elements/decision/approval-argument-fields.js.map +1 -0
  49. package/dist/esm/components/ai-elements/decision/approval.d.ts +36 -4
  50. package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
  51. package/dist/esm/components/ai-elements/decision/approval.js +77 -7
  52. package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
  53. package/dist/esm/components/ai-elements/decision/decision-request.d.ts.map +1 -1
  54. package/dist/esm/components/ai-elements/decision/decision-request.labels.d.ts.map +1 -1
  55. package/dist/esm/components/ai-elements/execution/confirmation.d.ts.map +1 -1
  56. package/dist/esm/components/ai-elements/execution/confirmation.labels.d.ts.map +1 -1
  57. package/dist/esm/components/ai-elements/execution/queue.d.ts.map +1 -1
  58. package/dist/esm/components/ai-elements/execution/queue.labels.d.ts.map +1 -1
  59. package/dist/esm/components/ai-elements/execution/task.d.ts.map +1 -1
  60. package/dist/esm/components/ai-elements/execution/task.js +1 -1
  61. package/dist/esm/components/ai-elements/execution/task.js.map +1 -1
  62. package/dist/esm/components/ai-elements/execution/task.labels.d.ts.map +1 -1
  63. package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
  64. package/dist/esm/components/ai-elements/execution/tool.js +8 -1
  65. package/dist/esm/components/ai-elements/execution/tool.js.map +1 -1
  66. package/dist/esm/components/ai-elements/execution/tool.labels.d.ts.map +1 -1
  67. package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
  68. package/dist/esm/components/ai-elements/graph/canvas.labels.d.ts.map +1 -1
  69. package/dist/esm/components/ai-elements/graph/connection.d.ts.map +1 -1
  70. package/dist/esm/components/ai-elements/graph/connection.labels.d.ts.map +1 -1
  71. package/dist/esm/components/ai-elements/graph/controls.d.ts.map +1 -1
  72. package/dist/esm/components/ai-elements/graph/controls.labels.d.ts.map +1 -1
  73. package/dist/esm/components/ai-elements/graph/edge.d.ts.map +1 -1
  74. package/dist/esm/components/ai-elements/graph/edge.labels.d.ts.map +1 -1
  75. package/dist/esm/components/ai-elements/graph/graph-runtime.d.ts.map +1 -1
  76. package/dist/esm/components/ai-elements/graph/graph.lazy.d.ts.map +1 -1
  77. package/dist/esm/components/ai-elements/graph/graph.lazy.js +15 -15
  78. package/dist/esm/components/ai-elements/graph/graph.lazy.js.map +1 -1
  79. package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
  80. package/dist/esm/components/ai-elements/graph/node.labels.d.ts.map +1 -1
  81. package/dist/esm/components/ai-elements/graph/panel.d.ts.map +1 -1
  82. package/dist/esm/components/ai-elements/graph/panel.labels.d.ts.map +1 -1
  83. package/dist/esm/components/ai-elements/graph/toolbar.d.ts.map +1 -1
  84. package/dist/esm/components/ai-elements/graph/toolbar.labels.d.ts.map +1 -1
  85. package/dist/esm/components/ai-elements/meta/agent.d.ts +0 -1
  86. package/dist/esm/components/ai-elements/meta/agent.d.ts.map +1 -1
  87. package/dist/esm/components/ai-elements/meta/agent.js +23 -18
  88. package/dist/esm/components/ai-elements/meta/agent.js.map +1 -1
  89. package/dist/esm/components/ai-elements/meta/context.d.ts.map +1 -1
  90. package/dist/esm/components/ai-elements/meta/context.labels.d.ts.map +1 -1
  91. package/dist/esm/components/ai-elements/meta/context.lazy.d.ts.map +1 -1
  92. package/dist/esm/components/ai-elements/meta/context.lazy.js +13 -11
  93. package/dist/esm/components/ai-elements/meta/context.lazy.js.map +1 -1
  94. package/dist/esm/components/ai-elements/meta/model-selector.d.ts.map +1 -1
  95. package/dist/esm/components/ai-elements/meta/model-selector.labels.d.ts.map +1 -1
  96. package/dist/esm/components/ai-elements/meta/open-in-chat.d.ts.map +1 -1
  97. package/dist/esm/components/ai-elements/meta/open-in-chat.labels.d.ts.map +1 -1
  98. package/dist/esm/components/ai-elements/shared/loader.d.ts.map +1 -1
  99. package/dist/esm/components/ai-elements/shared/loader.labels.d.ts.map +1 -1
  100. package/dist/esm/components/ai-elements/shared/shimmer.d.ts.map +1 -1
  101. package/dist/esm/components/ai-elements/shared/shimmer.labels.d.ts.map +1 -1
  102. package/dist/esm/components/ai-elements/stream/execution-stream.d.ts.map +1 -1
  103. package/dist/esm/components/ai-elements/stream/execution-stream.labels.d.ts.map +1 -1
  104. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts +6 -0
  105. package/dist/esm/components/ai-elements/trace/chain-of-thought.d.ts.map +1 -1
  106. package/dist/esm/components/ai-elements/trace/chain-of-thought.js +13 -1
  107. package/dist/esm/components/ai-elements/trace/chain-of-thought.js.map +1 -1
  108. package/dist/esm/components/ai-elements/trace/chain-of-thought.labels.d.ts.map +1 -1
  109. package/dist/esm/components/ai-elements/trace/checkpoint.d.ts.map +1 -1
  110. package/dist/esm/components/ai-elements/trace/checkpoint.labels.d.ts.map +1 -1
  111. package/dist/esm/components/ai-elements/trace/inline-citation.d.ts.map +1 -1
  112. package/dist/esm/components/ai-elements/trace/inline-citation.labels.d.ts.map +1 -1
  113. package/dist/esm/components/ai-elements/trace/plan.d.ts.map +1 -1
  114. package/dist/esm/components/ai-elements/trace/plan.labels.d.ts.map +1 -1
  115. package/dist/esm/components/ai-elements/trace/reasoning.d.ts.map +1 -1
  116. package/dist/esm/components/ai-elements/trace/reasoning.labels.d.ts.map +1 -1
  117. package/dist/esm/components/app/app-layout-consent-gate.d.ts +23 -0
  118. package/dist/esm/components/app/app-layout-consent-gate.d.ts.map +1 -0
  119. package/dist/esm/components/app/app-layout-consent-gate.js +133 -0
  120. package/dist/esm/components/app/app-layout-consent-gate.js.map +1 -0
  121. package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts +19 -0
  122. package/dist/esm/components/app/app-layout-document-acceptance-gate.d.ts.map +1 -0
  123. package/dist/esm/components/app/app-layout-document-acceptance-gate.js +56 -0
  124. package/dist/esm/components/app/app-layout-document-acceptance-gate.js.map +1 -0
  125. package/dist/esm/components/app/app-layout-main-container.d.ts.map +1 -1
  126. package/dist/esm/components/app/app-layout-main-container.labels.d.ts.map +1 -1
  127. package/dist/esm/components/app/app-layout-main-container.labels.js +21 -0
  128. package/dist/esm/components/app/app-layout-main-container.labels.js.map +1 -1
  129. package/dist/esm/components/app/public-layout-main-container.d.ts +1 -1
  130. package/dist/esm/components/app/public-layout-main-container.d.ts.map +1 -1
  131. package/dist/esm/components/app/public-layout-main-container.js +9 -8
  132. package/dist/esm/components/app/public-layout-main-container.js.map +1 -1
  133. package/dist/esm/components/app/public-layout-main-container.labels.d.ts.map +1 -1
  134. package/dist/esm/components/app/public-layout-terms.d.ts +46 -0
  135. package/dist/esm/components/app/public-layout-terms.d.ts.map +1 -0
  136. package/dist/esm/components/app/public-layout-terms.js +137 -0
  137. package/dist/esm/components/app/public-layout-terms.js.map +1 -0
  138. package/dist/esm/components/billing/billing-format.utils.d.ts.map +1 -1
  139. package/dist/esm/components/billing/billing-invoice-history.d.ts +1 -1
  140. package/dist/esm/components/billing/billing-invoice-history.d.ts.map +1 -1
  141. package/dist/esm/components/billing/billing-invoice-history.js +3 -1
  142. package/dist/esm/components/billing/billing-invoice-history.js.map +1 -1
  143. package/dist/esm/components/billing/billing-invoice-history.labels.d.ts.map +1 -1
  144. package/dist/esm/components/billing/billing-invoice-history.labels.js +1 -0
  145. package/dist/esm/components/billing/billing-invoice-history.labels.js.map +1 -1
  146. package/dist/esm/components/billing/billing-plan-change-preview.d.ts +5 -0
  147. package/dist/esm/components/billing/billing-plan-change-preview.d.ts.map +1 -0
  148. package/dist/esm/components/billing/billing-plan-change-preview.js +22 -0
  149. package/dist/esm/components/billing/billing-plan-change-preview.js.map +1 -0
  150. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts +3 -0
  151. package/dist/esm/components/billing/billing-plan-change-preview.labels.d.ts.map +1 -0
  152. package/dist/esm/components/billing/billing-plan-change-preview.labels.js +19 -0
  153. package/dist/esm/components/billing/billing-plan-change-preview.labels.js.map +1 -0
  154. package/dist/esm/components/billing/billing-portal-link.d.ts +1 -1
  155. package/dist/esm/components/billing/billing-portal-link.d.ts.map +1 -1
  156. package/dist/esm/components/billing/billing-portal-link.js +3 -1
  157. package/dist/esm/components/billing/billing-portal-link.js.map +1 -1
  158. package/dist/esm/components/billing/billing-portal-link.labels.d.ts.map +1 -1
  159. package/dist/esm/components/billing/billing-portal-link.labels.js +1 -0
  160. package/dist/esm/components/billing/billing-portal-link.labels.js.map +1 -1
  161. package/dist/esm/components/billing/billing-pricing-table.d.ts +1 -1
  162. package/dist/esm/components/billing/billing-pricing-table.d.ts.map +1 -1
  163. package/dist/esm/components/billing/billing-pricing-table.js +4 -2
  164. package/dist/esm/components/billing/billing-pricing-table.js.map +1 -1
  165. package/dist/esm/components/billing/billing-pricing-table.labels.d.ts.map +1 -1
  166. package/dist/esm/components/billing/billing-pricing-table.labels.js +1 -0
  167. package/dist/esm/components/billing/billing-pricing-table.labels.js.map +1 -1
  168. package/dist/esm/components/billing/billing-subscription-status.d.ts +1 -1
  169. package/dist/esm/components/billing/billing-subscription-status.d.ts.map +1 -1
  170. package/dist/esm/components/billing/billing-subscription-status.js +3 -1
  171. package/dist/esm/components/billing/billing-subscription-status.js.map +1 -1
  172. package/dist/esm/components/billing/billing-subscription-status.labels.d.ts.map +1 -1
  173. package/dist/esm/components/billing/billing-subscription-status.labels.js +1 -0
  174. package/dist/esm/components/billing/billing-subscription-status.labels.js.map +1 -1
  175. package/dist/esm/components/billing/billing-usage-dashboard.d.ts +1 -1
  176. package/dist/esm/components/billing/billing-usage-dashboard.d.ts.map +1 -1
  177. package/dist/esm/components/billing/billing-usage-dashboard.js +4 -4
  178. package/dist/esm/components/billing/billing-usage-dashboard.js.map +1 -1
  179. package/dist/esm/components/billing/billing-usage-dashboard.labels.d.ts.map +1 -1
  180. package/dist/esm/components/billing/billing-usage-dashboard.labels.js +2 -0
  181. package/dist/esm/components/billing/billing-usage-dashboard.labels.js.map +1 -1
  182. package/dist/esm/components/data-display/avatar.d.ts.map +1 -1
  183. package/dist/esm/components/data-display/avatar.labels.d.ts.map +1 -1
  184. package/dist/esm/components/data-display/badge.d.ts.map +1 -1
  185. package/dist/esm/components/data-display/badge.js +16 -15
  186. package/dist/esm/components/data-display/badge.js.map +1 -1
  187. package/dist/esm/components/data-display/badge.labels.d.ts.map +1 -1
  188. package/dist/esm/components/data-display/description-list.d.ts +2 -1
  189. package/dist/esm/components/data-display/description-list.d.ts.map +1 -1
  190. package/dist/esm/components/data-display/description-list.js +24 -8
  191. package/dist/esm/components/data-display/description-list.js.map +1 -1
  192. package/dist/esm/components/data-display/description-list.labels.d.ts.map +1 -1
  193. package/dist/esm/components/data-display/duration.d.ts +15 -0
  194. package/dist/esm/components/data-display/duration.d.ts.map +1 -0
  195. package/dist/esm/components/data-display/duration.js +50 -0
  196. package/dist/esm/components/data-display/duration.js.map +1 -0
  197. package/dist/esm/components/data-display/duration.labels.d.ts +15 -0
  198. package/dist/esm/components/data-display/duration.labels.d.ts.map +1 -0
  199. package/dist/esm/components/data-display/duration.labels.js +35 -0
  200. package/dist/esm/components/data-display/duration.labels.js.map +1 -0
  201. package/dist/esm/components/data-display/formatters/display-field-address.d.ts +21 -0
  202. package/dist/esm/components/data-display/formatters/display-field-address.d.ts.map +1 -0
  203. package/dist/esm/components/data-display/formatters/display-field-address.js +75 -0
  204. package/dist/esm/components/data-display/formatters/display-field-address.js.map +1 -0
  205. package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts +3 -0
  206. package/dist/esm/components/data-display/formatters/display-field-address.labels.d.ts.map +1 -0
  207. package/dist/esm/components/data-display/formatters/display-field-address.labels.js +13 -0
  208. package/dist/esm/components/data-display/formatters/display-field-address.labels.js.map +1 -0
  209. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.d.ts.map +1 -1
  210. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js +6 -2
  211. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.js.map +1 -1
  212. package/dist/esm/components/data-display/formatters/display-field-bigdecimal.labels.d.ts.map +1 -1
  213. package/dist/esm/components/data-display/formatters/display-field-boolean.d.ts.map +1 -1
  214. package/dist/esm/components/data-display/formatters/display-field-boolean.js +2 -2
  215. package/dist/esm/components/data-display/formatters/display-field-boolean.js.map +1 -1
  216. package/dist/esm/components/data-display/formatters/display-field-boolean.labels.d.ts.map +1 -1
  217. package/dist/esm/components/data-display/formatters/display-field-code.d.ts.map +1 -1
  218. package/dist/esm/components/data-display/formatters/display-field-code.js +2 -2
  219. package/dist/esm/components/data-display/formatters/display-field-code.js.map +1 -1
  220. package/dist/esm/components/data-display/formatters/display-field-code.labels.d.ts.map +1 -1
  221. package/dist/esm/components/data-display/formatters/display-field-date.d.ts +3 -3
  222. package/dist/esm/components/data-display/formatters/display-field-date.d.ts.map +1 -1
  223. package/dist/esm/components/data-display/formatters/display-field-date.js +17 -4
  224. package/dist/esm/components/data-display/formatters/display-field-date.js.map +1 -1
  225. package/dist/esm/components/data-display/formatters/display-field-date.labels.d.ts.map +1 -1
  226. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts +3 -3
  227. package/dist/esm/components/data-display/formatters/display-field-datetime.d.ts.map +1 -1
  228. package/dist/esm/components/data-display/formatters/display-field-datetime.js +17 -4
  229. package/dist/esm/components/data-display/formatters/display-field-datetime.js.map +1 -1
  230. package/dist/esm/components/data-display/formatters/display-field-datetime.labels.d.ts.map +1 -1
  231. package/dist/esm/components/data-display/formatters/display-field-duration.d.ts.map +1 -1
  232. package/dist/esm/components/data-display/formatters/display-field-duration.labels.d.ts.map +1 -1
  233. package/dist/esm/components/data-display/formatters/display-field-enum.d.ts.map +1 -1
  234. package/dist/esm/components/data-display/formatters/display-field-enum.js +12 -8
  235. package/dist/esm/components/data-display/formatters/display-field-enum.js.map +1 -1
  236. package/dist/esm/components/data-display/formatters/display-field-enum.labels.d.ts.map +1 -1
  237. package/dist/esm/components/data-display/formatters/display-field-file-audio.d.ts.map +1 -1
  238. package/dist/esm/components/data-display/formatters/display-field-file-audio.js +2 -1
  239. package/dist/esm/components/data-display/formatters/display-field-file-audio.js.map +1 -1
  240. package/dist/esm/components/data-display/formatters/display-field-file-audio.labels.d.ts.map +1 -1
  241. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts +4 -1
  242. package/dist/esm/components/data-display/formatters/display-field-file-document.d.ts.map +1 -1
  243. package/dist/esm/components/data-display/formatters/display-field-file-document.js +18 -5
  244. package/dist/esm/components/data-display/formatters/display-field-file-document.js.map +1 -1
  245. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.d.ts.map +1 -1
  246. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js +20 -0
  247. package/dist/esm/components/data-display/formatters/display-field-file-document.labels.js.map +1 -1
  248. package/dist/esm/components/data-display/formatters/display-field-file-gallery.d.ts.map +1 -1
  249. package/dist/esm/components/data-display/formatters/display-field-file-gallery.labels.d.ts.map +1 -1
  250. package/dist/esm/components/data-display/formatters/display-field-file-image.d.ts.map +1 -1
  251. package/dist/esm/components/data-display/formatters/display-field-file-image.js +3 -1
  252. package/dist/esm/components/data-display/formatters/display-field-file-image.js.map +1 -1
  253. package/dist/esm/components/data-display/formatters/display-field-file-image.labels.d.ts.map +1 -1
  254. package/dist/esm/components/data-display/formatters/display-field-file-video.d.ts.map +1 -1
  255. package/dist/esm/components/data-display/formatters/display-field-file-video.labels.d.ts.map +1 -1
  256. package/dist/esm/components/data-display/formatters/display-field-file.d.ts.map +1 -1
  257. package/dist/esm/components/data-display/formatters/display-field-file.js +2 -2
  258. package/dist/esm/components/data-display/formatters/display-field-file.js.map +1 -1
  259. package/dist/esm/components/data-display/formatters/display-field-file.labels.d.ts.map +1 -1
  260. package/dist/esm/components/data-display/formatters/display-field-file.labels.js +1 -0
  261. package/dist/esm/components/data-display/formatters/display-field-file.labels.js.map +1 -1
  262. package/dist/esm/components/data-display/formatters/display-field-format.utils.d.ts.map +1 -1
  263. package/dist/esm/components/data-display/formatters/display-field-i18n.utils.d.ts.map +1 -1
  264. package/dist/esm/components/data-display/formatters/display-field-money.d.ts.map +1 -1
  265. package/dist/esm/components/data-display/formatters/display-field-money.labels.d.ts.map +1 -1
  266. package/dist/esm/components/data-display/formatters/display-field-number.d.ts.map +1 -1
  267. package/dist/esm/components/data-display/formatters/display-field-number.js +2 -2
  268. package/dist/esm/components/data-display/formatters/display-field-number.js.map +1 -1
  269. package/dist/esm/components/data-display/formatters/display-field-number.labels.d.ts.map +1 -1
  270. package/dist/esm/components/data-display/formatters/display-field-phone.d.ts.map +1 -1
  271. package/dist/esm/components/data-display/formatters/display-field-phone.labels.d.ts.map +1 -1
  272. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.d.ts.map +1 -1
  273. package/dist/esm/components/data-display/formatters/display-field-range-bigdecimal.labels.d.ts.map +1 -1
  274. package/dist/esm/components/data-display/formatters/display-field-range-date.d.ts.map +1 -1
  275. package/dist/esm/components/data-display/formatters/display-field-range-date.labels.d.ts.map +1 -1
  276. package/dist/esm/components/data-display/formatters/display-field-range-datetime.d.ts.map +1 -1
  277. package/dist/esm/components/data-display/formatters/display-field-range-datetime.labels.d.ts.map +1 -1
  278. package/dist/esm/components/data-display/formatters/display-field-range-money.d.ts.map +1 -1
  279. package/dist/esm/components/data-display/formatters/display-field-range-money.labels.d.ts.map +1 -1
  280. package/dist/esm/components/data-display/formatters/display-field-range-number.d.ts.map +1 -1
  281. package/dist/esm/components/data-display/formatters/display-field-range-number.labels.d.ts.map +1 -1
  282. package/dist/esm/components/data-display/formatters/display-field-range-time.d.ts.map +1 -1
  283. package/dist/esm/components/data-display/formatters/display-field-range-time.labels.d.ts.map +1 -1
  284. package/dist/esm/components/data-display/formatters/display-field-string.d.ts.map +1 -1
  285. package/dist/esm/components/data-display/formatters/display-field-string.js +82 -7
  286. package/dist/esm/components/data-display/formatters/display-field-string.js.map +1 -1
  287. package/dist/esm/components/data-display/formatters/display-field-string.labels.d.ts.map +1 -1
  288. package/dist/esm/components/data-display/formatters/display-field-time.d.ts.map +1 -1
  289. package/dist/esm/components/data-display/formatters/display-field-time.labels.d.ts.map +1 -1
  290. package/dist/esm/components/data-display/identifier.d.ts +19 -0
  291. package/dist/esm/components/data-display/identifier.d.ts.map +1 -0
  292. package/dist/esm/components/data-display/identifier.js +21 -0
  293. package/dist/esm/components/data-display/identifier.js.map +1 -0
  294. package/dist/esm/components/data-display/kbd.d.ts +17 -0
  295. package/dist/esm/components/data-display/kbd.d.ts.map +1 -0
  296. package/dist/esm/components/data-display/kbd.js +18 -0
  297. package/dist/esm/components/data-display/kbd.js.map +1 -0
  298. package/dist/esm/components/data-display/markdown-content.d.ts.map +1 -1
  299. package/dist/esm/components/data-display/markdown-stream-runtime.d.ts.map +1 -1
  300. package/dist/esm/components/data-display/markdown-stream.lazy.d.ts.map +1 -1
  301. package/dist/esm/components/data-display/markdown-stream.lazy.js +13 -2
  302. package/dist/esm/components/data-display/markdown-stream.lazy.js.map +1 -1
  303. package/dist/esm/components/data-display/notification-indicator.d.ts.map +1 -1
  304. package/dist/esm/components/data-display/notification-indicator.js +3 -11
  305. package/dist/esm/components/data-display/notification-indicator.js.map +1 -1
  306. package/dist/esm/components/data-display/notification-indicator.labels.d.ts.map +1 -1
  307. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts +63 -0
  308. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.d.ts.map +1 -0
  309. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js +75 -0
  310. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.js.map +1 -0
  311. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts +32 -0
  312. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.d.ts.map +1 -0
  313. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js +36 -0
  314. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer-worker.vite.js.map +1 -0
  315. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts +46 -6
  316. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  317. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js +70 -46
  318. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.js.map +1 -1
  319. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts +12 -2
  320. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.d.ts.map +1 -1
  321. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js +3 -2
  322. package/dist/esm/components/data-display/pdf-viewer/pdf-viewer.lazy.js.map +1 -1
  323. package/dist/esm/components/data-display/timeline.d.ts +3 -0
  324. package/dist/esm/components/data-display/timeline.d.ts.map +1 -0
  325. package/dist/esm/components/data-display/timeline.js +92 -0
  326. package/dist/esm/components/data-display/timeline.js.map +1 -0
  327. package/dist/esm/components/feedback/celebration-overlay.d.ts +13 -4
  328. package/dist/esm/components/feedback/celebration-overlay.d.ts.map +1 -1
  329. package/dist/esm/components/feedback/celebration-overlay.js +146 -22
  330. package/dist/esm/components/feedback/celebration-overlay.js.map +1 -1
  331. package/dist/esm/components/feedback/celebration-overlay.labels.d.ts.map +1 -1
  332. package/dist/esm/components/feedback/danger-zone.d.ts.map +1 -1
  333. package/dist/esm/components/feedback/danger-zone.labels.d.ts.map +1 -1
  334. package/dist/esm/components/feedback/empty-state.d.ts.map +1 -1
  335. package/dist/esm/components/feedback/empty-state.js +11 -1
  336. package/dist/esm/components/feedback/empty-state.js.map +1 -1
  337. package/dist/esm/components/feedback/empty-state.labels.d.ts.map +1 -1
  338. package/dist/esm/components/feedback/error-display.d.ts.map +1 -1
  339. package/dist/esm/components/feedback/error-display.labels.d.ts.map +1 -1
  340. package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
  341. package/dist/esm/components/feedback/features/feature-limit-indicator.labels.d.ts.map +1 -1
  342. package/dist/esm/components/feedback/features/feature-lock-badge.d.ts.map +1 -1
  343. package/dist/esm/components/feedback/features/feature-lock-badge.labels.d.ts.map +1 -1
  344. package/dist/esm/components/feedback/features/feature-unavailable-dialog.d.ts.map +1 -1
  345. package/dist/esm/components/feedback/features/feature-unavailable-dialog.labels.d.ts.map +1 -1
  346. package/dist/esm/components/feedback/features/feature-unavailable-prompt.d.ts.map +1 -1
  347. package/dist/esm/components/feedback/features/feature-unavailable-prompt.js.map +1 -1
  348. package/dist/esm/components/feedback/features/feature-unavailable-prompt.labels.d.ts.map +1 -1
  349. package/dist/esm/components/feedback/loading-overlay.d.ts.map +1 -1
  350. package/dist/esm/components/feedback/loading-overlay.labels.d.ts.map +1 -1
  351. package/dist/esm/components/feedback/loading-spinner.d.ts.map +1 -1
  352. package/dist/esm/components/feedback/loading-spinner.labels.d.ts.map +1 -1
  353. package/dist/esm/components/feedback/notification-center.d.ts.map +1 -1
  354. package/dist/esm/components/feedback/notification-center.js +6 -6
  355. package/dist/esm/components/feedback/notification-center.js.map +1 -1
  356. package/dist/esm/components/feedback/operations-confirm-critical.d.ts +1 -1
  357. package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
  358. package/dist/esm/components/feedback/operations-confirm-critical.js +9 -7
  359. package/dist/esm/components/feedback/operations-confirm-critical.js.map +1 -1
  360. package/dist/esm/components/feedback/operations-confirm-critical.labels.d.ts.map +1 -1
  361. package/dist/esm/components/feedback/progress.d.ts.map +1 -1
  362. package/dist/esm/components/feedback/progress.labels.d.ts.map +1 -1
  363. package/dist/esm/components/feedback/skeleton.d.ts.map +1 -1
  364. package/dist/esm/components/feedback/skeleton.labels.d.ts.map +1 -1
  365. package/dist/esm/components/feedback/toast.d.ts.map +1 -1
  366. package/dist/esm/components/feedback/toast.labels.d.ts.map +1 -1
  367. package/dist/esm/components/form/autosave-indicator.d.ts.map +1 -1
  368. package/dist/esm/components/form/autosave-indicator.labels.d.ts.map +1 -1
  369. package/dist/esm/components/form/chromes/field.d.ts.map +1 -1
  370. package/dist/esm/components/form/chromes/field.js +11 -3
  371. package/dist/esm/components/form/chromes/field.js.map +1 -1
  372. package/dist/esm/components/form/chromes/field.labels.d.ts.map +1 -1
  373. package/dist/esm/components/form/chromes/form-primitive.d.ts.map +1 -1
  374. package/dist/esm/components/form/chromes/form-primitive.labels.d.ts.map +1 -1
  375. package/dist/esm/components/form/chromes/form-primitive.labels.js +28 -0
  376. package/dist/esm/components/form/chromes/form-primitive.labels.js.map +1 -1
  377. package/dist/esm/components/form/combobox.d.ts.map +1 -1
  378. package/dist/esm/components/form/combobox.js +4 -3
  379. package/dist/esm/components/form/combobox.js.map +1 -1
  380. package/dist/esm/components/form/combobox.labels.d.ts.map +1 -1
  381. package/dist/esm/components/form/controls/boolean/checkbox.d.ts.map +1 -1
  382. package/dist/esm/components/form/controls/boolean/checkbox.js +2 -2
  383. package/dist/esm/components/form/controls/boolean/checkbox.js.map +1 -1
  384. package/dist/esm/components/form/controls/boolean/checkbox.labels.d.ts.map +1 -1
  385. package/dist/esm/components/form/controls/boolean/switch.d.ts.map +1 -1
  386. package/dist/esm/components/form/controls/boolean/switch.labels.d.ts.map +1 -1
  387. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.d.ts.map +1 -1
  388. package/dist/esm/components/form/controls/boolean/toggle-group-boolean.labels.d.ts.map +1 -1
  389. package/dist/esm/components/form/controls/boolean/toggle.d.ts.map +1 -1
  390. package/dist/esm/components/form/controls/boolean/toggle.labels.d.ts.map +1 -1
  391. package/dist/esm/components/form/controls/code-editor/cm6-editor-appearance.d.ts.map +1 -1
  392. package/dist/esm/components/form/controls/code-editor/cm6-editor.d.ts.map +1 -1
  393. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.d.ts.map +1 -1
  394. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js +11 -2
  395. package/dist/esm/components/form/controls/code-editor/cm6-editor.lazy.js.map +1 -1
  396. package/dist/esm/components/form/controls/code-editor/form-field-code.d.ts.map +1 -1
  397. package/dist/esm/components/form/controls/code-editor/markdown-editor.d.ts.map +1 -1
  398. package/dist/esm/components/form/controls/date-time/calendar.d.ts.map +1 -1
  399. package/dist/esm/components/form/controls/date-time/calendar.labels.d.ts.map +1 -1
  400. package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
  401. package/dist/esm/components/form/controls/date-time/date-range-picker.labels.d.ts.map +1 -1
  402. package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
  403. package/dist/esm/components/form/controls/date-time/datepicker.labels.d.ts.map +1 -1
  404. package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
  405. package/dist/esm/components/form/controls/date-time/datetime-picker.labels.d.ts.map +1 -1
  406. package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
  407. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.d.ts.map +1 -1
  408. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js +11 -2
  409. package/dist/esm/components/form/controls/date-time/datetime-range-picker.labels.js.map +1 -1
  410. package/dist/esm/components/form/controls/date-time/time-picker.d.ts.map +1 -1
  411. package/dist/esm/components/form/controls/date-time/time-picker.labels.d.ts.map +1 -1
  412. package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
  413. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.d.ts.map +1 -1
  414. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js +11 -2
  415. package/dist/esm/components/form/controls/date-time/time-range-picker.labels.js.map +1 -1
  416. package/dist/esm/components/form/controls/enum/radio.d.ts +1 -1
  417. package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
  418. package/dist/esm/components/form/controls/enum/radio.js +13 -12
  419. package/dist/esm/components/form/controls/enum/radio.js.map +1 -1
  420. package/dist/esm/components/form/controls/enum/radio.labels.d.ts.map +1 -1
  421. package/dist/esm/components/form/controls/enum/select-multiple.d.ts.map +1 -1
  422. package/dist/esm/components/form/controls/enum/select-multiple.js +5 -3
  423. package/dist/esm/components/form/controls/enum/select-multiple.js.map +1 -1
  424. package/dist/esm/components/form/controls/enum/select-multiple.labels.d.ts.map +1 -1
  425. package/dist/esm/components/form/controls/enum/select.d.ts.map +1 -1
  426. package/dist/esm/components/form/controls/enum/select.labels.d.ts.map +1 -1
  427. package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
  428. package/dist/esm/components/form/controls/enum/toggle-group.js +96 -5
  429. package/dist/esm/components/form/controls/enum/toggle-group.js.map +1 -1
  430. package/dist/esm/components/form/controls/enum/toggle-group.labels.d.ts.map +1 -1
  431. package/dist/esm/components/form/controls/file/file-upload.d.ts.map +1 -1
  432. package/dist/esm/components/form/controls/file/file-upload.labels.d.ts.map +1 -1
  433. package/dist/esm/components/form/controls/file/image-crop.d.ts.map +1 -1
  434. package/dist/esm/components/form/controls/file/image-crop.labels.d.ts.map +1 -1
  435. package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts +44 -0
  436. package/dist/esm/components/form/controls/file/providers/dropbox-picker.d.ts.map +1 -0
  437. package/dist/esm/components/form/controls/file/providers/dropbox-picker.js +137 -0
  438. package/dist/esm/components/form/controls/file/providers/dropbox-picker.js.map +1 -0
  439. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts +22 -0
  440. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.d.ts.map +1 -0
  441. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js +27 -0
  442. package/dist/esm/components/form/controls/file/providers/dropbox-picker.lazy.js.map +1 -0
  443. package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts +54 -0
  444. package/dist/esm/components/form/controls/file/providers/google-drive-picker.d.ts.map +1 -0
  445. package/dist/esm/components/form/controls/file/providers/google-drive-picker.js +159 -0
  446. package/dist/esm/components/form/controls/file/providers/google-drive-picker.js.map +1 -0
  447. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts +22 -0
  448. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.d.ts.map +1 -0
  449. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js +27 -0
  450. package/dist/esm/components/form/controls/file/providers/google-drive-picker.lazy.js.map +1 -0
  451. package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts +41 -0
  452. package/dist/esm/components/form/controls/file/providers/onedrive-picker.d.ts.map +1 -0
  453. package/dist/esm/components/form/controls/file/providers/onedrive-picker.js +129 -0
  454. package/dist/esm/components/form/controls/file/providers/onedrive-picker.js.map +1 -0
  455. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts +22 -0
  456. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.d.ts.map +1 -0
  457. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js +27 -0
  458. package/dist/esm/components/form/controls/file/providers/onedrive-picker.lazy.js.map +1 -0
  459. package/dist/esm/components/form/controls/input-group.d.ts.map +1 -1
  460. package/dist/esm/components/form/controls/input-group.labels.d.ts.map +1 -1
  461. package/dist/esm/components/form/controls/input.d.ts.map +1 -1
  462. package/dist/esm/components/form/controls/input.labels.d.ts.map +1 -1
  463. package/dist/esm/components/form/controls/number/slider.d.ts.map +1 -1
  464. package/dist/esm/components/form/controls/number/slider.labels.d.ts.map +1 -1
  465. package/dist/esm/components/form/controls/number/slider.labels.js +9 -2
  466. package/dist/esm/components/form/controls/number/slider.labels.js.map +1 -1
  467. package/dist/esm/components/form/controls/string/color-input.d.ts.map +1 -1
  468. package/dist/esm/components/form/controls/string/color-input.labels.d.ts.map +1 -1
  469. package/dist/esm/components/form/controls/string/color-picker-surface.d.ts.map +1 -1
  470. package/dist/esm/components/form/controls/string/color-picker-surface.js.map +1 -1
  471. package/dist/esm/components/form/controls/string/inline-edit-text.d.ts.map +1 -1
  472. package/dist/esm/components/form/controls/string/input-otp.d.ts.map +1 -1
  473. package/dist/esm/components/form/controls/string/input-otp.labels.d.ts.map +1 -1
  474. package/dist/esm/components/form/controls/string/password-input.d.ts.map +1 -1
  475. package/dist/esm/components/form/controls/string/password-input.labels.d.ts.map +1 -1
  476. package/dist/esm/components/form/controls/string/password-input.labels.js +9 -2
  477. package/dist/esm/components/form/controls/string/password-input.labels.js.map +1 -1
  478. package/dist/esm/components/form/controls/string/textarea.d.ts.map +1 -1
  479. package/dist/esm/components/form/controls/string/textarea.labels.d.ts.map +1 -1
  480. package/dist/esm/components/layout/aspect-ratio.d.ts.map +1 -1
  481. package/dist/esm/components/layout/aspect-ratio.labels.d.ts.map +1 -1
  482. package/dist/esm/components/layout/carousel.d.ts.map +1 -1
  483. package/dist/esm/components/layout/carousel.labels.d.ts.map +1 -1
  484. package/dist/esm/components/layout/divider.d.ts.map +1 -1
  485. package/dist/esm/components/layout/divider.labels.d.ts.map +1 -1
  486. package/dist/esm/components/layout/resizable.d.ts.map +1 -1
  487. package/dist/esm/components/layout/resizable.labels.d.ts.map +1 -1
  488. package/dist/esm/components/layout/scroll-area.d.ts.map +1 -1
  489. package/dist/esm/components/layout/scroll-area.labels.d.ts.map +1 -1
  490. package/dist/esm/components/layout/separator.d.ts.map +1 -1
  491. package/dist/esm/components/layout/separator.labels.d.ts.map +1 -1
  492. package/dist/esm/components/navigation/app-level/activity-bar.d.ts.map +1 -1
  493. package/dist/esm/components/navigation/app-level/activity-bar.labels.d.ts.map +1 -1
  494. package/dist/esm/components/navigation/app-level/command-menu.d.ts.map +1 -1
  495. package/dist/esm/components/navigation/app-level/command-menu.js +2 -2
  496. package/dist/esm/components/navigation/app-level/command-menu.js.map +1 -1
  497. package/dist/esm/components/navigation/app-level/command-menu.labels.d.ts.map +1 -1
  498. package/dist/esm/components/navigation/app-level/control-panel.d.ts.map +1 -1
  499. package/dist/esm/components/navigation/app-level/control-panel.labels.d.ts.map +1 -1
  500. package/dist/esm/components/navigation/app-level/menu-user-org.d.ts.map +1 -1
  501. package/dist/esm/components/navigation/app-level/menu-user-org.labels.d.ts.map +1 -1
  502. package/dist/esm/components/navigation/app-level/menubar.d.ts.map +1 -1
  503. package/dist/esm/components/navigation/app-level/menubar.js +35 -13
  504. package/dist/esm/components/navigation/app-level/menubar.js.map +1 -1
  505. package/dist/esm/components/navigation/app-level/menubar.labels.d.ts.map +1 -1
  506. package/dist/esm/components/navigation/app-level/navigation-back.d.ts.map +1 -1
  507. package/dist/esm/components/navigation/app-level/navigation-back.js +10 -2
  508. package/dist/esm/components/navigation/app-level/navigation-back.js.map +1 -1
  509. package/dist/esm/components/navigation/app-level/navigation-back.labels.d.ts.map +1 -1
  510. package/dist/esm/components/navigation/app-level/notification-center.d.ts.map +1 -1
  511. package/dist/esm/components/navigation/app-level/notification-center.js.map +1 -1
  512. package/dist/esm/components/navigation/app-level/notification-center.labels.d.ts.map +1 -1
  513. package/dist/esm/components/navigation/app-level/notification-center.labels.js +15 -0
  514. package/dist/esm/components/navigation/app-level/notification-center.labels.js.map +1 -1
  515. package/dist/esm/components/navigation/app-level/quick-action-button.d.ts.map +1 -1
  516. package/dist/esm/components/navigation/app-level/quick-action-button.labels.d.ts.map +1 -1
  517. package/dist/esm/components/navigation/app-level/quick-action-button.labels.js +4 -0
  518. package/dist/esm/components/navigation/app-level/quick-action-button.labels.js.map +1 -1
  519. package/dist/esm/components/navigation/app-level/quick-switcher.d.ts.map +1 -1
  520. package/dist/esm/components/navigation/app-level/quick-switcher.labels.d.ts.map +1 -1
  521. package/dist/esm/components/navigation/app-level/sidebar.d.ts.map +1 -1
  522. package/dist/esm/components/navigation/app-level/sidebar.js +38 -22
  523. package/dist/esm/components/navigation/app-level/sidebar.js.map +1 -1
  524. package/dist/esm/components/navigation/app-level/sidebar.labels.d.ts.map +1 -1
  525. package/dist/esm/components/navigation/app-level/sidebar.labels.js +1 -0
  526. package/dist/esm/components/navigation/app-level/sidebar.labels.js.map +1 -1
  527. package/dist/esm/components/navigation/app-level/status-bar.d.ts.map +1 -1
  528. package/dist/esm/components/navigation/app-level/status-bar.labels.d.ts.map +1 -1
  529. package/dist/esm/components/navigation/app-level/toolbar.d.ts.map +1 -1
  530. package/dist/esm/components/navigation/app-level/toolbar.labels.d.ts.map +1 -1
  531. package/dist/esm/components/navigation/app-level/utility-panel.d.ts.map +1 -1
  532. package/dist/esm/components/navigation/app-level/utility-panel.js +30 -5
  533. package/dist/esm/components/navigation/app-level/utility-panel.js.map +1 -1
  534. package/dist/esm/components/navigation/app-level/utility-panel.labels.d.ts.map +1 -1
  535. package/dist/esm/components/navigation/app-level/utility-panel.labels.js.map +1 -1
  536. package/dist/esm/components/navigation/breadcrumb.d.ts.map +1 -1
  537. package/dist/esm/components/navigation/breadcrumb.labels.d.ts.map +1 -1
  538. package/dist/esm/components/navigation/command.d.ts.map +1 -1
  539. package/dist/esm/components/navigation/command.js +2 -2
  540. package/dist/esm/components/navigation/command.js.map +1 -1
  541. package/dist/esm/components/navigation/command.labels.d.ts.map +1 -1
  542. package/dist/esm/components/navigation/menu-bar.d.ts.map +1 -1
  543. package/dist/esm/components/navigation/menu-bar.labels.d.ts.map +1 -1
  544. package/dist/esm/components/navigation/navbar.d.ts.map +1 -1
  545. package/dist/esm/components/navigation/navbar.labels.d.ts.map +1 -1
  546. package/dist/esm/components/navigation/sidebar.d.ts.map +1 -1
  547. package/dist/esm/components/navigation/sidebar.labels.d.ts.map +1 -1
  548. package/dist/esm/components/overlays/containers/alert-dialog.d.ts.map +1 -1
  549. package/dist/esm/components/overlays/containers/alert-dialog.js +11 -1
  550. package/dist/esm/components/overlays/containers/alert-dialog.js.map +1 -1
  551. package/dist/esm/components/overlays/containers/alert-dialog.labels.d.ts.map +1 -1
  552. package/dist/esm/components/overlays/containers/alert.d.ts.map +1 -1
  553. package/dist/esm/components/overlays/containers/alert.labels.d.ts.map +1 -1
  554. package/dist/esm/components/overlays/containers/dialog.d.ts.map +1 -1
  555. package/dist/esm/components/overlays/containers/dialog.js +11 -1
  556. package/dist/esm/components/overlays/containers/dialog.js.map +1 -1
  557. package/dist/esm/components/overlays/containers/dialog.labels.d.ts.map +1 -1
  558. package/dist/esm/components/overlays/containers/drawer.d.ts.map +1 -1
  559. package/dist/esm/components/overlays/containers/drawer.labels.d.ts.map +1 -1
  560. package/dist/esm/components/overlays/containers/sheet.d.ts.map +1 -1
  561. package/dist/esm/components/overlays/containers/sheet.labels.d.ts.map +1 -1
  562. package/dist/esm/components/overlays/floating/context-menu.d.ts.map +1 -1
  563. package/dist/esm/components/overlays/floating/context-menu.labels.d.ts.map +1 -1
  564. package/dist/esm/components/overlays/floating/dropdown-menu.d.ts.map +1 -1
  565. package/dist/esm/components/overlays/floating/dropdown-menu.labels.d.ts.map +1 -1
  566. package/dist/esm/components/overlays/floating/hover-card.d.ts.map +1 -1
  567. package/dist/esm/components/overlays/floating/hover-card.labels.d.ts.map +1 -1
  568. package/dist/esm/components/overlays/floating/popover.d.ts.map +1 -1
  569. package/dist/esm/components/overlays/floating/popover.labels.d.ts.map +1 -1
  570. package/dist/esm/components/overlays/floating/tooltip.d.ts.map +1 -1
  571. package/dist/esm/components/overlays/floating/tooltip.labels.d.ts.map +1 -1
  572. package/dist/esm/components/sections/accordion.d.ts.map +1 -1
  573. package/dist/esm/components/sections/accordion.labels.d.ts.map +1 -1
  574. package/dist/esm/components/sections/card.d.ts.map +1 -1
  575. package/dist/esm/components/sections/card.js +71 -6
  576. package/dist/esm/components/sections/card.js.map +1 -1
  577. package/dist/esm/components/sections/card.labels.d.ts.map +1 -1
  578. package/dist/esm/components/sections/collapsible.d.ts.map +1 -1
  579. package/dist/esm/components/sections/collapsible.labels.d.ts.map +1 -1
  580. package/dist/esm/components/sections/content-section.d.ts.map +1 -1
  581. package/dist/esm/components/sections/content-section.js +36 -6
  582. package/dist/esm/components/sections/content-section.js.map +1 -1
  583. package/dist/esm/components/sections/disclosure-nesting.d.ts.map +1 -1
  584. package/dist/esm/components/sections/option-gesture.d.ts +15 -0
  585. package/dist/esm/components/sections/option-gesture.d.ts.map +1 -0
  586. package/dist/esm/components/sections/option-gesture.js +66 -0
  587. package/dist/esm/components/sections/option-gesture.js.map +1 -0
  588. package/dist/esm/components/sections/pagination.d.ts.map +1 -1
  589. package/dist/esm/components/sections/pagination.labels.d.ts.map +1 -1
  590. package/dist/esm/components/sections/stacked-layout.d.ts.map +1 -1
  591. package/dist/esm/components/sections/stacked-layout.labels.d.ts.map +1 -1
  592. package/dist/esm/components/sections/stepper.d.ts.map +1 -1
  593. package/dist/esm/components/sections/stepper.labels.d.ts.map +1 -1
  594. package/dist/esm/components/sections/table.d.ts.map +1 -1
  595. package/dist/esm/components/sections/table.labels.d.ts.map +1 -1
  596. package/dist/esm/components/sections/tabs.d.ts.map +1 -1
  597. package/dist/esm/components/sections/tabs.js +64 -15
  598. package/dist/esm/components/sections/tabs.js.map +1 -1
  599. package/dist/esm/components/sections/tabs.labels.d.ts.map +1 -1
  600. package/dist/esm/components/typography/heading.d.ts.map +1 -1
  601. package/dist/esm/components/typography/heading.labels.d.ts.map +1 -1
  602. package/dist/esm/components/typography/label.d.ts.map +1 -1
  603. package/dist/esm/components/typography/label.labels.d.ts.map +1 -1
  604. package/dist/esm/components/typography/link.d.ts.map +1 -1
  605. package/dist/esm/components/typography/link.js +9 -3
  606. package/dist/esm/components/typography/link.js.map +1 -1
  607. package/dist/esm/components/typography/link.labels.d.ts.map +1 -1
  608. package/dist/esm/components/typography/text.d.ts +1 -1
  609. package/dist/esm/components/typography/text.d.ts.map +1 -1
  610. package/dist/esm/components/typography/text.js +3 -2
  611. package/dist/esm/components/typography/text.js.map +1 -1
  612. package/dist/esm/components/typography/text.labels.d.ts.map +1 -1
  613. package/dist/esm/components/typography/truncated-text.d.ts.map +1 -1
  614. package/dist/esm/config/billing-shell.presets.d.ts.map +1 -1
  615. package/dist/esm/config/index.d.ts.map +1 -1
  616. package/dist/esm/config/preset-design-system.d.ts.map +1 -1
  617. package/dist/esm/config/preset-design-system.js +37 -60
  618. package/dist/esm/config/preset-design-system.js.map +1 -1
  619. package/dist/esm/config/preset-error-pages.d.ts.map +1 -1
  620. package/dist/esm/config/preset-kits.d.ts.map +1 -1
  621. package/dist/esm/config/preset-navigation.d.ts.map +1 -1
  622. package/dist/esm/config/preset-navigation.js +0 -5
  623. package/dist/esm/config/preset-navigation.js.map +1 -1
  624. package/dist/esm/config/preset-resources.d.ts.map +1 -1
  625. package/dist/esm/config/preset-shell.d.ts.map +1 -1
  626. package/dist/esm/config/preset-utils.d.ts.map +1 -1
  627. package/dist/esm/config/presets.d.ts.map +1 -1
  628. package/dist/esm/config/resources/application.resource-presets.d.ts +2 -0
  629. package/dist/esm/config/resources/application.resource-presets.d.ts.map +1 -1
  630. package/dist/esm/config/resources/application.resource-presets.js +163 -7
  631. package/dist/esm/config/resources/application.resource-presets.js.map +1 -1
  632. package/dist/esm/config/resources/billing.resource-presets.d.ts.map +1 -1
  633. package/dist/esm/config/resources/billing.resource-presets.js +1 -0
  634. package/dist/esm/config/resources/billing.resource-presets.js.map +1 -1
  635. package/dist/esm/config/resources/guidance.resource-presets.d.ts.map +1 -1
  636. package/dist/esm/config/resources/guidance.resource-presets.js +21 -5
  637. package/dist/esm/config/resources/guidance.resource-presets.js.map +1 -1
  638. package/dist/esm/config/resources/identity.resource-presets.d.ts.map +1 -1
  639. package/dist/esm/config/resources/identity.resource-presets.js +25 -3
  640. package/dist/esm/config/resources/identity.resource-presets.js.map +1 -1
  641. package/dist/esm/config/resources/index.d.ts.map +1 -1
  642. package/dist/esm/config/resources/index.js.map +1 -1
  643. package/dist/esm/config/resources/organizations.resource-presets.d.ts.map +1 -1
  644. package/dist/esm/config/resources/organizations.resource-presets.js +90 -12
  645. package/dist/esm/config/resources/organizations.resource-presets.js.map +1 -1
  646. package/dist/esm/config/resources/resource.config.utils.d.ts.map +1 -1
  647. package/dist/esm/config/resources/security.resource-presets.d.ts +8 -2
  648. package/dist/esm/config/resources/security.resource-presets.d.ts.map +1 -1
  649. package/dist/esm/config/resources/security.resource-presets.js +185 -29
  650. package/dist/esm/config/resources/security.resource-presets.js.map +1 -1
  651. package/dist/esm/config/resources/webhooks.resource-presets.d.ts.map +1 -1
  652. package/dist/esm/config/resources/webhooks.resource-presets.js +27 -2
  653. package/dist/esm/config/resources/webhooks.resource-presets.js.map +1 -1
  654. package/dist/esm/index.d.ts +7 -1
  655. package/dist/esm/index.d.ts.map +1 -1
  656. package/dist/esm/index.js +7 -1
  657. package/dist/esm/index.js.map +1 -1
  658. package/dist/esm/lottie/lottie.content.definitions.d.ts.map +1 -1
  659. package/dist/esm/lottie/lottie.definitions.d.ts.map +1 -1
  660. package/dist/esm/mermaid-stub.d.ts.map +1 -1
  661. package/dist/esm/registration/register-common-enums.d.ts.map +1 -1
  662. package/dist/esm/registration/register-common-enums.js +48 -34
  663. package/dist/esm/registration/register-common-enums.js.map +1 -1
  664. package/dist/esm/registration/register-default-animations.d.ts.map +1 -1
  665. package/dist/esm/registration/register-default-icons.d.ts.map +1 -1
  666. package/dist/esm/registration/register-default-icons.js +3 -1
  667. package/dist/esm/registration/register-default-icons.js.map +1 -1
  668. package/dist/esm/registration/register-default-presets.d.ts.map +1 -1
  669. package/dist/esm/registration/register-default-presets.js +36 -4
  670. package/dist/esm/registration/register-default-presets.js.map +1 -1
  671. package/dist/esm/registration/register-provider-components.d.ts +31 -0
  672. package/dist/esm/registration/register-provider-components.d.ts.map +1 -0
  673. package/dist/esm/registration/register-provider-components.js +50 -0
  674. package/dist/esm/registration/register-provider-components.js.map +1 -0
  675. package/dist/esm/shiki-subset.d.ts +11 -3
  676. package/dist/esm/shiki-subset.d.ts.map +1 -1
  677. package/dist/esm/shiki-subset.js +10 -2
  678. package/dist/esm/shiki-subset.js.map +1 -1
  679. package/dist/esm/theme-exports.d.ts.map +1 -1
  680. package/dist/esm/themes/cozy.theme.d.ts.map +1 -1
  681. package/dist/esm/themes/cozy.theme.js +19 -5
  682. package/dist/esm/themes/cozy.theme.js.map +1 -1
  683. package/dist/esm/themes/dense.theme.d.ts.map +1 -1
  684. package/dist/esm/themes/dense.theme.js +56 -10
  685. package/dist/esm/themes/dense.theme.js.map +1 -1
  686. package/dist/esm/themes/editorial.theme.d.ts.map +1 -1
  687. package/dist/esm/themes/editorial.theme.js +19 -5
  688. package/dist/esm/themes/editorial.theme.js.map +1 -1
  689. package/dist/esm/themes/glass.theme.d.ts.map +1 -1
  690. package/dist/esm/themes/glass.theme.js +5 -1
  691. package/dist/esm/themes/glass.theme.js.map +1 -1
  692. package/dist/esm/themes/neo-brutalist.theme.d.ts.map +1 -1
  693. package/dist/esm/themes/neo-brutalist.theme.js +9 -2
  694. package/dist/esm/themes/neo-brutalist.theme.js.map +1 -1
  695. package/dist/esm/themes/terminal.theme.d.ts.map +1 -1
  696. package/dist/esm/themes/terminal.theme.js +19 -5
  697. package/dist/esm/themes/terminal.theme.js.map +1 -1
  698. package/dist/esm/themes/trading.theme.d.ts.map +1 -1
  699. package/dist/esm/themes/trading.theme.js +22 -6
  700. package/dist/esm/themes/trading.theme.js.map +1 -1
  701. package/dist/tsconfig.build.tsbuildinfo +1 -1
  702. package/package.json +29 -44
  703. package/dist/esm/.native.tsbuildinfo +0 -1
  704. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts +0 -16
  705. package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +0 -1
  706. package/dist/esm/components/form/controls/form-field-checkbox-group.js +0 -143
  707. package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"time-picker.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/date-time/time-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAkB9B,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,6BAA6B,CAAA;AAwEjF;;;;;GAKG;AACH,QAAA,MAAM,UAAU,2FAiOd,CAAA;AAIF,OAAO,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"time-picker.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/date-time/time-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAkB9B,OAAO,KAAK,EAAE,eAAe,EAAiB,MAAM,6BAA6B,CAAA;AAwEjF;;;;;GAKG;AACH,QAAA,MAAM,UAAU,2FAiOd,CAAA;AAIF,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"time-picker.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/date-time/time-picker.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"time-picker.labels.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/date-time/time-picker.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"time-range-picker.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/date-time/time-range-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAoB9B,OAAO,KAAK,EAAE,oBAAoB,EAAsC,MAAM,6BAA6B,CAAA;AA0O3G;;;;;GAKG;AACH,QAAA,MAAM,eAAe,gGA+KnB,CAAA;AAIF,OAAO,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"time-range-picker.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/date-time/time-range-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAoB9B,OAAO,KAAK,EAAE,oBAAoB,EAAsC,MAAM,6BAA6B,CAAA;AA0O3G;;;;;GAKG;AACH,QAAA,MAAM,eAAe,gGA+KnB,CAAA;AAIF,OAAO,EAAE,eAAe,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"time-range-picker.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/date-time/time-range-picker.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,6BAA6B,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"time-range-picker.labels.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/date-time/time-range-picker.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAU1I,eAAO,MAAM,6BAA6B,EAAE,mBAAmB,EAK9D,CAAC"}
@@ -1,7 +1,16 @@
1
- import { FrontendComponentType, registerComponentLabels } from '@wildo-ai/presets-components-models';
1
+ import { FrontendComponentType, LabelKind, registerComponentLabels } from '@wildo-ai/presets-components-models';
2
2
  // Companion-only label metadata for this component: keys + params + (where
3
3
  // authored) per-key purpose / kind / variable meaning. Statically scanned by
4
4
  // the dev companion; NOT imported at runtime, so it never ships in the bundle.
5
- export const LowLevelTimeRangePickerLabels = [];
5
+ // Every ref below is READ by this component and was declared NOWHERE until 2026-09-19, so each
6
+ // rendered its raw key path in the browser. Found by `pnpm check:component-labels`, which
7
+ // compares call sites, declarations and each application's generated tree — the comparison the
8
+ // sibling label files had asked for in prose since 2026-09-10 and nothing performed.
9
+ export const LowLevelTimeRangePickerLabels = [
10
+ { ref: 'from', kind: LabelKind.LABEL, purpose: "Label of the range's START time input" },
11
+ { ref: 'to', kind: LabelKind.LABEL, purpose: "Label of the range's END time input" },
12
+ { ref: 'startTime', kind: LabelKind.LABEL, purpose: 'Label of the START time-of-day control inside the picker panel' },
13
+ { ref: 'endTime', kind: LabelKind.LABEL, purpose: 'Label of the END time-of-day control inside the picker panel' },
14
+ ];
6
15
  registerComponentLabels(FrontendComponentType.LOW_LEVEL_TIME_RANGE_PICKER, LowLevelTimeRangePickerLabels);
7
16
  //# sourceMappingURL=time-range-picker.labels.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"time-range-picker.labels.js","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/date-time/time-range-picker.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA4B,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE/H,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAE/E,MAAM,CAAC,MAAM,6BAA6B,GAA0B,EAAE,CAAC;AACvE,uBAAuB,CAAC,qBAAqB,CAAC,2BAA2B,EAAE,6BAA6B,CAAC,CAAC","sourcesContent":["import { FrontendComponentType, type LabellingUnitaryDef, registerComponentLabels } from '@wildo-ai/presets-components-models';\n\n// Companion-only label metadata for this component: keys + params + (where\n// authored) per-key purpose / kind / variable meaning. Statically scanned by\n// the dev companion; NOT imported at runtime, so it never ships in the bundle.\n\nexport const LowLevelTimeRangePickerLabels: LabellingUnitaryDef[] = [];\nregisterComponentLabels(FrontendComponentType.LOW_LEVEL_TIME_RANGE_PICKER, LowLevelTimeRangePickerLabels);\n"]}
1
+ {"version":3,"file":"time-range-picker.labels.js","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/date-time/time-range-picker.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAA4B,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAE1I,2EAA2E;AAC3E,6EAA6E;AAC7E,+EAA+E;AAE/E,+FAA+F;AAC/F,0FAA0F;AAC1F,+FAA+F;AAC/F,qFAAqF;AACrF,MAAM,CAAC,MAAM,6BAA6B,GAA0B;IAClE,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,uCAAuC,EAAE;IACxF,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,qCAAqC,EAAE;IACpF,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,gEAAgE,EAAE;IACtH,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,8DAA8D,EAAE;CACnH,CAAC;AACF,uBAAuB,CAAC,qBAAqB,CAAC,2BAA2B,EAAE,6BAA6B,CAAC,CAAC","sourcesContent":["import { FrontendComponentType, LabelKind, type LabellingUnitaryDef, registerComponentLabels } from '@wildo-ai/presets-components-models';\n\n// Companion-only label metadata for this component: keys + params + (where\n// authored) per-key purpose / kind / variable meaning. Statically scanned by\n// the dev companion; NOT imported at runtime, so it never ships in the bundle.\n\n// Every ref below is READ by this component and was declared NOWHERE until 2026-09-19, so each\n// rendered its raw key path in the browser. Found by `pnpm check:component-labels`, which\n// compares call sites, declarations and each application's generated tree — the comparison the\n// sibling label files had asked for in prose since 2026-09-10 and nothing performed.\nexport const LowLevelTimeRangePickerLabels: LabellingUnitaryDef[] = [\n { ref: 'from', kind: LabelKind.LABEL, purpose: \"Label of the range's START time input\" },\n { ref: 'to', kind: LabelKind.LABEL, purpose: \"Label of the range's END time input\" },\n { ref: 'startTime', kind: LabelKind.LABEL, purpose: 'Label of the START time-of-day control inside the picker panel' },\n { ref: 'endTime', kind: LabelKind.LABEL, purpose: 'Label of the END time-of-day control inside the picker panel' },\n];\nregisterComponentLabels(FrontendComponentType.LOW_LEVEL_TIME_RANGE_PICKER, LowLevelTimeRangePickerLabels);\n"]}
@@ -2,7 +2,7 @@ import * as React from "react";
2
2
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
3
3
  import { ControlSize } from "@wildo-ai/presets-components-models";
4
4
  import type { RadioGroupCompound } from '@wildo-ai/saas-frontend-lib';
5
- declare function RadioGroupItem({ className, controlSize, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Item> & {
5
+ declare function RadioGroupItem(props: React.ComponentProps<typeof RadioGroupPrimitive.Item> & {
6
6
  controlSize?: ControlSize;
7
7
  }): React.JSX.Element;
8
8
  export declare const RadioGroup: RadioGroupCompound;
@@ -1 +1 @@
1
- {"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/enum/radio.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAA;AAIlE,OAAO,EAAE,WAAW,EAAyD,MAAM,qCAAqC,CAAA;AAExH,OAAO,KAAK,EAAkC,kBAAkB,EAAuB,MAAM,6BAA6B,CAAA;AA2B1H,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,WAAW,EACX,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,GAAG;IAAE,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAoC3G;AAgHD,eAAO,MAAM,UAAU,oBAAqF,CAAA;AAC5G,OAAO,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"radio.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/radio.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAA;AAIlE,OAAO,EAAE,WAAW,EAAyD,MAAM,qCAAqC,CAAA;AAExH,OAAO,KAAK,EAAkC,kBAAkB,EAAuB,MAAM,6BAA6B,CAAA;AA6E1H,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,mBAAmB,CAAC,IAAI,CAAC,GAAG;IAAE,WAAW,CAAC,EAAE,WAAW,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEvI;AAmGD,eAAO,MAAM,UAAU,oBAAqF,CAAA;AAC5G,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -15,7 +15,15 @@ function RadioGroupRoot({ className, controlSize = ControlSize.MD, ...props }) {
15
15
  }
16
16
  ;
17
17
  RadioGroupRoot.displayName = "RadioGroupRoot";
18
- function RadioGroupItem({ className, controlSize, ...props }) {
18
+ /**
19
+ * THE DOT ITSELF — one implementation, used by the exported `RadioGroupItem` (for a caller
20
+ * composing its own rows) and by `RadioGroup`'s own rows below.
21
+ *
22
+ * It was written out twice, byte for byte, in this one file: same structure classes, same recipe
23
+ * keys, same indicator. Two copies of one control's appearance is two things that drift, and the
24
+ * second copy is the one nobody remembers to change.
25
+ */
26
+ function RadioDot({ className, controlSize, ...props }) {
19
27
  const { renderIcon } = useIconRegistry();
20
28
  const { getRecipe } = useUI();
21
29
  const recipe = getRecipe(UIBehavior.FORM_CONTROL, FormControlVariant.CHECKBOX);
@@ -30,12 +38,12 @@ function RadioGroupItem({ className, controlSize, ...props }) {
30
38
  className: "fill-primary absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2"
31
39
  }) }) }));
32
40
  }
41
+ function RadioGroupItem(props) {
42
+ return _jsx(RadioDot, { ...props });
43
+ }
33
44
  ;
34
45
  RadioGroupItem.displayName = "RadioGroupItem";
35
46
  const RadioGroupImpl = React.forwardRef(function RadioGroupInner({ schema, name, options, disabled, className, value: controlledValue, onValueChange, onBlur, defaultValue, orientation = DisplayDirection.VERTICAL, renderOptionLabel, controlSize = ControlSize.MD, }, ref) {
36
- const { renderIcon } = useIconRegistry();
37
- const { getRecipe } = useUI();
38
- const checkboxRecipe = getRecipe(UIBehavior.FORM_CONTROL, FormControlVariant.CHECKBOX);
39
47
  // Internal state for uncontrolled mode
40
48
  const [internalValue, setInternalValue] = React.useState(defaultValue);
41
49
  // Determine if controlled
@@ -57,14 +65,7 @@ const RadioGroupImpl = React.forwardRef(function RadioGroupInner({ schema, name,
57
65
  }, [onBlur]);
58
66
  // IDs for accessibility
59
67
  const groupId = `field-${name}`;
60
- return (_jsx(RadioGroupPrimitive.Root, { value: currentValue, onValueChange: handleValueChange, onBlur: handleBlur, disabled: disabled, "data-slot": "radio-group", "data-size": controlSize, className: cn("grid gap-group", orientation === DisplayDirection.HORIZONTAL && "flex flex-row gap-field", className), children: options.map((option) => (_jsxs("div", { className: "flex items-center gap-element", children: [_jsx(RadioGroupPrimitive.Item, { id: `${groupId}-${option.value}`, value: option.value, disabled: option.disabled, "data-slot": "radio-group-item", "data-size": controlSize, className: cn(
61
- // Structure — radio is circular
62
- "text-primary aspect-square shrink-0 rounded-full outline-none", RADIO_SIZE_STRUCTURE[controlSize],
63
- // Style from FORM_CONTROL.CHECKBOX recipe
64
- checkboxRecipe.base, checkboxRecipe.states.focus, checkboxRecipe.states.disabled, checkboxRecipe.states.invalid, checkboxRecipe.motion.transition), children: _jsx(RadioGroupPrimitive.Indicator, { "data-slot": "radio-group-indicator", className: "relative flex items-center justify-center", children: renderIcon(StandardIconReference.CIRCLE, {
65
- size: IconSize.XS,
66
- className: "fill-primary absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2"
67
- }) }) }), _jsx(Label, { htmlFor: `${groupId}-${option.value}`, className: cn("cursor-pointer font-normal", option.disabled && "cursor-not-allowed opacity-[var(--opacity-disabled)]"), children: renderOptionLabel ? renderOptionLabel(option) : option.label })] }, option.value))) }));
68
+ return (_jsx(RadioGroupPrimitive.Root, { value: currentValue, onValueChange: handleValueChange, onBlur: handleBlur, disabled: disabled, "data-slot": "radio-group", "data-size": controlSize, className: cn("grid gap-group", orientation === DisplayDirection.HORIZONTAL && "flex flex-row gap-field", className), children: options.map((option) => (_jsxs(Label, { htmlFor: `${groupId}-${option.value}`, className: cn("w-fit cursor-pointer font-normal", option.disabled && "cursor-not-allowed opacity-[var(--opacity-disabled)]"), children: [_jsx(RadioDot, { id: `${groupId}-${option.value}`, value: option.value, disabled: option.disabled, controlSize: controlSize }), renderOptionLabel ? renderOptionLabel(option) : option.label] }, option.value))) }));
68
69
  });
69
70
  RadioGroupImpl.displayName = "RadioGroup";
70
71
  export const RadioGroup = createCompoundPreset(RadioGroupImpl, { Root: RadioGroupRoot });
@@ -1 +1 @@
1
- {"version":3,"file":"radio.js","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/radio.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { z } from \"zod\"\n\nimport { cn, useIconRegistry, StandardIconReference, IconSize, useUI, Label, createCompoundPreset } from \"@wildo-ai/saas-frontend-lib\"\nimport { ControlSize, FormControlVariant, FrontendComponentType, UIBehavior } from \"@wildo-ai/presets-components-models\"\nimport { DisplayDirection } from \"@wildo-ai/zod-decorators\"\nimport type { RadioGroupProps, RadioGroupRef, RadioGroupCompound, RadioGroupRootProps } from '@wildo-ai/saas-frontend-lib'\n\nconst RADIO_SIZE_STRUCTURE: Record<ControlSize, string> = {\n [ControlSize.SM]: \"size-3.5\",\n [ControlSize.MD]: \"size-4\",\n}\n\nconst RadioSizeContext = React.createContext<ControlSize>(ControlSize.MD)\n\nfunction RadioGroupRoot({\n className,\n controlSize = ControlSize.MD,\n ...props\n}: RadioGroupRootProps): React.JSX.Element {\n return (\n <RadioSizeContext.Provider value={controlSize}>\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n data-size={controlSize}\n className={cn(\"grid gap-group\", className)}\n {...props}\n />\n </RadioSizeContext.Provider>\n )\n}\n;(RadioGroupRoot as typeof RadioGroupRoot & { displayName: string }).displayName = \"RadioGroupRoot\"\n\nfunction RadioGroupItem({\n className,\n controlSize,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> & { controlSize?: ControlSize }): React.JSX.Element {\n const { renderIcon } = useIconRegistry()\n const { getRecipe } = useUI()\n const recipe = getRecipe(UIBehavior.FORM_CONTROL, FormControlVariant.CHECKBOX)\n const contextControlSize = React.useContext(RadioSizeContext)\n const resolvedControlSize = controlSize ?? contextControlSize\n\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n data-size={resolvedControlSize}\n className={cn(\n // Structure — radio is circular\n \"text-primary aspect-square shrink-0 rounded-full outline-none\",\n RADIO_SIZE_STRUCTURE[resolvedControlSize],\n // Style from FORM_CONTROL.CHECKBOX recipe (shared with checkbox)\n recipe.base,\n recipe.states.focus,\n recipe.states.disabled,\n recipe.states.invalid,\n recipe.motion.transition,\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n {renderIcon(StandardIconReference.CIRCLE, {\n size: IconSize.XS,\n className: \"fill-primary absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\"\n })}\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n;(RadioGroupItem as typeof RadioGroupItem & { displayName: string }).displayName = \"RadioGroupItem\"\n\nconst RadioGroupImpl = React.forwardRef(function RadioGroupInner<T extends string = string>(\n {\n schema,\n name,\n options,\n disabled,\n className,\n value: controlledValue,\n onValueChange,\n onBlur,\n defaultValue,\n orientation = DisplayDirection.VERTICAL,\n renderOptionLabel,\n controlSize = ControlSize.MD,\n }: RadioGroupProps<T>,\n ref: React.ForwardedRef<RadioGroupRef>\n): React.JSX.Element {\n const { renderIcon } = useIconRegistry()\n const { getRecipe } = useUI()\n const checkboxRecipe = getRecipe(UIBehavior.FORM_CONTROL, FormControlVariant.CHECKBOX)\n\n // Internal state for uncontrolled mode\n const [internalValue, setInternalValue] = React.useState<T | undefined>(defaultValue)\n\n // Determine if controlled\n const isControlled = controlledValue !== undefined\n const currentValue = isControlled ? controlledValue : internalValue\n\n // Handle value change - validation is handled by parent FormField via RHF\n const handleValueChange = React.useCallback((newValue: string) => {\n const typedValue = newValue as T\n\n if (isControlled) {\n onValueChange?.(typedValue)\n } else {\n setInternalValue(typedValue)\n }\n }, [isControlled, onValueChange])\n\n // Handle blur - validation is handled by parent FormField via RHF\n const handleBlur = React.useCallback(() => {\n onBlur?.()\n }, [onBlur])\n\n // IDs for accessibility\n const groupId = `field-${name}`\n\n return (\n <RadioGroupPrimitive.Root\n value={currentValue}\n onValueChange={handleValueChange}\n onBlur={handleBlur}\n disabled={disabled}\n data-slot=\"radio-group\"\n data-size={controlSize}\n className={cn(\n \"grid gap-group\",\n orientation === DisplayDirection.HORIZONTAL && \"flex flex-row gap-field\",\n className\n )}\n >\n {options.map((option) => (\n <div key={option.value} className=\"flex items-center gap-element\">\n <RadioGroupPrimitive.Item\n id={`${groupId}-${option.value}`}\n value={option.value}\n disabled={option.disabled}\n data-slot=\"radio-group-item\"\n data-size={controlSize}\n className={cn(\n // Structure — radio is circular\n \"text-primary aspect-square shrink-0 rounded-full outline-none\",\n RADIO_SIZE_STRUCTURE[controlSize],\n // Style from FORM_CONTROL.CHECKBOX recipe\n checkboxRecipe.base,\n checkboxRecipe.states.focus,\n checkboxRecipe.states.disabled,\n checkboxRecipe.states.invalid,\n checkboxRecipe.motion.transition,\n )}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n {renderIcon(StandardIconReference.CIRCLE, {\n size: IconSize.XS,\n className: \"fill-primary absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\"\n })}\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n\n <Label\n htmlFor={`${groupId}-${option.value}`}\n className={cn(\n \"cursor-pointer font-normal\",\n option.disabled && \"cursor-not-allowed opacity-[var(--opacity-disabled)]\"\n )}\n >\n {renderOptionLabel ? renderOptionLabel(option) : option.label}\n </Label>\n </div>\n ))}\n </RadioGroupPrimitive.Root>\n )\n}) as <T extends string = string>(props: RadioGroupProps<T> & React.RefAttributes<RadioGroupRef>) => React.JSX.Element\n\n;(RadioGroupImpl as React.ComponentType<unknown> & { displayName?: string }).displayName = \"RadioGroup\"\n\nexport const RadioGroup = createCompoundPreset<RadioGroupCompound>(RadioGroupImpl, { Root: RadioGroupRoot })\nexport { RadioGroupItem }\n"]}
1
+ {"version":3,"file":"radio.js","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/radio.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { z } from \"zod\"\n\nimport { cn, useIconRegistry, StandardIconReference, IconSize, useUI, Label, createCompoundPreset } from \"@wildo-ai/saas-frontend-lib\"\nimport { ControlSize, FormControlVariant, FrontendComponentType, UIBehavior } from \"@wildo-ai/presets-components-models\"\nimport { DisplayDirection } from \"@wildo-ai/zod-decorators\"\nimport type { RadioGroupProps, RadioGroupRef, RadioGroupCompound, RadioGroupRootProps } from '@wildo-ai/saas-frontend-lib'\n\nconst RADIO_SIZE_STRUCTURE: Record<ControlSize, string> = {\n [ControlSize.SM]: \"size-3.5\",\n [ControlSize.MD]: \"size-4\",\n}\n\nconst RadioSizeContext = React.createContext<ControlSize>(ControlSize.MD)\n\nfunction RadioGroupRoot({\n className,\n controlSize = ControlSize.MD,\n ...props\n}: RadioGroupRootProps): React.JSX.Element {\n return (\n <RadioSizeContext.Provider value={controlSize}>\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n data-size={controlSize}\n className={cn(\"grid gap-group\", className)}\n {...props}\n />\n </RadioSizeContext.Provider>\n )\n}\n;(RadioGroupRoot as typeof RadioGroupRoot & { displayName: string }).displayName = \"RadioGroupRoot\"\n\n/**\n * THE DOT ITSELF — one implementation, used by the exported `RadioGroupItem` (for a caller\n * composing its own rows) and by `RadioGroup`'s own rows below.\n *\n * It was written out twice, byte for byte, in this one file: same structure classes, same recipe\n * keys, same indicator. Two copies of one control's appearance is two things that drift, and the\n * second copy is the one nobody remembers to change.\n */\nfunction RadioDot({\n className,\n controlSize,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> & { controlSize?: ControlSize }): React.JSX.Element {\n const { renderIcon } = useIconRegistry()\n const { getRecipe } = useUI()\n const recipe = getRecipe(UIBehavior.FORM_CONTROL, FormControlVariant.CHECKBOX)\n const contextControlSize = React.useContext(RadioSizeContext)\n const resolvedControlSize = controlSize ?? contextControlSize\n\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n data-size={resolvedControlSize}\n className={cn(\n // Structure — radio is circular\n \"text-primary aspect-square shrink-0 rounded-full outline-none\",\n RADIO_SIZE_STRUCTURE[resolvedControlSize],\n // Style from FORM_CONTROL.CHECKBOX recipe (shared with checkbox)\n recipe.base,\n recipe.states.focus,\n recipe.states.disabled,\n recipe.states.invalid,\n recipe.motion.transition,\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n {renderIcon(StandardIconReference.CIRCLE, {\n size: IconSize.XS,\n className: \"fill-primary absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\"\n })}\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nfunction RadioGroupItem(props: React.ComponentProps<typeof RadioGroupPrimitive.Item> & { controlSize?: ControlSize }): React.JSX.Element {\n return <RadioDot {...props} />\n}\n;(RadioGroupItem as typeof RadioGroupItem & { displayName: string }).displayName = \"RadioGroupItem\"\n\nconst RadioGroupImpl = React.forwardRef(function RadioGroupInner<T extends string = string>(\n {\n schema,\n name,\n options,\n disabled,\n className,\n value: controlledValue,\n onValueChange,\n onBlur,\n defaultValue,\n orientation = DisplayDirection.VERTICAL,\n renderOptionLabel,\n controlSize = ControlSize.MD,\n }: RadioGroupProps<T>,\n ref: React.ForwardedRef<RadioGroupRef>\n): React.JSX.Element {\n // Internal state for uncontrolled mode\n const [internalValue, setInternalValue] = React.useState<T | undefined>(defaultValue)\n\n // Determine if controlled\n const isControlled = controlledValue !== undefined\n const currentValue = isControlled ? controlledValue : internalValue\n\n // Handle value change - validation is handled by parent FormField via RHF\n const handleValueChange = React.useCallback((newValue: string) => {\n const typedValue = newValue as T\n\n if (isControlled) {\n onValueChange?.(typedValue)\n } else {\n setInternalValue(typedValue)\n }\n }, [isControlled, onValueChange])\n\n // Handle blur - validation is handled by parent FormField via RHF\n const handleBlur = React.useCallback(() => {\n onBlur?.()\n }, [onBlur])\n\n // IDs for accessibility\n const groupId = `field-${name}`\n\n return (\n <RadioGroupPrimitive.Root\n value={currentValue}\n onValueChange={handleValueChange}\n onBlur={handleBlur}\n disabled={disabled}\n data-slot=\"radio-group\"\n data-size={controlSize}\n className={cn(\n \"grid gap-group\",\n orientation === DisplayDirection.HORIZONTAL && \"flex flex-row gap-field\",\n className\n )}\n >\n {/*\n * THE WHOLE ROW IS THE LABEL — dot, gap and words in one `<label htmlFor>`.\n *\n * It used to be a `<div>` holding the dot beside a `<Label>` that covered only the words, so\n * the `gap-element` BETWEEN them was dead space: a click landed on the div, which has no\n * handler, and nothing happened. A reader aiming at \"the option\" hits that gap constantly —\n * it is the visual centre of the row — and a control that ignores a click aimed squarely at\n * it reads as broken rather than as precise.\n *\n * Wrapping is enough on its own: `<button>` is a labelable element, so a click anywhere in\n * the label activates it, and the browser does not double-fire when the click lands on the\n * control itself. `w-fit` keeps the target to the option and no wider — a label stretched\n * across the grid column would select on a click in empty space well away from any words,\n * which is the opposite surprise.\n */}\n {options.map((option) => (\n <Label\n key={option.value}\n htmlFor={`${groupId}-${option.value}`}\n className={cn(\n \"w-fit cursor-pointer font-normal\",\n option.disabled && \"cursor-not-allowed opacity-[var(--opacity-disabled)]\"\n )}\n >\n <RadioDot\n id={`${groupId}-${option.value}`}\n value={option.value}\n disabled={option.disabled}\n controlSize={controlSize}\n />\n {renderOptionLabel ? renderOptionLabel(option) : option.label}\n </Label>\n ))}\n </RadioGroupPrimitive.Root>\n )\n}) as <T extends string = string>(props: RadioGroupProps<T> & React.RefAttributes<RadioGroupRef>) => React.JSX.Element\n\n;(RadioGroupImpl as React.ComponentType<unknown> & { displayName?: string }).displayName = \"RadioGroup\"\n\nexport const RadioGroup = createCompoundPreset<RadioGroupCompound>(RadioGroupImpl, { Root: RadioGroupRoot })\nexport { RadioGroupItem }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"radio.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/enum/radio.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,EAAO,CAAC;AAG7D,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"radio.labels.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/radio.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,EAAO,CAAC;AAG7D,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"select-multiple.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/enum/select-multiple.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAGzF,QAAA,MAAM,cAAc,EA4Jd,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;CAAE,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAE7H;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"select-multiple.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/select-multiple.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAGzF,QAAA,MAAM,cAAc,EA0Ld,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;CAAE,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO,CAE7H;AAED,OAAO,EAAE,cAAc,EAAE,CAAA"}
@@ -2,8 +2,8 @@
2
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 SelectPrimitive from "@radix-ui/react-select";
5
- import { cn, useIconRegistry, StandardIconReference, IconSize, useUI, useI18n, Badge, Button, ButtonVariants_Variant } from "@wildo-ai/saas-frontend-lib";
6
- import { ButtonSize, ControlSize, FormControlVariant, FrontendComponentType, InteractiveVariant, UIBehavior } from "@wildo-ai/presets-components-models";
5
+ import { cn, useIconRegistry, StandardIconReference, IconSize, useUI, useI18n, Badge } from "@wildo-ai/saas-frontend-lib";
6
+ import { ControlSize, FormControlVariant, FrontendComponentType, InteractiveVariant, UIBehavior } from "@wildo-ai/presets-components-models";
7
7
  import { SelectRoot, SelectContent } from './select.js';
8
8
  const SelectMultiple = React.forwardRef(function SelectMultiple({ schema, name, options, placeholder, disabled, className, value: controlledValue, onChange, onBlur, defaultValue, validationMode: validationModeProp, size = ControlSize.MD, maxDisplayed = 3, renderOptionLabel, }, ref) {
9
9
  const { renderIcon } = useIconRegistry();
@@ -49,7 +49,9 @@ const SelectMultiple = React.forwardRef(function SelectMultiple({ schema, name,
49
49
  const selectedOptions = options.filter(opt => currentValue.includes(opt.value));
50
50
  const displayedOptions = selectedOptions.slice(0, maxDisplayed);
51
51
  const remainingCount = selectedOptions.length - maxDisplayed;
52
- return (_jsx("div", { className: className, children: _jsxs(SelectRoot, { value: undefined, onValueChange: handleValueChange, onOpenChange: handleOpenChange, disabled: disabled, open: open, children: [_jsxs(SelectPrimitive.Trigger, { ref: ref, id: selectId, "data-slot": "select-trigger", "data-size": size, className: cn("flex w-full min-h-9 items-center justify-between gap-element rounded-md px-card-sm py-card-sm text-sm outline-none", formRecipe.base, formRecipe.states.focus, formRecipe.states.disabled, formRecipe.states.invalid, "data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground", formRecipe.motion.transition, "data-[size=sm]:min-h-8", currentValue.length === 0 && "h-9 data-[size=sm]:h-8"), children: [_jsx("div", { className: "flex flex-1 flex-wrap gap-1.5", children: currentValue.length === 0 ? (_jsx("span", { className: "text-muted-foreground", children: placeholder ?? tComponent(FrontendComponentType.LOW_LEVEL_SELECT_MULTIPLE, 'placeholder') })) : (_jsxs(_Fragment, { children: [displayedOptions.map((option) => (_jsxs(Badge, { variant: "secondary", className: "gap-item-xs pr-1", children: [renderOptionLabel ? renderOptionLabel(option) : option.label, _jsx(Button, { type: "button", variant: ButtonVariants_Variant.GHOST, size: ButtonSize.ICON_SM, className: "h-4 w-4 rounded-full hover:bg-destructive hover:text-destructive-foreground", onClick: (e) => handleRemove(option.value, e), disabled: disabled, children: renderIcon(StandardIconReference.CLOSE, { size: IconSize.XS }) })] }, option.value))), remainingCount > 0 && (_jsx(Badge, { variant: "secondary", className: "text-xs", children: tComponent(FrontendComponentType.LOW_LEVEL_SELECT_MULTIPLE, 'moreItems', { count: remainingCount }) }))] })) }), _jsx(SelectPrimitive.Icon, { asChild: true, children: renderIcon(StandardIconReference.CHEVRON_DOWN, { size: IconSize.SM, className: "opacity-[var(--opacity-muted)] shrink-0" }) })] }), _jsx(SelectContent, { children: options.map((option) => {
52
+ return (_jsx("div", { className: className, children: _jsxs(SelectRoot, { value: undefined, onValueChange: handleValueChange, onOpenChange: handleOpenChange, disabled: disabled, open: open, children: [_jsxs(SelectPrimitive.Trigger, { ref: ref, id: selectId, "data-slot": "select-trigger", "data-size": size, className: cn("flex w-full min-h-9 items-center justify-between gap-element rounded-md px-card-sm py-card-sm text-sm outline-none", formRecipe.base, formRecipe.states.focus, formRecipe.states.disabled, formRecipe.states.invalid, "data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground", formRecipe.motion.transition, "data-[size=sm]:min-h-8", currentValue.length === 0 && "h-9 data-[size=sm]:h-8"), children: [_jsx("div", { className: "flex flex-1 flex-wrap gap-1.5", children: currentValue.length === 0 ? (_jsx("span", { className: "text-muted-foreground", children: placeholder ?? tComponent(FrontendComponentType.LOW_LEVEL_SELECT_MULTIPLE, 'placeholder') })) : (_jsxs(_Fragment, { children: [displayedOptions.map((option) => (_jsxs(Badge, { variant: "secondary", className: "pe-1", children: [renderOptionLabel ? renderOptionLabel(option) : option.label, _jsx("span", { "aria-hidden": "true", "data-slot": "select-multiple-remove", className: cn("inline-flex h-4 w-4 items-center justify-center rounded-full", disabled
53
+ ? "pointer-events-none opacity-50"
54
+ : "cursor-pointer hover:bg-destructive hover:text-destructive-foreground"), onPointerDown: (e) => e.stopPropagation(), onClick: disabled ? undefined : (e) => handleRemove(option.value, e), children: renderIcon(StandardIconReference.CLOSE, { size: IconSize.XS }) })] }, option.value))), remainingCount > 0 && (_jsx(Badge, { variant: "secondary", className: "text-xs", children: tComponent(FrontendComponentType.LOW_LEVEL_SELECT_MULTIPLE, 'moreItems', { count: remainingCount }) }))] })) }), _jsx(SelectPrimitive.Icon, { asChild: true, children: renderIcon(StandardIconReference.CHEVRON_DOWN, { size: IconSize.SM, className: "opacity-[var(--opacity-muted)] shrink-0" }) })] }), _jsx(SelectContent, { children: options.map((option) => {
53
55
  const isSelected = currentValue.includes(option.value);
54
56
  return (_jsxs(SelectPrimitive.Item, { value: option.value, disabled: option.disabled, "data-slot": "select-item", className: cn("relative flex w-full cursor-default items-center gap-element rounded-sm py-1.5 pe-8 ps-2 text-sm outline-hidden select-none", ghostRecipe.states.highlighted, ghostRecipe.states.disabled, "[&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", isSelected && "bg-accent"), children: [_jsx("span", { className: "absolute end-2 flex size-3.5 items-center justify-center", children: isSelected && renderIcon(StandardIconReference.CHECK, { size: IconSize.SM }) }), _jsx(SelectPrimitive.ItemText, { children: renderOptionLabel ? renderOptionLabel(option) : option.label })] }, option.value));
55
57
  }) })] }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"select-multiple.js","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/select-multiple.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\n\nimport { cn, useIconRegistry, StandardIconReference, IconSize, useUI, useI18n, Badge, Button, ButtonVariants_Variant } from \"@wildo-ai/saas-frontend-lib\"\nimport { ButtonSize, ControlSize, FormControlVariant, FrontendComponentType, InteractiveVariant, UIBehavior } from \"@wildo-ai/presets-components-models\"\nimport type { SelectMultipleProps, SelectMultipleRef } from '@wildo-ai/saas-frontend-lib'\nimport { SelectRoot, SelectContent } from './select'\n\nconst SelectMultiple = React.forwardRef(function SelectMultiple<T extends string = string>({\n schema,\n name,\n options,\n placeholder,\n disabled,\n className,\n value: controlledValue,\n onChange,\n onBlur,\n defaultValue,\n validationMode: validationModeProp,\n size = ControlSize.MD,\n maxDisplayed = 3,\n renderOptionLabel,\n}: SelectMultipleProps<T>, ref: React.Ref<SelectMultipleRef>) {\n const { renderIcon } = useIconRegistry()\n const { getRecipe } = useUI()\n const { tComponent, isReady } = useI18n({\n component: FrontendComponentType.LOW_LEVEL_SELECT_MULTIPLE,\n })\n const formRecipe = getRecipe(UIBehavior.FORM_CONTROL, FormControlVariant.DEFAULT)\n const ghostRecipe = getRecipe(UIBehavior.INTERACTIVE, InteractiveVariant.GHOST)\n\n const [internalValue, setInternalValue] = React.useState<T[]>(defaultValue ?? [])\n const [open, setOpen] = React.useState(false)\n\n const isControlled = controlledValue !== undefined\n const currentValue = isControlled ? controlledValue : internalValue\n\n const handleValueChange = React.useCallback((newValue: string) => {\n const typedValue = newValue as T\n const newValues = currentValue.includes(typedValue)\n ? currentValue.filter(v => v !== typedValue)\n : [...currentValue, typedValue]\n\n if (isControlled) {\n onChange?.(newValues)\n } else {\n setInternalValue(newValues)\n }\n }, [isControlled, onChange, currentValue])\n\n const handleOpenChange = React.useCallback((newOpen: boolean) => {\n setOpen(newOpen)\n if (!newOpen) {\n onBlur?.()\n }\n }, [onBlur])\n\n const handleRemove = React.useCallback((valueToRemove: T, e: React.MouseEvent) => {\n e.stopPropagation()\n const newValues = currentValue.filter(v => v !== valueToRemove)\n if (isControlled) {\n onChange?.(newValues)\n } else {\n setInternalValue(newValues)\n }\n }, [isControlled, onChange, currentValue])\n\n const selectId = `field-${name}`\n const selectedOptions = options.filter(opt => currentValue.includes(opt.value))\n const displayedOptions = selectedOptions.slice(0, maxDisplayed)\n const remainingCount = selectedOptions.length - maxDisplayed\n\n return (\n <div className={className}>\n <SelectRoot\n value={undefined}\n onValueChange={handleValueChange}\n onOpenChange={handleOpenChange}\n disabled={disabled}\n open={open}\n >\n <SelectPrimitive.Trigger\n ref={ref}\n id={selectId}\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"flex w-full min-h-9 items-center justify-between gap-element rounded-md px-card-sm py-card-sm text-sm outline-none\",\n formRecipe.base,\n formRecipe.states.focus,\n formRecipe.states.disabled,\n formRecipe.states.invalid,\n \"data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground\",\n formRecipe.motion.transition,\n \"data-[size=sm]:min-h-8\",\n currentValue.length === 0 && \"h-9 data-[size=sm]:h-8\"\n )}\n >\n <div className=\"flex flex-1 flex-wrap gap-1.5\">\n {currentValue.length === 0 ? (\n <span className=\"text-muted-foreground\">\n {placeholder ?? tComponent(FrontendComponentType.LOW_LEVEL_SELECT_MULTIPLE, 'placeholder')}\n </span>\n ) : (\n <>\n {displayedOptions.map((option) => (\n <Badge key={option.value} variant=\"secondary\" className=\"gap-item-xs pr-1\">\n {renderOptionLabel ? renderOptionLabel(option) : option.label}\n <Button\n type=\"button\"\n variant={ButtonVariants_Variant.GHOST}\n size={ButtonSize.ICON_SM}\n className=\"h-4 w-4 rounded-full hover:bg-destructive hover:text-destructive-foreground\"\n onClick={(e) => handleRemove(option.value, e)}\n disabled={disabled}\n >\n {renderIcon(StandardIconReference.CLOSE, { size: IconSize.XS })}\n </Button>\n </Badge>\n ))}\n {remainingCount > 0 && (\n <Badge variant=\"secondary\" className=\"text-xs\">\n {tComponent(FrontendComponentType.LOW_LEVEL_SELECT_MULTIPLE, 'moreItems', { count: remainingCount })}\n </Badge>\n )}\n </>\n )}\n </div>\n <SelectPrimitive.Icon asChild>\n {renderIcon(StandardIconReference.CHEVRON_DOWN, { size: IconSize.SM, className: \"opacity-[var(--opacity-muted)] shrink-0\" })}\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n\n <SelectContent>\n {options.map((option) => {\n const isSelected = currentValue.includes(option.value)\n return (\n <SelectPrimitive.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n data-slot=\"select-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-element rounded-sm py-1.5 pe-8 ps-2 text-sm outline-hidden select-none\",\n ghostRecipe.states.highlighted,\n ghostRecipe.states.disabled,\n \"[&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n isSelected && \"bg-accent\"\n )}\n >\n <span className=\"absolute end-2 flex size-3.5 items-center justify-center\">\n {isSelected && renderIcon(StandardIconReference.CHECK, { size: IconSize.SM })}\n </span>\n <SelectPrimitive.ItemText>\n {renderOptionLabel ? renderOptionLabel(option) : option.label}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n })}\n </SelectContent>\n </SelectRoot>\n </div>\n )\n}) as <T extends string = string>(props: SelectMultipleProps<T> & { ref?: React.Ref<SelectMultipleRef> }) => React.JSX.Element\n\n;(SelectMultiple as typeof SelectMultiple & { displayName: string }).displayName = \"SelectMultiple\"\n\nexport { SelectMultiple }\n"]}
1
+ {"version":3,"file":"select-multiple.js","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/select-multiple.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\n\nimport { cn, useIconRegistry, StandardIconReference, IconSize, useUI, useI18n, Badge, Button, ButtonVariants_Variant } from \"@wildo-ai/saas-frontend-lib\"\nimport { ButtonSize, ControlSize, FormControlVariant, FrontendComponentType, InteractiveVariant, UIBehavior } from \"@wildo-ai/presets-components-models\"\nimport type { SelectMultipleProps, SelectMultipleRef } from '@wildo-ai/saas-frontend-lib'\nimport { SelectRoot, SelectContent } from './select'\n\nconst SelectMultiple = React.forwardRef(function SelectMultiple<T extends string = string>({\n schema,\n name,\n options,\n placeholder,\n disabled,\n className,\n value: controlledValue,\n onChange,\n onBlur,\n defaultValue,\n validationMode: validationModeProp,\n size = ControlSize.MD,\n maxDisplayed = 3,\n renderOptionLabel,\n}: SelectMultipleProps<T>, ref: React.Ref<SelectMultipleRef>) {\n const { renderIcon } = useIconRegistry()\n const { getRecipe } = useUI()\n const { tComponent, isReady } = useI18n({\n component: FrontendComponentType.LOW_LEVEL_SELECT_MULTIPLE,\n })\n const formRecipe = getRecipe(UIBehavior.FORM_CONTROL, FormControlVariant.DEFAULT)\n const ghostRecipe = getRecipe(UIBehavior.INTERACTIVE, InteractiveVariant.GHOST)\n\n const [internalValue, setInternalValue] = React.useState<T[]>(defaultValue ?? [])\n const [open, setOpen] = React.useState(false)\n\n const isControlled = controlledValue !== undefined\n const currentValue = isControlled ? controlledValue : internalValue\n\n const handleValueChange = React.useCallback((newValue: string) => {\n const typedValue = newValue as T\n const newValues = currentValue.includes(typedValue)\n ? currentValue.filter(v => v !== typedValue)\n : [...currentValue, typedValue]\n\n if (isControlled) {\n onChange?.(newValues)\n } else {\n setInternalValue(newValues)\n }\n }, [isControlled, onChange, currentValue])\n\n const handleOpenChange = React.useCallback((newOpen: boolean) => {\n setOpen(newOpen)\n if (!newOpen) {\n onBlur?.()\n }\n }, [onBlur])\n\n const handleRemove = React.useCallback((valueToRemove: T, e: React.MouseEvent) => {\n e.stopPropagation()\n const newValues = currentValue.filter(v => v !== valueToRemove)\n if (isControlled) {\n onChange?.(newValues)\n } else {\n setInternalValue(newValues)\n }\n }, [isControlled, onChange, currentValue])\n\n const selectId = `field-${name}`\n const selectedOptions = options.filter(opt => currentValue.includes(opt.value))\n const displayedOptions = selectedOptions.slice(0, maxDisplayed)\n const remainingCount = selectedOptions.length - maxDisplayed\n\n return (\n <div className={className}>\n <SelectRoot\n value={undefined}\n onValueChange={handleValueChange}\n onOpenChange={handleOpenChange}\n disabled={disabled}\n open={open}\n >\n <SelectPrimitive.Trigger\n ref={ref}\n id={selectId}\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"flex w-full min-h-9 items-center justify-between gap-element rounded-md px-card-sm py-card-sm text-sm outline-none\",\n formRecipe.base,\n formRecipe.states.focus,\n formRecipe.states.disabled,\n formRecipe.states.invalid,\n \"data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground\",\n formRecipe.motion.transition,\n \"data-[size=sm]:min-h-8\",\n currentValue.length === 0 && \"h-9 data-[size=sm]:h-8\"\n )}\n >\n <div className=\"flex flex-1 flex-wrap gap-1.5\">\n {currentValue.length === 0 ? (\n <span className=\"text-muted-foreground\">\n {placeholder ?? tComponent(FrontendComponentType.LOW_LEVEL_SELECT_MULTIPLE, 'placeholder')}\n </span>\n ) : (\n <>\n {/*\n * No local gap on the chip — `Badge` already spaces its label from its\n * affordance, and the override here was `item-xs`, which resolves to one pixel.\n * `pe-1` rather than `pr-1` because the side being tightened is the one the\n * remove affordance sits on, which is the INLINE END in either writing direction.\n */}\n {displayedOptions.map((option) => (\n <Badge key={option.value} variant=\"secondary\" className=\"pe-1\">\n {renderOptionLabel ? renderOptionLabel(option) : option.label}\n {/*\n * A SPAN, not a Button, and the reason is structural rather than cosmetic.\n *\n * These chips render INSIDE `SelectPrimitive.Trigger`, which is a `<button>`.\n * A `<button>` inside a `<button>` is invalid HTML — React reports it as\n * \"<button> cannot be a descendant of <button>\" and warns of a hydration\n * error — and its activation behaviour is undefined: the browser may deliver\n * the click to either element, and assistive technology announces one control\n * where there are two. It fired on every multi-select carrying a value, which\n * is every multi-select anyone has used.\n *\n * Keyboard and AT removal is NOT lost by making this presentational: the same\n * option toggles off from the open list, which is the path a keyboard user\n * already takes to add it. So the X becomes what it always visually was — a\n * mouse shortcut — and the trigger stays the one focusable control.\n *\n * `onPointerDown` must stop propagation as well as `onClick`: Radix's trigger\n * opens on POINTER DOWN, so stopping only the click would open the list on\n * every removal.\n */}\n <span\n aria-hidden=\"true\"\n data-slot=\"select-multiple-remove\"\n className={cn(\n \"inline-flex h-4 w-4 items-center justify-center rounded-full\",\n disabled\n ? \"pointer-events-none opacity-50\"\n : \"cursor-pointer hover:bg-destructive hover:text-destructive-foreground\",\n )}\n onPointerDown={(e) => e.stopPropagation()}\n onClick={disabled ? undefined : (e) => handleRemove(option.value, e)}\n >\n {renderIcon(StandardIconReference.CLOSE, { size: IconSize.XS })}\n </span>\n </Badge>\n ))}\n {remainingCount > 0 && (\n <Badge variant=\"secondary\" className=\"text-xs\">\n {tComponent(FrontendComponentType.LOW_LEVEL_SELECT_MULTIPLE, 'moreItems', { count: remainingCount })}\n </Badge>\n )}\n </>\n )}\n </div>\n <SelectPrimitive.Icon asChild>\n {renderIcon(StandardIconReference.CHEVRON_DOWN, { size: IconSize.SM, className: \"opacity-[var(--opacity-muted)] shrink-0\" })}\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n\n <SelectContent>\n {options.map((option) => {\n const isSelected = currentValue.includes(option.value)\n return (\n <SelectPrimitive.Item\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n data-slot=\"select-item\"\n className={cn(\n \"relative flex w-full cursor-default items-center gap-element rounded-sm py-1.5 pe-8 ps-2 text-sm outline-hidden select-none\",\n ghostRecipe.states.highlighted,\n ghostRecipe.states.disabled,\n \"[&_svg:not([class*='text-'])]:text-muted-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n isSelected && \"bg-accent\"\n )}\n >\n <span className=\"absolute end-2 flex size-3.5 items-center justify-center\">\n {isSelected && renderIcon(StandardIconReference.CHECK, { size: IconSize.SM })}\n </span>\n <SelectPrimitive.ItemText>\n {renderOptionLabel ? renderOptionLabel(option) : option.label}\n </SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n })}\n </SelectContent>\n </SelectRoot>\n </div>\n )\n}) as <T extends string = string>(props: SelectMultipleProps<T> & { ref?: React.Ref<SelectMultipleRef> }) => React.JSX.Element\n\n;(SelectMultiple as typeof SelectMultiple & { displayName: string }).displayName = \"SelectMultiple\"\n\nexport { SelectMultiple }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"select-multiple.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/enum/select-multiple.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,4BAA4B,EAAE,mBAAmB,EAY7D,CAAC"}
1
+ {"version":3,"file":"select-multiple.labels.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/select-multiple.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,4BAA4B,EAAE,mBAAmB,EAY7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/enum/select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AAEzD,OAAO,EAYL,KAAK,cAAc,EACnB,cAAc,EAEf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAiE,aAAa,EAA8E,MAAM,qCAAqC,CAAA;AAI3N,iBAAS,UAAU,CAAC,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEvE;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAExE;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAExE;AAED,QAAA,MAAM,aAAa;WAE+C,WAAW;mDA6B3E,CAAA;AAGF,QAAA,MAAM,aAAa;;;;;;;;;wCAuDjB,CAAA;AAGF,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWxE;AAED,QAAA,MAAM,UAAU,2JA8Bd,CAAA;AAGF,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW5E;AAED,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAYjF;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAYnF;AAoGD,QAAA,MAAM,MAAM,gBAWV,CAAA;AAEF,OAAO,EACL,MAAM,EACN,UAAU,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,CAAA"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AAEzD,OAAO,EAYL,KAAK,cAAc,EACnB,cAAc,EAEf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAiE,aAAa,EAA8E,MAAM,qCAAqC,CAAA;AAI3N,iBAAS,UAAU,CAAC,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAEvE;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAExE;AAED,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAExE;AAED,QAAA,MAAM,aAAa;WAE+C,WAAW;mDA6B3E,CAAA;AAGF,QAAA,MAAM,aAAa;;;;;;;;;wCAuDjB,CAAA;AAGF,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWxE;AAED,QAAA,MAAM,UAAU,2JA8Bd,CAAA;AAGF,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAW5E;AAED,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAYjF;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAYnF;AAoGD,QAAA,MAAM,MAAM,gBAWV,CAAA;AAEF,OAAO,EACL,MAAM,EACN,UAAU,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"select.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/enum/select.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"select.labels.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/select.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/enum/toggle-group.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAkGtE,eAAO,MAAM,WAAW,qBAAwF,CAAA"}
1
+ {"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/toggle-group.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AA0MtE,eAAO,MAAM,WAAW,qBAAwF,CAAA"}
@@ -3,8 +3,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
5
5
  import { createCompoundPreset, cn, useUI } from "@wildo-ai/saas-frontend-lib";
6
- import { ToggleVariants_Variant } from '@wildo-ai/saas-frontend-lib';
6
+ import { ToggleGroupAppearance, ToggleVariants_Variant } from '@wildo-ai/saas-frontend-lib';
7
7
  import { ButtonSize, InteractiveVariant, UIBehavior } from '@wildo-ai/presets-components-models';
8
+ import { DisplayDirection } from '@wildo-ai/zod-decorators';
8
9
  /** Size mapping (same as Toggle) — includes pointer-coarse touch targets (decision 1.6) */
9
10
  const toggleSizeClasses = {
10
11
  md: "h-9 px-card-sm min-w-9 pointer-coarse:min-h-11 pointer-coarse:min-w-11",
@@ -19,8 +20,57 @@ const ToggleGroupContext = React.createContext({
19
20
  size: ButtonSize.MD,
20
21
  variant: ToggleVariants_Variant.DEFAULT,
21
22
  });
22
- const ToggleGroupRoot = React.forwardRef(({ className, variant, size, children, ...props }, ref) => {
23
- return (_jsx(ToggleGroupPrimitive.Root, { ref: ref, "data-slot": "toggle-group", "data-variant": variant, "data-size": size, className: cn("group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs", className), ...props, children: _jsx(ToggleGroupContext.Provider, { value: { variant, size }, children: children }) }));
23
+ /**
24
+ * ORIENTATION IS DEFAULTED HERE, and it has to be.
25
+ *
26
+ * Every segmentation class below — which corners round, which border collapses into its
27
+ * neighbour, which axis the segments divide — is written against `data-[orientation=…]`, and Radix
28
+ * emits that attribute from the `orientation` prop. Left undefined the attribute is ABSENT, so
29
+ * neither the horizontal nor the vertical rules match and the group renders as a row of unrounded,
30
+ * doubly-bordered buttons. A default is what makes the attribute always present.
31
+ */
32
+ const ToggleGroupRoot = React.forwardRef(({ className, variant, size, children, orientation = DisplayDirection.HORIZONTAL, appearance = ToggleGroupAppearance.SEGMENTED, ...props }, ref) => {
33
+ /*
34
+ * WHICH AXIS THE SEGMENTS DIVIDE ALONG — the one question every corner and border-collapse rule
35
+ * on the items actually asks, so it is published as its own attribute rather than inferred from
36
+ * `data-orientation`.
37
+ *
38
+ * Orientation is LAYOUT: which way the members flow. Segmentation is CHROME: whether they are
39
+ * joined into one control. A segmented group segments along its orientation; a row of PILLS
40
+ * segments along nothing — every chip keeps all four corners and all four borders. Keying the
41
+ * chrome on orientation, as it used to be, made "a horizontal row of separate chips" impossible
42
+ * to express: the horizontal rules would always collapse their borders.
43
+ */
44
+ const segmentAxis = appearance === ToggleGroupAppearance.PILLS ? 'none' : orientation;
45
+ return (_jsx(ToggleGroupPrimitive.Root, { ref: ref, "data-slot": "toggle-group", "data-variant": variant, "data-size": size, "data-appearance": appearance, "data-segment-axis": segmentAxis, orientation: orientation, className: cn(
46
+ /*
47
+ * `w-fit` SIZES the group to its segments; `max-w-full` STOPS it there.
48
+ *
49
+ * Measured 2026-09-20 against a 160px field holding three labelled segments: uncapped, the
50
+ * group laid out at **339px and overflowed its container by 184** — it kept its content
51
+ * width and drew straight over whatever sat beside it, which is what a narrow column or a
52
+ * phone makes of any three-option control with real words in it. Capped, it comes out at
53
+ * 150px, INSIDE the field, and the `flex-1 min-w-0` segments shrink and clip instead (see
54
+ * the item's `overflow-hidden`).
55
+ *
56
+ * Residual, stated rather than hidden: a clipped segment has no ellipsis. `text-overflow`
57
+ * needs a block container and the segment is a flex one whose children the caller supplies,
58
+ * so the cut is hard. Clipping inside the control still beats drawing outside it.
59
+ */
60
+ "group/toggle-group flex w-fit max-w-full rounded-md data-[variant=outline]:shadow-xs",
61
+ /*
62
+ * PILLS: separate chips need the space BETWEEN them that a segmented group deliberately
63
+ * lacks, and they wrap rather than shrink — a clipped chip is a worse answer than a second
64
+ * line. The group's outline shadow belongs to a joined control and has no single outline to
65
+ * draw around here, so it goes too.
66
+ */
67
+ "data-[appearance=pills]:flex-wrap data-[appearance=pills]:gap-element-sm data-[appearance=pills]:shadow-none",
68
+ /*
69
+ * A VERTICAL group stacks and its segments STRETCH to the widest one. `items-center` — the
70
+ * only alignment this had — left every segment at its own content width, so a vertical
71
+ * group read as a ragged left-aligned list rather than as one control.
72
+ */
73
+ "data-[orientation=horizontal]:flex-row data-[orientation=horizontal]:items-center", "data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch", className), ...props, children: _jsx(ToggleGroupContext.Provider, { value: { variant, size }, children: children }) }));
24
74
  });
25
75
  ToggleGroupRoot.displayName = "ToggleGroup";
26
76
  function ToggleGroupItem({ className, children, variant, size, ...props }) {
@@ -34,8 +84,49 @@ function ToggleGroupItem({ className, children, variant, size, ...props }) {
34
84
  "inline-flex items-center justify-center gap-element whitespace-nowrap outline-none [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0", toggleSizeClasses[resolvedSize],
35
85
  // Style from INTERACTIVE recipe
36
86
  recipe.base, recipe.states.hover, recipe.states.focus, recipe.states.selected, recipe.states.disabled, recipe.states.invalid, recipe.motion.transition,
37
- // Group-specific structural overrides
38
- "min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-s-md last:rounded-e-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-s-0 data-[variant=outline]:first:border-s", className), ...props, children: children }));
87
+ // Group-specific structural overrides, common to both axes
88
+ /*
89
+ * `overflow-hidden` is the other half of the group's `max-w-full`: a segment shrunk below
90
+ * its content keeps `whitespace-nowrap`, so without this its text draws through the
91
+ * segment's own border and past its neighbour (measured: 21px of text, `overflow-x:
92
+ * visible`). The focus ring is a box-shadow on this element, so its own overflow does not
93
+ * clip it.
94
+ */
95
+ "min-w-0 shrink-0 overflow-hidden rounded-none shadow-none focus:z-10 focus-visible:z-10",
96
+ /*
97
+ * SEGMENTATION IS PER AXIS, and every rule here used to exist only in its horizontal form —
98
+ * which is why a vertical group came out wrong in four separate ways at once.
99
+ *
100
+ * The rounded corners move from the start/end EDGES to the top/bottom ones, and the border
101
+ * that collapses into the previous segment moves from the inline-start side to the
102
+ * block-start side.
103
+ *
104
+ * `flex-1` USED TO BE HERE and is gone in both axes, because it was wrong in both.
105
+ *
106
+ * Vertically it broke the control outright: `flex: 1 1 0%` puts `flex-basis: 0` on the MAIN
107
+ * axis, which in a column is the vertical one, so it overrode `h-9` and collapsed every
108
+ * segment to the height of its own text — a control that looked like it had lost its
109
+ * padding when what it had lost was its height.
110
+ *
111
+ * Horizontally it was subtler and is what a reader actually complains about. A `w-fit`
112
+ * group is as wide as its segments' content, and `flex-basis: 0` then redistributes that
113
+ * width EQUALLY — so a short option is padded far beyond its `px-card-sm` while the longest
114
+ * one is squeezed below it and clipped. The total is conserved, which is why it reads as
115
+ * "the last one has no padding": the padding did not vanish, it moved to the first.
116
+ *
117
+ * Segments now take their content width (`flex: 0 1 auto`) and shrink only when the group
118
+ * meets its `max-w-full` cap, so every segment keeps the same padding as every other.
119
+ * Equal-width segments are a deliberate look, not a default — a group that wants them can
120
+ * ask for `flex-1` through `className`.
121
+ */
122
+ "group-data-[segment-axis=horizontal]/toggle-group:first:rounded-s-md", "group-data-[segment-axis=horizontal]/toggle-group:last:rounded-e-md", "group-data-[segment-axis=horizontal]/toggle-group:data-[variant=outline]:border-s-0", "group-data-[segment-axis=horizontal]/toggle-group:data-[variant=outline]:first:border-s", "group-data-[orientation=vertical]/toggle-group:w-full", "group-data-[orientation=vertical]/toggle-group:justify-start", "group-data-[segment-axis=vertical]/toggle-group:first:rounded-t-md", "group-data-[segment-axis=vertical]/toggle-group:last:rounded-b-md", "group-data-[segment-axis=vertical]/toggle-group:data-[variant=outline]:border-t-0", "group-data-[segment-axis=vertical]/toggle-group:data-[variant=outline]:first:border-t",
123
+ /*
124
+ * A PILL keeps every corner. `rounded-none` above is the segmented baseline; this is more
125
+ * specific (a group-scoped selector), so it wins without anyone having to order classes.
126
+ * The layout rules just above stay keyed on ORIENTATION — a vertical pill list is still a
127
+ * column of full-width chips — and only the chrome moved to the segment axis.
128
+ */
129
+ "group-data-[segment-axis=none]/toggle-group:rounded-full", className), ...props, children: children }));
39
130
  }
40
131
  export const ToggleGroup = createCompoundPreset(ToggleGroupRoot, { Item: ToggleGroupItem });
41
132
  //# sourceMappingURL=toggle-group.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/toggle-group.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\n\nimport type { ToggleGroupCompound } from '@wildo-ai/saas-frontend-lib'\nimport { createCompoundPreset, cn, useUI } from \"@wildo-ai/saas-frontend-lib\"\nimport { ToggleVariants_Variant } from '@wildo-ai/saas-frontend-lib'\nimport { ButtonSize, FrontendComponentType, InteractiveVariant, UIBehavior } from '@wildo-ai/presets-components-models'\n\n/** Size mapping (same as Toggle) — includes pointer-coarse touch targets (decision 1.6) */\nconst toggleSizeClasses: Record<string, string> = {\n md: \"h-9 px-card-sm min-w-9 pointer-coarse:min-h-11 pointer-coarse:min-w-11\",\n sm: \"h-8 px-1.5 min-w-8 pointer-coarse:min-h-11 pointer-coarse:min-w-11\",\n lg: \"h-10 px-2.5 min-w-10 pointer-coarse:min-h-11 pointer-coarse:min-w-11\",\n}\n\nconst variantMapping: Record<ToggleVariants_Variant, InteractiveVariant> = {\n [ToggleVariants_Variant.DEFAULT]: InteractiveVariant.GHOST,\n [ToggleVariants_Variant.OUTLINE]: InteractiveVariant.OUTLINE,\n}\n\nconst ToggleGroupContext = React.createContext<{\n size?: ButtonSize | null\n variant?: ToggleVariants_Variant | null\n}>({\n size: ButtonSize.MD,\n variant: ToggleVariants_Variant.DEFAULT,\n})\n\nconst ToggleGroupRoot = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentProps<typeof ToggleGroupPrimitive.Root> & {\n variant?: ToggleVariants_Variant | null\n size?: ButtonSize | null\n }\n>(({ className, variant, size, children, ...props }, ref) => {\n return (\n <ToggleGroupPrimitive.Root\n ref={ref}\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n className={cn(\n \"group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n})\n\nToggleGroupRoot.displayName = \"ToggleGroup\"\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> & {\n variant?: ToggleVariants_Variant | null\n size?: ButtonSize | null\n}): React.JSX.Element {\n const context = React.useContext(ToggleGroupContext)\n const { getRecipe } = useUI()\n\n const resolvedVariant = (context.variant ?? variant ?? ToggleVariants_Variant.DEFAULT) as ToggleVariants_Variant\n const resolvedSize = (context.size ?? size ?? ButtonSize.MD)\n const recipe = getRecipe(UIBehavior.INTERACTIVE, variantMapping[resolvedVariant])\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={resolvedVariant}\n data-size={resolvedSize}\n className={cn(\n // Structure\n \"inline-flex items-center justify-center gap-element whitespace-nowrap outline-none [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0\",\n toggleSizeClasses[resolvedSize],\n // Style from INTERACTIVE recipe\n recipe.base,\n recipe.states.hover,\n recipe.states.focus,\n recipe.states.selected,\n recipe.states.disabled,\n recipe.states.invalid,\n recipe.motion.transition,\n // Group-specific structural overrides\n \"min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-s-md last:rounded-e-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-s-0 data-[variant=outline]:first:border-s\",\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport const ToggleGroup = createCompoundPreset<ToggleGroupCompound>(ToggleGroupRoot, { Item: ToggleGroupItem })\n"]}
1
+ {"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/toggle-group.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\n\nimport type { ToggleGroupCompound } from '@wildo-ai/saas-frontend-lib'\nimport { createCompoundPreset, cn, useUI } from \"@wildo-ai/saas-frontend-lib\"\nimport { ToggleGroupAppearance, ToggleVariants_Variant } from '@wildo-ai/saas-frontend-lib'\nimport { ButtonSize, FrontendComponentType, InteractiveVariant, UIBehavior } from '@wildo-ai/presets-components-models'\nimport { DisplayDirection } from '@wildo-ai/zod-decorators'\n\n/** Size mapping (same as Toggle) — includes pointer-coarse touch targets (decision 1.6) */\nconst toggleSizeClasses: Record<string, string> = {\n md: \"h-9 px-card-sm min-w-9 pointer-coarse:min-h-11 pointer-coarse:min-w-11\",\n sm: \"h-8 px-1.5 min-w-8 pointer-coarse:min-h-11 pointer-coarse:min-w-11\",\n lg: \"h-10 px-2.5 min-w-10 pointer-coarse:min-h-11 pointer-coarse:min-w-11\",\n}\n\nconst variantMapping: Record<ToggleVariants_Variant, InteractiveVariant> = {\n [ToggleVariants_Variant.DEFAULT]: InteractiveVariant.GHOST,\n [ToggleVariants_Variant.OUTLINE]: InteractiveVariant.OUTLINE,\n}\n\nconst ToggleGroupContext = React.createContext<{\n size?: ButtonSize | null\n variant?: ToggleVariants_Variant | null\n}>({\n size: ButtonSize.MD,\n variant: ToggleVariants_Variant.DEFAULT,\n})\n\n/**\n * ORIENTATION IS DEFAULTED HERE, and it has to be.\n *\n * Every segmentation class below — which corners round, which border collapses into its\n * neighbour, which axis the segments divide — is written against `data-[orientation=…]`, and Radix\n * emits that attribute from the `orientation` prop. Left undefined the attribute is ABSENT, so\n * neither the horizontal nor the vertical rules match and the group renders as a row of unrounded,\n * doubly-bordered buttons. A default is what makes the attribute always present.\n */\nconst ToggleGroupRoot = React.forwardRef<\n React.ComponentRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentProps<typeof ToggleGroupPrimitive.Root> & {\n variant?: ToggleVariants_Variant | null\n size?: ButtonSize | null\n appearance?: ToggleGroupAppearance\n }\n>(({ className, variant, size, children, orientation = DisplayDirection.HORIZONTAL, appearance = ToggleGroupAppearance.SEGMENTED, ...props }, ref) => {\n /*\n * WHICH AXIS THE SEGMENTS DIVIDE ALONG — the one question every corner and border-collapse rule\n * on the items actually asks, so it is published as its own attribute rather than inferred from\n * `data-orientation`.\n *\n * Orientation is LAYOUT: which way the members flow. Segmentation is CHROME: whether they are\n * joined into one control. A segmented group segments along its orientation; a row of PILLS\n * segments along nothing — every chip keeps all four corners and all four borders. Keying the\n * chrome on orientation, as it used to be, made \"a horizontal row of separate chips\" impossible\n * to express: the horizontal rules would always collapse their borders.\n */\n const segmentAxis = appearance === ToggleGroupAppearance.PILLS ? 'none' : orientation\n return (\n <ToggleGroupPrimitive.Root\n ref={ref}\n data-slot=\"toggle-group\"\n data-variant={variant}\n data-size={size}\n data-appearance={appearance}\n data-segment-axis={segmentAxis}\n orientation={orientation}\n className={cn(\n /*\n * `w-fit` SIZES the group to its segments; `max-w-full` STOPS it there.\n *\n * Measured 2026-09-20 against a 160px field holding three labelled segments: uncapped, the\n * group laid out at **339px and overflowed its container by 184** — it kept its content\n * width and drew straight over whatever sat beside it, which is what a narrow column or a\n * phone makes of any three-option control with real words in it. Capped, it comes out at\n * 150px, INSIDE the field, and the `flex-1 min-w-0` segments shrink and clip instead (see\n * the item's `overflow-hidden`).\n *\n * Residual, stated rather than hidden: a clipped segment has no ellipsis. `text-overflow`\n * needs a block container and the segment is a flex one whose children the caller supplies,\n * so the cut is hard. Clipping inside the control still beats drawing outside it.\n */\n \"group/toggle-group flex w-fit max-w-full rounded-md data-[variant=outline]:shadow-xs\",\n /*\n * PILLS: separate chips need the space BETWEEN them that a segmented group deliberately\n * lacks, and they wrap rather than shrink — a clipped chip is a worse answer than a second\n * line. The group's outline shadow belongs to a joined control and has no single outline to\n * draw around here, so it goes too.\n */\n \"data-[appearance=pills]:flex-wrap data-[appearance=pills]:gap-element-sm data-[appearance=pills]:shadow-none\",\n /*\n * A VERTICAL group stacks and its segments STRETCH to the widest one. `items-center` — the\n * only alignment this had — left every segment at its own content width, so a vertical\n * group read as a ragged left-aligned list rather than as one control.\n */\n \"data-[orientation=horizontal]:flex-row data-[orientation=horizontal]:items-center\",\n \"data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch\",\n className\n )}\n {...props}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n )\n})\n\nToggleGroupRoot.displayName = \"ToggleGroup\"\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> & {\n variant?: ToggleVariants_Variant | null\n size?: ButtonSize | null\n}): React.JSX.Element {\n const context = React.useContext(ToggleGroupContext)\n const { getRecipe } = useUI()\n\n const resolvedVariant = (context.variant ?? variant ?? ToggleVariants_Variant.DEFAULT) as ToggleVariants_Variant\n const resolvedSize = (context.size ?? size ?? ButtonSize.MD)\n const recipe = getRecipe(UIBehavior.INTERACTIVE, variantMapping[resolvedVariant])\n\n return (\n <ToggleGroupPrimitive.Item\n data-slot=\"toggle-group-item\"\n data-variant={resolvedVariant}\n data-size={resolvedSize}\n className={cn(\n // Structure\n \"inline-flex items-center justify-center gap-element whitespace-nowrap outline-none [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0\",\n toggleSizeClasses[resolvedSize],\n // Style from INTERACTIVE recipe\n recipe.base,\n recipe.states.hover,\n recipe.states.focus,\n recipe.states.selected,\n recipe.states.disabled,\n recipe.states.invalid,\n recipe.motion.transition,\n // Group-specific structural overrides, common to both axes\n /*\n * `overflow-hidden` is the other half of the group's `max-w-full`: a segment shrunk below\n * its content keeps `whitespace-nowrap`, so without this its text draws through the\n * segment's own border and past its neighbour (measured: 21px of text, `overflow-x:\n * visible`). The focus ring is a box-shadow on this element, so its own overflow does not\n * clip it.\n */\n \"min-w-0 shrink-0 overflow-hidden rounded-none shadow-none focus:z-10 focus-visible:z-10\",\n /*\n * SEGMENTATION IS PER AXIS, and every rule here used to exist only in its horizontal form —\n * which is why a vertical group came out wrong in four separate ways at once.\n *\n * The rounded corners move from the start/end EDGES to the top/bottom ones, and the border\n * that collapses into the previous segment moves from the inline-start side to the\n * block-start side.\n *\n * `flex-1` USED TO BE HERE and is gone in both axes, because it was wrong in both.\n *\n * Vertically it broke the control outright: `flex: 1 1 0%` puts `flex-basis: 0` on the MAIN\n * axis, which in a column is the vertical one, so it overrode `h-9` and collapsed every\n * segment to the height of its own text — a control that looked like it had lost its\n * padding when what it had lost was its height.\n *\n * Horizontally it was subtler and is what a reader actually complains about. A `w-fit`\n * group is as wide as its segments' content, and `flex-basis: 0` then redistributes that\n * width EQUALLY — so a short option is padded far beyond its `px-card-sm` while the longest\n * one is squeezed below it and clipped. The total is conserved, which is why it reads as\n * \"the last one has no padding\": the padding did not vanish, it moved to the first.\n *\n * Segments now take their content width (`flex: 0 1 auto`) and shrink only when the group\n * meets its `max-w-full` cap, so every segment keeps the same padding as every other.\n * Equal-width segments are a deliberate look, not a default — a group that wants them can\n * ask for `flex-1` through `className`.\n */\n \"group-data-[segment-axis=horizontal]/toggle-group:first:rounded-s-md\",\n \"group-data-[segment-axis=horizontal]/toggle-group:last:rounded-e-md\",\n \"group-data-[segment-axis=horizontal]/toggle-group:data-[variant=outline]:border-s-0\",\n \"group-data-[segment-axis=horizontal]/toggle-group:data-[variant=outline]:first:border-s\",\n \"group-data-[orientation=vertical]/toggle-group:w-full\",\n \"group-data-[orientation=vertical]/toggle-group:justify-start\",\n \"group-data-[segment-axis=vertical]/toggle-group:first:rounded-t-md\",\n \"group-data-[segment-axis=vertical]/toggle-group:last:rounded-b-md\",\n \"group-data-[segment-axis=vertical]/toggle-group:data-[variant=outline]:border-t-0\",\n \"group-data-[segment-axis=vertical]/toggle-group:data-[variant=outline]:first:border-t\",\n /*\n * A PILL keeps every corner. `rounded-none` above is the segmented baseline; this is more\n * specific (a group-scoped selector), so it wins without anyone having to order classes.\n * The layout rules just above stay keyed on ORIENTATION — a vertical pill list is still a\n * column of full-width chips — and only the chrome moved to the segment axis.\n */\n \"group-data-[segment-axis=none]/toggle-group:rounded-full\",\n className\n )}\n {...props}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n )\n}\n\nexport const ToggleGroup = createCompoundPreset<ToggleGroupCompound>(ToggleGroupRoot, { Item: ToggleGroupItem })\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-group.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/enum/toggle-group.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,yBAAyB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"toggle-group.labels.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/enum/toggle-group.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,yBAAyB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/file/file-upload.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAWL,eAAe,EACf,aAAa,EACd,MAAM,6BAA6B,CAAC;AAMrC,QAAA,MAAM,UAAU,uFAsTd,CAED;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"file-upload.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/file/file-upload.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAWL,eAAe,EACf,aAAa,EACd,MAAM,6BAA6B,CAAC;AAMrC,QAAA,MAAM,UAAU,uFAsTd,CAED;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/file/file-upload.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EA+BzD,CAAC"}
1
+ {"version":3,"file":"file-upload.labels.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/file/file-upload.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EA+BzD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"image-crop.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/file/image-crop.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAoBL,KAAK,oBAAoB,EAE1B,MAAM,6BAA6B,CAAA;AAkBpC,QAAA,MAAM,SAAS,6FA+Ub,CAED;AAED,OAAO,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"image-crop.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/file/image-crop.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAoBL,KAAK,oBAAoB,EAE1B,MAAM,6BAA6B,CAAA;AAkBpC,QAAA,MAAM,SAAS,6FA+Ub,CAED;AAED,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"image-crop.labels.d.ts","sourceRoot":"","sources":["../../../../../../src/components/form/controls/file/image-crop.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,uBAAuB,EAAE,mBAAmB,EAiBxD,CAAC"}
1
+ {"version":3,"file":"image-crop.labels.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/form/controls/file/image-crop.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM1I,eAAO,MAAM,uBAAuB,EAAE,mBAAmB,EAiBxD,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Dropbox file picker — the component the `dropbox` provider contributes for `FRONTEND_FILE_PICKER`.
3
+ *
4
+ * ## Why it declares BROWSER_READABLE_URL, like OneDrive and unlike Drive
5
+ *
6
+ * The Chooser opened with `linkType: 'direct'` returns each chosen file carrying a link that needs no
7
+ * credential to fetch and expires after four hours. The browser genuinely can read the bytes, so the
8
+ * honest arm is `BROWSER_READABLE_URL` and the framework ingests the result into the field's own
9
+ * storage. Drive's picker returns metadata only, whose bytes need a credential the browser must not
10
+ * hold — which is why #383 was answered PER VENDOR rather than once.
11
+ *
12
+ * spec-cite: Dropbox Chooser reference —
13
+ * https://docs.dropboxapi.com/dropbox-api/docs/pre-built-components/chooser — for the `choose`
14
+ * options used here, the direct link being credential-free, and the returned file's fields.
15
+ * Paraphrased rather than quoted.
16
+ *
17
+ * ## The app key does NOT ride on the script tag
18
+ *
19
+ * The vendor documents `data-app-key` on a script carrying `id="dropboxjs"`, which the framework's
20
+ * declarative `scripts` channel cannot express: that declaration is static engine data and the key is
21
+ * per-application configuration. Reading the shipped `dropins.js` shows a second, public source —
22
+ * `Dropbox.init({ appKey })` — so the script is declared plainly in the provider module and the key
23
+ * is supplied HERE from `publicConfig`, after the script has executed.
24
+ *
25
+ * ## Two vendor limits worth knowing before debugging one
26
+ *
27
+ * `choose` has NO error callback — only `success` and `cancel` — so a failure inside the vendor's own
28
+ * overlay surfaces as a cancel or as silence. Everything this component CAN detect is checked before
29
+ * `choose` is called, which is why the guards below are eager rather than defensive.
30
+ *
31
+ * And a chosen file carries no MIME type. The selection therefore omits `mimeType` rather than
32
+ * guessing one from the extension: absent means UNKNOWN, and the field validates every chosen file
33
+ * against `allowedMimeTypes` on its own.
34
+ *
35
+ * ## Not proven in a browser
36
+ *
37
+ * Nothing here has been driven against a real Dropbox account. Tracked on #460, which is where the
38
+ * DROPBOX storage member's fate lives: this picker is the ATTACH-only offering, the governed path is
39
+ * not built, and `google-drive` remains the one proven governed mechanism.
40
+ */
41
+ import { type ProviderFilePickerProps } from '@wildo-ai/saas-models/public-runtime';
42
+ /** Opens the Chooser as soon as it mounts — see the Drive picker for why mounting IS opening. */
43
+ export declare function DropboxPicker(props: ProviderFilePickerProps): null;
44
+ //# sourceMappingURL=dropbox-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropbox-picker.d.ts","sourceRoot":"","sources":["../../../../../../../../src/components/form/controls/file/providers/dropbox-picker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,sCAAsC,CAAC;AA0C9C,iGAAiG;AACjG,wBAAgB,aAAa,CAAC,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAiGlE"}