@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":"stacked-layout.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/stacked-layout.tsx"],"names":[],"mappings":"AACA,OAAO,EASL,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AAgOrC,eAAO,MAAM,aAAa,uBAUxB,CAAA"}
1
+ {"version":3,"file":"stacked-layout.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/stacked-layout.tsx"],"names":[],"mappings":"AACA,OAAO,EASL,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AAgOrC,eAAO,MAAM,aAAa,uBAUxB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"stacked-layout.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/stacked-layout.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,2BAA2B,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"stacked-layout.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/stacked-layout.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,2BAA2B,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stepper.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/stepper.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAOV,eAAe,EAChB,MAAM,6BAA6B,CAAA;AA6NpC,eAAO,MAAM,OAAO,iBAA4L,CAAA"}
1
+ {"version":3,"file":"stepper.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/stepper.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAOV,eAAe,EAChB,MAAM,6BAA6B,CAAA;AA6NpC,eAAO,MAAM,OAAO,iBAA4L,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"stepper.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/stepper.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"stepper.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/stepper.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/table.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AA0LhE,eAAO,MAAM,KAAK,eAQhB,CAAA"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/table.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AA0LhE,eAAO,MAAM,KAAK,eAQhB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"table.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/table.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"table.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/table.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/tabs.tsx"],"names":[],"mappings":"AAMA,OAAO,EACL,YAAY,EAKb,MAAM,6BAA6B,CAAC;AAiRrC,eAAO,MAAM,IAAI,cAA+G,CAAA"}
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/tabs.tsx"],"names":[],"mappings":"AAMA,OAAO,EACL,YAAY,EAOb,MAAM,6BAA6B,CAAC;AAuWrC,eAAO,MAAM,IAAI,cAA+G,CAAA"}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import * as React from "react";
4
4
  import * as TabsPrimitive from "@radix-ui/react-tabs";
5
5
  import { ChevronLeft, ChevronRight } from "lucide-react";
6
- import { createCompoundPreset, cn, useUI, Surface, } from '@wildo-ai/saas-frontend-lib';
7
- import { SelectableVariant, SurfaceVariant, UIBehavior } from "@wildo-ai/presets-components-models";
6
+ import { TabsLevel, TabsLevelContext, createCompoundPreset, cn, useUI, Surface, } from '@wildo-ai/saas-frontend-lib';
7
+ import { IndicatorVariant, SelectableVariant, SurfaceVariant, UIBehavior } from "@wildo-ai/presets-components-models";
8
8
  /**
9
9
  * Orientation shared from TabsRoot down to List/Trigger so each sub-component can
10
10
  * choose the right `SELECTABLE` recipe. Radix exposes orientation only as a
@@ -18,9 +18,29 @@ import { SelectableVariant, SurfaceVariant, UIBehavior } from "@wildo-ai/presets
18
18
  * the selected rail item).
19
19
  */
20
20
  const TabsOrientationContext = React.createContext('horizontal');
21
- function TabsRoot({ className, orientation = 'horizontal', ...props }) {
21
+ function TabsRoot({ className, orientation = 'horizontal', level, ...props }) {
22
22
  const resolved = orientation === 'vertical' ? 'vertical' : 'horizontal';
23
- return (_jsx(TabsOrientationContext.Provider, { value: resolved, children: _jsx(TabsPrimitive.Root, { "data-slot": "tabs", orientation: orientation, className: cn("flex flex-col gap-element data-[orientation=vertical]:flex-row data-[orientation=vertical]:gap-card", className), ...props }) }));
23
+ /*
24
+ * The LEVEL defaults from nesting (`TabsLevel`): inside another tab set this one is SECONDARY
25
+ * unless the caller says otherwise. Read from the contract's own context so every preset —
26
+ * and the section pipeline, which never names a level — takes part in the same rule.
27
+ */
28
+ const enclosing = React.useContext(TabsLevelContext);
29
+ const resolvedLevel = level ?? (enclosing === null ? TabsLevel.PRIMARY : TabsLevel.SECONDARY);
30
+ return (_jsx(TabsOrientationContext.Provider, { value: resolved, children: _jsx(TabsLevelContext.Provider, { value: resolvedLevel, children: _jsx(TabsPrimitive.Root, { "data-slot": "tabs", "data-level": resolvedLevel, orientation: orientation, className: cn("flex flex-col gap-element data-[orientation=vertical]:flex-row data-[orientation=vertical]:gap-card", className), ...props }) }) }));
31
+ }
32
+ /**
33
+ * The COUNT on a trigger — how many things are behind the tab — through the theme's INDICATOR
34
+ * recipe so its tone is the same tone a badge of that kind wears anywhere else. Nothing renders for
35
+ * zero: an empty count is not information (see the contract). `tabular-nums` so `2` and `14` sit
36
+ * on the same baseline as the strip re-counts.
37
+ */
38
+ function TabsTriggerCount({ count, tone }) {
39
+ const { getRecipe } = useUI();
40
+ const recipe = getRecipe(UIBehavior.INDICATOR, tone);
41
+ return (_jsx("span", { "data-slot": "tabs-trigger-count", "data-tone": tone, className: cn("inline-flex min-w-5 items-center justify-center font-semibold leading-4 tabular-nums", recipe.base,
42
+ // The recipe's chip geometry is for a badge; a count in a tab is a smaller, rounder thing.
43
+ "rounded-full px-1.5 py-0 text-2xs"), children: count }));
24
44
  }
25
45
  /**
26
46
  * Overflow state of the horizontal scrollport — which edges have more content.
@@ -99,6 +119,7 @@ function TabsListSlideAffordance({ side, onSlide }) {
99
119
  }
100
120
  function TabsList({ className, ...props }) {
101
121
  const isVertical = React.useContext(TabsOrientationContext) === 'vertical';
122
+ const isSecondary = React.useContext(TabsLevelContext) === TabsLevel.SECONDARY;
102
123
  const listRef = React.useRef(null);
103
124
  const overflow = useHorizontalOverflow(listRef);
104
125
  /*
@@ -136,6 +157,14 @@ function TabsList({ className, ...props }) {
136
157
  // Vertical: clean nav rail (column of items, no boxed container).
137
158
  className: cn("flex flex-col items-stretch justify-start gap-item-xs", className), ...props }));
138
159
  }
160
+ /*
161
+ * SECONDARY: a wrapping row of pills with NO rule beneath it. The rule is what makes a strip read
162
+ * as the page's navigation; a nested set must not claim that, and pills wrap rather than scroll
163
+ * because a record's seven tabs on a narrow pane are better on two lines than behind a fade.
164
+ */
165
+ if (isSecondary) {
166
+ return (_jsx(TabsPrimitive.List, { ref: listRef, "data-slot": "tabs-list", className: cn("flex w-full flex-wrap items-center gap-item-xs", className), ...props }));
167
+ }
139
168
  /*
140
169
  * Horizontal: underline tab bar that SCROLLS when it overflows, instead of
141
170
  * widening the page (measured on the workbench artifact list, whose concern
@@ -161,23 +190,43 @@ function TabsList({ className, ...props }) {
161
190
  */
162
191
  return (_jsxs("div", { "data-slot": "tabs-list-scrollport", className: "relative w-full", children: [_jsx("span", { "aria-hidden": "true", className: "pointer-events-none absolute inset-x-0 bottom-0 h-px bg-border" }), _jsx(TabsPrimitive.List, { ref: listRef, "data-slot": "tabs-list", style: { maskImage: fadeMask, WebkitMaskImage: fadeMask }, className: cn("relative flex w-full items-center gap-card overflow-x-auto overscroll-x-contain [scrollbar-width:none] [&::-webkit-scrollbar]:hidden", className), ...props }), overflow.start && _jsx(TabsListSlideAffordance, { side: "start", onSlide: () => slideBy(-1) }), overflow.end && _jsx(TabsListSlideAffordance, { side: "end", onSlide: () => slideBy(1) })] }));
163
192
  }
164
- function TabsTrigger({ className, ...props }) {
193
+ function TabsTrigger({ className, count, countTone = IndicatorVariant.NEUTRAL, children, ...props }) {
165
194
  const isVertical = React.useContext(TabsOrientationContext) === 'vertical';
195
+ const isSecondary = React.useContext(TabsLevelContext) === TabsLevel.SECONDARY;
166
196
  const { getRecipe } = useUI();
167
- // Vertical rail → FILLED (soft fill on select); horizontal → UNDERLINE.
168
- const recipe = getRecipe(UIBehavior.SELECTABLE, isVertical ? SelectableVariant.FILLED : SelectableVariant.UNDERLINE);
169
- return (_jsx(TabsPrimitive.Trigger, { "data-slot": "tabs-trigger", className: cn("inline-flex items-center gap-1.5 text-sm font-medium whitespace-nowrap [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", isVertical
197
+ // Vertical rail → FILLED (soft fill on select); horizontal → UNDERLINE; a nested set → PILL.
198
+ const variant = isVertical
199
+ ? SelectableVariant.FILLED
200
+ : isSecondary ? SelectableVariant.PILL : SelectableVariant.UNDERLINE;
201
+ const recipe = getRecipe(UIBehavior.SELECTABLE, variant);
202
+ return (_jsxs(TabsPrimitive.Trigger, { "data-slot": "tabs-trigger", className: cn(
203
+ // `cursor-pointer` sits here rather than in the recipe, matching the
204
+ // accordion trigger: an element that switches the visible panel must
205
+ // read as clickable whatever the theme dresses it in.
206
+ "inline-flex cursor-pointer items-center gap-1.5 text-sm font-medium whitespace-nowrap [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", isVertical
170
207
  // Vertical: full-width, left-aligned rail item (FILLED recipe fills it).
171
208
  ? "w-full justify-start rounded-md px-card-sm py-item"
172
- // Horizontal: content-width underline tab (UNDERLINE recipe draws the
173
- // bottom border). No `-mb-px` overlap here: the list is a scrollport
174
- // (which would clip it) and the 1px rule is the wrapper's own layer,
175
- // sharing the wrapper's last pixel row with this indicator.
176
- : "justify-center px-card-sm py-item",
209
+ : isSecondary
210
+ // Nested: a small pill (the PILL recipe's `sm` size draws the shape).
211
+ ? cn("justify-center", recipe.sizes?.sm)
212
+ // Horizontal: content-width underline tab (UNDERLINE recipe draws the
213
+ // bottom border). No `-mb-px` overlap here: the list is a scrollport
214
+ // (which would clip it) and the 1px rule is the wrapper's own layer,
215
+ // sharing the wrapper's last pixel row with this indicator.
216
+ : "justify-center px-card-sm py-item",
177
217
  // Style from the orientation-appropriate SELECTABLE recipe.
178
- recipe.base, recipe.states.focus, recipe.states.selected, recipe.states.disabled, recipe.motion.transition, className), ...props }));
218
+ recipe.base, recipe.states.focus, recipe.states.selected, recipe.states.disabled, recipe.motion.transition, className), ...props, children: [children, count !== undefined && count > 0 && _jsxs(_Fragment, { children: [' ', _jsx(TabsTriggerCount, { count: count, tone: countTone })] })] }));
179
219
  }
180
220
  function TabsContent({ className, ...props }) {
221
+ const isSecondary = React.useContext(TabsLevelContext) === TabsLevel.SECONDARY;
222
+ /*
223
+ * A nested set draws NO panel surface: the enclosing panel already frames it, and a `TAB_PANEL`
224
+ * inside a `TAB_PANEL` is the frame-in-a-frame the level exists to remove. Plain content, and
225
+ * a little air under the pills.
226
+ */
227
+ if (isSecondary) {
228
+ return (_jsx(TabsPrimitive.Content, { "data-slot": "tabs-content", className: cn("flex-1 pt-item outline-none", className), ...props }));
229
+ }
181
230
  return (_jsx(Surface, { asChild: true, emitPolicyVars: false, variant: SurfaceVariant.TAB_PANEL, children: _jsx(TabsPrimitive.Content, { "data-slot": "tabs-content", className: cn("flex-1 outline-none", className), ...props }) }));
182
231
  }
183
232
  export const Tabs = createCompoundPreset(TabsRoot, { List: TabsList, Trigger: TabsTrigger, Content: TabsContent });
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../../../src/components/sections/tabs.tsx"],"names":[],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\n\nimport {\n TabsCompound,\n createCompoundPreset,\n cn,\n useUI,\n Surface,\n} from '@wildo-ai/saas-frontend-lib';\n\nimport { FrontendComponentType, SelectableVariant, SurfaceVariant, UIBehavior } from \"@wildo-ai/presets-components-models\"\n\n/**\n * Orientation shared from TabsRoot down to List/Trigger so each sub-component can\n * choose the right `SELECTABLE` recipe. Radix exposes orientation only as a\n * `data-orientation` DOM attribute, but a recipe's utility strings (which already\n * carry `data-[state=active]:…`) can't be re-scoped per orientation from a class\n * list — so the choice is made in JS here.\n *\n * Horizontal tabs use `UNDERLINE` (a bottom-border indicator on separated items —\n * the canonical modern-SaaS navigation-tab look: \"separated = tabs, connected by\n * a track = segmented control\"). The vertical rail keeps `FILLED` (a soft fill on\n * the selected rail item).\n */\nconst TabsOrientationContext = React.createContext<'horizontal' | 'vertical'>('horizontal')\n\nfunction TabsRoot({\n className,\n orientation = 'horizontal',\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>): React.JSX.Element {\n const resolved = orientation === 'vertical' ? 'vertical' : 'horizontal'\n return (\n <TabsOrientationContext.Provider value={resolved}>\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n orientation={orientation}\n className={cn(\"flex flex-col gap-element data-[orientation=vertical]:flex-row data-[orientation=vertical]:gap-card\", className)}\n {...props}\n />\n </TabsOrientationContext.Provider>\n )\n}\n\n/**\n * Overflow state of the horizontal scrollport — which edges have more content.\n *\n * Updated from three signals, because each misses a case the others catch: the\n * `scroll` listener (user scrolled), a `ResizeObserver` on the list (viewport\n * grew/shrank — the common \"window resized\" case), and a per-render effect\n * (tab COUNT changed — children resizing does not move the list's own box, so\n * the observer cannot see it).\n */\nfunction useHorizontalOverflow(ref: React.RefObject<HTMLElement | null>): { start: boolean; end: boolean } {\n const [overflow, setOverflow] = React.useState({ start: false, end: false })\n\n const update = React.useCallback(() => {\n const el = ref.current\n if (!el) return\n // 1px slack: fractional layout widths make scrollLeft/scrollWidth disagree by <1.\n const start = el.scrollLeft > 1\n const end = el.scrollLeft + el.clientWidth < el.scrollWidth - 1\n setOverflow((prev) => (prev.start === start && prev.end === end ? prev : { start, end }))\n }, [ref])\n\n React.useEffect(() => {\n const el = ref.current\n if (!el) return\n el.addEventListener('scroll', update, { passive: true })\n const observer = new ResizeObserver(update)\n observer.observe(el)\n return () => {\n el.removeEventListener('scroll', update)\n observer.disconnect()\n }\n }, [ref, update])\n\n // No dependency array on purpose — re-measures after every render, which is\n // what catches content-only changes (a tab added/removed, a label resolving\n // from i18n). Three numeric reads; cheap enough not to gate.\n React.useEffect(update)\n\n return overflow\n}\n\n/** Width of each fade/affordance zone. One constant so the mask and the button agree. */\nconst TABS_FADE_ZONE = '2.5rem'\n\n/**\n * The edge fade, as a MASK on the strip rather than a gradient painted over it.\n *\n * A painted gradient has to name the colour it fades FROM, and no colour is\n * right: measured on the workbench, the strip sits on `bg-surface-raised`\n * (oklch 0.208) while `--background` is oklch 0.129, so an overlay fading to\n * the background token washed a visibly wrong band across the strip — and it\n * would be wrong differently on every surface a tab strip can sit on (card,\n * dialog, panel) and in every theme.\n *\n * Masking fades the CONTENT to transparency instead, revealing whatever is\n * actually behind it. It needs no colour token, so it is correct on every\n * surface and every theme by construction.\n */\nfunction edgeFadeMask(overflow: { start: boolean; end: boolean }): string | undefined {\n if (!overflow.start && !overflow.end) return undefined\n const stops = [\n overflow.start ? `transparent 0, black ${TABS_FADE_ZONE}` : 'black 0',\n overflow.end ? `black calc(100% - ${TABS_FADE_ZONE}), transparent 100%` : 'black 100%',\n ]\n return `linear-gradient(to right, ${stops.join(', ')})`\n}\n\n/**\n * One edge's slide affordance: the DISCREET control the design asks for — a\n * quiet chevron over the faded zone, with no box and no background of its own\n * (the mask above is what makes room for it). Mouse-only by intent\n * (`aria-hidden`, unfocusable): keyboard users already reach every tab through\n * the tab list's roving arrow-key focus, so exposing this to the tab order\n * would add a stop that does nothing arrows don't.\n */\nfunction TabsListSlideAffordance({ side, onSlide }: { side: 'start' | 'end'; onSlide: () => void }): React.JSX.Element {\n const Chevron = side === 'start' ? ChevronLeft : ChevronRight\n return (\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n data-slot=\"tabs-list-slide\"\n data-side={side}\n onClick={onSlide}\n style={{ width: TABS_FADE_ZONE }}\n className={cn(\n \"absolute inset-y-0 z-10 flex cursor-pointer items-center border-0 bg-transparent p-0\",\n side === 'start' ? \"left-0 justify-start\" : \"right-0 justify-end\",\n )}\n >\n <Chevron className=\"size-4 text-muted-foreground opacity-60 transition-opacity hover:opacity-100\" />\n </button>\n )\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>): React.JSX.Element {\n const isVertical = React.useContext(TabsOrientationContext) === 'vertical'\n const listRef = React.useRef<HTMLDivElement>(null)\n const overflow = useHorizontalOverflow(listRef)\n\n /*\n * Vertical wheel input slides the strip horizontally — the strip is a\n * one-axis surface, so a wheel over it can only mean \"move along it\". A\n * NATIVE non-passive listener, not React `onWheel`: React registers wheel\n * passively at the root, so `preventDefault()` there is ignored and every\n * translated tick would also scroll the page behind the strip.\n */\n React.useEffect(() => {\n const el = listRef.current\n if (!el || isVertical) return\n const onWheel = (event: WheelEvent) => {\n if (el.scrollWidth <= el.clientWidth) return\n const delta = Math.abs(event.deltaX) > Math.abs(event.deltaY) ? event.deltaX : event.deltaY\n if (delta === 0) return\n el.scrollLeft += delta\n event.preventDefault()\n }\n el.addEventListener('wheel', onWheel, { passive: false })\n return () => el.removeEventListener('wheel', onWheel)\n }, [isVertical])\n\n const fadeMask = edgeFadeMask(overflow)\n\n const slideBy = React.useCallback((direction: 1 | -1) => {\n const el = listRef.current\n if (!el) return\n el.scrollBy({ left: direction * el.clientWidth * 0.6, behavior: 'smooth' })\n }, [])\n\n if (isVertical) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n // Vertical: clean nav rail (column of items, no boxed container).\n className={cn(\"flex flex-col items-stretch justify-start gap-item-xs\", className)}\n {...props}\n />\n )\n }\n\n /*\n * Horizontal: underline tab bar that SCROLLS when it overflows, instead of\n * widening the page (measured on the workbench artifact list, whose concern\n * tabs outgrew the viewport).\n *\n * ## Why the bottom rule is a wrapper layer, not `border-b` on the list\n *\n * Becoming a scrollport is what forces the restructure: `overflow-x: auto`\n * makes `overflow-y` compute to a clipping value, and the old geometry —\n * `border-b` on the list with `-mb-px` triggers overlapping their 2px\n * indicator onto the 1px rule — needs the trigger to paint one pixel PAST\n * the list's content edge, which a scrollport clips. So the rule is drawn by\n * a non-scrolling absolutely-positioned layer in a wrapper, the triggers\n * drop the overlap trick, and the indicator's bottom pixel lands on the rule\n * because both sit on the wrapper's last pixel row. Same rendered result,\n * scroll-safe.\n *\n * The scrollbar itself is suppressed on every engine (`scrollbar-width` for\n * Firefox, the `::-webkit-scrollbar` pseudo elsewhere): a native horizontal\n * scrollbar under a tab strip — Windows most visibly — reads as a broken\n * layout, and the gradient affordances + wheel translation replace what it\n * afforded.\n */\n return (\n <div data-slot=\"tabs-list-scrollport\" className=\"relative w-full\">\n {/* The full-width rule lives OUTSIDE the masked strip, so the edge fade never eats it. */}\n <span aria-hidden=\"true\" className=\"pointer-events-none absolute inset-x-0 bottom-0 h-px bg-border\" />\n <TabsPrimitive.List\n ref={listRef}\n data-slot=\"tabs-list\"\n style={{ maskImage: fadeMask, WebkitMaskImage: fadeMask }}\n className={cn(\n \"relative flex w-full items-center gap-card overflow-x-auto overscroll-x-contain [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n className\n )}\n {...props}\n />\n {overflow.start && <TabsListSlideAffordance side=\"start\" onSlide={() => slideBy(-1)} />}\n {overflow.end && <TabsListSlideAffordance side=\"end\" onSlide={() => slideBy(1)} />}\n </div>\n )\n}\n\nfunction TabsTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>): React.JSX.Element {\n const isVertical = React.useContext(TabsOrientationContext) === 'vertical'\n const { getRecipe } = useUI()\n // Vertical rail → FILLED (soft fill on select); horizontal → UNDERLINE.\n const recipe = getRecipe(UIBehavior.SELECTABLE, isVertical ? SelectableVariant.FILLED : SelectableVariant.UNDERLINE)\n\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n \"inline-flex items-center gap-1.5 text-sm font-medium whitespace-nowrap [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n isVertical\n // Vertical: full-width, left-aligned rail item (FILLED recipe fills it).\n ? \"w-full justify-start rounded-md px-card-sm py-item\"\n // Horizontal: content-width underline tab (UNDERLINE recipe draws the\n // bottom border). No `-mb-px` overlap here: the list is a scrollport\n // (which would clip it) and the 1px rule is the wrapper's own layer,\n // sharing the wrapper's last pixel row with this indicator.\n : \"justify-center px-card-sm py-item\",\n // Style from the orientation-appropriate SELECTABLE recipe.\n recipe.base,\n recipe.states.focus,\n recipe.states.selected,\n recipe.states.disabled,\n recipe.motion.transition,\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>): React.JSX.Element {\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.TAB_PANEL}>\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n </Surface>\n )\n}\n\nexport const Tabs = createCompoundPreset<TabsCompound>(TabsRoot, { List: TabsList, Trigger: TabsTrigger, Content: TabsContent })\n"]}
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../../../src/components/sections/tabs.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,aAAa,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAExD,OAAO,EAEL,SAAS,EACT,gBAAgB,EAChB,oBAAoB,EACpB,EAAE,EACF,KAAK,EACL,OAAO,GACR,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAErH;;;;;;;;;;;GAWG;AACH,MAAM,sBAAsB,GAAG,KAAK,CAAC,aAAa,CAA4B,YAAY,CAAC,CAAA;AAE3F,SAAS,QAAQ,CAAC,EAChB,SAAS,EACT,WAAW,GAAG,YAAY,EAC1B,KAAK,EACL,GAAG,KAAK,EACmE;IAC3E,MAAM,QAAQ,GAAG,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAA;IACvE;;;;OAIG;IACH,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;IACpD,MAAM,aAAa,GAAG,KAAK,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IAC7F,OAAO,CACL,KAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ,YAC9C,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa,YAC7C,KAAC,aAAa,CAAC,IAAI,iBACP,MAAM,gBACJ,aAAa,EACzB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,EAAE,CAAC,qGAAqG,EAAE,SAAS,CAAC,KAC3H,KAAK,GACT,GACwB,GACI,CACnC,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,EAA6C;IAClF,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAAA;IAC7B,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IACpD,OAAO,CACL,4BACY,oBAAoB,eACnB,IAAI,EACf,SAAS,EAAE,EAAE,CACX,sFAAsF,EACtF,MAAM,CAAC,IAAI;QACX,2FAA2F;QAC3F,mCAAmC,CACpC,YAEA,KAAK,GACD,CACR,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,qBAAqB,CAAC,GAAwC;IACrE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;IAE5E,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACpC,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAA;QACtB,IAAI,CAAC,EAAE;YAAE,OAAM;QACf,kFAAkF;QAClF,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,GAAG,CAAC,CAAA;QAC/B,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,GAAG,CAAC,CAAA;QAC/D,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;IAC3F,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAET,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAA;QACtB,IAAI,CAAC,EAAE;YAAE,OAAM;QACf,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACxD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAA;QAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACpB,OAAO,GAAG,EAAE;YACV,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACxC,QAAQ,CAAC,UAAU,EAAE,CAAA;QACvB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;IAEjB,4EAA4E;IAC5E,4EAA4E;IAC5E,6DAA6D;IAC7D,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAEvB,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,yFAAyF;AACzF,MAAM,cAAc,GAAG,QAAQ,CAAA;AAE/B;;;;;;;;;;;;;GAaG;AACH,SAAS,YAAY,CAAC,QAA0C;IAC9D,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IACtD,MAAM,KAAK,GAAG;QACZ,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS;QACrE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,qBAAqB,cAAc,qBAAqB,CAAC,CAAC,CAAC,YAAY;KACvF,CAAA;IACD,OAAO,6BAA6B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAkD;IAChG,MAAM,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAA;IAC7D,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,CAAC,iBACA,MAAM,eACR,iBAAiB,eAChB,IAAI,EACf,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,EAChC,SAAS,EAAE,EAAE,CACX,sFAAsF,EACtF,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,qBAAqB,CAClE,YAED,KAAC,OAAO,IAAC,SAAS,EAAC,8EAA8E,GAAG,GAC7F,CACV,CAAA;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,EAChB,SAAS,EACT,GAAG,KAAK,EACwC;IAChD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,KAAK,UAAU,CAAA;IAC1E,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,SAAS,CAAC,SAAS,CAAA;IAC9E,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAA;IAClD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAE/C;;;;;;OAMG;IACH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAA;QAC1B,IAAI,CAAC,EAAE,IAAI,UAAU;YAAE,OAAM;QAC7B,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAE,EAAE;YACpC,IAAI,EAAE,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW;gBAAE,OAAM;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAA;YAC3F,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAM;YACvB,EAAE,CAAC,UAAU,IAAI,KAAK,CAAA;YACtB,KAAK,CAAC,cAAc,EAAE,CAAA;QACxB,CAAC,CAAA;QACD,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QACzD,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACvD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAEhB,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAEvC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,SAAiB,EAAE,EAAE;QACtD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAA;QAC1B,IAAI,CAAC,EAAE;YAAE,OAAM;QACf,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC,WAAW,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC7E,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CACL,KAAC,aAAa,CAAC,IAAI,iBACP,WAAW;YACrB,kEAAkE;YAClE,SAAS,EAAE,EAAE,CAAC,uDAAuD,EAAE,SAAS,CAAC,KAC7E,KAAK,GACT,CACH,CAAA;IACH,CAAC;IAED;;;;OAIG;IACH,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CACL,KAAC,aAAa,CAAC,IAAI,IACjB,GAAG,EAAE,OAAO,eACF,WAAW,EACrB,SAAS,EAAE,EAAE,CAAC,gDAAgD,EAAE,SAAS,CAAC,KACtE,KAAK,GACT,CACH,CAAA;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CACL,4BAAe,sBAAsB,EAAC,SAAS,EAAC,iBAAiB,aAE/D,8BAAkB,MAAM,EAAC,SAAS,EAAC,gEAAgE,GAAG,EACtG,KAAC,aAAa,CAAC,IAAI,IACjB,GAAG,EAAE,OAAO,eACF,WAAW,EACrB,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,EACzD,SAAS,EAAE,EAAE,CACX,sIAAsI,EACtI,SAAS,CACV,KACG,KAAK,GACT,EACD,QAAQ,CAAC,KAAK,IAAI,KAAC,uBAAuB,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAI,EACtF,QAAQ,CAAC,GAAG,IAAI,KAAC,uBAAuB,IAAC,IAAI,EAAC,KAAK,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAI,IAC9E,CACP,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,SAAS,EACT,KAAK,EACL,SAAS,GAAG,gBAAgB,CAAC,OAAO,EACpC,QAAQ,EACR,GAAG,KAAK,EAC2F;IACnG,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,KAAK,UAAU,CAAA;IAC1E,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,SAAS,CAAC,SAAS,CAAA;IAC9E,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,CAAA;IAC7B,6FAA6F;IAC7F,MAAM,OAAO,GAAG,UAAU;QACxB,CAAC,CAAC,iBAAiB,CAAC,MAAM;QAC1B,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAA;IACtE,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAExD,OAAO,CACL,MAAC,aAAa,CAAC,OAAO,iBACV,cAAc,EACxB,SAAS,EAAE,EAAE;QACX,qEAAqE;QACrE,qEAAqE;QACrE,sDAAsD;QACtD,yKAAyK,EACzK,UAAU;YACR,yEAAyE;YACzE,CAAC,CAAC,oDAAoD;YACtD,CAAC,CAAC,WAAW;gBACX,sEAAsE;gBACtE,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;gBACxC,sEAAsE;gBACtE,qEAAqE;gBACrE,qEAAqE;gBACrE,4DAA4D;gBAC5D,CAAC,CAAC,mCAAmC;QACzC,4DAA4D;QAC5D,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,MAAM,CAAC,KAAK,EACnB,MAAM,CAAC,MAAM,CAAC,QAAQ,EACtB,MAAM,CAAC,MAAM,CAAC,QAAQ,EACtB,MAAM,CAAC,MAAM,CAAC,UAAU,EACxB,SAAS,CACV,KACG,KAAK,aAER,QAAQ,EAER,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,IAAI,8BAAG,GAAG,EAAC,KAAC,gBAAgB,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAI,IAAG,IAC5E,CACzB,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EAC2C;IACnD,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,SAAS,CAAC,SAAS,CAAA;IAC9E;;;;OAIG;IACH,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CACL,KAAC,aAAa,CAAC,OAAO,iBACV,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,KACnD,KAAK,GACT,CACH,CAAA;IACH,CAAC;IACD,OAAO,CACL,KAAC,OAAO,IAAC,OAAO,QAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,SAAS,YACvE,KAAC,aAAa,CAAC,OAAO,iBACV,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,KAC3C,KAAK,GACT,GACM,CACX,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAG,oBAAoB,CAAe,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\n\nimport {\n TabsCompound,\n TabsLevel,\n TabsLevelContext,\n createCompoundPreset,\n cn,\n useUI,\n Surface,\n} from '@wildo-ai/saas-frontend-lib';\nimport type { TabsProps, TabsTriggerProps } from '@wildo-ai/saas-frontend-lib';\n\nimport { IndicatorVariant, SelectableVariant, SurfaceVariant, UIBehavior } from \"@wildo-ai/presets-components-models\"\n\n/**\n * Orientation shared from TabsRoot down to List/Trigger so each sub-component can\n * choose the right `SELECTABLE` recipe. Radix exposes orientation only as a\n * `data-orientation` DOM attribute, but a recipe's utility strings (which already\n * carry `data-[state=active]:…`) can't be re-scoped per orientation from a class\n * list — so the choice is made in JS here.\n *\n * Horizontal tabs use `UNDERLINE` (a bottom-border indicator on separated items —\n * the canonical modern-SaaS navigation-tab look: \"separated = tabs, connected by\n * a track = segmented control\"). The vertical rail keeps `FILLED` (a soft fill on\n * the selected rail item).\n */\nconst TabsOrientationContext = React.createContext<'horizontal' | 'vertical'>('horizontal')\n\nfunction TabsRoot({\n className,\n orientation = 'horizontal',\n level,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root> & Pick<TabsProps, 'level'>): React.JSX.Element {\n const resolved = orientation === 'vertical' ? 'vertical' : 'horizontal'\n /*\n * The LEVEL defaults from nesting (`TabsLevel`): inside another tab set this one is SECONDARY\n * unless the caller says otherwise. Read from the contract's own context so every preset —\n * and the section pipeline, which never names a level — takes part in the same rule.\n */\n const enclosing = React.useContext(TabsLevelContext)\n const resolvedLevel = level ?? (enclosing === null ? TabsLevel.PRIMARY : TabsLevel.SECONDARY)\n return (\n <TabsOrientationContext.Provider value={resolved}>\n <TabsLevelContext.Provider value={resolvedLevel}>\n <TabsPrimitive.Root\n data-slot=\"tabs\"\n data-level={resolvedLevel}\n orientation={orientation}\n className={cn(\"flex flex-col gap-element data-[orientation=vertical]:flex-row data-[orientation=vertical]:gap-card\", className)}\n {...props}\n />\n </TabsLevelContext.Provider>\n </TabsOrientationContext.Provider>\n )\n}\n\n/**\n * The COUNT on a trigger — how many things are behind the tab — through the theme's INDICATOR\n * recipe so its tone is the same tone a badge of that kind wears anywhere else. Nothing renders for\n * zero: an empty count is not information (see the contract). `tabular-nums` so `2` and `14` sit\n * on the same baseline as the strip re-counts.\n */\nfunction TabsTriggerCount({ count, tone }: { count: number; tone: IndicatorVariant }): React.JSX.Element {\n const { getRecipe } = useUI()\n const recipe = getRecipe(UIBehavior.INDICATOR, tone)\n return (\n <span\n data-slot=\"tabs-trigger-count\"\n data-tone={tone}\n className={cn(\n \"inline-flex min-w-5 items-center justify-center font-semibold leading-4 tabular-nums\",\n recipe.base,\n // The recipe's chip geometry is for a badge; a count in a tab is a smaller, rounder thing.\n \"rounded-full px-1.5 py-0 text-2xs\",\n )}\n >\n {count}\n </span>\n )\n}\n\n/**\n * Overflow state of the horizontal scrollport — which edges have more content.\n *\n * Updated from three signals, because each misses a case the others catch: the\n * `scroll` listener (user scrolled), a `ResizeObserver` on the list (viewport\n * grew/shrank — the common \"window resized\" case), and a per-render effect\n * (tab COUNT changed — children resizing does not move the list's own box, so\n * the observer cannot see it).\n */\nfunction useHorizontalOverflow(ref: React.RefObject<HTMLElement | null>): { start: boolean; end: boolean } {\n const [overflow, setOverflow] = React.useState({ start: false, end: false })\n\n const update = React.useCallback(() => {\n const el = ref.current\n if (!el) return\n // 1px slack: fractional layout widths make scrollLeft/scrollWidth disagree by <1.\n const start = el.scrollLeft > 1\n const end = el.scrollLeft + el.clientWidth < el.scrollWidth - 1\n setOverflow((prev) => (prev.start === start && prev.end === end ? prev : { start, end }))\n }, [ref])\n\n React.useEffect(() => {\n const el = ref.current\n if (!el) return\n el.addEventListener('scroll', update, { passive: true })\n const observer = new ResizeObserver(update)\n observer.observe(el)\n return () => {\n el.removeEventListener('scroll', update)\n observer.disconnect()\n }\n }, [ref, update])\n\n // No dependency array on purpose — re-measures after every render, which is\n // what catches content-only changes (a tab added/removed, a label resolving\n // from i18n). Three numeric reads; cheap enough not to gate.\n React.useEffect(update)\n\n return overflow\n}\n\n/** Width of each fade/affordance zone. One constant so the mask and the button agree. */\nconst TABS_FADE_ZONE = '2.5rem'\n\n/**\n * The edge fade, as a MASK on the strip rather than a gradient painted over it.\n *\n * A painted gradient has to name the colour it fades FROM, and no colour is\n * right: measured on the workbench, the strip sits on `bg-surface-raised`\n * (oklch 0.208) while `--background` is oklch 0.129, so an overlay fading to\n * the background token washed a visibly wrong band across the strip — and it\n * would be wrong differently on every surface a tab strip can sit on (card,\n * dialog, panel) and in every theme.\n *\n * Masking fades the CONTENT to transparency instead, revealing whatever is\n * actually behind it. It needs no colour token, so it is correct on every\n * surface and every theme by construction.\n */\nfunction edgeFadeMask(overflow: { start: boolean; end: boolean }): string | undefined {\n if (!overflow.start && !overflow.end) return undefined\n const stops = [\n overflow.start ? `transparent 0, black ${TABS_FADE_ZONE}` : 'black 0',\n overflow.end ? `black calc(100% - ${TABS_FADE_ZONE}), transparent 100%` : 'black 100%',\n ]\n return `linear-gradient(to right, ${stops.join(', ')})`\n}\n\n/**\n * One edge's slide affordance: the DISCREET control the design asks for — a\n * quiet chevron over the faded zone, with no box and no background of its own\n * (the mask above is what makes room for it). Mouse-only by intent\n * (`aria-hidden`, unfocusable): keyboard users already reach every tab through\n * the tab list's roving arrow-key focus, so exposing this to the tab order\n * would add a stop that does nothing arrows don't.\n */\nfunction TabsListSlideAffordance({ side, onSlide }: { side: 'start' | 'end'; onSlide: () => void }): React.JSX.Element {\n const Chevron = side === 'start' ? ChevronLeft : ChevronRight\n return (\n <button\n type=\"button\"\n tabIndex={-1}\n aria-hidden=\"true\"\n data-slot=\"tabs-list-slide\"\n data-side={side}\n onClick={onSlide}\n style={{ width: TABS_FADE_ZONE }}\n className={cn(\n \"absolute inset-y-0 z-10 flex cursor-pointer items-center border-0 bg-transparent p-0\",\n side === 'start' ? \"left-0 justify-start\" : \"right-0 justify-end\",\n )}\n >\n <Chevron className=\"size-4 text-muted-foreground opacity-60 transition-opacity hover:opacity-100\" />\n </button>\n )\n}\n\nfunction TabsList({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>): React.JSX.Element {\n const isVertical = React.useContext(TabsOrientationContext) === 'vertical'\n const isSecondary = React.useContext(TabsLevelContext) === TabsLevel.SECONDARY\n const listRef = React.useRef<HTMLDivElement>(null)\n const overflow = useHorizontalOverflow(listRef)\n\n /*\n * Vertical wheel input slides the strip horizontally — the strip is a\n * one-axis surface, so a wheel over it can only mean \"move along it\". A\n * NATIVE non-passive listener, not React `onWheel`: React registers wheel\n * passively at the root, so `preventDefault()` there is ignored and every\n * translated tick would also scroll the page behind the strip.\n */\n React.useEffect(() => {\n const el = listRef.current\n if (!el || isVertical) return\n const onWheel = (event: WheelEvent) => {\n if (el.scrollWidth <= el.clientWidth) return\n const delta = Math.abs(event.deltaX) > Math.abs(event.deltaY) ? event.deltaX : event.deltaY\n if (delta === 0) return\n el.scrollLeft += delta\n event.preventDefault()\n }\n el.addEventListener('wheel', onWheel, { passive: false })\n return () => el.removeEventListener('wheel', onWheel)\n }, [isVertical])\n\n const fadeMask = edgeFadeMask(overflow)\n\n const slideBy = React.useCallback((direction: 1 | -1) => {\n const el = listRef.current\n if (!el) return\n el.scrollBy({ left: direction * el.clientWidth * 0.6, behavior: 'smooth' })\n }, [])\n\n if (isVertical) {\n return (\n <TabsPrimitive.List\n data-slot=\"tabs-list\"\n // Vertical: clean nav rail (column of items, no boxed container).\n className={cn(\"flex flex-col items-stretch justify-start gap-item-xs\", className)}\n {...props}\n />\n )\n }\n\n /*\n * SECONDARY: a wrapping row of pills with NO rule beneath it. The rule is what makes a strip read\n * as the page's navigation; a nested set must not claim that, and pills wrap rather than scroll\n * because a record's seven tabs on a narrow pane are better on two lines than behind a fade.\n */\n if (isSecondary) {\n return (\n <TabsPrimitive.List\n ref={listRef}\n data-slot=\"tabs-list\"\n className={cn(\"flex w-full flex-wrap items-center gap-item-xs\", className)}\n {...props}\n />\n )\n }\n\n /*\n * Horizontal: underline tab bar that SCROLLS when it overflows, instead of\n * widening the page (measured on the workbench artifact list, whose concern\n * tabs outgrew the viewport).\n *\n * ## Why the bottom rule is a wrapper layer, not `border-b` on the list\n *\n * Becoming a scrollport is what forces the restructure: `overflow-x: auto`\n * makes `overflow-y` compute to a clipping value, and the old geometry —\n * `border-b` on the list with `-mb-px` triggers overlapping their 2px\n * indicator onto the 1px rule — needs the trigger to paint one pixel PAST\n * the list's content edge, which a scrollport clips. So the rule is drawn by\n * a non-scrolling absolutely-positioned layer in a wrapper, the triggers\n * drop the overlap trick, and the indicator's bottom pixel lands on the rule\n * because both sit on the wrapper's last pixel row. Same rendered result,\n * scroll-safe.\n *\n * The scrollbar itself is suppressed on every engine (`scrollbar-width` for\n * Firefox, the `::-webkit-scrollbar` pseudo elsewhere): a native horizontal\n * scrollbar under a tab strip — Windows most visibly — reads as a broken\n * layout, and the gradient affordances + wheel translation replace what it\n * afforded.\n */\n return (\n <div data-slot=\"tabs-list-scrollport\" className=\"relative w-full\">\n {/* The full-width rule lives OUTSIDE the masked strip, so the edge fade never eats it. */}\n <span aria-hidden=\"true\" className=\"pointer-events-none absolute inset-x-0 bottom-0 h-px bg-border\" />\n <TabsPrimitive.List\n ref={listRef}\n data-slot=\"tabs-list\"\n style={{ maskImage: fadeMask, WebkitMaskImage: fadeMask }}\n className={cn(\n \"relative flex w-full items-center gap-card overflow-x-auto overscroll-x-contain [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\",\n className\n )}\n {...props}\n />\n {overflow.start && <TabsListSlideAffordance side=\"start\" onSlide={() => slideBy(-1)} />}\n {overflow.end && <TabsListSlideAffordance side=\"end\" onSlide={() => slideBy(1)} />}\n </div>\n )\n}\n\nfunction TabsTrigger({\n className,\n count,\n countTone = IndicatorVariant.NEUTRAL,\n children,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger> & Pick<TabsTriggerProps, 'count' | 'countTone'>): React.JSX.Element {\n const isVertical = React.useContext(TabsOrientationContext) === 'vertical'\n const isSecondary = React.useContext(TabsLevelContext) === TabsLevel.SECONDARY\n const { getRecipe } = useUI()\n // Vertical rail → FILLED (soft fill on select); horizontal → UNDERLINE; a nested set → PILL.\n const variant = isVertical\n ? SelectableVariant.FILLED\n : isSecondary ? SelectableVariant.PILL : SelectableVariant.UNDERLINE\n const recipe = getRecipe(UIBehavior.SELECTABLE, variant)\n\n return (\n <TabsPrimitive.Trigger\n data-slot=\"tabs-trigger\"\n className={cn(\n // `cursor-pointer` sits here rather than in the recipe, matching the\n // accordion trigger: an element that switches the visible panel must\n // read as clickable whatever the theme dresses it in.\n \"inline-flex cursor-pointer items-center gap-1.5 text-sm font-medium whitespace-nowrap [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n isVertical\n // Vertical: full-width, left-aligned rail item (FILLED recipe fills it).\n ? \"w-full justify-start rounded-md px-card-sm py-item\"\n : isSecondary\n // Nested: a small pill (the PILL recipe's `sm` size draws the shape).\n ? cn(\"justify-center\", recipe.sizes?.sm)\n // Horizontal: content-width underline tab (UNDERLINE recipe draws the\n // bottom border). No `-mb-px` overlap here: the list is a scrollport\n // (which would clip it) and the 1px rule is the wrapper's own layer,\n // sharing the wrapper's last pixel row with this indicator.\n : \"justify-center px-card-sm py-item\",\n // Style from the orientation-appropriate SELECTABLE recipe.\n recipe.base,\n recipe.states.focus,\n recipe.states.selected,\n recipe.states.disabled,\n recipe.motion.transition,\n className\n )}\n {...props}\n >\n {children}\n {/* The space is the accessible name's separator: without it \"Your move\" and \"2\" read as one word. */}\n {count !== undefined && count > 0 && <>{' '}<TabsTriggerCount count={count} tone={countTone} /></>}\n </TabsPrimitive.Trigger>\n )\n}\n\nfunction TabsContent({\n className,\n ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>): React.JSX.Element {\n const isSecondary = React.useContext(TabsLevelContext) === TabsLevel.SECONDARY\n /*\n * A nested set draws NO panel surface: the enclosing panel already frames it, and a `TAB_PANEL`\n * inside a `TAB_PANEL` is the frame-in-a-frame the level exists to remove. Plain content, and\n * a little air under the pills.\n */\n if (isSecondary) {\n return (\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 pt-item outline-none\", className)}\n {...props}\n />\n )\n }\n return (\n <Surface asChild emitPolicyVars={false} variant={SurfaceVariant.TAB_PANEL}>\n <TabsPrimitive.Content\n data-slot=\"tabs-content\"\n className={cn(\"flex-1 outline-none\", className)}\n {...props}\n />\n </Surface>\n )\n}\n\nexport const Tabs = createCompoundPreset<TabsCompound>(TabsRoot, { List: TabsList, Trigger: TabsTrigger, Content: TabsContent })\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/sections/tabs.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"tabs.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/sections/tabs.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../../../src/components/typography/heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE/D,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,KAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkB3F;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,KAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkB9F"}
1
+ {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../../../../src/components/typography/heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAE/D,wBAAgB,OAAO,CAAC,EAAE,SAAS,EAAE,KAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkB3F;AAED,wBAAgB,UAAU,CAAC,EAAE,SAAS,EAAE,KAAS,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkB9F"}
@@ -1 +1 @@
1
- {"version":3,"file":"heading.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/typography/heading.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAAO,CAAC;AAG/D,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"heading.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/typography/heading.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,qBAAqB,EAAE,mBAAmB,EAAO,CAAC;AAG/D,eAAO,MAAM,wBAAwB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../../src/components/typography/label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAE7D,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,GAAG,KAAK,EACT,EAAE,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmBhC;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../../../src/components/typography/label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAE7D,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,GAAG,KAAK,EACT,EAAE,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmBhC;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"label.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/typography/label.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"label.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/typography/label.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../../src/components/typography/link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AA4C7D,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,yBAAyB,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CA2E7F,CAAC;AAGF,OAAO,EAAE,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../../../src/components/typography/link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAkD7D,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,yBAAyB,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,CA2E7F,CAAC;AAGF,OAAO,EAAE,IAAI,EAAE,CAAA"}
@@ -20,7 +20,13 @@ const linkUnderlineClasses = {
20
20
  [LinkVariants_Underline.ALWAYS]: "underline underline-offset-4 decoration-current",
21
21
  [LinkVariants_Underline.NONE]: "no-underline",
22
22
  };
23
- /** Size classes */
23
+ /**
24
+ * Size classes, applied ONLY when a size is requested.
25
+ *
26
+ * An unset size adds no font-size class, so the link takes the size of the text it sits in. A link is
27
+ * inline typography: defaulting it to `text-base` made every "Forgot password?" / "Sign up" render one
28
+ * step larger than the `text-sm` body copy around it.
29
+ */
24
30
  const linkSizeClasses = {
25
31
  [ButtonSize.XS]: "text-xs",
26
32
  [ButtonSize.SM]: "text-sm",
@@ -41,7 +47,7 @@ function isHttpUrl(h) {
41
47
  function isHashOrRelative(h) {
42
48
  return !!h && (h.startsWith("#") || h.startsWith("/"));
43
49
  }
44
- const Link = React.forwardRef(({ asChild, className, variant = LinkVariants_Variant.DEFAULT, underline = LinkVariants_Underline.HOVER, size = ButtonSize.MD, weight = LinkVariants_Weight.MEDIUM, href, external, externalIcon, leftIcon, rightIcon, disabled, onClick, ...props }, ref) => {
50
+ const Link = React.forwardRef(({ asChild, className, variant = LinkVariants_Variant.DEFAULT, underline = LinkVariants_Underline.HOVER, size, weight = LinkVariants_Weight.MEDIUM, href, external, externalIcon, leftIcon, rightIcon, disabled, onClick, ...props }, ref) => {
45
51
  const Comp = asChild ? Slot : "a";
46
52
  const { getRecipe } = useUI();
47
53
  const recipe = getRecipe(UIBehavior.INTERACTIVE, InteractiveVariant.LINK);
@@ -66,7 +72,7 @@ const Link = React.forwardRef(({ asChild, className, variant = LinkVariants_Vari
66
72
  // Color variant
67
73
  linkColorClasses[variant],
68
74
  // Underline, size, weight
69
- linkUnderlineClasses[underline], linkSizeClasses[size], linkWeightClasses[weight], className), href: asChild ? undefined : href, target: target, rel: rel, "aria-disabled": disabled || undefined, tabIndex: disabled ? -1 : props.tabIndex, onClick: handleClick, ...props, children: [leftIcon ? _jsx("span", { className: "shrink-0", children: leftIcon }) : null, _jsx("span", { className: "truncate", children: props.children }), isExternal && externalIcon ? (_jsx("span", { "aria-hidden": "true", className: "shrink-0", children: externalIcon })) : null, rightIcon ? _jsx("span", { className: "shrink-0", children: rightIcon }) : null] }));
75
+ linkUnderlineClasses[underline], size !== undefined && linkSizeClasses[size], linkWeightClasses[weight], className), href: asChild ? undefined : href, target: target, rel: rel, "aria-disabled": disabled || undefined, tabIndex: disabled ? -1 : props.tabIndex, onClick: handleClick, ...props, children: [leftIcon ? _jsx("span", { className: "shrink-0", children: leftIcon }) : null, _jsx("span", { className: "truncate", children: props.children }), isExternal && externalIcon ? (_jsx("span", { "aria-hidden": "true", className: "shrink-0", children: externalIcon })) : null, rightIcon ? _jsx("span", { className: "shrink-0", children: rightIcon }) : null] }));
70
76
  });
71
77
  Link.displayName = "Link";
72
78
  export { Link };
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sourceRoot":"","sources":["../../../../../src/components/typography/link.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cn, useUI } from \"@wildo-ai/saas-frontend-lib\";\nimport { FrontendComponentType, InteractiveVariant, UIBehavior } from \"@wildo-ai/presets-components-models\";\nimport { LinkVariants_Variant, LinkVariants_Underline, LinkVariants_Weight } from '@wildo-ai/saas-frontend-lib';\nimport type { LinkProps } from '@wildo-ai/saas-frontend-lib';\nimport { ButtonSize } from '@wildo-ai/presets-components-models';\n\n/** Color variant → token-based text color + hover */\nconst linkColorClasses: Record<LinkVariants_Variant, string> = {\n [LinkVariants_Variant.DEFAULT]: \"text-primary hover:text-primary/80\",\n [LinkVariants_Variant.MUTED]: \"text-muted-foreground hover:text-foreground\",\n [LinkVariants_Variant.CONTRAST]: \"text-foreground hover:text-foreground/80\",\n [LinkVariants_Variant.DESTRUCTIVE]: \"text-destructive hover:text-destructive/80\",\n [LinkVariants_Variant.SUCCESS]: \"text-success hover:text-success/80\",\n [LinkVariants_Variant.INHERIT]: \"text-inherit hover:opacity-[var(--opacity-hover)]\",\n}\n\n/** Underline style classes */\nconst linkUnderlineClasses: Record<LinkVariants_Underline, string> = {\n [LinkVariants_Underline.HOVER]: \"underline underline-offset-4 decoration-current/40 hover:decoration-current\",\n [LinkVariants_Underline.ALWAYS]: \"underline underline-offset-4 decoration-current\",\n [LinkVariants_Underline.NONE]: \"no-underline\",\n}\n\n/** Size classes */\nconst linkSizeClasses: Record<ButtonSize, string> = {\n [ButtonSize.XS]: \"text-xs\",\n [ButtonSize.SM]: \"text-sm\",\n [ButtonSize.MD]: \"text-base\",\n [ButtonSize.LG]: \"text-lg\",\n [ButtonSize.ICON]: \"text-base\",\n [ButtonSize.ICON_SM]: \"text-sm\",\n}\n\n/** Weight classes */\nconst linkWeightClasses: Record<LinkVariants_Weight, string> = {\n [LinkVariants_Weight.NORMAL]: \"font-normal\",\n [LinkVariants_Weight.MEDIUM]: \"font-medium\",\n [LinkVariants_Weight.SEMIBOLD]: \"font-semibold\",\n}\n\nfunction isHttpUrl(h?: string) {\n return !!h && (h.startsWith(\"http://\") || h.startsWith(\"https://\"));\n}\nfunction isHashOrRelative(h?: string) {\n return !!h && (h.startsWith(\"#\") || h.startsWith(\"/\"));\n}\n\nconst Link: React.ForwardRefExoticComponent<LinkProps & React.RefAttributes<HTMLAnchorElement>> = React.forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n asChild,\n className,\n variant = LinkVariants_Variant.DEFAULT,\n underline = LinkVariants_Underline.HOVER,\n size = ButtonSize.MD,\n weight = LinkVariants_Weight.MEDIUM,\n href,\n external,\n externalIcon,\n leftIcon,\n rightIcon,\n disabled,\n onClick,\n ...props\n },\n ref\n ): React.JSX.Element => {\n const Comp = asChild ? Slot : \"a\";\n const { getRecipe } = useUI();\n const recipe = getRecipe(UIBehavior.INTERACTIVE, InteractiveVariant.LINK);\n\n // External detection: only auto-newtab for http(s) absolute URLs\n const isExternal = external ?? (isHttpUrl(href) && !isHashOrRelative(href));\n const target = isExternal ? \"_blank\" : props.target;\n const rel =\n isExternal ? [\"noopener\", \"noreferrer\", props.rel].filter(Boolean).join(\" \") : props.rel;\n\n // Prevent navigation when disabled\n function handleClick(e: React.MouseEvent<HTMLAnchorElement>) {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n }\n\n return (\n <Comp\n ref={ref}\n className={cn(\n // Structure\n \"inline-flex items-center gap-item-xs\",\n // Style from INTERACTIVE.LINK recipe\n recipe.states.focus,\n recipe.states.disabled,\n recipe.motion.transition,\n // Color variant\n linkColorClasses[variant],\n // Underline, size, weight\n linkUnderlineClasses[underline],\n linkSizeClasses[size],\n linkWeightClasses[weight],\n className\n )}\n href={asChild ? undefined : href}\n target={target}\n rel={rel}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : props.tabIndex}\n onClick={handleClick}\n {...props}\n >\n {leftIcon ? <span className=\"shrink-0\">{leftIcon}</span> : null}\n <span className=\"truncate\">{props.children}</span>\n {isExternal && externalIcon ? (\n <span aria-hidden=\"true\" className=\"shrink-0\">{externalIcon}</span>\n ) : null}\n {rightIcon ? <span className=\"shrink-0\">{rightIcon}</span> : null}\n </Comp>\n );\n }\n);\nLink.displayName = \"Link\";\n\nexport { Link }\n"]}
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../../../../src/components/typography/link.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cn, useUI } from \"@wildo-ai/saas-frontend-lib\";\nimport { FrontendComponentType, InteractiveVariant, UIBehavior } from \"@wildo-ai/presets-components-models\";\nimport { LinkVariants_Variant, LinkVariants_Underline, LinkVariants_Weight } from '@wildo-ai/saas-frontend-lib';\nimport type { LinkProps } from '@wildo-ai/saas-frontend-lib';\nimport { ButtonSize } from '@wildo-ai/presets-components-models';\n\n/** Color variant → token-based text color + hover */\nconst linkColorClasses: Record<LinkVariants_Variant, string> = {\n [LinkVariants_Variant.DEFAULT]: \"text-primary hover:text-primary/80\",\n [LinkVariants_Variant.MUTED]: \"text-muted-foreground hover:text-foreground\",\n [LinkVariants_Variant.CONTRAST]: \"text-foreground hover:text-foreground/80\",\n [LinkVariants_Variant.DESTRUCTIVE]: \"text-destructive hover:text-destructive/80\",\n [LinkVariants_Variant.SUCCESS]: \"text-success hover:text-success/80\",\n [LinkVariants_Variant.INHERIT]: \"text-inherit hover:opacity-[var(--opacity-hover)]\",\n}\n\n/** Underline style classes */\nconst linkUnderlineClasses: Record<LinkVariants_Underline, string> = {\n [LinkVariants_Underline.HOVER]: \"underline underline-offset-4 decoration-current/40 hover:decoration-current\",\n [LinkVariants_Underline.ALWAYS]: \"underline underline-offset-4 decoration-current\",\n [LinkVariants_Underline.NONE]: \"no-underline\",\n}\n\n/**\n * Size classes, applied ONLY when a size is requested.\n *\n * An unset size adds no font-size class, so the link takes the size of the text it sits in. A link is\n * inline typography: defaulting it to `text-base` made every \"Forgot password?\" / \"Sign up\" render one\n * step larger than the `text-sm` body copy around it.\n */\nconst linkSizeClasses: Record<ButtonSize, string> = {\n [ButtonSize.XS]: \"text-xs\",\n [ButtonSize.SM]: \"text-sm\",\n [ButtonSize.MD]: \"text-base\",\n [ButtonSize.LG]: \"text-lg\",\n [ButtonSize.ICON]: \"text-base\",\n [ButtonSize.ICON_SM]: \"text-sm\",\n}\n\n/** Weight classes */\nconst linkWeightClasses: Record<LinkVariants_Weight, string> = {\n [LinkVariants_Weight.NORMAL]: \"font-normal\",\n [LinkVariants_Weight.MEDIUM]: \"font-medium\",\n [LinkVariants_Weight.SEMIBOLD]: \"font-semibold\",\n}\n\nfunction isHttpUrl(h?: string) {\n return !!h && (h.startsWith(\"http://\") || h.startsWith(\"https://\"));\n}\nfunction isHashOrRelative(h?: string) {\n return !!h && (h.startsWith(\"#\") || h.startsWith(\"/\"));\n}\n\nconst Link: React.ForwardRefExoticComponent<LinkProps & React.RefAttributes<HTMLAnchorElement>> = React.forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n asChild,\n className,\n variant = LinkVariants_Variant.DEFAULT,\n underline = LinkVariants_Underline.HOVER,\n size,\n weight = LinkVariants_Weight.MEDIUM,\n href,\n external,\n externalIcon,\n leftIcon,\n rightIcon,\n disabled,\n onClick,\n ...props\n },\n ref\n ): React.JSX.Element => {\n const Comp = asChild ? Slot : \"a\";\n const { getRecipe } = useUI();\n const recipe = getRecipe(UIBehavior.INTERACTIVE, InteractiveVariant.LINK);\n\n // External detection: only auto-newtab for http(s) absolute URLs\n const isExternal = external ?? (isHttpUrl(href) && !isHashOrRelative(href));\n const target = isExternal ? \"_blank\" : props.target;\n const rel =\n isExternal ? [\"noopener\", \"noreferrer\", props.rel].filter(Boolean).join(\" \") : props.rel;\n\n // Prevent navigation when disabled\n function handleClick(e: React.MouseEvent<HTMLAnchorElement>) {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n onClick?.(e);\n }\n\n return (\n <Comp\n ref={ref}\n className={cn(\n // Structure\n \"inline-flex items-center gap-item-xs\",\n // Style from INTERACTIVE.LINK recipe\n recipe.states.focus,\n recipe.states.disabled,\n recipe.motion.transition,\n // Color variant\n linkColorClasses[variant],\n // Underline, size, weight\n linkUnderlineClasses[underline],\n size !== undefined && linkSizeClasses[size],\n linkWeightClasses[weight],\n className\n )}\n href={asChild ? undefined : href}\n target={target}\n rel={rel}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : props.tabIndex}\n onClick={handleClick}\n {...props}\n >\n {leftIcon ? <span className=\"shrink-0\">{leftIcon}</span> : null}\n <span className=\"truncate\">{props.children}</span>\n {isExternal && externalIcon ? (\n <span aria-hidden=\"true\" className=\"shrink-0\">{externalIcon}</span>\n ) : null}\n {rightIcon ? <span className=\"shrink-0\">{rightIcon}</span> : null}\n </Comp>\n );\n }\n);\nLink.displayName = \"Link\";\n\nexport { Link }\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"link.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/typography/link.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"link.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/typography/link.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -6,7 +6,7 @@ export { TextVariant, TextSize };
6
6
  type PresetTextProps = TextProps & {
7
7
  truncate?: boolean | TextTruncationStrategy;
8
8
  };
