@mastra/playground-ui 41.1.0-alpha.2 → 42.0.0-alpha.13

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 (275) hide show
  1. package/CHANGELOG.md +114 -0
  2. package/dist/Card-BjFMX3pD.js +96 -0
  3. package/dist/Card-BjFMX3pD.js.map +1 -0
  4. package/dist/Card-WU2qkiHB.cjs +123 -0
  5. package/dist/Card-WU2qkiHB.cjs.map +1 -0
  6. package/dist/{Txt-p33XTnu8.js → Txt-Df42XG5p.js} +3 -3
  7. package/dist/Txt-Df42XG5p.js.map +1 -0
  8. package/dist/{Txt-BT8_EkuZ.cjs → Txt-I5lK8zy7.cjs} +3 -3
  9. package/dist/Txt-I5lK8zy7.cjs.map +1 -0
  10. package/dist/{buttons-group-b6an6uao.js → buttons-group-DJh4wnMs.js} +4 -4
  11. package/dist/{buttons-group-b6an6uao.js.map → buttons-group-DJh4wnMs.js.map} +1 -1
  12. package/dist/{buttons-group-C0fJastT.cjs → buttons-group-Dw8Wu4sj.cjs} +4 -4
  13. package/dist/{buttons-group-C0fJastT.cjs.map → buttons-group-Dw8Wu4sj.cjs.map} +1 -1
  14. package/dist/components/Avatar.cjs.js +1 -1
  15. package/dist/components/Avatar.es.js +1 -1
  16. package/dist/components/Breadcrumb.cjs.js +2 -2
  17. package/dist/components/Breadcrumb.cjs.js.map +1 -1
  18. package/dist/components/Breadcrumb.es.js +2 -2
  19. package/dist/components/Breadcrumb.es.js.map +1 -1
  20. package/dist/components/ButtonsGroup.cjs.js +1 -1
  21. package/dist/components/ButtonsGroup.es.js +1 -1
  22. package/dist/components/Card.cjs.js +8 -84
  23. package/dist/components/Card.cjs.js.map +1 -1
  24. package/dist/components/Card.es.js +1 -63
  25. package/dist/components/Card.es.js.map +1 -1
  26. package/dist/components/ClampedText.cjs.js +51 -0
  27. package/dist/components/ClampedText.cjs.js.map +1 -0
  28. package/dist/components/ClampedText.d.ts +2 -0
  29. package/dist/components/ClampedText.es.js +47 -0
  30. package/dist/components/ClampedText.es.js.map +1 -0
  31. package/dist/components/Composer.cjs.js +2 -2
  32. package/dist/components/Composer.cjs.js.map +1 -1
  33. package/dist/components/Composer.es.js +2 -2
  34. package/dist/components/Composer.es.js.map +1 -1
  35. package/dist/components/ContentBlocks.cjs.js.map +1 -1
  36. package/dist/components/ContentBlocks.es.js.map +1 -1
  37. package/dist/components/DataCodeSection.cjs.js +1 -1
  38. package/dist/components/DataCodeSection.es.js +1 -1
  39. package/dist/components/DataDetailsPanel.cjs.js +4 -4
  40. package/dist/components/DataDetailsPanel.cjs.js.map +1 -1
  41. package/dist/components/DataDetailsPanel.es.js +4 -4
  42. package/dist/components/DataDetailsPanel.es.js.map +1 -1
  43. package/dist/components/DataPanel.cjs.js +1 -1
  44. package/dist/components/DataPanel.es.js +1 -1
  45. package/dist/components/DateTimePicker.cjs.js +1 -1
  46. package/dist/components/DateTimePicker.es.js +1 -1
  47. package/dist/components/Drawer.cjs.js +1 -1
  48. package/dist/components/Drawer.es.js +1 -1
  49. package/dist/components/Entity.cjs.js +1 -1
  50. package/dist/components/Entity.es.js +1 -1
  51. package/dist/components/EntityHeader.cjs.js +1 -1
  52. package/dist/components/EntityHeader.es.js +1 -1
  53. package/dist/components/Entry.cjs.js +1 -1
  54. package/dist/components/Entry.es.js +1 -1
  55. package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -2
  56. package/dist/components/EnvironmentVariablesEditor.es.js +2 -2
  57. package/dist/components/FormFieldBlocks.cjs.js +4 -4
  58. package/dist/components/FormFieldBlocks.es.js +4 -4
  59. package/dist/components/Header.cjs.js +1 -1
  60. package/dist/components/Header.es.js +1 -1
  61. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  62. package/dist/components/JSONSchemaForm.es.js +2 -2
  63. package/dist/components/ListSearch.cjs.js +1 -1
  64. package/dist/components/ListSearch.es.js +1 -1
  65. package/dist/components/MainContent.cjs.js +3 -3
  66. package/dist/components/MainContent.cjs.js.map +1 -1
  67. package/dist/components/MainContent.es.js +3 -3
  68. package/dist/components/MainContent.es.js.map +1 -1
  69. package/dist/components/MainSidebar.cjs.js +1 -1
  70. package/dist/components/MainSidebar.es.js +1 -1
  71. package/dist/components/PrevNextNav.cjs.js +1 -1
  72. package/dist/components/PrevNextNav.es.js +1 -1
  73. package/dist/components/PropertyFilter.cjs.js +1 -1
  74. package/dist/components/PropertyFilter.es.js +2 -2
  75. package/dist/components/SankeyChart.cjs.js +68 -75
  76. package/dist/components/SankeyChart.cjs.js.map +1 -1
  77. package/dist/components/SankeyChart.es.js +60 -71
  78. package/dist/components/SankeyChart.es.js.map +1 -1
  79. package/dist/components/SideDialog.cjs.js +2 -2
  80. package/dist/components/SideDialog.es.js +2 -2
  81. package/dist/components/Table.cjs.js +1 -1
  82. package/dist/components/Table.es.js +1 -1
  83. package/dist/components/ThreadList.cjs.js +1 -1
  84. package/dist/components/ThreadList.es.js +1 -1
  85. package/dist/components/Toaster.cjs.js +1 -0
  86. package/dist/components/Toaster.cjs.js.map +1 -1
  87. package/dist/components/Toaster.es.js +1 -1
  88. package/dist/components/Truncate.cjs.js +1 -1
  89. package/dist/components/Truncate.es.js +1 -1
  90. package/dist/components/Txt.cjs.js +1 -1
  91. package/dist/components/Txt.es.js +1 -1
  92. package/dist/components/ai/ask-user.cjs.js +147 -0
  93. package/dist/components/ai/ask-user.cjs.js.map +1 -0
  94. package/dist/components/ai/ask-user.d.ts +2 -0
  95. package/dist/components/ai/ask-user.es.js +136 -0
  96. package/dist/components/ai/ask-user.es.js.map +1 -0
  97. package/dist/components/ai/plan.cjs.js +1 -1
  98. package/dist/components/ai/plan.es.js +1 -1
  99. package/dist/components/ai/task-list.cjs.js +90 -0
  100. package/dist/components/ai/task-list.cjs.js.map +1 -0
  101. package/dist/components/ai/task-list.d.ts +2 -0
  102. package/dist/components/ai/task-list.es.js +80 -0
  103. package/dist/components/ai/task-list.es.js.map +1 -0
  104. package/dist/{data-code-section-Crs5wpnX.js → data-code-section-BjqDCzy3.js} +3 -3
  105. package/dist/{data-code-section-Crs5wpnX.js.map → data-code-section-BjqDCzy3.js.map} +1 -1
  106. package/dist/{data-code-section-DYy_n9I1.cjs → data-code-section-D0BwpqvV.cjs} +3 -3
  107. package/dist/{data-code-section-DYy_n9I1.cjs.map → data-code-section-D0BwpqvV.cjs.map} +1 -1
  108. package/dist/{data-panel-Otc4qdKL.js → data-panel-BGpCzY5K.js} +3 -3
  109. package/dist/{data-panel-Otc4qdKL.js.map → data-panel-BGpCzY5K.js.map} +1 -1
  110. package/dist/{data-panel-CAbxKoPF.cjs → data-panel-CsonAnlK.cjs} +3 -3
  111. package/dist/{data-panel-CAbxKoPF.cjs.map → data-panel-CsonAnlK.cjs.map} +1 -1
  112. package/dist/domains/logs/components/log-details-view.cjs.js +1 -1
  113. package/dist/domains/logs/components/log-details-view.es.js +1 -1
  114. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  115. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  116. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  117. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  118. package/dist/domains/traces/components/span-data-panel-view.cjs.js +2 -2
  119. package/dist/domains/traces/components/span-data-panel-view.es.js +2 -2
  120. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
  121. package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
  122. package/dist/domains/traces/components/traces-toolbar.cjs.js +1 -1
  123. package/dist/domains/traces/components/traces-toolbar.es.js +1 -1
  124. package/dist/{drawer-DtEZQBXj.cjs → drawer-DvuUmhic.cjs} +3 -3
  125. package/dist/{drawer-DtEZQBXj.cjs.map → drawer-DvuUmhic.cjs.map} +1 -1
  126. package/dist/{drawer-Djerm1Lo.js → drawer-Dyx25o_o.js} +3 -3
  127. package/dist/{drawer-Djerm1Lo.js.map → drawer-Dyx25o_o.js.map} +1 -1
  128. package/dist/ee/signals/components/signals-empty-state.cjs.js +152 -0
  129. package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -0
  130. package/dist/ee/signals/components/signals-empty-state.d.ts +2 -0
  131. package/dist/ee/signals/components/signals-empty-state.es.js +148 -0
  132. package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -0
  133. package/dist/ee/signals/components/signals-overview-page.cjs.js +3 -201
  134. package/dist/ee/signals/components/signals-overview-page.cjs.js.map +1 -1
  135. package/dist/ee/signals/components/signals-overview-page.es.js +5 -201
  136. package/dist/ee/signals/components/signals-overview-page.es.js.map +1 -1
  137. package/dist/ee/signals/components.cjs.js +0 -10
  138. package/dist/ee/signals/components.cjs.js.map +1 -1
  139. package/dist/ee/signals/components.es.js +1 -3
  140. package/dist/ee/signals/components.es.js.map +1 -1
  141. package/dist/ee/signals/signal-colors.cjs.js +28 -0
  142. package/dist/ee/signals/signal-colors.cjs.js.map +1 -0
  143. package/dist/ee/signals/signal-colors.d.ts +2 -0
  144. package/dist/ee/signals/signal-colors.es.js +23 -0
  145. package/dist/ee/signals/signal-colors.es.js.map +1 -0
  146. package/dist/ee/signals.cjs.js +3 -27
  147. package/dist/ee/signals.cjs.js.map +1 -1
  148. package/dist/ee/signals.es.js +2 -7
  149. package/dist/ee/signals.es.js.map +1 -1
  150. package/dist/{field-block-CC_EYPWe.js → field-block-CBdMcT-i.js} +2 -2
  151. package/dist/{field-block-CC_EYPWe.js.map → field-block-CBdMcT-i.js.map} +1 -1
  152. package/dist/{field-block-Dx-fDIP9.cjs → field-block-CEbnWKc0.cjs} +2 -2
  153. package/dist/{field-block-Dx-fDIP9.cjs.map → field-block-CEbnWKc0.cjs.map} +1 -1
  154. package/dist/hooks/use-is-clamped.cjs.js +36 -0
  155. package/dist/hooks/use-is-clamped.cjs.js.map +1 -0
  156. package/dist/hooks/use-is-clamped.d.ts +2 -0
  157. package/dist/hooks/use-is-clamped.es.js +32 -0
  158. package/dist/hooks/use-is-clamped.es.js.map +1 -0
  159. package/dist/primitives/portal-container.cjs.js.map +1 -1
  160. package/dist/primitives/portal-container.es.js.map +1 -1
  161. package/dist/{property-filter-applied-Ca0UdU5P.js → property-filter-applied-Bs1Ck691.js} +2 -2
  162. package/dist/{property-filter-applied-Ca0UdU5P.js.map → property-filter-applied-Bs1Ck691.js.map} +1 -1
  163. package/dist/{property-filter-applied-BYKTDczo.cjs → property-filter-applied-DgmkZVbl.cjs} +2 -2
  164. package/dist/{property-filter-applied-BYKTDczo.cjs.map → property-filter-applied-DgmkZVbl.cjs.map} +1 -1
  165. package/dist/resize/panel-drawer.cjs.js +1 -1
  166. package/dist/resize/panel-drawer.es.js +1 -1
  167. package/dist/sankeyColor-CQ5nkgtL.js +48 -0
  168. package/dist/sankeyColor-CQ5nkgtL.js.map +1 -0
  169. package/dist/sankeyColor-DONd5cg9.cjs +53 -0
  170. package/dist/sankeyColor-DONd5cg9.cjs.map +1 -0
  171. package/dist/{search-field-block-e9qthuwY.js → search-field-block-CMoQ9fjl.js} +4 -3
  172. package/dist/search-field-block-CMoQ9fjl.js.map +1 -0
  173. package/dist/{search-field-block-C4njnmUx.cjs → search-field-block-DmqZsrrI.cjs} +4 -3
  174. package/dist/search-field-block-DmqZsrrI.cjs.map +1 -0
  175. package/dist/{select-field-block-dq1ZmZVb.cjs → select-field-block-BI_NZs2R.cjs} +2 -2
  176. package/dist/{select-field-block-dq1ZmZVb.cjs.map → select-field-block-BI_NZs2R.cjs.map} +1 -1
  177. package/dist/{select-field-block-BWuqWh4k.js → select-field-block-BSlngEHK.js} +2 -2
  178. package/dist/{select-field-block-BWuqWh4k.js.map → select-field-block-BSlngEHK.js.map} +1 -1
  179. package/dist/signals-empty-state.css +54 -0
  180. package/dist/src/ds/components/Card/Card.d.ts +15 -2
  181. package/dist/src/ds/components/Card/index.d.ts +2 -2
  182. package/dist/src/ds/components/ClampedText/clamped-text.d.ts +20 -0
  183. package/dist/src/ds/components/ClampedText/clamped-text.stories.d.ts +8 -0
  184. package/dist/src/ds/components/ClampedText/index.d.ts +1 -0
  185. package/dist/src/ds/components/Composer/composer.d.ts +5 -1
  186. package/dist/src/ds/components/Composer/index.d.ts +1 -1
  187. package/dist/src/ds/components/SankeyChart/index.d.ts +2 -1
  188. package/dist/src/ds/components/SankeyChart/sankey-chart-utils.d.ts +2 -1
  189. package/dist/src/ds/components/SankeyChart/sankey-chart.d.ts +4 -2
  190. package/dist/src/ds/components/SankeyChart/sankey-context.d.ts +3 -1
  191. package/dist/src/ds/components/Toaster/index.d.ts +1 -1
  192. package/dist/src/ds/components/Txt/Txt.d.ts +3 -2
  193. package/dist/src/ds/components/ai/ask-user/ask-user.d.ts +42 -0
  194. package/dist/src/ds/components/ai/ask-user/ask-user.stories.d.ts +11 -0
  195. package/dist/src/ds/components/ai/ask-user/index.d.ts +1 -0
  196. package/dist/src/ds/components/ai/task-list/index.d.ts +1 -0
  197. package/dist/src/ds/components/ai/task-list/task-list.d.ts +31 -0
  198. package/dist/src/ds/components/ai/task-list/task-list.stories.d.ts +9 -0
  199. package/dist/src/ee/signals/components/index.d.ts +0 -2
  200. package/dist/src/ee/signals/components/signals-empty-state.d.ts +7 -0
  201. package/dist/src/ee/signals/components/signals-overview-page.d.ts +2 -22
  202. package/dist/src/ee/signals/index.d.ts +1 -4
  203. package/dist/src/ee/signals/signal-colors.d.ts +7 -0
  204. package/dist/src/hooks/use-is-clamped.d.ts +11 -0
  205. package/dist/style.css +289 -40
  206. package/dist/{text-field-block-CpKq1NCV.cjs → text-field-block-BUvxjW9m.cjs} +2 -2
  207. package/dist/{text-field-block-CpKq1NCV.cjs.map → text-field-block-BUvxjW9m.cjs.map} +1 -1
  208. package/dist/{text-field-block-CrFqgdKx.js → text-field-block-DxtR1Ft4.js} +2 -2
  209. package/dist/{text-field-block-CrFqgdKx.js.map → text-field-block-DxtR1Ft4.js.map} +1 -1
  210. package/package.json +10 -10
  211. package/theme.css +1 -0
  212. package/dist/Txt-BT8_EkuZ.cjs.map +0 -1
  213. package/dist/Txt-p33XTnu8.js.map +0 -1
  214. package/dist/ee/signals/components/signal-details-page.cjs.js +0 -288
  215. package/dist/ee/signals/components/signal-details-page.cjs.js.map +0 -1
  216. package/dist/ee/signals/components/signal-details-page.d.ts +0 -2
  217. package/dist/ee/signals/components/signal-details-page.es.js +0 -280
  218. package/dist/ee/signals/components/signal-details-page.es.js.map +0 -1
  219. package/dist/ee/signals/components/signals-entity-filter.cjs.js +0 -27
  220. package/dist/ee/signals/components/signals-entity-filter.cjs.js.map +0 -1
  221. package/dist/ee/signals/components/signals-entity-filter.d.ts +0 -2
  222. package/dist/ee/signals/components/signals-entity-filter.es.js +0 -23
  223. package/dist/ee/signals/components/signals-entity-filter.es.js.map +0 -1
  224. package/dist/ee/signals/hooks/use-entity-learning-config.cjs.js +0 -35
  225. package/dist/ee/signals/hooks/use-entity-learning-config.cjs.js.map +0 -1
  226. package/dist/ee/signals/hooks/use-entity-learning-config.d.ts +0 -2
  227. package/dist/ee/signals/hooks/use-entity-learning-config.es.js +0 -31
  228. package/dist/ee/signals/hooks/use-entity-learning-config.es.js.map +0 -1
  229. package/dist/ee/signals/hooks/use-entity-learning.cjs.js +0 -96
  230. package/dist/ee/signals/hooks/use-entity-learning.cjs.js.map +0 -1
  231. package/dist/ee/signals/hooks/use-entity-learning.d.ts +0 -2
  232. package/dist/ee/signals/hooks/use-entity-learning.es.js +0 -84
  233. package/dist/ee/signals/hooks/use-entity-learning.es.js.map +0 -1
  234. package/dist/ee/signals/hooks.cjs.js +0 -20
  235. package/dist/ee/signals/hooks.cjs.js.map +0 -1
  236. package/dist/ee/signals/hooks.d.ts +0 -2
  237. package/dist/ee/signals/hooks.es.js +0 -3
  238. package/dist/ee/signals/hooks.es.js.map +0 -1
  239. package/dist/ee/signals/services/entity-learning-service.cjs.js +0 -88
  240. package/dist/ee/signals/services/entity-learning-service.cjs.js.map +0 -1
  241. package/dist/ee/signals/services/entity-learning-service.d.ts +0 -2
  242. package/dist/ee/signals/services/entity-learning-service.es.js +0 -84
  243. package/dist/ee/signals/services/entity-learning-service.es.js.map +0 -1
  244. package/dist/ee/signals/services/entity-learning-types.cjs.js +0 -3
  245. package/dist/ee/signals/services/entity-learning-types.cjs.js.map +0 -1
  246. package/dist/ee/signals/services/entity-learning-types.d.ts +0 -1
  247. package/dist/ee/signals/services/entity-learning-types.es.js +0 -2
  248. package/dist/ee/signals/services/entity-learning-types.es.js.map +0 -1
  249. package/dist/ee/signals/services.cjs.js +0 -10
  250. package/dist/ee/signals/services.cjs.js.map +0 -1
  251. package/dist/ee/signals/services.d.ts +0 -2
  252. package/dist/ee/signals/services.es.js +0 -2
  253. package/dist/ee/signals/services.es.js.map +0 -1
  254. package/dist/ee/signals/signals-data.cjs.js +0 -53
  255. package/dist/ee/signals/signals-data.cjs.js.map +0 -1
  256. package/dist/ee/signals/signals-data.d.ts +0 -2
  257. package/dist/ee/signals/signals-data.es.js +0 -48
  258. package/dist/ee/signals/signals-data.es.js.map +0 -1
  259. package/dist/ee/signals/types.cjs.js +0 -3
  260. package/dist/ee/signals/types.cjs.js.map +0 -1
  261. package/dist/ee/signals/types.d.ts +0 -1
  262. package/dist/ee/signals/types.es.js +0 -2
  263. package/dist/ee/signals/types.es.js.map +0 -1
  264. package/dist/search-field-block-C4njnmUx.cjs.map +0 -1
  265. package/dist/search-field-block-e9qthuwY.js.map +0 -1
  266. package/dist/src/ee/signals/components/signal-details-page.d.ts +0 -40
  267. package/dist/src/ee/signals/components/signals-entity-filter.d.ts +0 -13
  268. package/dist/src/ee/signals/hooks/index.d.ts +0 -2
  269. package/dist/src/ee/signals/hooks/use-entity-learning-config.d.ts +0 -14
  270. package/dist/src/ee/signals/hooks/use-entity-learning.d.ts +0 -24
  271. package/dist/src/ee/signals/services/entity-learning-service.d.ts +0 -43
  272. package/dist/src/ee/signals/services/entity-learning-types.d.ts +0 -123
  273. package/dist/src/ee/signals/services/index.d.ts +0 -2
  274. package/dist/src/ee/signals/signals-data.d.ts +0 -10
  275. package/dist/src/ee/signals/types.d.ts +0 -15