9
- export declare function Text({ className, variant, size, as: Tag, truncate, children, style, ...props }: PresetTextProps): React.JSX.Element;
9
+ export declare function Text({ className, variant, size, typography, as: Tag, truncate, children, style, ...props }: PresetTextProps): React.JSX.Element;
10
10
  export declare function TextLink({ className, ...props }: React.ComponentPropsWithoutRef<typeof Link>): React.JSX.Element;
11
11
  export declare function Strong({ className, ...props }: React.ComponentPropsWithoutRef<'strong'>): React.JSX.Element;
12
12
  export declare function Code({ className, ...props }: React.ComponentPropsWithoutRef<'code'>): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/components/typography/text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAA+B,IAAI,EAAiB,MAAM,6BAA6B,CAAA;AAC9F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAyB,QAAQ,EAAE,KAAK,sBAAsB,EAAE,WAAW,EAAiC,MAAM,qCAAqC,CAAA;AAE9J,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;AAGhC,KAAK,eAAe,GAAG,SAAS,GAAG;IACjC,QAAQ,CAAC,EAAE,OAAO,GAAG,sBAAsB,CAAC;CAC7C,CAAC;AA6FF,wBAAgB,IAAI,CAAC,EACnB,SAAS,EACT,OAA6B,EAC7B,IAAoB,EACpB,EAAE,EAAE,GAAS,EACb,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA+CrC;AAED,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAUhH;AAED,wBAAgB,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE3G;AAED,wBAAgB,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAavG"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../../src/components/typography/text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAA+B,IAAI,EAAiB,MAAM,6BAA6B,CAAA;AAC9F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAyB,QAAQ,EAAE,KAAK,sBAAsB,EAAE,WAAW,EAAiC,MAAM,qCAAqC,CAAA;AAE9J,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;AAGhC,KAAK,eAAe,GAAG,SAAS,GAAG;IACjC,QAAQ,CAAC,EAAE,OAAO,GAAG,sBAAsB,CAAC;CAC7C,CAAC;AA8FF,wBAAgB,IAAI,CAAC,EACnB,SAAS,EACT,OAA6B,EAC7B,IAAoB,EACpB,UAAmC,EACnC,EAAE,EAAE,GAAS,EACb,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA+CrC;AAED,wBAAgB,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAUhH;AAED,wBAAgB,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAE3G;AAED,wBAAgB,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAavG"}
@@ -5,6 +5,7 @@ export { TextVariant, TextSize };
5
5
  const textVariantColors = {
6
6
  [TextVariant.DEFAULT]: "text-foreground",
7
7
  [TextVariant.MUTED]: "text-muted-foreground",
8
+ [TextVariant.SUBTLE]: "text-foreground-subtle",
8
9
  [TextVariant.CONTRAST]: "text-foreground",
9
10
  [TextVariant.DESTRUCTIVE]: "text-destructive",
10
11
  [TextVariant.SUCCESS]: "text-success",
@@ -87,10 +88,10 @@ function multilineClampStyle(value, style) {
87
88
  ...style,
88
89
  };
89
90
  }
90
- export function Text({ className, variant = TextVariant.DEFAULT, size = TextSize.BASE, as: Tag = 'p', truncate, children, style, ...props }) {
91
+ export function Text({ className, variant = TextVariant.DEFAULT, size = TextSize.BASE, typography = TypographyVariant.BODY, as: Tag = 'p', truncate, children, style, ...props }) {
91
92
  const { getRecipe } = useUI();
92
93
  const policy = useSurfacePolicy();
93
- const recipe = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.BODY);
94
+ const recipe = getRecipe(UIBehavior.TYPOGRAPHY, typography);
94
95
  const resolvedTruncation = resolveTextTruncation(truncate, policy.content?.textTruncation);
95
96
  // A single-line truncation (`ellipsis-line` → `truncate`/`white-space:nowrap`,
96
97
  // or `fade`) is contradictory with a WRAP strategy: a `text-wrap`/`text-balance`
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../../../src/components/typography/text.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react'\nimport { cn, useSurfacePolicy, useUI, Link, TruncatedText } from '@wildo-ai/saas-frontend-lib'\nimport type { TextProps } from '@wildo-ai/saas-frontend-lib'\nimport { FrontendComponentType, TextSize, type TextTruncationStrategy, TextVariant, TypographyVariant, UIBehavior } from '@wildo-ai/presets-components-models'\n\nexport { TextVariant, TextSize }\n\ntype ResolvedTextTruncation = TextTruncationStrategy | 'reset';\ntype PresetTextProps = TextProps & {\n truncate?: boolean | TextTruncationStrategy;\n};\n\nconst textVariantColors: Record<TextVariant, string> = {\n [TextVariant.DEFAULT]: \"text-foreground\",\n [TextVariant.MUTED]: \"text-muted-foreground\",\n [TextVariant.CONTRAST]: \"text-foreground\",\n [TextVariant.DESTRUCTIVE]: \"text-destructive\",\n [TextVariant.SUCCESS]: \"text-success\",\n [TextVariant.INHERIT]: \"text-inherit\",\n}\n\n/**\n * Maps `TextSize` to Tailwind v4 utilities. These resolve to\n * `var(--font-size-xs|sm|lg)` via the `@theme inline` mapping, so size\n * tokens defined at runtime through `applyTypographyConfiguration`\n * propagate automatically. `BASE` emits no class — the body recipe wins.\n */\nconst textSizeClasses: Record<TextSize, string> = {\n [TextSize.XXS]: \"text-2xs\",\n [TextSize.XS]: \"text-xs\",\n [TextSize.SM]: \"text-sm\",\n [TextSize.BASE]: \"\",\n [TextSize.LG]: \"text-lg\",\n}\n\nfunction resolveTextTruncation(\n truncate: boolean | TextTruncationStrategy | undefined,\n policyValue: ResolvedTextTruncation | undefined,\n): TextTruncationStrategy | undefined {\n if (truncate === true) return 'ellipsis-line';\n if (truncate === false) return 'none';\n if (policyValue === 'reset') return undefined;\n return truncate ?? policyValue;\n}\n\nfunction textTruncationClass(value: TextTruncationStrategy | undefined): string | undefined {\n if (!value || value === 'none') return undefined;\n if (value === 'ellipsis-line') return 'min-w-0 truncate';\n if (value.startsWith('ellipsis-multiline:')) return 'overflow-hidden';\n if (value === 'fade') return 'min-w-0 overflow-hidden whitespace-nowrap';\n return undefined;\n}\n\nfunction textWrapClass(value: string | undefined): string | undefined {\n switch (value) {\n case 'nowrap':\n return 'text-nowrap';\n case 'balance':\n return 'text-balance';\n case 'pretty':\n return 'text-pretty';\n case 'wrap':\n return 'text-wrap';\n default:\n return undefined;\n }\n}\n\nfunction numericAlignmentClass(value: string | undefined): string | undefined {\n switch (value) {\n case 'tabular':\n return 'tabular-nums';\n case 'lining':\n return 'lining-nums';\n default:\n return undefined;\n }\n}\n\nfunction multilineClampStyle(\n value: TextTruncationStrategy | undefined,\n style: React.CSSProperties | undefined,\n): React.CSSProperties | undefined {\n if (value === 'fade') {\n return {\n WebkitMaskImage: 'linear-gradient(to right, black calc(100% - 2rem), transparent)',\n maskImage: 'linear-gradient(to right, black calc(100% - 2rem), transparent)',\n ...style,\n };\n }\n\n if (!value?.startsWith('ellipsis-multiline:')) return style;\n const lines = Number(value.slice('ellipsis-multiline:'.length));\n if (!Number.isFinite(lines) || lines < 1) return style;\n\n return {\n display: '-webkit-box',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: lines,\n ...style,\n };\n}\n\nexport function Text({\n className,\n variant = TextVariant.DEFAULT,\n size = TextSize.BASE,\n as: Tag = 'p',\n truncate,\n children,\n style,\n ...props\n}: PresetTextProps): React.JSX.Element {\n const { getRecipe } = useUI()\n const policy = useSurfacePolicy()\n const recipe = getRecipe(UIBehavior.TYPOGRAPHY, TypographyVariant.BODY)\n const resolvedTruncation = resolveTextTruncation(truncate, policy.content?.textTruncation)\n // A single-line truncation (`ellipsis-line` → `truncate`/`white-space:nowrap`,\n // or `fade`) is contradictory with a WRAP strategy: a `text-wrap`/`text-balance`\n // class re-enables wrapping and (source-order dependent) defeats the nowrap, so\n // the element wraps and — in a shrink-to-zero flex slot — balloons vertically\n // (the 420px summary-title card bug). Single-line truncation therefore SUPPRESSES\n // the policy wrap class; multi-line strategies (`ellipsis-multiline:N`) keep it.\n const isSingleLineTruncation = resolvedTruncation === 'ellipsis-line' || resolvedTruncation === 'fade'\n const resolvedClassName = cn(\n recipe.base,\n textVariantColors[variant],\n textSizeClasses[size],\n isSingleLineTruncation ? undefined : textWrapClass(policy.content?.wrapStrategy),\n numericAlignmentClass(policy.content?.numericAlignment),\n textTruncationClass(resolvedTruncation),\n className\n )\n const resolvedStyle = multilineClampStyle(resolvedTruncation, style)\n\n if (policy.content?.tooltipOnTruncate === true && resolvedTruncation === 'ellipsis-line') {\n return (\n <TruncatedText\n as={Tag}\n data-slot=\"text\"\n {...props}\n style={resolvedStyle}\n textClassName={resolvedClassName}\n >\n {children}\n </TruncatedText>\n )\n }\n\n return (\n <Tag\n data-slot=\"text\"\n {...props}\n style={resolvedStyle}\n className={resolvedClassName}\n >\n {children}\n </Tag>\n )\n}\n\nexport function TextLink({ className, ...props }: React.ComponentPropsWithoutRef<typeof Link>): React.JSX.Element {\n return (\n <Link\n {...props}\n className={cn(\n 'text-foreground underline decoration-foreground/50 data-hover:decoration-foreground',\n className\n )}\n />\n )\n}\n\nexport function Strong({ className, ...props }: React.ComponentPropsWithoutRef<'strong'>): React.JSX.Element {\n return <strong {...props} className={cn('font-medium text-foreground', className)} />\n}\n\nexport function Code({ className, ...props }: React.ComponentPropsWithoutRef<'code'>): React.JSX.Element {\n return (\n <code\n {...props}\n className={cn(\n // Structure\n 'rounded-sm px-0.5',\n // Style — uses tokens for colors\n 'border border-border bg-muted text-sm font-medium text-foreground sm:text-[0.8125rem]',\n className\n )}\n />\n )\n}\n"]}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../../../src/components/typography/text.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react'\nimport { cn, useSurfacePolicy, useUI, Link, TruncatedText } from '@wildo-ai/saas-frontend-lib'\nimport type { TextProps } from '@wildo-ai/saas-frontend-lib'\nimport { FrontendComponentType, TextSize, type TextTruncationStrategy, TextVariant, TypographyVariant, UIBehavior } from '@wildo-ai/presets-components-models'\n\nexport { TextVariant, TextSize }\n\ntype ResolvedTextTruncation = TextTruncationStrategy | 'reset';\ntype PresetTextProps = TextProps & {\n truncate?: boolean | TextTruncationStrategy;\n};\n\nconst textVariantColors: Record<TextVariant, string> = {\n [TextVariant.DEFAULT]: \"text-foreground\",\n [TextVariant.MUTED]: \"text-muted-foreground\",\n [TextVariant.SUBTLE]: \"text-foreground-subtle\",\n [TextVariant.CONTRAST]: \"text-foreground\",\n [TextVariant.DESTRUCTIVE]: \"text-destructive\",\n [TextVariant.SUCCESS]: \"text-success\",\n [TextVariant.INHERIT]: \"text-inherit\",\n}\n\n/**\n * Maps `TextSize` to Tailwind v4 utilities. These resolve to\n * `var(--font-size-xs|sm|lg)` via the `@theme inline` mapping, so size\n * tokens defined at runtime through `applyTypographyConfiguration`\n * propagate automatically. `BASE` emits no class — the body recipe wins.\n */\nconst textSizeClasses: Record<TextSize, string> = {\n [TextSize.XXS]: \"text-2xs\",\n [TextSize.XS]: \"text-xs\",\n [TextSize.SM]: \"text-sm\",\n [TextSize.BASE]: \"\",\n [TextSize.LG]: \"text-lg\",\n}\n\nfunction resolveTextTruncation(\n truncate: boolean | TextTruncationStrategy | undefined,\n policyValue: ResolvedTextTruncation | undefined,\n): TextTruncationStrategy | undefined {\n if (truncate === true) return 'ellipsis-line';\n if (truncate === false) return 'none';\n if (policyValue === 'reset') return undefined;\n return truncate ?? policyValue;\n}\n\nfunction textTruncationClass(value: TextTruncationStrategy | undefined): string | undefined {\n if (!value || value === 'none') return undefined;\n if (value === 'ellipsis-line') return 'min-w-0 truncate';\n if (value.startsWith('ellipsis-multiline:')) return 'overflow-hidden';\n if (value === 'fade') return 'min-w-0 overflow-hidden whitespace-nowrap';\n return undefined;\n}\n\nfunction textWrapClass(value: string | undefined): string | undefined {\n switch (value) {\n case 'nowrap':\n return 'text-nowrap';\n case 'balance':\n return 'text-balance';\n case 'pretty':\n return 'text-pretty';\n case 'wrap':\n return 'text-wrap';\n default:\n return undefined;\n }\n}\n\nfunction numericAlignmentClass(value: string | undefined): string | undefined {\n switch (value) {\n case 'tabular':\n return 'tabular-nums';\n case 'lining':\n return 'lining-nums';\n default:\n return undefined;\n }\n}\n\nfunction multilineClampStyle(\n value: TextTruncationStrategy | undefined,\n style: React.CSSProperties | undefined,\n): React.CSSProperties | undefined {\n if (value === 'fade') {\n return {\n WebkitMaskImage: 'linear-gradient(to right, black calc(100% - 2rem), transparent)',\n maskImage: 'linear-gradient(to right, black calc(100% - 2rem), transparent)',\n ...style,\n };\n }\n\n if (!value?.startsWith('ellipsis-multiline:')) return style;\n const lines = Number(value.slice('ellipsis-multiline:'.length));\n if (!Number.isFinite(lines) || lines < 1) return style;\n\n return {\n display: '-webkit-box',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: lines,\n ...style,\n };\n}\n\nexport function Text({\n className,\n variant = TextVariant.DEFAULT,\n size = TextSize.BASE,\n typography = TypographyVariant.BODY,\n as: Tag = 'p',\n truncate,\n children,\n style,\n ...props\n}: PresetTextProps): React.JSX.Element {\n const { getRecipe } = useUI()\n const policy = useSurfacePolicy()\n const recipe = getRecipe(UIBehavior.TYPOGRAPHY, typography)\n const resolvedTruncation = resolveTextTruncation(truncate, policy.content?.textTruncation)\n // A single-line truncation (`ellipsis-line` → `truncate`/`white-space:nowrap`,\n // or `fade`) is contradictory with a WRAP strategy: a `text-wrap`/`text-balance`\n // class re-enables wrapping and (source-order dependent) defeats the nowrap, so\n // the element wraps and — in a shrink-to-zero flex slot — balloons vertically\n // (the 420px summary-title card bug). Single-line truncation therefore SUPPRESSES\n // the policy wrap class; multi-line strategies (`ellipsis-multiline:N`) keep it.\n const isSingleLineTruncation = resolvedTruncation === 'ellipsis-line' || resolvedTruncation === 'fade'\n const resolvedClassName = cn(\n recipe.base,\n textVariantColors[variant],\n textSizeClasses[size],\n isSingleLineTruncation ? undefined : textWrapClass(policy.content?.wrapStrategy),\n numericAlignmentClass(policy.content?.numericAlignment),\n textTruncationClass(resolvedTruncation),\n className\n )\n const resolvedStyle = multilineClampStyle(resolvedTruncation, style)\n\n if (policy.content?.tooltipOnTruncate === true && resolvedTruncation === 'ellipsis-line') {\n return (\n <TruncatedText\n as={Tag}\n data-slot=\"text\"\n {...props}\n style={resolvedStyle}\n textClassName={resolvedClassName}\n >\n {children}\n </TruncatedText>\n )\n }\n\n return (\n <Tag\n data-slot=\"text\"\n {...props}\n style={resolvedStyle}\n className={resolvedClassName}\n >\n {children}\n </Tag>\n )\n}\n\nexport function TextLink({ className, ...props }: React.ComponentPropsWithoutRef<typeof Link>): React.JSX.Element {\n return (\n <Link\n {...props}\n className={cn(\n 'text-foreground underline decoration-foreground/50 data-hover:decoration-foreground',\n className\n )}\n />\n )\n}\n\nexport function Strong({ className, ...props }: React.ComponentPropsWithoutRef<'strong'>): React.JSX.Element {\n return <strong {...props} className={cn('font-medium text-foreground', className)} />\n}\n\nexport function Code({ className, ...props }: React.ComponentPropsWithoutRef<'code'>): React.JSX.Element {\n return (\n <code\n {...props}\n className={cn(\n // Structure\n 'rounded-sm px-0.5',\n // Style — uses tokens for colors\n 'border border-border bg-muted text-sm font-medium text-foreground sm:text-[0.8125rem]',\n className\n )}\n />\n )\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"text.labels.d.ts","sourceRoot":"","sources":["../../../../src/components/typography/text.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,EAAO,CAAC;AAG5D,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,EAAO,CAAC;AAG9D,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,EAAO,CAAC;AAG5D,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAAO,CAAC"}
1
+ {"version":3,"file":"text.labels.d.ts","sourceRoot":"","sources":["../../../../../src/components/typography/text.labels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,mBAAmB,EAA2B,MAAM,qCAAqC,CAAC;AAM/H,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,EAAO,CAAC;AAG5D,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,EAAO,CAAC;AAG9D,eAAO,MAAM,kBAAkB,EAAE,mBAAmB,EAAO,CAAC;AAG5D,eAAO,MAAM,sBAAsB,EAAE,mBAAmB,EAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"truncated-text.d.ts","sourceRoot":"","sources":["../../../../src/components/typography/truncated-text.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAErE;;;;;;;;;;;GAWG;AACH,iBAAS,aAAa,CAAC,EACrB,EAAE,EAAE,WAAoB,EACxB,QAAQ,EACR,SAAS,EACT,aAAa,EACb,QAAiB,EACjB,WAA+B,EAC/B,oBAA0B,EAC1B,iBAAyB,EACzB,GAAG,KAAK,EACT,EAAE,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgExC;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"truncated-text.d.ts","sourceRoot":"","sources":["../../../../../src/components/typography/truncated-text.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAErE;;;;;;;;;;;GAWG;AACH,iBAAS,aAAa,CAAC,EACrB,EAAE,EAAE,WAAoB,EACxB,QAAQ,EACR,SAAS,EACT,aAAa,EACb,QAAiB,EACjB,WAA+B,EAC/B,oBAA0B,EAC1B,iBAAyB,EACzB,GAAG,KAAK,EACT,EAAE,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgExC;AAED,OAAO,EAAE,aAAa,EAAE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"billing-shell.presets.d.ts","sourceRoot":"","sources":["../../../src/config/billing-shell.presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,8BAA8B,EAE/B,MAAM,6BAA6B,CAAC;AAQrC,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,8BAA8B,GACpC,8BAA8B,CA0ChC"}
1
+ {"version":3,"file":"billing-shell.presets.d.ts","sourceRoot":"","sources":["../../../../src/config/billing-shell.presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,8BAA8B,EAE/B,MAAM,6BAA6B,CAAC;AAQrC,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,8BAA8B,GACpC,8BAA8B,CA0ChC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"preset-design-system.d.ts","sourceRoot":"","sources":["../../../src/config/preset-design-system.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preset-design-system.d.ts","sourceRoot":"","sources":["../../../../src/config/preset-design-system.ts"],"names":[],"mappings":"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"}