package/CHANGELOG.md CHANGED
@@ -1,5 +1,119 @@
1
1
  # @mastra/playground-ui
2
2
 
3
+ ## 42.0.0-alpha.13
4
+
5
+ ### Minor Changes
6
+
7
+ - Added a borderless surface appearance, compact content density, and a dedicated card link component with native link semantics, plus hover, focus, and active states for interactive cards. ([#19747](https://github.com/mastra-ai/mastra/pull/19747))
8
+
9
+ ## 42.0.0-alpha.12
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [[`c7d30cd`](https://github.com/mastra-ai/mastra/commit/c7d30cd86009c407df91105591f03cd6e3d2854d), [`ef03fbc`](https://github.com/mastra-ai/mastra/commit/ef03fbcc556bcbc04c9b3d06fab88771ecaa043c), [`6040ab9`](https://github.com/mastra-ai/mastra/commit/6040ab95bdfff38fceb1c0b9781a64a6d30f3cbd), [`a7bbe77`](https://github.com/mastra-ai/mastra/commit/a7bbe773577f60bc4761b534ef7ec6b476332dad), [`a7bbe77`](https://github.com/mastra-ai/mastra/commit/a7bbe773577f60bc4761b534ef7ec6b476332dad), [`4e68363`](https://github.com/mastra-ai/mastra/commit/4e683634f94ebd062d26a3bb6093a8dfc7263d37), [`9251370`](https://github.com/mastra-ai/mastra/commit/9251370ad413af464aa22d7566338bec5613e8de)]:
14
+ - @mastra/core@1.52.0-alpha.11
15
+ - @mastra/client-js@1.33.0-alpha.11
16
+ - @mastra/react@1.3.0-alpha.11
17
+
18
+ ## 42.0.0-alpha.11
19
+
20
+ ### Patch Changes
21
+
22
+ - Fixed composer inputs to show one scrollbar for long messages. Added a `maxHeight` prop for configuring the scrolling viewport. ([#19876](https://github.com/mastra-ai/mastra/pull/19876))
23
+
24
+ - Exported the shared toast API through the Toaster component entry point. ([#19876](https://github.com/mastra-ai/mastra/pull/19876))
25
+
26
+ ## 42.0.0-alpha.10
27
+
28
+ ### Patch Changes
29
+
30
+ - Improved breadcrumb navigation with clearer hover and pressed feedback for clickable path segments. ([#19840](https://github.com/mastra-ai/mastra/pull/19840))
31
+
32
+ - Fixed hidden search labels so search fields are announced correctly by assistive technologies. ([#19840](https://github.com/mastra-ai/mastra/pull/19840))
33
+
34
+ - Updated dependencies [[`41a5392`](https://github.com/mastra-ai/mastra/commit/41a5392d9f6c5e18d6b227f0fc0ddf49c50774e9), [`675fbff`](https://github.com/mastra-ai/mastra/commit/675fbff84d3274391b33e852f76083c38a5514e5), [`da009e1`](https://github.com/mastra-ai/mastra/commit/da009e1aacd89ed94b8d1b2af09c9d4fe7c4db49), [`35c2181`](https://github.com/mastra-ai/mastra/commit/35c2181e6a50e47c90ba36260db7c9723d54696f), [`b4b7ea8`](https://github.com/mastra-ai/mastra/commit/b4b7ea8733f033fc441ea47ed03f6afb17ec2248), [`675fbff`](https://github.com/mastra-ai/mastra/commit/675fbff84d3274391b33e852f76083c38a5514e5), [`c328769`](https://github.com/mastra-ai/mastra/commit/c3287698ff8ef98dba86d415faa566fa3e5f4d56), [`232fcbc`](https://github.com/mastra-ai/mastra/commit/232fcbc14fce625dd672ba043329c0b732c62be2), [`3491666`](https://github.com/mastra-ai/mastra/commit/34916663c4fdd43b48c21f4ab2d5fb6dcccc94f9)]:
35
+ - @mastra/core@1.52.0-alpha.10
36
+ - @mastra/client-js@1.33.0-alpha.10
37
+ - @mastra/react@1.3.0-alpha.10
38
+
39
+ ## 42.0.0-alpha.9
40
+
41
+ ### Patch Changes
42
+
43
+ - Updated dependencies [[`0a2c22c`](https://github.com/mastra-ai/mastra/commit/0a2c22c902604439ec490319e14c17f331e0c84c), [`3a8024c`](https://github.com/mastra-ai/mastra/commit/3a8024ce615f8aa89479c0d71fe61d10bb0040be)]:
44
+ - @mastra/core@1.52.0-alpha.9
45
+ - @mastra/client-js@1.33.0-alpha.9
46
+ - @mastra/react@1.2.6-alpha.9
47
+
48
+ ## 42.0.0-alpha.8
49
+
50
+ ### Patch Changes
51
+
52
+ - dependencies updates: ([#19388](https://github.com/mastra-ai/mastra/pull/19388))
53
+ - Updated dependency [`prettier@^3.9.5` ↗︎](https://www.npmjs.com/package/prettier/v/3.9.5) (from `^3.8.3`, in `dependencies`)
54
+ - Updated dependencies [[`3b77e77`](https://github.com/mastra-ai/mastra/commit/3b77e7704936522e4769d29de1b5ea6901f302bd), [`6b1bf3b`](https://github.com/mastra-ai/mastra/commit/6b1bf3b9494bd51aa8f654c68c9355d6046fa2a1), [`72e437c`](https://github.com/mastra-ai/mastra/commit/72e437c515942c80b9def5b026e0bdee61b469d9)]:
55
+ - @mastra/core@1.52.0-alpha.8
56
+ - @mastra/client-js@1.33.0-alpha.8
57
+ - @mastra/react@1.2.6-alpha.8
58
+
59
+ ## 42.0.0-alpha.7
60
+
61
+ ### Patch Changes
62
+
63
+ - Updated dependencies [[`b7e79c3`](https://github.com/mastra-ai/mastra/commit/b7e79c3c02ac5cd415db34ba0975ceafc1464333), [`b75d749`](https://github.com/mastra-ai/mastra/commit/b75d749621ff5d17e86bcb4ee809d301fb4f7cf3), [`a8799bb`](https://github.com/mastra-ai/mastra/commit/a8799bb8e44f4a60d01e4e2acd3448ff80bf14f8)]:
64
+ - @mastra/core@1.52.0-alpha.7
65
+ - @mastra/client-js@1.33.0-alpha.7
66
+ - @mastra/react@1.2.6-alpha.7
67
+
68
+ ## 42.0.0-alpha.6
69
+
70
+ ### Patch Changes
71
+
72
+ - Updated dependencies [[`a40adeb`](https://github.com/mastra-ai/mastra/commit/a40adeb222b961a56a58af56a106106525721b74), [`821648b`](https://github.com/mastra-ai/mastra/commit/821648bf2871ef840100c7bacbecf676010bd12a), [`11f6cd9`](https://github.com/mastra-ai/mastra/commit/11f6cd96fe42582403416608beb212cc1a2cc79e)]:
73
+ - @mastra/core@1.52.0-alpha.6
74
+ - @mastra/client-js@1.33.0-alpha.6
75
+ - @mastra/react@1.2.6-alpha.6
76
+
77
+ ## 42.0.0-alpha.5
78
+
79
+ ### Minor Changes
80
+
81
+ - Added reusable Ask User and Task List components for agent interfaces. ([#19624](https://github.com/mastra-ai/mastra/pull/19624))
82
+
83
+ ### Patch Changes
84
+
85
+ - Fixed named form fields adding a second page scrollbar inside app scroll containers. ([#19617](https://github.com/mastra-ai/mastra/pull/19617))
86
+
87
+ - Updated dependencies [[`ec857fc`](https://github.com/mastra-ai/mastra/commit/ec857fc79c264b53b38e16478c789b7177f2ad59), [`e1f2fae`](https://github.com/mastra-ai/mastra/commit/e1f2faebaf048c3d4c2e2c01d293767c195d5794), [`63aa799`](https://github.com/mastra-ai/mastra/commit/63aa799c6b44eacc7806cda6846b7c5bbee06b37), [`73db8db`](https://github.com/mastra-ai/mastra/commit/73db8db90d69ab6153c7942749f624db0d96952d), [`73db8db`](https://github.com/mastra-ai/mastra/commit/73db8db90d69ab6153c7942749f624db0d96952d), [`76b7181`](https://github.com/mastra-ai/mastra/commit/76b71810366e6d90b9d3973149d1c7ba3659ffb9), [`0c0e8d7`](https://github.com/mastra-ai/mastra/commit/0c0e8d7becd4d1445c656b78d5d845f606c1ff9d), [`39c6753`](https://github.com/mastra-ai/mastra/commit/39c6753788a8d17278531b3381eb508747495b67), [`39c6753`](https://github.com/mastra-ai/mastra/commit/39c6753788a8d17278531b3381eb508747495b67), [`9f7c67a`](https://github.com/mastra-ai/mastra/commit/9f7c67abeeb52c41c51a9b5edee60b62afe7cd8d), [`0c52047`](https://github.com/mastra-ai/mastra/commit/0c520470a4547666156b2f18eb794eb8bd2676c8), [`3b65e68`](https://github.com/mastra-ai/mastra/commit/3b65e68d7f1c771c7a70eea42d83fefdd28cad88), [`e3868e2`](https://github.com/mastra-ai/mastra/commit/e3868e22babfffd0133771669ca724501c2dd58e)]:
88
+ - @mastra/core@1.52.0-alpha.5
89
+ - @mastra/react@1.2.6-alpha.5
90
+ - @mastra/client-js@1.33.0-alpha.5
91
+ - @mastra/memory@1.23.1-alpha.1
92
+
93
+ ## 42.0.0-alpha.4
94
+
95
+ ### Patch Changes
96
+
97
+ - Updated dependencies [[`4cfdd64`](https://github.com/mastra-ai/mastra/commit/4cfdd645794feaea0c4ea711e70ecdfbef0c5b8e)]:
98
+ - @mastra/core@1.52.0-alpha.4
99
+ - @mastra/client-js@1.33.0-alpha.4
100
+ - @mastra/react@1.2.6-alpha.4
101
+
102
+ ## 42.0.0-alpha.3
103
+
104
+ ### Minor Changes
105
+
106
+ - Added ClampedText, a design-system component that clamps text to a number of lines and shows a "Read more" toggle only when the clamp actually cuts content. Detection is based on the rendered layout (element measurement, re-checked on resize and after fonts load), not on character count. ([#19565](https://github.com/mastra-ai/mastra/pull/19565))
107
+
108
+ ### Patch Changes
109
+
110
+ - Fixed the ClampedText read-more button to announce its expanded state to screen readers, and fixed clamp measurement so font-load re-measure and effect cleanup still run in browsers without ResizeObserver. ([#19582](https://github.com/mastra-ai/mastra/pull/19582))
111
+
112
+ - Updated dependencies [[`1426af2`](https://github.com/mastra-ai/mastra/commit/1426af24975879c000d13ac75673f630fcc970c1), [`4696604`](https://github.com/mastra-ai/mastra/commit/4696604a8db7517459e7075ed4a6924114cdbdfb), [`975295d`](https://github.com/mastra-ai/mastra/commit/975295d418552f0d46a59edfef4c3ee555f9930a), [`85e4fb5`](https://github.com/mastra-ai/mastra/commit/85e4fb50087a81c74df3a762f53b56373db0b912), [`22c7ca8`](https://github.com/mastra-ai/mastra/commit/22c7ca85b893ebc9bf0113309e13d238a896bdaf), [`85e4fb5`](https://github.com/mastra-ai/mastra/commit/85e4fb50087a81c74df3a762f53b56373db0b912), [`ef03c0c`](https://github.com/mastra-ai/mastra/commit/ef03c0cfc62367a458e4cc56462e2148b35681c5), [`4fb4d88`](https://github.com/mastra-ai/mastra/commit/4fb4d881bc107acee13890ad4d78661016c510ed), [`4eba27a`](https://github.com/mastra-ai/mastra/commit/4eba27adcf60f991df0e62f94b3e75b4e67f3b4b), [`c701be3`](https://github.com/mastra-ai/mastra/commit/c701be32d7d9aa94a66da8c6cc38dcac6856f464), [`50e0ec5`](https://github.com/mastra-ai/mastra/commit/50e0ec5a1b2f3dec9eb1333487be733ac499173c)]:
113
+ - @mastra/core@1.52.0-alpha.3
114
+ - @mastra/client-js@1.33.0-alpha.3
115
+ - @mastra/react@1.2.6-alpha.3
116
+
3
117
  ## 41.1.0-alpha.2
4
118
 
5
119
  ### Patch Changes
@@ -0,0 +1,96 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { c as cva } from './index-CSm06eOE.js';
3
+ import * as React from 'react';
4
+ import { c as cn } from './cn-BakJzhuv.js';
5
+
6
+ const cardVariants = cva(
7
+ // Base styles
8
+ "duration-normal rounded-lg transition-all ease-out-custom motion-reduce:transition-none",
9
+ {
10
+ variants: {
11
+ appearance: {
12
+ outlined: "border border-border1 bg-surface2",
13
+ surface: "bg-surface3"
14
+ },
15
+ elevation: {
16
+ flat: "",
17
+ raised: "shadow-card",
18
+ elevated: "shadow-elevated"
19
+ },
20
+ interactive: {
21
+ true: "cursor-pointer active:scale-99",
22
+ false: ""
23
+ }
24
+ },
25
+ compoundVariants: [
26
+ {
27
+ appearance: "outlined",
28
+ interactive: true,
29
+ className: "hover:border-border2 hover:bg-surface3"
30
+ },
31
+ {
32
+ appearance: "surface",
33
+ interactive: true,
34
+ className: "hover:bg-surface4 focus-visible:bg-surface4 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border2 active:bg-surface5"
35
+ }
36
+ ],
37
+ defaultVariants: {
38
+ appearance: "outlined",
39
+ elevation: "flat",
40
+ interactive: false
41
+ }
42
+ }
43
+ );
44
+ const Card = React.forwardRef(
45
+ ({ className, appearance, elevation, interactive, as, ...props }, ref) => {
46
+ const Component = as || (interactive ? "button" : "div");
47
+ return /* @__PURE__ */ jsx(
48
+ Component,
49
+ {
50
+ ref,
51
+ type: Component === "button" ? "button" : void 0,
52
+ className: cn(cardVariants({ appearance, elevation, interactive }), className),
53
+ ...props
54
+ }
55
+ );
56
+ }
57
+ );
58
+ Card.displayName = "Card";
59
+ function CardLink({ className, appearance, elevation, LinkComponent: Link = "a", ...props }) {
60
+ return /* @__PURE__ */ jsx(Link, { className: cn(cardVariants({ appearance, elevation, interactive: true }), className), ...props });
61
+ }
62
+ const CardHeader = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex flex-col space-y-1.5 p-4 pb-0", className), ...props }));
63
+ CardHeader.displayName = "CardHeader";
64
+ const CardTitle = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
65
+ "h3",
66
+ {
67
+ ref,
68
+ className: cn("text-ui-md leading-none font-semibold tracking-tight text-neutral6", className),
69
+ ...props
70
+ }
71
+ ));
72
+ CardTitle.displayName = "CardTitle";
73
+ const CardDescription = React.forwardRef(
74
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("p", { ref, className: cn("text-ui-sm text-neutral3", className), ...props })
75
+ );
76
+ CardDescription.displayName = "CardDescription";
77
+ const cardContentVariants = cva("", {
78
+ variants: {
79
+ density: {
80
+ default: "p-4",
81
+ compact: "p-3"
82
+ }
83
+ },
84
+ defaultVariants: {
85
+ density: "default"
86
+ }
87
+ });
88
+ const CardContent = React.forwardRef(
89
+ ({ className, density, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn(cardContentVariants({ density }), className), ...props })
90
+ );
91
+ CardContent.displayName = "CardContent";
92
+ const CardFooter = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn("flex items-center p-4 pt-0", className), ...props }));
93
+ CardFooter.displayName = "CardFooter";
94
+
95
+ export { Card as C, CardContent as a, CardDescription as b, CardFooter as c, CardHeader as d, CardLink as e, CardTitle as f };
96
+ //# sourceMappingURL=Card-BjFMX3pD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card-BjFMX3pD.js","sources":["../src/ds/components/Card/Card.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nconst cardVariants = cva(\n // Base styles\n 'duration-normal rounded-lg transition-all ease-out-custom motion-reduce:transition-none',\n {\n variants: {\n appearance: {\n outlined: 'border border-border1 bg-surface2',\n surface: 'bg-surface3',\n },\n elevation: {\n flat: '',\n raised: 'shadow-card',\n elevated: 'shadow-elevated',\n },\n interactive: {\n true: 'cursor-pointer active:scale-99',\n false: '',\n },\n },\n compoundVariants: [\n {\n appearance: 'outlined',\n interactive: true,\n className: 'hover:border-border2 hover:bg-surface3',\n },\n {\n appearance: 'surface',\n interactive: true,\n className:\n 'hover:bg-surface4 focus-visible:bg-surface4 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border2 active:bg-surface5',\n },\n ],\n defaultVariants: {\n appearance: 'outlined',\n elevation: 'flat',\n interactive: false,\n },\n },\n);\n\nexport type CardProps = React.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof cardVariants> & {\n as?: React.ElementType;\n };\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, appearance, elevation, interactive, as, ...props }, ref) => {\n const Component = as || (interactive ? 'button' : 'div');\n\n return (\n <Component\n ref={ref}\n type={Component === 'button' ? 'button' : undefined}\n className={cn(cardVariants({ appearance, elevation, interactive }), className)}\n {...props}\n />\n );\n },\n);\nCard.displayName = 'Card';\n\nexport type CardLinkProps = Omit<React.ComponentPropsWithoutRef<'a'>, 'href'> &\n Omit<VariantProps<typeof cardVariants>, 'interactive'> & {\n href: string;\n LinkComponent?: LinkComponent;\n };\n\nexport function CardLink({ className, appearance, elevation, LinkComponent: Link = 'a', ...props }: CardLinkProps) {\n return <Link className={cn(cardVariants({ appearance, elevation, interactive: true }), className)} {...props} />;\n}\n\n// Card Header component\nexport type CardHeaderProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-4 pb-0', className)} {...props} />\n));\nCardHeader.displayName = 'CardHeader';\n\n// Card Title component\nexport type CardTitleProps = React.HTMLAttributes<HTMLHeadingElement>;\n\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, CardTitleProps>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn('text-ui-md leading-none font-semibold tracking-tight text-neutral6', className)}\n {...props}\n />\n));\nCardTitle.displayName = 'CardTitle';\n\n// Card Description component\nexport type CardDescriptionProps = React.HTMLAttributes<HTMLParagraphElement>;\n\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => <p ref={ref} className={cn('text-ui-sm text-neutral3', className)} {...props} />,\n);\nCardDescription.displayName = 'CardDescription';\n\n// Card Content component\nconst cardContentVariants = cva('', {\n variants: {\n density: {\n default: 'p-4',\n compact: 'p-3',\n },\n },\n defaultVariants: {\n density: 'default',\n },\n});\n\nexport type CardContentProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof cardContentVariants>;\n\nexport const CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, density, ...props }, ref) => (\n <div ref={ref} className={cn(cardContentVariants({ density }), className)} {...props} />\n ),\n);\nCardContent.displayName = 'CardContent';\n\n// Card Footer component\nexport type CardFooterProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-4 pt-0', className)} {...props} />\n));\nCardFooter.displayName = 'CardFooter';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ 'use strict';
2
+
3
+ const jsxRuntime = require('react/jsx-runtime');
4
+ const index = require('./index-C-Lt4Bx_.cjs');
5
+ const React = require('react');
6
+ const utils_cn = require('./cn-vA5sWo9W.cjs');
7
+
8
+ function _interopNamespaceDefault(e) {
9
+ const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
10
+ if (e) {
11
+ for (const k in e) {
12
+ if (k !== 'default') {
13
+ const d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: () => e[k]
17
+ });
18
+ }
19
+ }
20
+ }
21
+ n.default = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ const React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
26
+
27
+ const cardVariants = index.cva(
28
+ // Base styles
29
+ "duration-normal rounded-lg transition-all ease-out-custom motion-reduce:transition-none",
30
+ {
31
+ variants: {
32
+ appearance: {
33
+ outlined: "border border-border1 bg-surface2",
34
+ surface: "bg-surface3"
35
+ },
36
+ elevation: {
37
+ flat: "",
38
+ raised: "shadow-card",
39
+ elevated: "shadow-elevated"
40
+ },
41
+ interactive: {
42
+ true: "cursor-pointer active:scale-99",
43
+ false: ""
44
+ }
45
+ },
46
+ compoundVariants: [
47
+ {
48
+ appearance: "outlined",
49
+ interactive: true,
50
+ className: "hover:border-border2 hover:bg-surface3"
51
+ },
52
+ {
53
+ appearance: "surface",
54
+ interactive: true,
55
+ className: "hover:bg-surface4 focus-visible:bg-surface4 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border2 active:bg-surface5"
56
+ }
57
+ ],
58
+ defaultVariants: {
59
+ appearance: "outlined",
60
+ elevation: "flat",
61
+ interactive: false
62
+ }
63
+ }
64
+ );
65
+ const Card = React__namespace.forwardRef(
66
+ ({ className, appearance, elevation, interactive, as, ...props }, ref) => {
67
+ const Component = as || (interactive ? "button" : "div");
68
+ return /* @__PURE__ */ jsxRuntime.jsx(
69
+ Component,
70
+ {
71
+ ref,
72
+ type: Component === "button" ? "button" : void 0,
73
+ className: utils_cn.cn(cardVariants({ appearance, elevation, interactive }), className),
74
+ ...props
75
+ }
76
+ );
77
+ }
78
+ );
79
+ Card.displayName = "Card";
80
+ function CardLink({ className, appearance, elevation, LinkComponent: Link = "a", ...props }) {
81
+ return /* @__PURE__ */ jsxRuntime.jsx(Link, { className: utils_cn.cn(cardVariants({ appearance, elevation, interactive: true }), className), ...props });
82
+ }
83
+ const CardHeader = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: utils_cn.cn("flex flex-col space-y-1.5 p-4 pb-0", className), ...props }));
84
+ CardHeader.displayName = "CardHeader";
85
+ const CardTitle = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
86
+ "h3",
87
+ {
88
+ ref,
89
+ className: utils_cn.cn("text-ui-md leading-none font-semibold tracking-tight text-neutral6", className),
90
+ ...props
91
+ }
92
+ ));
93
+ CardTitle.displayName = "CardTitle";
94
+ const CardDescription = React__namespace.forwardRef(
95
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("p", { ref, className: utils_cn.cn("text-ui-sm text-neutral3", className), ...props })
96
+ );
97
+ CardDescription.displayName = "CardDescription";
98
+ const cardContentVariants = index.cva("", {
99
+ variants: {
100
+ density: {
101
+ default: "p-4",
102
+ compact: "p-3"
103
+ }
104
+ },
105
+ defaultVariants: {
106
+ density: "default"
107
+ }
108
+ });
109
+ const CardContent = React__namespace.forwardRef(
110
+ ({ className, density, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: utils_cn.cn(cardContentVariants({ density }), className), ...props })
111
+ );
112
+ CardContent.displayName = "CardContent";
113
+ const CardFooter = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: utils_cn.cn("flex items-center p-4 pt-0", className), ...props }));
114
+ CardFooter.displayName = "CardFooter";
115
+
116
+ exports.Card = Card;
117
+ exports.CardContent = CardContent;
118
+ exports.CardDescription = CardDescription;
119
+ exports.CardFooter = CardFooter;
120
+ exports.CardHeader = CardHeader;
121
+ exports.CardLink = CardLink;
122
+ exports.CardTitle = CardTitle;
123
+ //# sourceMappingURL=Card-WU2qkiHB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card-WU2qkiHB.cjs","sources":["../src/ds/components/Card/Card.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nconst cardVariants = cva(\n // Base styles\n 'duration-normal rounded-lg transition-all ease-out-custom motion-reduce:transition-none',\n {\n variants: {\n appearance: {\n outlined: 'border border-border1 bg-surface2',\n surface: 'bg-surface3',\n },\n elevation: {\n flat: '',\n raised: 'shadow-card',\n elevated: 'shadow-elevated',\n },\n interactive: {\n true: 'cursor-pointer active:scale-99',\n false: '',\n },\n },\n compoundVariants: [\n {\n appearance: 'outlined',\n interactive: true,\n className: 'hover:border-border2 hover:bg-surface3',\n },\n {\n appearance: 'surface',\n interactive: true,\n className:\n 'hover:bg-surface4 focus-visible:bg-surface4 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border2 active:bg-surface5',\n },\n ],\n defaultVariants: {\n appearance: 'outlined',\n elevation: 'flat',\n interactive: false,\n },\n },\n);\n\nexport type CardProps = React.HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof cardVariants> & {\n as?: React.ElementType;\n };\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, appearance, elevation, interactive, as, ...props }, ref) => {\n const Component = as || (interactive ? 'button' : 'div');\n\n return (\n <Component\n ref={ref}\n type={Component === 'button' ? 'button' : undefined}\n className={cn(cardVariants({ appearance, elevation, interactive }), className)}\n {...props}\n />\n );\n },\n);\nCard.displayName = 'Card';\n\nexport type CardLinkProps = Omit<React.ComponentPropsWithoutRef<'a'>, 'href'> &\n Omit<VariantProps<typeof cardVariants>, 'interactive'> & {\n href: string;\n LinkComponent?: LinkComponent;\n };\n\nexport function CardLink({ className, appearance, elevation, LinkComponent: Link = 'a', ...props }: CardLinkProps) {\n return <Link className={cn(cardVariants({ appearance, elevation, interactive: true }), className)} {...props} />;\n}\n\n// Card Header component\nexport type CardHeaderProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-4 pb-0', className)} {...props} />\n));\nCardHeader.displayName = 'CardHeader';\n\n// Card Title component\nexport type CardTitleProps = React.HTMLAttributes<HTMLHeadingElement>;\n\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, CardTitleProps>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn('text-ui-md leading-none font-semibold tracking-tight text-neutral6', className)}\n {...props}\n />\n));\nCardTitle.displayName = 'CardTitle';\n\n// Card Description component\nexport type CardDescriptionProps = React.HTMLAttributes<HTMLParagraphElement>;\n\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => <p ref={ref} className={cn('text-ui-sm text-neutral3', className)} {...props} />,\n);\nCardDescription.displayName = 'CardDescription';\n\n// Card Content component\nconst cardContentVariants = cva('', {\n variants: {\n density: {\n default: 'p-4',\n compact: 'p-3',\n },\n },\n defaultVariants: {\n density: 'default',\n },\n});\n\nexport type CardContentProps = React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof cardContentVariants>;\n\nexport const CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, density, ...props }, ref) => (\n <div ref={ref} className={cn(cardContentVariants({ density }), className)} {...props} />\n ),\n);\nCardContent.displayName = 'CardContent';\n\n// Card Footer component\nexport type CardFooterProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-4 pt-0', className)} {...props} />\n));\nCardFooter.displayName = 'CardFooter';\n"],"names":["cva","React","jsx","cn"],"mappings":"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"}
@@ -18,9 +18,9 @@ const variants = {
18
18
  const fonts = {
19
19
  mono: "font-mono"
20
20
  };
21
- const Txt = ({ as: Root = "p", className, variant = "ui-md", font, ...props }) => {
22
- return /* @__PURE__ */ jsx(Root, { className: cn(variants[variant], font && fonts[font], className), ...props });
21
+ const Txt = ({ as: Root = "p", className, variant = "ui-md", font, ref, ...props }) => {
22
+ return /* @__PURE__ */ jsx(Root, { ref, className: cn(variants[variant], font && fonts[font], className), ...props });
23
23
  };
24
24
 
25
25
  export { Txt as T };
26
- //# sourceMappingURL=Txt-p33XTnu8.js.map
26
+ //# sourceMappingURL=Txt-Df42XG5p.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Txt-Df42XG5p.js","sources":["../src/ds/components/Txt/Txt.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode, Ref } from 'react';\n\nimport type { FontSizes } from '../../tokens';\nimport { cn } from '@/lib/utils';\n\nexport interface TxtProps extends HTMLAttributes<HTMLDivElement | HTMLLabelElement> {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'label' | 'div';\n ref?: Ref<HTMLElement>;\n variant?: keyof typeof FontSizes;\n font?: 'mono';\n htmlFor?: string;\n className?: string;\n title?: string;\n children?: ReactNode;\n}\n\nconst variants = {\n // UI text sizes\n 'ui-xs': 'text-ui-xs leading-ui-xs',\n 'ui-sm': 'text-ui-sm leading-ui-sm',\n 'ui-smd': 'text-ui-smd leading-ui-smd',\n 'ui-md': 'text-ui-md leading-ui-md',\n 'ui-lg': 'text-ui-lg leading-ui-lg',\n // Header sizes\n 'header-xs': 'text-header-xs leading-header-xs',\n 'header-sm': 'text-header-sm leading-header-sm',\n 'header-md': 'text-header-md leading-header-md',\n 'header-lg': 'text-header-lg leading-header-lg',\n 'header-xl': 'text-header-xl leading-header-xl',\n};\n\nconst fonts = {\n mono: 'font-mono',\n};\n\nexport const Txt = ({ as: Root = 'p', className, variant = 'ui-md', font, ref, ...props }: TxtProps) => {\n // Cast needed: `Root` is polymorphic, so TS narrows the expected ref to a single element type.\n return <Root ref={ref as never} className={cn(variants[variant], font && fonts[font], className)} {...props} />;\n};\n"],"names":[],"mappings":";;;AAgBA,MAAM,QAAA,GAAW;AAAA;AAAA,EAEf,OAAA,EAAS,0BAAA;AAAA,EACT,OAAA,EAAS,0BAAA;AAAA,EACT,QAAA,EAAU,4BAAA;AAAA,EACV,OAAA,EAAS,0BAAA;AAAA,EACT,OAAA,EAAS,0BAAA;AAAA;AAAA,EAET,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa;AACf,CAAA;AAEA,MAAM,KAAA,GAAQ;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,MAAM,GAAA,GAAM,CAAC,EAAE,EAAA,EAAI,IAAA,GAAO,GAAA,EAAK,SAAA,EAAW,OAAA,GAAU,OAAA,EAAS,IAAA,EAAM,GAAA,EAAK,GAAG,OAAM,KAAgB;AAEtG,EAAA,uBAAO,GAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAmB,SAAA,EAAW,GAAG,QAAA,CAAS,OAAO,CAAA,EAAG,IAAA,IAAQ,MAAM,IAAI,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC/G;;;;"}
@@ -20,9 +20,9 @@ const variants = {
20
20
  const fonts = {
21
21
  mono: "font-mono"
22
22
  };
23
- const Txt = ({ as: Root = "p", className, variant = "ui-md", font, ...props }) => {
24
- return /* @__PURE__ */ jsxRuntime.jsx(Root, { className: utils_cn.cn(variants[variant], font && fonts[font], className), ...props });
23
+ const Txt = ({ as: Root = "p", className, variant = "ui-md", font, ref, ...props }) => {
24
+ return /* @__PURE__ */ jsxRuntime.jsx(Root, { ref, className: utils_cn.cn(variants[variant], font && fonts[font], className), ...props });
25
25
  };
26
26
 
27
27
  exports.Txt = Txt;
28
- //# sourceMappingURL=Txt-BT8_EkuZ.cjs.map
28
+ //# sourceMappingURL=Txt-I5lK8zy7.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Txt-I5lK8zy7.cjs","sources":["../src/ds/components/Txt/Txt.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode, Ref } from 'react';\n\nimport type { FontSizes } from '../../tokens';\nimport { cn } from '@/lib/utils';\n\nexport interface TxtProps extends HTMLAttributes<HTMLDivElement | HTMLLabelElement> {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span' | 'label' | 'div';\n ref?: Ref<HTMLElement>;\n variant?: keyof typeof FontSizes;\n font?: 'mono';\n htmlFor?: string;\n className?: string;\n title?: string;\n children?: ReactNode;\n}\n\nconst variants = {\n // UI text sizes\n 'ui-xs': 'text-ui-xs leading-ui-xs',\n 'ui-sm': 'text-ui-sm leading-ui-sm',\n 'ui-smd': 'text-ui-smd leading-ui-smd',\n 'ui-md': 'text-ui-md leading-ui-md',\n 'ui-lg': 'text-ui-lg leading-ui-lg',\n // Header sizes\n 'header-xs': 'text-header-xs leading-header-xs',\n 'header-sm': 'text-header-sm leading-header-sm',\n 'header-md': 'text-header-md leading-header-md',\n 'header-lg': 'text-header-lg leading-header-lg',\n 'header-xl': 'text-header-xl leading-header-xl',\n};\n\nconst fonts = {\n mono: 'font-mono',\n};\n\nexport const Txt = ({ as: Root = 'p', className, variant = 'ui-md', font, ref, ...props }: TxtProps) => {\n // Cast needed: `Root` is polymorphic, so TS narrows the expected ref to a single element type.\n return <Root ref={ref as never} className={cn(variants[variant], font && fonts[font], className)} {...props} />;\n};\n"],"names":["jsx","cn"],"mappings":";;;;;AAgBA,MAAM,QAAA,GAAW;AAAA;AAAA,EAEf,OAAA,EAAS,0BAAA;AAAA,EACT,OAAA,EAAS,0BAAA;AAAA,EACT,QAAA,EAAU,4BAAA;AAAA,EACV,OAAA,EAAS,0BAAA;AAAA,EACT,OAAA,EAAS,0BAAA;AAAA;AAAA,EAET,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa,kCAAA;AAAA,EACb,WAAA,EAAa;AACf,CAAA;AAEA,MAAM,KAAA,GAAQ;AAAA,EACZ,IAAA,EAAM;AACR,CAAA;AAEO,MAAM,GAAA,GAAM,CAAC,EAAE,EAAA,EAAI,IAAA,GAAO,GAAA,EAAK,SAAA,EAAW,OAAA,GAAU,OAAA,EAAS,IAAA,EAAM,GAAA,EAAK,GAAG,OAAM,KAAgB;AAEtG,EAAA,uBAAOA,cAAA,CAAC,IAAA,EAAA,EAAK,GAAA,EAAmB,SAAA,EAAWC,YAAG,QAAA,CAAS,OAAO,CAAA,EAAG,IAAA,IAAQ,MAAM,IAAI,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAC/G;;;;"}
@@ -123,9 +123,9 @@ const ButtonsGroupSeparator = React.forwardRef(
123
123
  ButtonsGroupSeparator.displayName = "ButtonsGroupSeparator";
124
124
  const buttonsGroupTextVariants = cva(
125
125
  cn(
126
- "inline-flex items-center justify-center bg-surface3 border border-border1 text-neutral5 select-none",
127
- "rounded-full gap-[.75em] px-[1em] whitespace-nowrap shrink-0",
128
- "[&>svg]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:opacity-50"
126
+ "inline-flex items-center justify-center border border-border1 bg-surface3 text-neutral5 select-none",
127
+ "shrink-0 gap-[.75em] rounded-full px-[1em] whitespace-nowrap",
128
+ "[&>svg]:size-[1.1em] [&>svg]:opacity-50"
129
129
  ),
130
130
  {
131
131
  variants: {
@@ -158,4 +158,4 @@ const ButtonsGroupText = React.forwardRef(
158
158
  ButtonsGroupText.displayName = "ButtonsGroupText";
159
159
 
160
160
  export { ButtonsGroup as B, ButtonsGroupSeparator as a, ButtonsGroupText as b, buttonsGroupVariants as c };
161
- //# sourceMappingURL=buttons-group-b6an6uao.js.map
161
+ //# sourceMappingURL=buttons-group-DJh4wnMs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buttons-group-b6an6uao.js","sources":["../src/ds/components/ButtonsGroup/buttons-group.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { controlSizeClasses } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\ntype Orientation = 'horizontal' | 'vertical';\n\nconst ButtonsGroupOrientationContext = React.createContext<Orientation>('horizontal');\n\nconst buttonsGroupVariants = cva(\n // Lift the hovered/focused segment so its full border paints over the collapsed seam (else a\n // neighbour clips a side / the seam ignores the active colour). Use `:focus-visible`, NOT\n // `:focus-within`: a mouse click leaves a plain `:focus` on a button, which would otherwise\n // keep its seam border highlighted until blur. `:has(:focus-visible)` covers a nested\n // focusable (the <input> inside an InputGroup); text inputs match :focus-visible on click too,\n // which is the wanted behaviour for a field.\n cn(\n 'flex',\n '[&>*:hover]:relative [&>*:hover]:z-10',\n '[&>*:focus-visible]:relative [&>*:focus-visible]:z-10',\n '[&>*:has(:focus-visible)]:relative [&>*:has(:focus-visible)]:z-10',\n ),\n {\n variants: {\n orientation: {\n horizontal: 'flex-row items-center',\n vertical: 'flex-col items-stretch',\n },\n spacing: {\n default: 'gap-2',\n close: 'gap-0',\n },\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n spacing: 'close',\n // Flatten inner corners. A segment rounds its right edge off having a *real* segment\n // somewhere after it (general sibling `~`, not `:not(:last-child)` and not adjacent\n // `+`). This survives non-segment children that frameworks inject between/around the\n // real ones: Base UI's trailing `<input aria-hidden>` (Select), and the visually\n // -hidden focus guards (`[data-base-ui-focus-guard]`) + positioner anchor (`[aria-owns]`)\n // a Menu/Popover inserts while OPEN — without this a DropdownMenu split-button seam\n // breaks the moment the menu opens. The same ignore-list is applied to every seam rule.\n className: cn(\n '[&>*:has(~_*:not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]))]:rounded-r-none',\n '[&>*:not(:first-child):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns])]:rounded-l-none',\n // One-line seam: `-ml-px` overlaps adjacent borders onto the same pixel. Filled\n // segments (opaque bg: default/primary buttons, the text chip) keep their own\n // border — the bg hides the neighbour's. Transparent/outline segments null their\n // left border at rest (so the neighbour's shows without doubling) and reveal it on\n // hover / keyboard-focus, where the z-10 lift paints the complete border on top.\n '[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]):not(:first-child)]:-ml-px',\n '[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]):not(:first-child):not(:hover):not(:focus-visible):not(:has(:focus-visible))]:border-l-transparent',\n // `primary` is filled but borderless — give it (only) an inset-shadow divider.\n '[&>[data-variant=primary]:not([aria-hidden=true]):not(:first-child)]:shadow-[inset_1px_0_0_0_var(--color-border1)]',\n // Animate only colour/bg so the seam + ring snap (no fade desynced from the z-10 drop).\n '[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true])]:transition-[color,background-color]',\n // Group owns sizing (no consumer width classes): fill on flex/InputGroup/input,\n // content-width on a Select trigger (descendant rule beats the trigger's `w-full`).\n '[&>[data-slot=select-trigger]]:w-fit [&>[data-slot=select-trigger]]:flex-none',\n '[&>input]:flex-1',\n ),\n },\n {\n orientation: 'vertical',\n spacing: 'close',\n // Children are capsules (rounded-full); re-round the outer ends to rounded-xl and\n // flatten the touching ones. Unlike the horizontal block, these use plain structural\n // selectors (no aria-hidden / data-base-ui-focus-guard / aria-owns ignore-list): vertical\n // close-spacing is only used with plain buttons, so it never hosts a Select/DropdownMenu\n // that injects guard siblings. Mirror the horizontal ignore-list here if one ever does.\n className: cn(\n '[&>*:not(:last-child)]:rounded-b-none',\n '[&>*:not(:first-child)]:rounded-t-none',\n '[&>:first-child]:rounded-t-xl',\n '[&>:last-child]:rounded-b-xl',\n '[&>*:not([data-slot=buttons-group-separator]):not(:first-child)]:-mt-px',\n '[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not(:first-child):not(:hover):not(:focus-visible):not(:has(:focus-visible))]:border-t-transparent',\n '[&>[data-variant=primary]:not(:first-child)]:shadow-[inset_0_1px_0_0_var(--color-border1)]',\n '[&>*:not([data-slot=buttons-group-separator])]:transition-[color,background-color]',\n ),\n },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n spacing: 'default',\n },\n },\n);\n\n// Derive variant types from cva (single source of truth) and strip `null` that cva injects.\ntype ButtonsGroupVariantsProps = VariantProps<typeof buttonsGroupVariants>;\nexport type ButtonsGroupSpacing = NonNullable<ButtonsGroupVariantsProps['spacing']>;\n\nexport type ButtonsGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n orientation?: Orientation;\n spacing?: ButtonsGroupSpacing;\n};\n\nexport const ButtonsGroup = React.forwardRef<HTMLDivElement, ButtonsGroupProps>(\n ({ children, className, orientation = 'horizontal', spacing = 'default', ...props }, ref) => {\n return (\n <ButtonsGroupOrientationContext.Provider value={orientation}>\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"buttons-group\"\n data-orientation={orientation}\n className={cn(buttonsGroupVariants({ orientation, spacing }), className)}\n {...props}\n >\n {children}\n </div>\n </ButtonsGroupOrientationContext.Provider>\n );\n },\n);\nButtonsGroup.displayName = 'ButtonsGroup';\n\nexport type ButtonsGroupSeparatorProps = React.ComponentPropsWithoutRef<'div'> & {\n orientation?: Orientation;\n};\n\nexport const ButtonsGroupSeparator = React.forwardRef<HTMLDivElement, ButtonsGroupSeparatorProps>(\n ({ className, orientation, ...props }, ref) => {\n const parentOrientation = React.useContext(ButtonsGroupOrientationContext);\n // Separator runs perpendicular to the group flow by default.\n const resolved = orientation ?? (parentOrientation === 'vertical' ? 'horizontal' : 'vertical');\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={resolved}\n data-slot=\"buttons-group-separator\"\n className={cn('self-stretch bg-border1', resolved === 'vertical' ? 'w-px' : 'h-px', className)}\n {...props}\n />\n );\n },\n);\nButtonsGroupSeparator.displayName = 'ButtonsGroupSeparator';\n\nconst buttonsGroupTextVariants = cva(\n cn(\n 'inline-flex items-center justify-center bg-surface3 border border-border1 text-neutral5 select-none',\n 'rounded-full gap-[.75em] px-[1em] whitespace-nowrap shrink-0',\n '[&>svg]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:opacity-50',\n ),\n {\n variants: {\n size: {\n xs: controlSizeClasses.xs,\n sm: controlSizeClasses.sm,\n md: controlSizeClasses.md,\n default: controlSizeClasses.default,\n lg: controlSizeClasses.lg,\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n);\n\nexport type ButtonsGroupTextProps = React.ComponentPropsWithoutRef<'div'> & {\n size?: ControlSize;\n};\n\nexport const ButtonsGroupText = React.forwardRef<HTMLDivElement, ButtonsGroupTextProps>(\n ({ className, size = 'default', ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-slot=\"buttons-group-text\"\n className={cn(buttonsGroupTextVariants({ size }), className)}\n {...props}\n />\n );\n },\n);\nButtonsGroupText.displayName = 'ButtonsGroupText';\n\nexport { buttonsGroupVariants };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buttons-group-DJh4wnMs.js","sources":["../src/ds/components/ButtonsGroup/buttons-group.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { controlSizeClasses } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\ntype Orientation = 'horizontal' | 'vertical';\n\nconst ButtonsGroupOrientationContext = React.createContext<Orientation>('horizontal');\n\nconst buttonsGroupVariants = cva(\n // Lift the hovered/focused segment so its full border paints over the collapsed seam (else a\n // neighbour clips a side / the seam ignores the active colour). Use `:focus-visible`, NOT\n // `:focus-within`: a mouse click leaves a plain `:focus` on a button, which would otherwise\n // keep its seam border highlighted until blur. `:has(:focus-visible)` covers a nested\n // focusable (the <input> inside an InputGroup); text inputs match :focus-visible on click too,\n // which is the wanted behaviour for a field.\n cn(\n 'flex',\n '[&>*:hover]:relative [&>*:hover]:z-10',\n '[&>*:focus-visible]:relative [&>*:focus-visible]:z-10',\n '[&>*:has(:focus-visible)]:relative [&>*:has(:focus-visible)]:z-10',\n ),\n {\n variants: {\n orientation: {\n horizontal: 'flex-row items-center',\n vertical: 'flex-col items-stretch',\n },\n spacing: {\n default: 'gap-2',\n close: 'gap-0',\n },\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n spacing: 'close',\n // Flatten inner corners. A segment rounds its right edge off having a *real* segment\n // somewhere after it (general sibling `~`, not `:not(:last-child)` and not adjacent\n // `+`). This survives non-segment children that frameworks inject between/around the\n // real ones: Base UI's trailing `<input aria-hidden>` (Select), and the visually\n // -hidden focus guards (`[data-base-ui-focus-guard]`) + positioner anchor (`[aria-owns]`)\n // a Menu/Popover inserts while OPEN — without this a DropdownMenu split-button seam\n // breaks the moment the menu opens. The same ignore-list is applied to every seam rule.\n className: cn(\n '[&>*:has(~_*:not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]))]:rounded-r-none',\n '[&>*:not(:first-child):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns])]:rounded-l-none',\n // One-line seam: `-ml-px` overlaps adjacent borders onto the same pixel. Filled\n // segments (opaque bg: default/primary buttons, the text chip) keep their own\n // border — the bg hides the neighbour's. Transparent/outline segments null their\n // left border at rest (so the neighbour's shows without doubling) and reveal it on\n // hover / keyboard-focus, where the z-10 lift paints the complete border on top.\n '[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]):not(:first-child)]:-ml-px',\n '[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]):not(:first-child):not(:hover):not(:focus-visible):not(:has(:focus-visible))]:border-l-transparent',\n // `primary` is filled but borderless — give it (only) an inset-shadow divider.\n '[&>[data-variant=primary]:not([aria-hidden=true]):not(:first-child)]:shadow-[inset_1px_0_0_0_var(--color-border1)]',\n // Animate only colour/bg so the seam + ring snap (no fade desynced from the z-10 drop).\n '[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true])]:transition-[color,background-color]',\n // Group owns sizing (no consumer width classes): fill on flex/InputGroup/input,\n // content-width on a Select trigger (descendant rule beats the trigger's `w-full`).\n '[&>[data-slot=select-trigger]]:w-fit [&>[data-slot=select-trigger]]:flex-none',\n '[&>input]:flex-1',\n ),\n },\n {\n orientation: 'vertical',\n spacing: 'close',\n // Children are capsules (rounded-full); re-round the outer ends to rounded-xl and\n // flatten the touching ones. Unlike the horizontal block, these use plain structural\n // selectors (no aria-hidden / data-base-ui-focus-guard / aria-owns ignore-list): vertical\n // close-spacing is only used with plain buttons, so it never hosts a Select/DropdownMenu\n // that injects guard siblings. Mirror the horizontal ignore-list here if one ever does.\n className: cn(\n '[&>*:not(:last-child)]:rounded-b-none',\n '[&>*:not(:first-child)]:rounded-t-none',\n '[&>:first-child]:rounded-t-xl',\n '[&>:last-child]:rounded-b-xl',\n '[&>*:not([data-slot=buttons-group-separator]):not(:first-child)]:-mt-px',\n '[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not(:first-child):not(:hover):not(:focus-visible):not(:has(:focus-visible))]:border-t-transparent',\n '[&>[data-variant=primary]:not(:first-child)]:shadow-[inset_0_1px_0_0_var(--color-border1)]',\n '[&>*:not([data-slot=buttons-group-separator])]:transition-[color,background-color]',\n ),\n },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n spacing: 'default',\n },\n },\n);\n\n// Derive variant types from cva (single source of truth) and strip `null` that cva injects.\ntype ButtonsGroupVariantsProps = VariantProps<typeof buttonsGroupVariants>;\nexport type ButtonsGroupSpacing = NonNullable<ButtonsGroupVariantsProps['spacing']>;\n\nexport type ButtonsGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n orientation?: Orientation;\n spacing?: ButtonsGroupSpacing;\n};\n\nexport const ButtonsGroup = React.forwardRef<HTMLDivElement, ButtonsGroupProps>(\n ({ children, className, orientation = 'horizontal', spacing = 'default', ...props }, ref) => {\n return (\n <ButtonsGroupOrientationContext.Provider value={orientation}>\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"buttons-group\"\n data-orientation={orientation}\n className={cn(buttonsGroupVariants({ orientation, spacing }), className)}\n {...props}\n >\n {children}\n </div>\n </ButtonsGroupOrientationContext.Provider>\n );\n },\n);\nButtonsGroup.displayName = 'ButtonsGroup';\n\nexport type ButtonsGroupSeparatorProps = React.ComponentPropsWithoutRef<'div'> & {\n orientation?: Orientation;\n};\n\nexport const ButtonsGroupSeparator = React.forwardRef<HTMLDivElement, ButtonsGroupSeparatorProps>(\n ({ className, orientation, ...props }, ref) => {\n const parentOrientation = React.useContext(ButtonsGroupOrientationContext);\n // Separator runs perpendicular to the group flow by default.\n const resolved = orientation ?? (parentOrientation === 'vertical' ? 'horizontal' : 'vertical');\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={resolved}\n data-slot=\"buttons-group-separator\"\n className={cn('self-stretch bg-border1', resolved === 'vertical' ? 'w-px' : 'h-px', className)}\n {...props}\n />\n );\n },\n);\nButtonsGroupSeparator.displayName = 'ButtonsGroupSeparator';\n\nconst buttonsGroupTextVariants = cva(\n cn(\n 'inline-flex items-center justify-center border border-border1 bg-surface3 text-neutral5 select-none',\n 'shrink-0 gap-[.75em] rounded-full px-[1em] whitespace-nowrap',\n '[&>svg]:size-[1.1em] [&>svg]:opacity-50',\n ),\n {\n variants: {\n size: {\n xs: controlSizeClasses.xs,\n sm: controlSizeClasses.sm,\n md: controlSizeClasses.md,\n default: controlSizeClasses.default,\n lg: controlSizeClasses.lg,\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n);\n\nexport type ButtonsGroupTextProps = React.ComponentPropsWithoutRef<'div'> & {\n size?: ControlSize;\n};\n\nexport const ButtonsGroupText = React.forwardRef<HTMLDivElement, ButtonsGroupTextProps>(\n ({ className, size = 'default', ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-slot=\"buttons-group-text\"\n className={cn(buttonsGroupTextVariants({ size }), className)}\n {...props}\n />\n );\n },\n);\nButtonsGroupText.displayName = 'ButtonsGroupText';\n\nexport { buttonsGroupVariants };\n"],"names":[],"mappings":"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"}
@@ -144,9 +144,9 @@ const ButtonsGroupSeparator = React__namespace.forwardRef(
144
144
  ButtonsGroupSeparator.displayName = "ButtonsGroupSeparator";
145
145
  const buttonsGroupTextVariants = index.cva(
146
146
  utils_cn.cn(
147
- "inline-flex items-center justify-center bg-surface3 border border-border1 text-neutral5 select-none",
148
- "rounded-full gap-[.75em] px-[1em] whitespace-nowrap shrink-0",
149
- "[&>svg]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:opacity-50"
147
+ "inline-flex items-center justify-center border border-border1 bg-surface3 text-neutral5 select-none",
148
+ "shrink-0 gap-[.75em] rounded-full px-[1em] whitespace-nowrap",
149
+ "[&>svg]:size-[1.1em] [&>svg]:opacity-50"
150
150
  ),
151
151
  {
152
152
  variants: {
@@ -182,4 +182,4 @@ exports.ButtonsGroup = ButtonsGroup;
182
182
  exports.ButtonsGroupSeparator = ButtonsGroupSeparator;
183
183
  exports.ButtonsGroupText = ButtonsGroupText;
184
184
  exports.buttonsGroupVariants = buttonsGroupVariants;
185
- //# sourceMappingURL=buttons-group-C0fJastT.cjs.map
185
+ //# sourceMappingURL=buttons-group-Dw8Wu4sj.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"buttons-group-C0fJastT.cjs","sources":["../src/ds/components/ButtonsGroup/buttons-group.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { controlSizeClasses } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\ntype Orientation = 'horizontal' | 'vertical';\n\nconst ButtonsGroupOrientationContext = React.createContext<Orientation>('horizontal');\n\nconst buttonsGroupVariants = cva(\n // Lift the hovered/focused segment so its full border paints over the collapsed seam (else a\n // neighbour clips a side / the seam ignores the active colour). Use `:focus-visible`, NOT\n // `:focus-within`: a mouse click leaves a plain `:focus` on a button, which would otherwise\n // keep its seam border highlighted until blur. `:has(:focus-visible)` covers a nested\n // focusable (the <input> inside an InputGroup); text inputs match :focus-visible on click too,\n // which is the wanted behaviour for a field.\n cn(\n 'flex',\n '[&>*:hover]:relative [&>*:hover]:z-10',\n '[&>*:focus-visible]:relative [&>*:focus-visible]:z-10',\n '[&>*:has(:focus-visible)]:relative [&>*:has(:focus-visible)]:z-10',\n ),\n {\n variants: {\n orientation: {\n horizontal: 'flex-row items-center',\n vertical: 'flex-col items-stretch',\n },\n spacing: {\n default: 'gap-2',\n close: 'gap-0',\n },\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n spacing: 'close',\n // Flatten inner corners. A segment rounds its right edge off having a *real* segment\n // somewhere after it (general sibling `~`, not `:not(:last-child)` and not adjacent\n // `+`). This survives non-segment children that frameworks inject between/around the\n // real ones: Base UI's trailing `<input aria-hidden>` (Select), and the visually\n // -hidden focus guards (`[data-base-ui-focus-guard]`) + positioner anchor (`[aria-owns]`)\n // a Menu/Popover inserts while OPEN — without this a DropdownMenu split-button seam\n // breaks the moment the menu opens. The same ignore-list is applied to every seam rule.\n className: cn(\n '[&>*:has(~_*:not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]))]:rounded-r-none',\n '[&>*:not(:first-child):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns])]:rounded-l-none',\n // One-line seam: `-ml-px` overlaps adjacent borders onto the same pixel. Filled\n // segments (opaque bg: default/primary buttons, the text chip) keep their own\n // border — the bg hides the neighbour's. Transparent/outline segments null their\n // left border at rest (so the neighbour's shows without doubling) and reveal it on\n // hover / keyboard-focus, where the z-10 lift paints the complete border on top.\n '[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]):not(:first-child)]:-ml-px',\n '[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]):not(:first-child):not(:hover):not(:focus-visible):not(:has(:focus-visible))]:border-l-transparent',\n // `primary` is filled but borderless — give it (only) an inset-shadow divider.\n '[&>[data-variant=primary]:not([aria-hidden=true]):not(:first-child)]:shadow-[inset_1px_0_0_0_var(--color-border1)]',\n // Animate only colour/bg so the seam + ring snap (no fade desynced from the z-10 drop).\n '[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true])]:transition-[color,background-color]',\n // Group owns sizing (no consumer width classes): fill on flex/InputGroup/input,\n // content-width on a Select trigger (descendant rule beats the trigger's `w-full`).\n '[&>[data-slot=select-trigger]]:w-fit [&>[data-slot=select-trigger]]:flex-none',\n '[&>input]:flex-1',\n ),\n },\n {\n orientation: 'vertical',\n spacing: 'close',\n // Children are capsules (rounded-full); re-round the outer ends to rounded-xl and\n // flatten the touching ones. Unlike the horizontal block, these use plain structural\n // selectors (no aria-hidden / data-base-ui-focus-guard / aria-owns ignore-list): vertical\n // close-spacing is only used with plain buttons, so it never hosts a Select/DropdownMenu\n // that injects guard siblings. Mirror the horizontal ignore-list here if one ever does.\n className: cn(\n '[&>*:not(:last-child)]:rounded-b-none',\n '[&>*:not(:first-child)]:rounded-t-none',\n '[&>:first-child]:rounded-t-xl',\n '[&>:last-child]:rounded-b-xl',\n '[&>*:not([data-slot=buttons-group-separator]):not(:first-child)]:-mt-px',\n '[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not(:first-child):not(:hover):not(:focus-visible):not(:has(:focus-visible))]:border-t-transparent',\n '[&>[data-variant=primary]:not(:first-child)]:shadow-[inset_0_1px_0_0_var(--color-border1)]',\n '[&>*:not([data-slot=buttons-group-separator])]:transition-[color,background-color]',\n ),\n },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n spacing: 'default',\n },\n },\n);\n\n// Derive variant types from cva (single source of truth) and strip `null` that cva injects.\ntype ButtonsGroupVariantsProps = VariantProps<typeof buttonsGroupVariants>;\nexport type ButtonsGroupSpacing = NonNullable<ButtonsGroupVariantsProps['spacing']>;\n\nexport type ButtonsGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n orientation?: Orientation;\n spacing?: ButtonsGroupSpacing;\n};\n\nexport const ButtonsGroup = React.forwardRef<HTMLDivElement, ButtonsGroupProps>(\n ({ children, className, orientation = 'horizontal', spacing = 'default', ...props }, ref) => {\n return (\n <ButtonsGroupOrientationContext.Provider value={orientation}>\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"buttons-group\"\n data-orientation={orientation}\n className={cn(buttonsGroupVariants({ orientation, spacing }), className)}\n {...props}\n >\n {children}\n </div>\n </ButtonsGroupOrientationContext.Provider>\n );\n },\n);\nButtonsGroup.displayName = 'ButtonsGroup';\n\nexport type ButtonsGroupSeparatorProps = React.ComponentPropsWithoutRef<'div'> & {\n orientation?: Orientation;\n};\n\nexport const ButtonsGroupSeparator = React.forwardRef<HTMLDivElement, ButtonsGroupSeparatorProps>(\n ({ className, orientation, ...props }, ref) => {\n const parentOrientation = React.useContext(ButtonsGroupOrientationContext);\n // Separator runs perpendicular to the group flow by default.\n const resolved = orientation ?? (parentOrientation === 'vertical' ? 'horizontal' : 'vertical');\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={resolved}\n data-slot=\"buttons-group-separator\"\n className={cn('self-stretch bg-border1', resolved === 'vertical' ? 'w-px' : 'h-px', className)}\n {...props}\n />\n );\n },\n);\nButtonsGroupSeparator.displayName = 'ButtonsGroupSeparator';\n\nconst buttonsGroupTextVariants = cva(\n cn(\n 'inline-flex items-center justify-center bg-surface3 border border-border1 text-neutral5 select-none',\n 'rounded-full gap-[.75em] px-[1em] whitespace-nowrap shrink-0',\n '[&>svg]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:opacity-50',\n ),\n {\n variants: {\n size: {\n xs: controlSizeClasses.xs,\n sm: controlSizeClasses.sm,\n md: controlSizeClasses.md,\n default: controlSizeClasses.default,\n lg: controlSizeClasses.lg,\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n);\n\nexport type ButtonsGroupTextProps = React.ComponentPropsWithoutRef<'div'> & {\n size?: ControlSize;\n};\n\nexport const ButtonsGroupText = React.forwardRef<HTMLDivElement, ButtonsGroupTextProps>(\n ({ className, size = 'default', ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-slot=\"buttons-group-text\"\n className={cn(buttonsGroupTextVariants({ size }), className)}\n {...props}\n />\n );\n },\n);\nButtonsGroupText.displayName = 'ButtonsGroupText';\n\nexport { buttonsGroupVariants };\n"],"names":["React","cva","cn","jsx","controlSizeClasses"],"mappings":"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"}
1
+ {"version":3,"file":"buttons-group-Dw8Wu4sj.cjs","sources":["../src/ds/components/ButtonsGroup/buttons-group.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { controlSizeClasses } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\ntype Orientation = 'horizontal' | 'vertical';\n\nconst ButtonsGroupOrientationContext = React.createContext<Orientation>('horizontal');\n\nconst buttonsGroupVariants = cva(\n // Lift the hovered/focused segment so its full border paints over the collapsed seam (else a\n // neighbour clips a side / the seam ignores the active colour). Use `:focus-visible`, NOT\n // `:focus-within`: a mouse click leaves a plain `:focus` on a button, which would otherwise\n // keep its seam border highlighted until blur. `:has(:focus-visible)` covers a nested\n // focusable (the <input> inside an InputGroup); text inputs match :focus-visible on click too,\n // which is the wanted behaviour for a field.\n cn(\n 'flex',\n '[&>*:hover]:relative [&>*:hover]:z-10',\n '[&>*:focus-visible]:relative [&>*:focus-visible]:z-10',\n '[&>*:has(:focus-visible)]:relative [&>*:has(:focus-visible)]:z-10',\n ),\n {\n variants: {\n orientation: {\n horizontal: 'flex-row items-center',\n vertical: 'flex-col items-stretch',\n },\n spacing: {\n default: 'gap-2',\n close: 'gap-0',\n },\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n spacing: 'close',\n // Flatten inner corners. A segment rounds its right edge off having a *real* segment\n // somewhere after it (general sibling `~`, not `:not(:last-child)` and not adjacent\n // `+`). This survives non-segment children that frameworks inject between/around the\n // real ones: Base UI's trailing `<input aria-hidden>` (Select), and the visually\n // -hidden focus guards (`[data-base-ui-focus-guard]`) + positioner anchor (`[aria-owns]`)\n // a Menu/Popover inserts while OPEN — without this a DropdownMenu split-button seam\n // breaks the moment the menu opens. The same ignore-list is applied to every seam rule.\n className: cn(\n '[&>*:has(~_*:not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]))]:rounded-r-none',\n '[&>*:not(:first-child):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns])]:rounded-l-none',\n // One-line seam: `-ml-px` overlaps adjacent borders onto the same pixel. Filled\n // segments (opaque bg: default/primary buttons, the text chip) keep their own\n // border — the bg hides the neighbour's. Transparent/outline segments null their\n // left border at rest (so the neighbour's shows without doubling) and reveal it on\n // hover / keyboard-focus, where the z-10 lift paints the complete border on top.\n '[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]):not(:first-child)]:-ml-px',\n '[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]):not(:first-child):not(:hover):not(:focus-visible):not(:has(:focus-visible))]:border-l-transparent',\n // `primary` is filled but borderless — give it (only) an inset-shadow divider.\n '[&>[data-variant=primary]:not([aria-hidden=true]):not(:first-child)]:shadow-[inset_1px_0_0_0_var(--color-border1)]',\n // Animate only colour/bg so the seam + ring snap (no fade desynced from the z-10 drop).\n '[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true])]:transition-[color,background-color]',\n // Group owns sizing (no consumer width classes): fill on flex/InputGroup/input,\n // content-width on a Select trigger (descendant rule beats the trigger's `w-full`).\n '[&>[data-slot=select-trigger]]:w-fit [&>[data-slot=select-trigger]]:flex-none',\n '[&>input]:flex-1',\n ),\n },\n {\n orientation: 'vertical',\n spacing: 'close',\n // Children are capsules (rounded-full); re-round the outer ends to rounded-xl and\n // flatten the touching ones. Unlike the horizontal block, these use plain structural\n // selectors (no aria-hidden / data-base-ui-focus-guard / aria-owns ignore-list): vertical\n // close-spacing is only used with plain buttons, so it never hosts a Select/DropdownMenu\n // that injects guard siblings. Mirror the horizontal ignore-list here if one ever does.\n className: cn(\n '[&>*:not(:last-child)]:rounded-b-none',\n '[&>*:not(:first-child)]:rounded-t-none',\n '[&>:first-child]:rounded-t-xl',\n '[&>:last-child]:rounded-b-xl',\n '[&>*:not([data-slot=buttons-group-separator]):not(:first-child)]:-mt-px',\n '[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not(:first-child):not(:hover):not(:focus-visible):not(:has(:focus-visible))]:border-t-transparent',\n '[&>[data-variant=primary]:not(:first-child)]:shadow-[inset_0_1px_0_0_var(--color-border1)]',\n '[&>*:not([data-slot=buttons-group-separator])]:transition-[color,background-color]',\n ),\n },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n spacing: 'default',\n },\n },\n);\n\n// Derive variant types from cva (single source of truth) and strip `null` that cva injects.\ntype ButtonsGroupVariantsProps = VariantProps<typeof buttonsGroupVariants>;\nexport type ButtonsGroupSpacing = NonNullable<ButtonsGroupVariantsProps['spacing']>;\n\nexport type ButtonsGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n orientation?: Orientation;\n spacing?: ButtonsGroupSpacing;\n};\n\nexport const ButtonsGroup = React.forwardRef<HTMLDivElement, ButtonsGroupProps>(\n ({ children, className, orientation = 'horizontal', spacing = 'default', ...props }, ref) => {\n return (\n <ButtonsGroupOrientationContext.Provider value={orientation}>\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"buttons-group\"\n data-orientation={orientation}\n className={cn(buttonsGroupVariants({ orientation, spacing }), className)}\n {...props}\n >\n {children}\n </div>\n </ButtonsGroupOrientationContext.Provider>\n );\n },\n);\nButtonsGroup.displayName = 'ButtonsGroup';\n\nexport type ButtonsGroupSeparatorProps = React.ComponentPropsWithoutRef<'div'> & {\n orientation?: Orientation;\n};\n\nexport const ButtonsGroupSeparator = React.forwardRef<HTMLDivElement, ButtonsGroupSeparatorProps>(\n ({ className, orientation, ...props }, ref) => {\n const parentOrientation = React.useContext(ButtonsGroupOrientationContext);\n // Separator runs perpendicular to the group flow by default.\n const resolved = orientation ?? (parentOrientation === 'vertical' ? 'horizontal' : 'vertical');\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={resolved}\n data-slot=\"buttons-group-separator\"\n className={cn('self-stretch bg-border1', resolved === 'vertical' ? 'w-px' : 'h-px', className)}\n {...props}\n />\n );\n },\n);\nButtonsGroupSeparator.displayName = 'ButtonsGroupSeparator';\n\nconst buttonsGroupTextVariants = cva(\n cn(\n 'inline-flex items-center justify-center border border-border1 bg-surface3 text-neutral5 select-none',\n 'shrink-0 gap-[.75em] rounded-full px-[1em] whitespace-nowrap',\n '[&>svg]:size-[1.1em] [&>svg]:opacity-50',\n ),\n {\n variants: {\n size: {\n xs: controlSizeClasses.xs,\n sm: controlSizeClasses.sm,\n md: controlSizeClasses.md,\n default: controlSizeClasses.default,\n lg: controlSizeClasses.lg,\n },\n },\n defaultVariants: {\n size: 'default',\n },\n },\n);\n\nexport type ButtonsGroupTextProps = React.ComponentPropsWithoutRef<'div'> & {\n size?: ControlSize;\n};\n\nexport const ButtonsGroupText = React.forwardRef<HTMLDivElement, ButtonsGroupTextProps>(\n ({ className, size = 'default', ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-slot=\"buttons-group-text\"\n className={cn(buttonsGroupTextVariants({ size }), className)}\n {...props}\n />\n );\n },\n);\nButtonsGroupText.displayName = 'ButtonsGroupText';\n\nexport { buttonsGroupVariants };\n"],"names":["React","cva","cn","jsx","controlSizeClasses"],"mappings":"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"}
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const React = require('react');
7
- const Txt = require('../Txt-BT8_EkuZ.cjs');
7
+ const Txt = require('../Txt-I5lK8zy7.cjs');
8
8
  const primitives_transitions = require('../primitives/transitions.cjs.js');
9
9
  const utils_cn = require('../cn-vA5sWo9W.cjs');
10
10
 
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useState } from 'react';
3
- import { T as Txt } from '../Txt-p33XTnu8.js';
3
+ import { T as Txt } from '../Txt-Df42XG5p.js';
4
4
  import { transitions } from '../primitives/transitions.es.js';
5
5
  import { c as cn } from '../cn-BakJzhuv.js';
6
6
 
@@ -20,9 +20,9 @@ const Crumb = ({ className, as, isCurrent, action, ...props }) => {
20
20
  {
21
21
  "aria-current": isCurrent ? "page" : void 0,
22
22
  className: utils_cn.cn(
23
- "flex min-w-0 items-center gap-2 truncate text-ui-md leading-ui-md",
23
+ "flex min-w-0 items-center gap-2 truncate rounded-md px-1 text-ui-md leading-ui-md",
24
24
  primitives_transitions.transitions.colors,
25
- isCurrent ? "font-medium text-neutral6" : "text-neutral3 hover:text-neutral5",
25
+ isCurrent ? "font-medium text-neutral6" : "cursor-pointer text-neutral3 hover:bg-neutral6/5 hover:text-neutral5 active:bg-neutral6/10",
26
26
  className
27
27
  ),
28
28
  ...props