@mastra/playground-ui 50.0.0-alpha.8 → 50.0.0

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 (284) hide show
  1. package/CHANGELOG.md +152 -0
  2. package/dist/{Button-B4Ixj2aW.cjs → Button-BWj3opYd.cjs} +3 -1
  3. package/dist/Button-BWj3opYd.cjs.map +1 -0
  4. package/dist/{Button-C-9Pzy-Z.js → Button-XHy01fYR.js} +3 -1
  5. package/dist/Button-XHy01fYR.js.map +1 -0
  6. package/dist/{Notice-DWHQgxkA.js → Notice-BtIu4ZoP.js} +2 -2
  7. package/dist/{Notice-DWHQgxkA.js.map → Notice-BtIu4ZoP.js.map} +1 -1
  8. package/dist/{Notice-DSfh1Ap5.cjs → Notice-C6IkjU_x.cjs} +2 -2
  9. package/dist/{Notice-DSfh1Ap5.cjs.map → Notice-C6IkjU_x.cjs.map} +1 -1
  10. package/dist/{SessionExpired-qvMB5AP_.js → SessionExpired-BJ2GbVh1.js} +2 -2
  11. package/dist/{SessionExpired-qvMB5AP_.js.map → SessionExpired-BJ2GbVh1.js.map} +1 -1
  12. package/dist/{SessionExpired-CL4bppLl.cjs → SessionExpired-C0ELbOFr.cjs} +2 -2
  13. package/dist/{SessionExpired-CL4bppLl.cjs.map → SessionExpired-C0ELbOFr.cjs.map} +1 -1
  14. package/dist/{buttons-group-DJh4wnMs.js → buttons-group-D01G8mAW.js} +10 -8
  15. package/dist/buttons-group-D01G8mAW.js.map +1 -0
  16. package/dist/{buttons-group-Dw8Wu4sj.cjs → buttons-group-w9QHUGVh.cjs} +10 -8
  17. package/dist/buttons-group-w9QHUGVh.cjs.map +1 -0
  18. package/dist/{code-block-BZUY8Fj9.cjs → code-block-Cqt3al0k.cjs} +3 -3
  19. package/dist/{code-block-BZUY8Fj9.cjs.map → code-block-Cqt3al0k.cjs.map} +1 -1
  20. package/dist/{code-block-V4wpmbud.js → code-block-DR6-quU0.js} +3 -3
  21. package/dist/{code-block-V4wpmbud.js.map → code-block-DR6-quU0.js.map} +1 -1
  22. package/dist/{combobox-CH9vBToX.js → combobox-BWcXIkzo.js} +2 -2
  23. package/dist/{combobox-CH9vBToX.js.map → combobox-BWcXIkzo.js.map} +1 -1
  24. package/dist/{combobox-Z3NehlIY.cjs → combobox-Cc6ePsiD.cjs} +2 -2
  25. package/dist/{combobox-Z3NehlIY.cjs.map → combobox-Cc6ePsiD.cjs.map} +1 -1
  26. package/dist/{command-BZ7S7MR-.js → command-BGPO-TD2.js} +2 -2
  27. package/dist/{command-BZ7S7MR-.js.map → command-BGPO-TD2.js.map} +1 -1
  28. package/dist/{command-DJwcGKv_.cjs → command-BMb6p6cj.cjs} +2 -2
  29. package/dist/{command-DJwcGKv_.cjs.map → command-BMb6p6cj.cjs.map} +1 -1
  30. package/dist/components/AlertDialog.cjs.js +1 -1
  31. package/dist/components/AlertDialog.es.js +1 -1
  32. package/dist/components/Button.cjs.js +1 -1
  33. package/dist/components/Button.es.js +1 -1
  34. package/dist/components/ButtonsGroup.cjs.js +1 -1
  35. package/dist/components/ButtonsGroup.es.js +1 -1
  36. package/dist/components/ClampedText.cjs.js +1 -1
  37. package/dist/components/ClampedText.es.js +1 -1
  38. package/dist/components/CodeBlock.cjs.js +1 -1
  39. package/dist/components/CodeBlock.es.js +1 -1
  40. package/dist/components/CodeEditor.cjs.js +1 -1
  41. package/dist/components/CodeEditor.es.js +1 -1
  42. package/dist/components/Columns.cjs.js +1 -1
  43. package/dist/components/Columns.es.js +1 -1
  44. package/dist/components/Combobox.cjs.js +1 -1
  45. package/dist/components/Combobox.es.js +1 -1
  46. package/dist/components/Command.cjs.js +1 -1
  47. package/dist/components/Command.es.js +1 -1
  48. package/dist/components/CommandPalette.cjs.js +1 -1
  49. package/dist/components/CommandPalette.es.js +1 -1
  50. package/dist/components/CopyButton.cjs.js +1 -1
  51. package/dist/components/CopyButton.es.js +1 -1
  52. package/dist/components/DataCodeSection.cjs.js +1 -1
  53. package/dist/components/DataCodeSection.es.js +1 -1
  54. package/dist/components/DataDetailsPanel.cjs.js +3 -3
  55. package/dist/components/DataDetailsPanel.es.js +3 -3
  56. package/dist/components/DataFilter.cjs.js +1 -1
  57. package/dist/components/DataFilter.es.js +1 -1
  58. package/dist/components/DataList.cjs.js +4 -4
  59. package/dist/components/DataList.es.js +4 -4
  60. package/dist/components/DataPanel.cjs.js +1 -1
  61. package/dist/components/DataPanel.es.js +1 -1
  62. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  63. package/dist/components/DateRangeTimeline.es.js +1 -1
  64. package/dist/components/DateTimePicker.cjs.js +2 -2
  65. package/dist/components/DateTimePicker.es.js +2 -2
  66. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  67. package/dist/components/DateTimeRangePicker.es.js +1 -1
  68. package/dist/components/Dialog.cjs.js +1 -1
  69. package/dist/components/Dialog.es.js +1 -1
  70. package/dist/components/Drawer.cjs.js +1 -1
  71. package/dist/components/Drawer.es.js +1 -1
  72. package/dist/components/EnvironmentVariablesEditor.cjs.js +4 -4
  73. package/dist/components/EnvironmentVariablesEditor.es.js +4 -4
  74. package/dist/components/ErrorBoundary.cjs.js +1 -1
  75. package/dist/components/ErrorBoundary.es.js +1 -1
  76. package/dist/components/FormFieldBlocks.cjs.js +2 -2
  77. package/dist/components/FormFieldBlocks.es.js +2 -2
  78. package/dist/components/InputGroup.cjs.js +1 -1
  79. package/dist/components/InputGroup.es.js +1 -1
  80. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  81. package/dist/components/JSONSchemaForm.es.js +2 -2
  82. package/dist/components/ListSearch.cjs.js +1 -1
  83. package/dist/components/ListSearch.es.js +1 -1
  84. package/dist/components/LogsDataList.cjs.js +2 -2
  85. package/dist/components/LogsDataList.es.js +2 -2
  86. package/dist/components/MainSidebar.cjs.js +1 -1
  87. package/dist/components/MainSidebar.es.js +1 -1
  88. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  89. package/dist/components/MarkdownRenderer.es.js +1 -1
  90. package/dist/components/Notice.cjs.js +1 -1
  91. package/dist/components/Notice.es.js +1 -1
  92. package/dist/components/PrevNextNav.cjs.js +2 -2
  93. package/dist/components/PrevNextNav.es.js +2 -2
  94. package/dist/components/PropertyFilter.cjs.js +3 -3
  95. package/dist/components/PropertyFilter.es.js +4 -4
  96. package/dist/components/RuleBuilder.cjs.js +2 -2
  97. package/dist/components/RuleBuilder.es.js +2 -2
  98. package/dist/components/Select.cjs.js +1 -1
  99. package/dist/components/Select.es.js +1 -1
  100. package/dist/components/SessionExpired.cjs.js +1 -1
  101. package/dist/components/SessionExpired.es.js +1 -1
  102. package/dist/components/Shimmer.cjs.js +3 -6
  103. package/dist/components/Shimmer.cjs.js.map +1 -1
  104. package/dist/components/Shimmer.es.js +1 -8
  105. package/dist/components/Shimmer.es.js.map +1 -1
  106. package/dist/components/SideDialog.cjs.js +4 -4
  107. package/dist/components/SideDialog.es.js +4 -4
  108. package/dist/components/ThreadList.cjs.js +1 -1
  109. package/dist/components/ThreadList.es.js +1 -1
  110. package/dist/components/Truncate.cjs.js +1 -1
  111. package/dist/components/Truncate.es.js +1 -1
  112. package/dist/components/ai/ask-user.cjs.js +1 -1
  113. package/dist/components/ai/ask-user.es.js +1 -1
  114. package/dist/components/ai/plan.cjs.js +2 -2
  115. package/dist/components/ai/plan.es.js +2 -2
  116. package/dist/{copy-button-BLGUkVE8.js → copy-button-7bJude5U.js} +2 -2
  117. package/dist/{copy-button-BLGUkVE8.js.map → copy-button-7bJude5U.js.map} +1 -1
  118. package/dist/{copy-button-BfawWA4t.cjs → copy-button-CP3uo8ID.cjs} +2 -2
  119. package/dist/{copy-button-BfawWA4t.cjs.map → copy-button-CP3uo8ID.cjs.map} +1 -1
  120. package/dist/{data-code-section-bqvIovEN.cjs → data-code-section-Ch79dVS1.cjs} +6 -6
  121. package/dist/{data-code-section-bqvIovEN.cjs.map → data-code-section-Ch79dVS1.cjs.map} +1 -1
  122. package/dist/{data-code-section-DHbytoQ2.js → data-code-section-DF3RdwHh.js} +6 -6
  123. package/dist/{data-code-section-DHbytoQ2.js.map → data-code-section-DF3RdwHh.js.map} +1 -1
  124. package/dist/{data-list-CnQWE0QP.js → data-list-1ZBvLIZN.js} +3 -3
  125. package/dist/{data-list-CnQWE0QP.js.map → data-list-1ZBvLIZN.js.map} +1 -1
  126. package/dist/{data-list-Cnnnx_vD.cjs → data-list-Cfj5klVF.cjs} +3 -3
  127. package/dist/{data-list-Cnnnx_vD.cjs.map → data-list-Cfj5klVF.cjs.map} +1 -1
  128. package/dist/{data-list-skeleton-DeEqsrIz.js → data-list-skeleton-CSUKnbTp.js} +2 -2
  129. package/dist/{data-list-skeleton-DeEqsrIz.js.map → data-list-skeleton-CSUKnbTp.js.map} +1 -1
  130. package/dist/{data-list-skeleton--tiF5mjH.cjs → data-list-skeleton-qASobJaP.cjs} +2 -2
  131. package/dist/{data-list-skeleton--tiF5mjH.cjs.map → data-list-skeleton-qASobJaP.cjs.map} +1 -1
  132. package/dist/{data-list-top-cell-CU8KoWys.cjs → data-list-top-cell-BJBfjw34.cjs} +5 -3
  133. package/dist/data-list-top-cell-BJBfjw34.cjs.map +1 -0
  134. package/dist/{data-list-top-cell-D9VTy6Sk.js → data-list-top-cell-DeUwFnvc.js} +5 -3
  135. package/dist/data-list-top-cell-DeUwFnvc.js.map +1 -0
  136. package/dist/{data-panel-BX_78wCj.js → data-panel-B36KoN3f.js} +4 -4
  137. package/dist/{data-panel-BX_78wCj.js.map → data-panel-B36KoN3f.js.map} +1 -1
  138. package/dist/{data-panel-DT6LgTVX.cjs → data-panel-BsAU7Kq_.cjs} +4 -4
  139. package/dist/{data-panel-DT6LgTVX.cjs.map → data-panel-BsAU7Kq_.cjs.map} +1 -1
  140. package/dist/{date-time-range-picker-BQpZVrH7.js → date-time-range-picker-DeCxB2MG.js} +3 -3
  141. package/dist/{date-time-range-picker-BQpZVrH7.js.map → date-time-range-picker-DeCxB2MG.js.map} +1 -1
  142. package/dist/{date-time-range-picker-sT6pHDmU.cjs → date-time-range-picker-Dhm_1YzQ.cjs} +3 -3
  143. package/dist/{date-time-range-picker-sT6pHDmU.cjs.map → date-time-range-picker-Dhm_1YzQ.cjs.map} +1 -1
  144. package/dist/{dialog-DDXW5M21.js → dialog-DpCQuXUA.js} +2 -2
  145. package/dist/{dialog-DDXW5M21.js.map → dialog-DpCQuXUA.js.map} +1 -1
  146. package/dist/{dialog-5ZYCeKf-.cjs → dialog-HucfPKBi.cjs} +2 -2
  147. package/dist/{dialog-5ZYCeKf-.cjs.map → dialog-HucfPKBi.cjs.map} +1 -1
  148. package/dist/domains/logs/components/log-details-view.cjs.js +3 -3
  149. package/dist/domains/logs/components/log-details-view.es.js +3 -3
  150. package/dist/domains/logs/components/logs-error-content.cjs.js +1 -1
  151. package/dist/domains/logs/components/logs-error-content.es.js +1 -1
  152. package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
  153. package/dist/domains/logs/components/logs-list-view.es.js +2 -2
  154. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  155. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  156. package/dist/domains/logs/components/no-logs-info.cjs.js +1 -1
  157. package/dist/domains/logs/components/no-logs-info.es.js +1 -1
  158. package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
  159. package/dist/domains/memory/components/flame-graph.es.js +1 -1
  160. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  161. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  162. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  163. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  164. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  165. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  166. package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
  167. package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
  168. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
  169. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
  170. package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
  171. package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
  172. package/dist/domains/traces/components/no-traces-info.cjs.js +1 -1
  173. package/dist/domains/traces/components/no-traces-info.es.js +1 -1
  174. package/dist/domains/traces/components/span-data-panel-view.cjs.js +9 -8
  175. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  176. package/dist/domains/traces/components/span-data-panel-view.es.js +10 -9
  177. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  178. package/dist/domains/traces/components/span-details-view.cjs.js +6 -5
  179. package/dist/domains/traces/components/span-details-view.cjs.js.map +1 -1
  180. package/dist/domains/traces/components/span-details-view.es.js +7 -6
  181. package/dist/domains/traces/components/span-details-view.es.js.map +1 -1
  182. package/dist/domains/traces/components/trace-columns-menu.cjs.js +2 -2
  183. package/dist/domains/traces/components/trace-columns-menu.es.js +2 -2
  184. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +4 -4
  185. package/dist/domains/traces/components/trace-data-panel-view.es.js +4 -4
  186. package/dist/domains/traces/components/trace-keys-and-values.cjs.js +31 -16
  187. package/dist/domains/traces/components/trace-keys-and-values.cjs.js.map +1 -1
  188. package/dist/domains/traces/components/trace-keys-and-values.es.js +32 -17
  189. package/dist/domains/traces/components/trace-keys-and-values.es.js.map +1 -1
  190. package/dist/domains/traces/components/trace-status-value.cjs.js +28 -0
  191. package/dist/domains/traces/components/trace-status-value.cjs.js.map +1 -0
  192. package/dist/domains/traces/components/trace-status-value.d.ts +2 -0
  193. package/dist/domains/traces/components/trace-status-value.es.js +24 -0
  194. package/dist/domains/traces/components/trace-status-value.es.js.map +1 -0
  195. package/dist/domains/traces/components/traces-error-content.cjs.js +1 -1
  196. package/dist/domains/traces/components/traces-error-content.es.js +1 -1
  197. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
  198. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
  199. package/dist/domains/traces/components/traces-list-view.cjs.js +3 -3
  200. package/dist/domains/traces/components/traces-list-view.es.js +3 -3
  201. package/dist/domains/traces/components/traces-toolbar.cjs.js +1 -1
  202. package/dist/domains/traces/components/traces-toolbar.es.js +1 -1
  203. package/dist/domains/traces/utils/span-utils.cjs.js +30 -3
  204. package/dist/domains/traces/utils/span-utils.cjs.js.map +1 -1
  205. package/dist/domains/traces/utils/span-utils.es.js +27 -4
  206. package/dist/domains/traces/utils/span-utils.es.js.map +1 -1
  207. package/dist/{drawer-CNnvBMfD.cjs → drawer-C_94EZS7.cjs} +2 -2
  208. package/dist/{drawer-CNnvBMfD.cjs.map → drawer-C_94EZS7.cjs.map} +1 -1
  209. package/dist/{drawer-C8jNXutE.js → drawer-D-9g5Fgx.js} +2 -2
  210. package/dist/{drawer-C8jNXutE.js.map → drawer-D-9g5Fgx.js.map} +1 -1
  211. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  212. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  213. package/dist/ee/signals/examples-pager.cjs.js +1 -1
  214. package/dist/ee/signals/examples-pager.es.js +1 -1
  215. package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
  216. package/dist/ee/signals/noise-detail-panel.es.js +1 -1
  217. package/dist/ee/signals/signals-error-state.cjs.js +1 -1
  218. package/dist/ee/signals/signals-error-state.es.js +1 -1
  219. package/dist/ee/signals/snapshot-timeline.cjs.js +1 -1
  220. package/dist/ee/signals/snapshot-timeline.es.js +1 -1
  221. package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
  222. package/dist/ee/signals/theme-detail-panel.es.js +1 -1
  223. package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
  224. package/dist/ee/signals/theme-filter-banner.es.js +1 -1
  225. package/dist/ee/signals/trace-insight-view.cjs.js +1 -1
  226. package/dist/ee/signals/trace-insight-view.es.js +1 -1
  227. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +3 -3
  228. package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
  229. package/dist/{input-group-BTaw3Ycd.cjs → input-group-B9RjCBAJ.cjs} +2 -2
  230. package/dist/{input-group-BTaw3Ycd.cjs.map → input-group-B9RjCBAJ.cjs.map} +1 -1
  231. package/dist/{input-group-CWT_IwX0.js → input-group-DLUlOO5B.js} +2 -2
  232. package/dist/{input-group-CWT_IwX0.js.map → input-group-DLUlOO5B.js.map} +1 -1
  233. package/dist/{logs-data-list-CAa2nwZC.js → logs-data-list-CbrMOwrq.js} +2 -2
  234. package/dist/{logs-data-list-CAa2nwZC.js.map → logs-data-list-CbrMOwrq.js.map} +1 -1
  235. package/dist/{logs-data-list-DWf9fEtC.cjs → logs-data-list-CuYnW-VA.cjs} +2 -2
  236. package/dist/{logs-data-list-DWf9fEtC.cjs.map → logs-data-list-CuYnW-VA.cjs.map} +1 -1
  237. package/dist/{markdown-renderer-Bi4HR-Me.js → markdown-renderer-ByRLqDFg.js} +2 -2
  238. package/dist/{markdown-renderer-Bi4HR-Me.js.map → markdown-renderer-ByRLqDFg.js.map} +1 -1
  239. package/dist/{markdown-renderer-BU7tImQt.cjs → markdown-renderer-Dp_s_ZUm.cjs} +2 -2
  240. package/dist/{markdown-renderer-BU7tImQt.cjs.map → markdown-renderer-Dp_s_ZUm.cjs.map} +1 -1
  241. package/dist/{property-filter-applied-ChK5XtsC.cjs → property-filter-applied-BnyxfR1a.cjs} +3 -3
  242. package/dist/{property-filter-applied-ChK5XtsC.cjs.map → property-filter-applied-BnyxfR1a.cjs.map} +1 -1
  243. package/dist/{property-filter-applied-C2teL4uw.js → property-filter-applied-CDFWHZq-.js} +3 -3
  244. package/dist/{property-filter-applied-C2teL4uw.js.map → property-filter-applied-CDFWHZq-.js.map} +1 -1
  245. package/dist/resize/panel-drawer.cjs.js +1 -1
  246. package/dist/resize/panel-drawer.es.js +1 -1
  247. package/dist/{search-field-block-D4vuLoZI.cjs → search-field-block-D1ciwlbp.cjs} +2 -2
  248. package/dist/{search-field-block-D4vuLoZI.cjs.map → search-field-block-D1ciwlbp.cjs.map} +1 -1
  249. package/dist/{search-field-block-D0PBxCxK.js → search-field-block-DM1_vtYR.js} +2 -2
  250. package/dist/{search-field-block-D0PBxCxK.js.map → search-field-block-DM1_vtYR.js.map} +1 -1
  251. package/dist/{select-B_E0ADD5.js → select-CQO55G6j.js} +2 -2
  252. package/dist/{select-B_E0ADD5.js.map → select-CQO55G6j.js.map} +1 -1
  253. package/dist/{select-OAXqZLkC.cjs → select-CbYSKK0A.cjs} +2 -2
  254. package/dist/{select-OAXqZLkC.cjs.map → select-CbYSKK0A.cjs.map} +1 -1
  255. package/dist/{select-field-block-D1Na8gZW.js → select-field-block-DLsLqguf.js} +2 -2
  256. package/dist/{select-field-block-D1Na8gZW.js.map → select-field-block-DLsLqguf.js.map} +1 -1
  257. package/dist/{select-field-block-BN9oU5B5.cjs → select-field-block-xUf9rcne.cjs} +2 -2
  258. package/dist/{select-field-block-BN9oU5B5.cjs.map → select-field-block-xUf9rcne.cjs.map} +1 -1
  259. package/dist/shimmer-CvjqSukH.js +9 -0
  260. package/dist/shimmer-CvjqSukH.js.map +1 -0
  261. package/dist/shimmer-qbZWipjT.cjs +11 -0
  262. package/dist/shimmer-qbZWipjT.cjs.map +1 -0
  263. package/dist/src/domains/traces/components/trace-keys-and-values.stories.d.ts +28 -0
  264. package/dist/src/domains/traces/components/trace-status-value.d.ts +5 -0
  265. package/dist/src/domains/traces/utils/span-utils.d.ts +4 -0
  266. package/dist/src/ds/components/Button/Button.d.ts +1 -1
  267. package/dist/src/ds/components/DataList/data-list-cells.d.ts +0 -1
  268. package/dist/style.css +70 -2
  269. package/dist/{time-picker-CkqREdQB.js → time-picker-BVutQdF5.js} +2 -2
  270. package/dist/{time-picker-CkqREdQB.js.map → time-picker-BVutQdF5.js.map} +1 -1
  271. package/dist/{time-picker-Dy2oyq8P.cjs → time-picker-B_MKYe5h.cjs} +2 -2
  272. package/dist/{time-picker-Dy2oyq8P.cjs.map → time-picker-B_MKYe5h.cjs.map} +1 -1
  273. package/dist/{traces-data-list-pTNo_zbS.cjs → traces-data-list-BExIWzzW.cjs} +3 -3
  274. package/dist/{traces-data-list-pTNo_zbS.cjs.map → traces-data-list-BExIWzzW.cjs.map} +1 -1
  275. package/dist/{traces-data-list-B3wMvCfk.js → traces-data-list-BzQw4Dtx.js} +3 -3
  276. package/dist/{traces-data-list-B3wMvCfk.js.map → traces-data-list-BzQw4Dtx.js.map} +1 -1
  277. package/package.json +9 -9
  278. package/dist/Button-B4Ixj2aW.cjs.map +0 -1
  279. package/dist/Button-C-9Pzy-Z.js.map +0 -1
  280. package/dist/buttons-group-DJh4wnMs.js.map +0 -1
  281. package/dist/buttons-group-Dw8Wu4sj.cjs.map +0 -1
  282. package/dist/data-list-top-cell-CU8KoWys.cjs.map +0 -1
  283. package/dist/data-list-top-cell-D9VTy6Sk.js.map +0 -1
  284. /package/dist/{Shimmer.css → shimmer.css} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,157 @@
1
1
  # @mastra/playground-ui
2
2
 
3
+ ## 50.0.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Added filled and ghost destructive Button variants for dangerous actions. ([#21790](https://github.com/mastra-ai/mastra/pull/21790))
8
+
9
+ ```tsx
10
+ <Button variant="destructive">Delete</Button>
11
+ <Button variant="destructive-ghost">Remove</Button>
12
+ ```
13
+
14
+ - Streamed replies now arrive one word at a time instead of in bursts. ([#21499](https://github.com/mastra-ai/mastra/pull/21499))
15
+
16
+ Chunks reach the browser unevenly — a proxy flushes, a tool call ends, the model changes pace — so a reply used to lurch: ten words at once, then nothing for a fifth of a second. `MarkdownRenderer` now paces a reply marked `streaming` itself, revealing it one word at a time at the speed the reply is actually arriving. Bursts and gaps stop reaching the page, and a change of pace reads as one rather than as a jolt.
17
+
18
+ ```tsx
19
+ <MarkdownRenderer streaming={part.state === 'streaming'}>{part.text}</MarkdownRenderer>
20
+ ```
21
+
22
+ Each word fades in as it lands, and code fades in whole — a fence or a piece of inline code appears with its background rather than a token at a time. A word fades in once and only once, so a paragraph never flickers as the rest of the reply arrives behind it.
23
+
24
+ A thread opened from history renders whole. A reply opened part-written joins it rather than retyping it, and what was already on screen when you opened it stays put: only the words landing from then on animate. Readers who ask for reduced motion get the text at once, unanimated.
25
+
26
+ - Improved `MessageScroller` so chat transcripts follow the stream. With `autoScroll` on, the reader is carried with the newest output while they sit at the end, and a new user turn brings them back to it. Only scrolling away stops the following — content growing under the reader, or landing above them, no longer moves them or flashes the jump-to-end button. ([#21523](https://github.com/mastra-ai/mastra/pull/21523))
27
+
28
+ A turn opening animates the scroll only for a reader who had scrolled away. Someone already at the end is carried by whatever the turn grows under itself, so a surface can reserve room under a live turn and let its own transition set the pace:
29
+
30
+ ```tsx
31
+ <MessageScrollerProvider autoScroll>
32
+ <MessageScrollerViewport>
33
+ <MessageScrollerContent>
34
+ {/* the viewport is a size container, so a live turn can reserve a share of it */}
35
+ <div className="min-h-[70cqh]">{liveTurn}</div>
36
+ </MessageScrollerContent>
37
+ </MessageScrollerViewport>
38
+ </MessageScrollerProvider>
39
+ ```
40
+
41
+ - Added token and estimated cost totals to full trace details in Studio. Opening a trace now shows input tokens, output tokens, and estimated cost in both the trace side panel and the dedicated trace page, including when the trace is opened from a direct link outside the loaded list. Subtrace panels omit these values because they represent totals for the full trace. ([#21541](https://github.com/mastra-ai/mastra/pull/21541))
42
+
43
+ - Added an "lg" size variant to sidebar navigation items for taller (36px) rows. ([#21509](https://github.com/mastra-ai/mastra/pull/21509))
44
+
45
+ - Replaced the task list's progress bar and "2/4 completed" label with a compact status strip in the header. One bar per task, colored by state (green completed, orange in progress, grey pending), with the exact count on hover. Frees the vertical space the progress bar used to take. ([#21507](https://github.com/mastra-ai/mastra/pull/21507))
46
+
47
+ `<TaskList>` is unchanged. The strip now derives everything from the tasks, so `TaskListCount` and `TaskListCountProps` are removed, and `TaskListProgress` takes the tasks instead of a completed/total pair. Both were reachable from `@mastra/playground-ui/components/ai/task-list`.
48
+
49
+ There is no replacement for `TaskListCount` — the count lives in the strip's tooltip. Callers of `TaskListProgress` pass the tasks they already render:
50
+
51
+ ```tsx
52
+ const tasks = [
53
+ { id: '1', content: 'Inspect code', activeForm: 'Inspecting code', status: 'completed' },
54
+ { id: '2', content: 'Add tests', activeForm: 'Adding tests', status: 'in_progress' },
55
+ { id: '3', content: 'Build package', activeForm: 'Building package', status: 'pending' },
56
+ ];
57
+
58
+ // Before
59
+ <TaskListCount completed={1} total={3} />
60
+ <TaskListProgress completed={1} total={3} />
61
+
62
+ // After
63
+ <TaskListProgress tasks={tasks} />
64
+ ```
65
+
66
+ ### Patch Changes
67
+
68
+ - Speed up the local dev watch for the design system: `pnpm dev:ui` now rebuilds `@mastra/playground-ui` on save, so design-system edits show up in the Factory UI without a manual rebuild. `pnpm dev:playground` picks up the same watch. The watch starts from a full build and then skips type declaration emit on every rebuild, which brings each save from ~9s down to ~1.5s. ([#21646](https://github.com/mastra-ai/mastra/pull/21646))
69
+
70
+ Declarations stay frozen at that starting build for the length of a dev session — run `pnpm --filter @mastra/playground-ui build` after changing a component's props. The published build is unchanged and still emits declarations.
71
+
72
+ - Improved trace details with readable times, precise hover values, responsive layouts, and clearer statuses. ([#21660](https://github.com/mastra-ai/mastra/pull/21660))
73
+
74
+ - Restored the Studio memory bar token counts after a reload by reading them from the stored observational memory record. ([#21604](https://github.com/mastra-ai/mastra/pull/21604))
75
+
76
+ - Improved plan action hierarchy, kept expand and collapse labels on one line, and hid expansion for short plans. ([#21658](https://github.com/mastra-ai/mastra/pull/21658))
77
+
78
+ - Updated dependencies [[`587f6ef`](https://github.com/mastra-ai/mastra/commit/587f6efcfc25880b93760a8607d1cd381ec612fe), [`7e096f0`](https://github.com/mastra-ai/mastra/commit/7e096f02f0dddbf09b85d306458351245ed2f886), [`d7e6745`](https://github.com/mastra-ai/mastra/commit/d7e67456954863c55440ea9c49bc6ceb9949972d), [`6223446`](https://github.com/mastra-ai/mastra/commit/6223446ddce6166e96e0ba5e00d628b615dee8ca), [`15101bb`](https://github.com/mastra-ai/mastra/commit/15101bb53c0d934f31af6b8813b88191e382a5e5), [`4e7a421`](https://github.com/mastra-ai/mastra/commit/4e7a421dce8a48742f785d1e93ad2f43a572b282), [`951a126`](https://github.com/mastra-ai/mastra/commit/951a126e43ed45155fed534ddabf0a1a94f2d7bb), [`c2c3deb`](https://github.com/mastra-ai/mastra/commit/c2c3debcf670c7082d0a5e553aa99818a864698c), [`d8308a2`](https://github.com/mastra-ai/mastra/commit/d8308a2be3c07e777393d1017a381dcae3890d30), [`b0a2a07`](https://github.com/mastra-ai/mastra/commit/b0a2a07800d42bd9823292e7db832374ed084c9c), [`74e5bd3`](https://github.com/mastra-ai/mastra/commit/74e5bd315b8b3a1e04cb6cf480bb0f5fc4951dc8), [`242e324`](https://github.com/mastra-ai/mastra/commit/242e3241e73cbd5c9bb86a31ebb49ca0256488d4), [`217e967`](https://github.com/mastra-ai/mastra/commit/217e9672d8b3160eb729d8e9f0044949e88da239), [`58c43d3`](https://github.com/mastra-ai/mastra/commit/58c43d3f7cb2eeaeb8ac733ae71dde822348e588), [`d774e89`](https://github.com/mastra-ai/mastra/commit/d774e8930c781df8c9effe3763e6b501c099b6cc), [`9c27a53`](https://github.com/mastra-ai/mastra/commit/9c27a53cd9d3de4f3f025bc387d94ce371c33f95), [`8f0a332`](https://github.com/mastra-ai/mastra/commit/8f0a3321bf180368d76fe7b36aa1a8f60f00b6de), [`b432242`](https://github.com/mastra-ai/mastra/commit/b432242c1d8f9a8de009a3d3e54c17962eebc002), [`0b4f108`](https://github.com/mastra-ai/mastra/commit/0b4f1089aa8d92e67c2a8e99726822c5ee410784), [`9acb50f`](https://github.com/mastra-ai/mastra/commit/9acb50f71cec9c362f06820033f90ae6b1f8282f), [`46e9e3f`](https://github.com/mastra-ai/mastra/commit/46e9e3f73babe1bc70080a596cf2ac0b9da48519), [`b0a2a07`](https://github.com/mastra-ai/mastra/commit/b0a2a07800d42bd9823292e7db832374ed084c9c), [`3f9a190`](https://github.com/mastra-ai/mastra/commit/3f9a19057c027155867b9317294ee4ca7bd0581a), [`dff25a1`](https://github.com/mastra-ai/mastra/commit/dff25a1103fa72ee082a9b6f805ebeb5ce400753), [`6db7a5d`](https://github.com/mastra-ai/mastra/commit/6db7a5dd3dd2b6f7ef75dcd804fcffef5fa83963), [`23e0be2`](https://github.com/mastra-ai/mastra/commit/23e0be261381e49534b4ff3101c60ee64a946cbf), [`217e967`](https://github.com/mastra-ai/mastra/commit/217e9672d8b3160eb729d8e9f0044949e88da239), [`583e235`](https://github.com/mastra-ai/mastra/commit/583e23519c13af16c1746f9c49722d011216611b), [`b098de9`](https://github.com/mastra-ai/mastra/commit/b098de9d7cb9f672e0883a5c716465a3a689693d), [`e8808e3`](https://github.com/mastra-ai/mastra/commit/e8808e3d8eb585a2565be53e56a7e0e1477352a4), [`694bd68`](https://github.com/mastra-ai/mastra/commit/694bd68fb427ee52e59aaab06167617f261b121c), [`a77f8d4`](https://github.com/mastra-ai/mastra/commit/a77f8d4740d2178a74c41e4bf678b4fcd8fa0bb2), [`7f78585`](https://github.com/mastra-ai/mastra/commit/7f785857e401570e2ffb316911f126ed363aa537), [`33374ba`](https://github.com/mastra-ai/mastra/commit/33374ba359e4fb13eaa918ae925fe167a3c55414), [`940bf5c`](https://github.com/mastra-ai/mastra/commit/940bf5ccf04f2c9ebd8a1390431733222a03b1cd), [`c549e2f`](https://github.com/mastra-ai/mastra/commit/c549e2f40edc1cac5d9e74e82f90da22b48df084), [`58c43d3`](https://github.com/mastra-ai/mastra/commit/58c43d3f7cb2eeaeb8ac733ae71dde822348e588), [`ef6e295`](https://github.com/mastra-ai/mastra/commit/ef6e295b59bc25a5b61b633a89c97bcfce9fb465), [`208e1b3`](https://github.com/mastra-ai/mastra/commit/208e1b39f30f4b386e494394e9d71d96f0f90241), [`c938d34`](https://github.com/mastra-ai/mastra/commit/c938d34739936c8ecbabd67ad6a4a4396f41c4c6), [`88ddc7c`](https://github.com/mastra-ai/mastra/commit/88ddc7ce01d40175f13a3228b789a906779680bd), [`f2a4afd`](https://github.com/mastra-ai/mastra/commit/f2a4afd7e37e809669001ed17724b341a5c1f45e), [`fc76b73`](https://github.com/mastra-ai/mastra/commit/fc76b73b114322ba613c60f138f014b2c0adb414), [`f2a4afd`](https://github.com/mastra-ai/mastra/commit/f2a4afd7e37e809669001ed17724b341a5c1f45e), [`d438148`](https://github.com/mastra-ai/mastra/commit/d438148e222c1e2fb3c652725ce75680962ebec4), [`ba05fe0`](https://github.com/mastra-ai/mastra/commit/ba05fe0738f70cb686777546e968237d09269142), [`eede4de`](https://github.com/mastra-ai/mastra/commit/eede4de104f59b391d28aa249659388e9a1cf558), [`40d358e`](https://github.com/mastra-ai/mastra/commit/40d358e29d55543803e64b49241122f598ffabc7), [`d26a8d4`](https://github.com/mastra-ai/mastra/commit/d26a8d4281f28414715b333c85bedaf70d0b2890), [`e80cd7e`](https://github.com/mastra-ai/mastra/commit/e80cd7e7683e7d732e1cc6784bcac1d2640d2ce3), [`ccbbcd9`](https://github.com/mastra-ai/mastra/commit/ccbbcd974eedff4367a54ed0e24c9ee742ab2f61), [`1d9a0ea`](https://github.com/mastra-ai/mastra/commit/1d9a0ea4a9901baee6cd56737243bd6d1f631ac0), [`677cdc6`](https://github.com/mastra-ai/mastra/commit/677cdc6af564dec29a13464d12b7ab2a4efc22e9), [`c549e2f`](https://github.com/mastra-ai/mastra/commit/c549e2f40edc1cac5d9e74e82f90da22b48df084), [`a7dd322`](https://github.com/mastra-ai/mastra/commit/a7dd32247d95afc539f483ca37f4594af0387f59), [`3f5c6f7`](https://github.com/mastra-ai/mastra/commit/3f5c6f728ea35da344248de9aa070f12849f3aa0), [`eede4de`](https://github.com/mastra-ai/mastra/commit/eede4de104f59b391d28aa249659388e9a1cf558), [`a318490`](https://github.com/mastra-ai/mastra/commit/a318490e17da32f338d50929c770d901a9b3dd72), [`b860493`](https://github.com/mastra-ai/mastra/commit/b86049391100e665d579f700c8a2034c036defc3), [`d4be8c1`](https://github.com/mastra-ai/mastra/commit/d4be8c1739d22d621e3f78790e1dd5eb5ecc3589), [`a5d2eb1`](https://github.com/mastra-ai/mastra/commit/a5d2eb10347eade1ae2816d88f466c25186c54a5), [`a97044b`](https://github.com/mastra-ai/mastra/commit/a97044b00cc79e189b07509701b2694c728dfeac), [`3667679`](https://github.com/mastra-ai/mastra/commit/3667679db057edfb086846d13369fdda4902ad65), [`49696e8`](https://github.com/mastra-ai/mastra/commit/49696e8e42f870674a0a58f5abcd22cc54dd2864), [`507a9d4`](https://github.com/mastra-ai/mastra/commit/507a9d45fef9757dfbfc142ae73c0bbce602a214), [`2ef2f23`](https://github.com/mastra-ai/mastra/commit/2ef2f230a7aed342e7dc3b2000cd42e4c43e08a7), [`763e0c6`](https://github.com/mastra-ai/mastra/commit/763e0c61e04d76ad9a9efd301aa57525ca0cbea9), [`20504b2`](https://github.com/mastra-ai/mastra/commit/20504b2ecebd0e077acda3d457ab57480a98ed3e), [`77e6b1b`](https://github.com/mastra-ai/mastra/commit/77e6b1bc4c46ce94fe501023fb4393c812ec6be3), [`c5f964d`](https://github.com/mastra-ai/mastra/commit/c5f964d3f77064e978f8066ec506eed77ba5c63c), [`23e0be2`](https://github.com/mastra-ai/mastra/commit/23e0be261381e49534b4ff3101c60ee64a946cbf), [`217e967`](https://github.com/mastra-ai/mastra/commit/217e9672d8b3160eb729d8e9f0044949e88da239), [`7fc8806`](https://github.com/mastra-ai/mastra/commit/7fc880627d3cbf995d31ea0e8b807bf15417e651), [`0e02eac`](https://github.com/mastra-ai/mastra/commit/0e02eacdb2e30e1697a41910b41163742a181dc1), [`4df174c`](https://github.com/mastra-ai/mastra/commit/4df174c32bddf093a82f273070b8380aef7c9e90), [`f7c25b5`](https://github.com/mastra-ai/mastra/commit/f7c25b5106ddfb48e591f98df7a51e0f2dd01dba), [`7aad631`](https://github.com/mastra-ai/mastra/commit/7aad631b43bc10db77d5b8c66b200d7a49d18bf2), [`a77f8d4`](https://github.com/mastra-ai/mastra/commit/a77f8d4740d2178a74c41e4bf678b4fcd8fa0bb2), [`512100a`](https://github.com/mastra-ai/mastra/commit/512100a7d8b7e9c920f2590c6b3612f5de0d3cff), [`e81744c`](https://github.com/mastra-ai/mastra/commit/e81744cd13c46619c142dc521dc0baac47607a84), [`f8f653f`](https://github.com/mastra-ai/mastra/commit/f8f653f10980d01a73706cc3c8689ca5e40ce808), [`dc09cc1`](https://github.com/mastra-ai/mastra/commit/dc09cc1083d861cde192c1cd235324dc75b8c731), [`7f78585`](https://github.com/mastra-ai/mastra/commit/7f785857e401570e2ffb316911f126ed363aa537), [`9ef432b`](https://github.com/mastra-ai/mastra/commit/9ef432b6faa534b57b0d182a610e13dd9a7123ff), [`36b4649`](https://github.com/mastra-ai/mastra/commit/36b4649045a3a380cbab8ceca866db4086223aff), [`b9cf308`](https://github.com/mastra-ai/mastra/commit/b9cf30846f97f99ac1906ee8a68f4f2d117b0378), [`23e0be2`](https://github.com/mastra-ai/mastra/commit/23e0be261381e49534b4ff3101c60ee64a946cbf), [`2e1d098`](https://github.com/mastra-ai/mastra/commit/2e1d0984e325fd319d32ea182f596b3170be3847), [`377eb81`](https://github.com/mastra-ai/mastra/commit/377eb81ce43b964e3a6b541df172da74a8ff3716), [`1794a79`](https://github.com/mastra-ai/mastra/commit/1794a79178c418004a7261b1ad9114066f7ef01d), [`0cdc5dc`](https://github.com/mastra-ai/mastra/commit/0cdc5dc69024957815da4f51acc4119eb4f447d7), [`5740ec6`](https://github.com/mastra-ai/mastra/commit/5740ec60c760ffdfbfaa59d603d03b847c864e05)]:
79
+ - @mastra/core@1.60.0
80
+ - @mastra/client-js@1.41.0
81
+ - @mastra/memory@1.27.0
82
+ - @mastra/react@1.4.4
83
+
84
+ ## 50.0.0-alpha.14
85
+
86
+ ### Patch Changes
87
+
88
+ - Updated dependencies [[`58c43d3`](https://github.com/mastra-ai/mastra/commit/58c43d3f7cb2eeaeb8ac733ae71dde822348e588), [`58c43d3`](https://github.com/mastra-ai/mastra/commit/58c43d3f7cb2eeaeb8ac733ae71dde822348e588)]:
89
+ - @mastra/client-js@1.41.0-alpha.14
90
+ - @mastra/core@1.60.0-alpha.14
91
+ - @mastra/react@1.4.4-alpha.14
92
+
93
+ ## 50.0.0-alpha.13
94
+
95
+ ### Minor Changes
96
+
97
+ - Added filled and ghost destructive Button variants for dangerous actions. ([#21790](https://github.com/mastra-ai/mastra/pull/21790))
98
+
99
+ ```tsx
100
+ <Button variant="destructive">Delete</Button>
101
+ <Button variant="destructive-ghost">Remove</Button>
102
+ ```
103
+
104
+ ### Patch Changes
105
+
106
+ - Updated dependencies [[`951a126`](https://github.com/mastra-ai/mastra/commit/951a126e43ed45155fed534ddabf0a1a94f2d7bb), [`c549e2f`](https://github.com/mastra-ai/mastra/commit/c549e2f40edc1cac5d9e74e82f90da22b48df084), [`c549e2f`](https://github.com/mastra-ai/mastra/commit/c549e2f40edc1cac5d9e74e82f90da22b48df084), [`2ef2f23`](https://github.com/mastra-ai/mastra/commit/2ef2f230a7aed342e7dc3b2000cd42e4c43e08a7), [`5740ec6`](https://github.com/mastra-ai/mastra/commit/5740ec60c760ffdfbfaa59d603d03b847c864e05)]:
107
+ - @mastra/client-js@1.41.0-alpha.13
108
+ - @mastra/core@1.60.0-alpha.13
109
+ - @mastra/memory@1.27.0-alpha.3
110
+ - @mastra/react@1.4.4-alpha.13
111
+
112
+ ## 50.0.0-alpha.12
113
+
114
+ ### Patch Changes
115
+
116
+ - Improved trace details with readable times, precise hover values, responsive layouts, and clearer statuses. ([#21660](https://github.com/mastra-ai/mastra/pull/21660))
117
+
118
+ - Updated dependencies [[`6db7a5d`](https://github.com/mastra-ai/mastra/commit/6db7a5dd3dd2b6f7ef75dcd804fcffef5fa83963), [`0cdc5dc`](https://github.com/mastra-ai/mastra/commit/0cdc5dc69024957815da4f51acc4119eb4f447d7)]:
119
+ - @mastra/core@1.60.0-alpha.12
120
+ - @mastra/client-js@1.41.0-alpha.12
121
+ - @mastra/react@1.4.4-alpha.12
122
+
123
+ ## 50.0.0-alpha.11
124
+
125
+ ### Patch Changes
126
+
127
+ - Speed up the local dev watch for the design system: `pnpm dev:ui` now rebuilds `@mastra/playground-ui` on save, so design-system edits show up in the Factory UI without a manual rebuild. `pnpm dev:playground` picks up the same watch. The watch starts from a full build and then skips type declaration emit on every rebuild, which brings each save from ~9s down to ~1.5s. ([#21646](https://github.com/mastra-ai/mastra/pull/21646))
128
+
129
+ Declarations stay frozen at that starting build for the length of a dev session — run `pnpm --filter @mastra/playground-ui build` after changing a component's props. The published build is unchanged and still emits declarations.
130
+
131
+ - Updated dependencies [[`6223446`](https://github.com/mastra-ai/mastra/commit/6223446ddce6166e96e0ba5e00d628b615dee8ca), [`583e235`](https://github.com/mastra-ai/mastra/commit/583e23519c13af16c1746f9c49722d011216611b), [`a77f8d4`](https://github.com/mastra-ai/mastra/commit/a77f8d4740d2178a74c41e4bf678b4fcd8fa0bb2), [`40d358e`](https://github.com/mastra-ai/mastra/commit/40d358e29d55543803e64b49241122f598ffabc7), [`e80cd7e`](https://github.com/mastra-ai/mastra/commit/e80cd7e7683e7d732e1cc6784bcac1d2640d2ce3), [`20504b2`](https://github.com/mastra-ai/mastra/commit/20504b2ecebd0e077acda3d457ab57480a98ed3e), [`a77f8d4`](https://github.com/mastra-ai/mastra/commit/a77f8d4740d2178a74c41e4bf678b4fcd8fa0bb2)]:
132
+ - @mastra/core@1.60.0-alpha.11
133
+ - @mastra/client-js@1.41.0-alpha.11
134
+ - @mastra/react@1.4.4-alpha.11
135
+
136
+ ## 50.0.0-alpha.10
137
+
138
+ ### Patch Changes
139
+
140
+ - Updated dependencies [[`b860493`](https://github.com/mastra-ai/mastra/commit/b86049391100e665d579f700c8a2034c036defc3)]:
141
+ - @mastra/core@1.60.0-alpha.10
142
+ - @mastra/client-js@1.41.0-alpha.10
143
+ - @mastra/react@1.4.4-alpha.10
144
+
145
+ ## 50.0.0-alpha.9
146
+
147
+ ### Patch Changes
148
+
149
+ - Updated dependencies [[`b0a2a07`](https://github.com/mastra-ai/mastra/commit/b0a2a07800d42bd9823292e7db832374ed084c9c), [`b0a2a07`](https://github.com/mastra-ai/mastra/commit/b0a2a07800d42bd9823292e7db832374ed084c9c), [`ccbbcd9`](https://github.com/mastra-ai/mastra/commit/ccbbcd974eedff4367a54ed0e24c9ee742ab2f61), [`3f5c6f7`](https://github.com/mastra-ai/mastra/commit/3f5c6f728ea35da344248de9aa070f12849f3aa0), [`507a9d4`](https://github.com/mastra-ai/mastra/commit/507a9d45fef9757dfbfc142ae73c0bbce602a214), [`77e6b1b`](https://github.com/mastra-ai/mastra/commit/77e6b1bc4c46ce94fe501023fb4393c812ec6be3), [`2e1d098`](https://github.com/mastra-ai/mastra/commit/2e1d0984e325fd319d32ea182f596b3170be3847)]:
150
+ - @mastra/memory@1.27.0-alpha.2
151
+ - @mastra/core@1.60.0-alpha.9
152
+ - @mastra/client-js@1.41.0-alpha.9
153
+ - @mastra/react@1.4.4-alpha.9
154
+
3
155
  ## 50.0.0-alpha.8
4
156
 
5
157
  ### Patch Changes
@@ -27,6 +27,8 @@ const buttonVariants = index.cva(
27
27
  variant: {
28
28
  default: "border border-border2 bg-surface3 text-neutral6 hover:bg-surface5 hover:text-neutral6 active:bg-surface6",
29
29
  primary: "border border-transparent bg-neutral6 font-medium text-surface1 hover:bg-neutral6/90 active:bg-neutral6/80",
30
+ destructive: "border border-transparent bg-accent2 font-medium text-white hover:bg-accent2/90 active:bg-accent2/80",
31
+ "destructive-ghost": "border border-transparent bg-transparent text-accent2 hover:bg-accent2/10 hover:text-accent2 active:bg-accent2/15",
30
32
  ghost: "border border-transparent bg-transparent text-neutral4 hover:bg-neutral6/5 hover:text-neutral6 active:bg-neutral6/10",
31
33
  outline: "border border-border1 bg-transparent text-neutral5 hover:bg-surface3 hover:text-neutral6 active:bg-surface4"
32
34
  },
@@ -106,4 +108,4 @@ Button.displayName = "Button";
106
108
 
107
109
  exports.Button = Button;
108
110
  exports.buttonVariants = buttonVariants;
109
- //# sourceMappingURL=Button-B4Ixj2aW.cjs.map
111
+ //# sourceMappingURL=Button-BWj3opYd.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button-BWj3opYd.cjs","sources":["../src/ds/components/Button/Button.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport React from 'react';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Icon } from '@/ds/icons/Icon';\nimport { controlHeight, controlSizeClasses } from '@/ds/primitives/control-size';\nimport { controlFocusBorderVisible, sharedFormElementDisabledStyle } from '@/ds/primitives/form-element';\nimport { cn } from '@/lib/utils';\n\n// Adornments for text-mode buttons: gap between icon+label, larger radius, and SVG sizing for\n// inline `<svg>` children. Excluded from icon-mode because icon-mode wraps children in `<Icon>`\n// (so `[&>svg]` selectors don't match) and uses its own `rounded-full` (circle).\nconst TEXT_MODE_ADORNMENTS = cn(\n 'gap-[.75em] rounded-full',\n '[&>svg]:mx-[-.3em] [&>svg]:size-[1.1em]',\n '[&:hover>svg]:opacity-100 [&>svg]:opacity-50',\n '[&>svg]:transition-opacity [&>svg]:duration-normal [&>svg]:ease-out-custom',\n);\n\n// eslint-disable-next-line react-refresh/only-export-components -- exported variant helper is part of Button's public API\nexport const buttonVariants = cva(\n cn(\n 'inline-flex cursor-pointer items-center justify-center leading-0',\n 'transition-all duration-normal ease-out-custom',\n sharedFormElementDisabledStyle,\n controlFocusBorderVisible,\n ),\n {\n variants: {\n variant: {\n default:\n 'border border-border2 bg-surface3 text-neutral6 hover:bg-surface5 hover:text-neutral6 active:bg-surface6',\n primary:\n 'border border-transparent bg-neutral6 font-medium text-surface1 hover:bg-neutral6/90 active:bg-neutral6/80',\n destructive:\n 'border border-transparent bg-accent2 font-medium text-white hover:bg-accent2/90 active:bg-accent2/80',\n 'destructive-ghost':\n 'border border-transparent bg-transparent text-accent2 hover:bg-accent2/10 hover:text-accent2 active:bg-accent2/15',\n ghost:\n 'border border-transparent bg-transparent text-neutral4 hover:bg-neutral6/5 hover:text-neutral6 active:bg-neutral6/10',\n outline:\n 'border border-border1 bg-transparent text-neutral5 hover:bg-surface3 hover:text-neutral6 active:bg-surface4',\n },\n size: {\n xs: cn(controlSizeClasses.xs, 'px-[.8em]', TEXT_MODE_ADORNMENTS),\n sm: cn(controlSizeClasses.sm, 'px-[.9em]', TEXT_MODE_ADORNMENTS),\n md: cn(controlSizeClasses.md, 'px-[.9em]', TEXT_MODE_ADORNMENTS),\n lg: cn(controlSizeClasses.default, 'px-[1em]', TEXT_MODE_ADORNMENTS),\n // Icon sizes: square dimensions, fully rounded → circle. Active state inherits from variant\n // (e.g. `active:bg-surface5`) — same press feedback as text-mode for consistency.\n 'icon-xs': cn(controlHeight.xs, 'w-form-xs rounded-full'),\n 'icon-sm': cn(controlHeight.sm, 'w-form-sm rounded-full'),\n 'icon-md': cn(controlHeight.md, 'w-form-md rounded-full'),\n 'icon-lg': cn(controlHeight.lg, 'w-form-lg rounded-full'),\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n },\n);\n\n// Public types derived from cva — single source of truth. Adding a variant or size to\n// `buttonVariants` automatically updates these unions.\ntype ButtonVariantsProps = VariantProps<typeof buttonVariants>;\nexport type ButtonVariant = NonNullable<ButtonVariantsProps['variant']>;\nexport type ButtonSize = NonNullable<ButtonVariantsProps['size']>;\nexport type IconButtonSize = Extract<ButtonSize, `icon-${string}`>;\nexport type TextButtonSize = Exclude<ButtonSize, IconButtonSize>;\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>, ButtonVariantsProps {\n as?: React.ElementType;\n className?: string;\n href?: string;\n to?: string;\n prefetch?: boolean | null;\n children: React.ReactNode;\n tooltip?: React.ReactNode;\n target?: string;\n type?: 'button' | 'submit' | 'reset';\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\n// Button's icon-* sizes don't match `<Icon>`'s own size scale (`sm | default | lg`).\nconst iconChildSizeMap: Record<IconButtonSize, 'sm' | 'default' | 'lg'> = {\n 'icon-xs': 'sm',\n 'icon-sm': 'sm',\n 'icon-md': 'default',\n 'icon-lg': 'lg',\n};\n\n// Walks React children, expanding `<></>` fragments so `isIconOnly` can inspect the real\n// elements inside. `<Button><><Icon/></></Button>` should still count as icon-only.\nfunction flattenChildren(children: React.ReactNode): React.ReactNode[] {\n const result: React.ReactNode[] = [];\n React.Children.forEach(children, child => {\n if (React.isValidElement<{ children?: React.ReactNode }>(child) && child.type === React.Fragment) {\n result.push(...flattenChildren(child.props.children));\n } else {\n result.push(child);\n }\n });\n return result;\n}\n\n// True when every child is a React element (no text/label). Used in text-mode to brighten the\n// SVG of label-less buttons so the glyph reads stronger.\nfunction isIconOnly(children: React.ReactNode): boolean {\n const flat = flattenChildren(children);\n return flat.length > 0 && flat.every(child => React.isValidElement(child));\n}\n\n// Type guard: narrows `ButtonSize` to `IconButtonSize` so consumers (e.g. `iconChildSizeMap`)\n// can index into icon-only structures without a cast.\nfunction isIconButtonSize(size: ButtonSize | null | undefined): size is IconButtonSize {\n return typeof size === 'string' && size.startsWith('icon-');\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n { className, as, size, variant = 'default', disabled, children, tooltip, 'aria-label': ariaLabelProp, ...props },\n ref,\n ) => {\n const Component = as || 'button';\n const iconMode = isIconButtonSize(size);\n const resolvedSize: ButtonSize = size ?? 'md';\n const isLabelless = !iconMode && isIconOnly(children);\n\n // Icon-only buttons need an a11y label. If a string tooltip is provided, reuse it.\n const ariaLabel = ariaLabelProp ?? ((iconMode || isLabelless) && typeof tooltip === 'string' ? tooltip : undefined);\n\n const content = iconMode ? <Icon size={iconChildSizeMap[size as IconButtonSize]}>{children}</Icon> : children;\n\n const button = (\n <Component\n ref={ref}\n disabled={disabled}\n aria-label={ariaLabel}\n // Expose the variant so a parent ButtonsGroup can detect FILLED segments in CSS\n // (filled buttons have an opaque background that hides a border seam, so the group\n // paints their divider as an inset box-shadow instead — see buttons-group.tsx).\n data-variant={variant}\n className={cn(buttonVariants({ variant, size: resolvedSize }), isLabelless && '[&>svg]:opacity-75', className)}\n {...props}\n >\n {content}\n </Component>\n );\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n );\n }\n\n return button;\n },\n);\n\nButton.displayName = 'Button';\n"],"names":["cn","cva","sharedFormElementDisabledStyle","controlFocusBorderVisible","controlSizeClasses","controlHeight","tooltip","jsx","Icon","Tooltip","TooltipTrigger","TooltipContent"],"mappings":"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"}
@@ -25,6 +25,8 @@ const buttonVariants = cva(
25
25
  variant: {
26
26
  default: "border border-border2 bg-surface3 text-neutral6 hover:bg-surface5 hover:text-neutral6 active:bg-surface6",
27
27
  primary: "border border-transparent bg-neutral6 font-medium text-surface1 hover:bg-neutral6/90 active:bg-neutral6/80",
28
+ destructive: "border border-transparent bg-accent2 font-medium text-white hover:bg-accent2/90 active:bg-accent2/80",
29
+ "destructive-ghost": "border border-transparent bg-transparent text-accent2 hover:bg-accent2/10 hover:text-accent2 active:bg-accent2/15",
28
30
  ghost: "border border-transparent bg-transparent text-neutral4 hover:bg-neutral6/5 hover:text-neutral6 active:bg-neutral6/10",
29
31
  outline: "border border-border1 bg-transparent text-neutral5 hover:bg-surface3 hover:text-neutral6 active:bg-surface4"
30
32
  },
@@ -103,4 +105,4 @@ const Button = React__default.forwardRef(
103
105
  Button.displayName = "Button";
104
106
 
105
107
  export { Button as B, buttonVariants as b };
106
- //# sourceMappingURL=Button-C-9Pzy-Z.js.map
108
+ //# sourceMappingURL=Button-XHy01fYR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button-XHy01fYR.js","sources":["../src/ds/components/Button/Button.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport React from 'react';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Icon } from '@/ds/icons/Icon';\nimport { controlHeight, controlSizeClasses } from '@/ds/primitives/control-size';\nimport { controlFocusBorderVisible, sharedFormElementDisabledStyle } from '@/ds/primitives/form-element';\nimport { cn } from '@/lib/utils';\n\n// Adornments for text-mode buttons: gap between icon+label, larger radius, and SVG sizing for\n// inline `<svg>` children. Excluded from icon-mode because icon-mode wraps children in `<Icon>`\n// (so `[&>svg]` selectors don't match) and uses its own `rounded-full` (circle).\nconst TEXT_MODE_ADORNMENTS = cn(\n 'gap-[.75em] rounded-full',\n '[&>svg]:mx-[-.3em] [&>svg]:size-[1.1em]',\n '[&:hover>svg]:opacity-100 [&>svg]:opacity-50',\n '[&>svg]:transition-opacity [&>svg]:duration-normal [&>svg]:ease-out-custom',\n);\n\n// eslint-disable-next-line react-refresh/only-export-components -- exported variant helper is part of Button's public API\nexport const buttonVariants = cva(\n cn(\n 'inline-flex cursor-pointer items-center justify-center leading-0',\n 'transition-all duration-normal ease-out-custom',\n sharedFormElementDisabledStyle,\n controlFocusBorderVisible,\n ),\n {\n variants: {\n variant: {\n default:\n 'border border-border2 bg-surface3 text-neutral6 hover:bg-surface5 hover:text-neutral6 active:bg-surface6',\n primary:\n 'border border-transparent bg-neutral6 font-medium text-surface1 hover:bg-neutral6/90 active:bg-neutral6/80',\n destructive:\n 'border border-transparent bg-accent2 font-medium text-white hover:bg-accent2/90 active:bg-accent2/80',\n 'destructive-ghost':\n 'border border-transparent bg-transparent text-accent2 hover:bg-accent2/10 hover:text-accent2 active:bg-accent2/15',\n ghost:\n 'border border-transparent bg-transparent text-neutral4 hover:bg-neutral6/5 hover:text-neutral6 active:bg-neutral6/10',\n outline:\n 'border border-border1 bg-transparent text-neutral5 hover:bg-surface3 hover:text-neutral6 active:bg-surface4',\n },\n size: {\n xs: cn(controlSizeClasses.xs, 'px-[.8em]', TEXT_MODE_ADORNMENTS),\n sm: cn(controlSizeClasses.sm, 'px-[.9em]', TEXT_MODE_ADORNMENTS),\n md: cn(controlSizeClasses.md, 'px-[.9em]', TEXT_MODE_ADORNMENTS),\n lg: cn(controlSizeClasses.default, 'px-[1em]', TEXT_MODE_ADORNMENTS),\n // Icon sizes: square dimensions, fully rounded → circle. Active state inherits from variant\n // (e.g. `active:bg-surface5`) — same press feedback as text-mode for consistency.\n 'icon-xs': cn(controlHeight.xs, 'w-form-xs rounded-full'),\n 'icon-sm': cn(controlHeight.sm, 'w-form-sm rounded-full'),\n 'icon-md': cn(controlHeight.md, 'w-form-md rounded-full'),\n 'icon-lg': cn(controlHeight.lg, 'w-form-lg rounded-full'),\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n },\n);\n\n// Public types derived from cva — single source of truth. Adding a variant or size to\n// `buttonVariants` automatically updates these unions.\ntype ButtonVariantsProps = VariantProps<typeof buttonVariants>;\nexport type ButtonVariant = NonNullable<ButtonVariantsProps['variant']>;\nexport type ButtonSize = NonNullable<ButtonVariantsProps['size']>;\nexport type IconButtonSize = Extract<ButtonSize, `icon-${string}`>;\nexport type TextButtonSize = Exclude<ButtonSize, IconButtonSize>;\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>, ButtonVariantsProps {\n as?: React.ElementType;\n className?: string;\n href?: string;\n to?: string;\n prefetch?: boolean | null;\n children: React.ReactNode;\n tooltip?: React.ReactNode;\n target?: string;\n type?: 'button' | 'submit' | 'reset';\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\n// Button's icon-* sizes don't match `<Icon>`'s own size scale (`sm | default | lg`).\nconst iconChildSizeMap: Record<IconButtonSize, 'sm' | 'default' | 'lg'> = {\n 'icon-xs': 'sm',\n 'icon-sm': 'sm',\n 'icon-md': 'default',\n 'icon-lg': 'lg',\n};\n\n// Walks React children, expanding `<></>` fragments so `isIconOnly` can inspect the real\n// elements inside. `<Button><><Icon/></></Button>` should still count as icon-only.\nfunction flattenChildren(children: React.ReactNode): React.ReactNode[] {\n const result: React.ReactNode[] = [];\n React.Children.forEach(children, child => {\n if (React.isValidElement<{ children?: React.ReactNode }>(child) && child.type === React.Fragment) {\n result.push(...flattenChildren(child.props.children));\n } else {\n result.push(child);\n }\n });\n return result;\n}\n\n// True when every child is a React element (no text/label). Used in text-mode to brighten the\n// SVG of label-less buttons so the glyph reads stronger.\nfunction isIconOnly(children: React.ReactNode): boolean {\n const flat = flattenChildren(children);\n return flat.length > 0 && flat.every(child => React.isValidElement(child));\n}\n\n// Type guard: narrows `ButtonSize` to `IconButtonSize` so consumers (e.g. `iconChildSizeMap`)\n// can index into icon-only structures without a cast.\nfunction isIconButtonSize(size: ButtonSize | null | undefined): size is IconButtonSize {\n return typeof size === 'string' && size.startsWith('icon-');\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n { className, as, size, variant = 'default', disabled, children, tooltip, 'aria-label': ariaLabelProp, ...props },\n ref,\n ) => {\n const Component = as || 'button';\n const iconMode = isIconButtonSize(size);\n const resolvedSize: ButtonSize = size ?? 'md';\n const isLabelless = !iconMode && isIconOnly(children);\n\n // Icon-only buttons need an a11y label. If a string tooltip is provided, reuse it.\n const ariaLabel = ariaLabelProp ?? ((iconMode || isLabelless) && typeof tooltip === 'string' ? tooltip : undefined);\n\n const content = iconMode ? <Icon size={iconChildSizeMap[size as IconButtonSize]}>{children}</Icon> : children;\n\n const button = (\n <Component\n ref={ref}\n disabled={disabled}\n aria-label={ariaLabel}\n // Expose the variant so a parent ButtonsGroup can detect FILLED segments in CSS\n // (filled buttons have an opaque background that hides a border seam, so the group\n // paints their divider as an inset box-shadow instead — see buttons-group.tsx).\n data-variant={variant}\n className={cn(buttonVariants({ variant, size: resolvedSize }), isLabelless && '[&>svg]:opacity-75', className)}\n {...props}\n >\n {content}\n </Component>\n );\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n );\n }\n\n return button;\n },\n);\n\nButton.displayName = 'Button';\n"],"names":["React"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { B as Button } from './Button-C-9Pzy-Z.js';
2
+ import { B as Button } from './Button-XHy01fYR.js';
3
3
  import { c as cn } from './cn-BakJzhuv.js';
4
4
  import { FileTextIcon, InfoIcon, TriangleAlertIcon, OctagonAlertIcon, LightbulbIcon } from 'lucide-react';
5
5
 
@@ -86,4 +86,4 @@ const Notice = Object.assign(NoticeRoot, {
86
86
  });
87
87
 
88
88
  export { Notice as N };
89
- //# sourceMappingURL=Notice-DWHQgxkA.js.map
89
+ //# sourceMappingURL=Notice-BtIu4ZoP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Notice-DWHQgxkA.js","sources":["../src/ds/components/Notice/notice-button.tsx","../src/ds/components/Notice/notice-message.tsx","../src/ds/components/Notice/notice-root.tsx","../src/ds/components/Notice/Notice.tsx"],"sourcesContent":["import type { ButtonProps } from '../Button';\nimport { Button } from '../Button';\n\nexport function NoticeButton(props: ButtonProps) {\n return <Button size=\"sm\" variant=\"ghost\" {...props} />;\n}\n","import { cn } from '@/lib/utils';\n\nexport interface NoticeMessageProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport function NoticeMessage({ children, className }: NoticeMessageProps) {\n return <div className={cn('text-ui-md leading-ui-md', className)}>{children}</div>;\n}\n","import { FileTextIcon, InfoIcon, LightbulbIcon, OctagonAlertIcon, TriangleAlertIcon } from 'lucide-react';\nimport React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type NoticeVariant = 'warning' | 'destructive' | 'success' | 'info' | 'note';\n\nconst variantConfig: Record<NoticeVariant, { icon: React.ReactNode; classes: string }> = {\n success: {\n icon: <LightbulbIcon />,\n classes: 'bg-notice-success/20 border-notice-success/20 text-notice-success-fg',\n },\n destructive: {\n icon: <OctagonAlertIcon />,\n classes: 'bg-notice-destructive/20 border-notice-destructive/20 text-notice-destructive-fg',\n },\n warning: {\n icon: <TriangleAlertIcon />,\n classes: 'bg-notice-warning/20 border-notice-warning/20 text-notice-warning-fg',\n },\n info: {\n icon: <InfoIcon />,\n classes: 'bg-notice-info/20 border-notice-info/20 text-notice-info-fg',\n },\n note: {\n icon: <FileTextIcon />,\n classes: 'bg-notice-note border-border1 text-notice-note-fg',\n },\n};\n\nexport interface NoticeRootProps {\n variant: NoticeVariant;\n title?: React.ReactNode;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport function NoticeRoot({ variant, title, icon, action, children, className }: NoticeRootProps) {\n const { icon: defaultIcon, classes } = variantConfig[variant];\n const resolvedIcon = icon ?? defaultIcon;\n\n if (!title) {\n return (\n <div\n className={cn(\n '@container relative rounded-2xl border p-3 text-ui-md leading-ui-md',\n 'animate-in duration-200 fade-in-0 slide-in-from-top-2',\n classes,\n className,\n )}\n >\n <div className=\"flex flex-col gap-3 @md:flex-row @md:items-start @md:gap-2\">\n <div className=\"flex min-w-0 flex-1 items-start gap-2 [&>svg]:size-4\">\n <span className=\"flex h-[1lh] shrink-0 items-center [&>svg]:size-4\">{resolvedIcon}</span>\n {/* wrap-anywhere — messages carry URLs and tokens with no break opportunity */}\n {children && <div className=\"min-w-0 flex-1 wrap-anywhere\">{children}</div>}\n </div>\n {action && <div className=\"@md:-my-1 [&>button]:w-full @md:[&>button]:w-auto\">{action}</div>}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n '@container relative flex flex-col gap-4 rounded-2xl border p-3',\n 'animate-in duration-200 fade-in-0 slide-in-from-top-2',\n classes,\n className,\n )}\n >\n <div className=\"flex h-4 min-w-0 items-center gap-2 [&>svg]:size-4\">\n {resolvedIcon}\n {/* truncate, not wrap — the row is 1rem tall, a wrapped title would spill out of it */}\n <span className=\"text-ui-sm truncate leading-none font-medium tracking-wide uppercase\">{title}</span>\n </div>\n {action && <div className=\"absolute top-2 right-2 hidden @md:block\">{action}</div>}\n {(children || action) && (\n <div className=\"flex min-w-0 flex-col gap-5 wrap-anywhere\">\n {children}\n {action && <div className=\"self-start @md:hidden\">{action}</div>}\n </div>\n )}\n </div>\n );\n}\n","import { NoticeButton } from './notice-button';\nimport { NoticeMessage } from './notice-message';\nimport { NoticeRoot } from './notice-root';\n\nexport { type NoticeVariant, type NoticeRootProps } from './notice-root';\nexport { type NoticeMessageProps } from './notice-message';\n\nexport const Notice = Object.assign(NoticeRoot, {\n Message: NoticeMessage,\n Button: NoticeButton,\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Notice-BtIu4ZoP.js","sources":["../src/ds/components/Notice/notice-button.tsx","../src/ds/components/Notice/notice-message.tsx","../src/ds/components/Notice/notice-root.tsx","../src/ds/components/Notice/Notice.tsx"],"sourcesContent":["import type { ButtonProps } from '../Button';\nimport { Button } from '../Button';\n\nexport function NoticeButton(props: ButtonProps) {\n return <Button size=\"sm\" variant=\"ghost\" {...props} />;\n}\n","import { cn } from '@/lib/utils';\n\nexport interface NoticeMessageProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport function NoticeMessage({ children, className }: NoticeMessageProps) {\n return <div className={cn('text-ui-md leading-ui-md', className)}>{children}</div>;\n}\n","import { FileTextIcon, InfoIcon, LightbulbIcon, OctagonAlertIcon, TriangleAlertIcon } from 'lucide-react';\nimport React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type NoticeVariant = 'warning' | 'destructive' | 'success' | 'info' | 'note';\n\nconst variantConfig: Record<NoticeVariant, { icon: React.ReactNode; classes: string }> = {\n success: {\n icon: <LightbulbIcon />,\n classes: 'bg-notice-success/20 border-notice-success/20 text-notice-success-fg',\n },\n destructive: {\n icon: <OctagonAlertIcon />,\n classes: 'bg-notice-destructive/20 border-notice-destructive/20 text-notice-destructive-fg',\n },\n warning: {\n icon: <TriangleAlertIcon />,\n classes: 'bg-notice-warning/20 border-notice-warning/20 text-notice-warning-fg',\n },\n info: {\n icon: <InfoIcon />,\n classes: 'bg-notice-info/20 border-notice-info/20 text-notice-info-fg',\n },\n note: {\n icon: <FileTextIcon />,\n classes: 'bg-notice-note border-border1 text-notice-note-fg',\n },\n};\n\nexport interface NoticeRootProps {\n variant: NoticeVariant;\n title?: React.ReactNode;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport function NoticeRoot({ variant, title, icon, action, children, className }: NoticeRootProps) {\n const { icon: defaultIcon, classes } = variantConfig[variant];\n const resolvedIcon = icon ?? defaultIcon;\n\n if (!title) {\n return (\n <div\n className={cn(\n '@container relative rounded-2xl border p-3 text-ui-md leading-ui-md',\n 'animate-in duration-200 fade-in-0 slide-in-from-top-2',\n classes,\n className,\n )}\n >\n <div className=\"flex flex-col gap-3 @md:flex-row @md:items-start @md:gap-2\">\n <div className=\"flex min-w-0 flex-1 items-start gap-2 [&>svg]:size-4\">\n <span className=\"flex h-[1lh] shrink-0 items-center [&>svg]:size-4\">{resolvedIcon}</span>\n {/* wrap-anywhere — messages carry URLs and tokens with no break opportunity */}\n {children && <div className=\"min-w-0 flex-1 wrap-anywhere\">{children}</div>}\n </div>\n {action && <div className=\"@md:-my-1 [&>button]:w-full @md:[&>button]:w-auto\">{action}</div>}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n '@container relative flex flex-col gap-4 rounded-2xl border p-3',\n 'animate-in duration-200 fade-in-0 slide-in-from-top-2',\n classes,\n className,\n )}\n >\n <div className=\"flex h-4 min-w-0 items-center gap-2 [&>svg]:size-4\">\n {resolvedIcon}\n {/* truncate, not wrap — the row is 1rem tall, a wrapped title would spill out of it */}\n <span className=\"text-ui-sm truncate leading-none font-medium tracking-wide uppercase\">{title}</span>\n </div>\n {action && <div className=\"absolute top-2 right-2 hidden @md:block\">{action}</div>}\n {(children || action) && (\n <div className=\"flex min-w-0 flex-col gap-5 wrap-anywhere\">\n {children}\n {action && <div className=\"self-start @md:hidden\">{action}</div>}\n </div>\n )}\n </div>\n );\n}\n","import { NoticeButton } from './notice-button';\nimport { NoticeMessage } from './notice-message';\nimport { NoticeRoot } from './notice-root';\n\nexport { type NoticeVariant, type NoticeRootProps } from './notice-root';\nexport { type NoticeMessageProps } from './notice-message';\n\nexport const Notice = Object.assign(NoticeRoot, {\n Message: NoticeMessage,\n Button: NoticeButton,\n});\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
- const Button = require('./Button-B4Ixj2aW.cjs');
4
+ const Button = require('./Button-BWj3opYd.cjs');
5
5
  const utils_cn = require('./cn-vA5sWo9W.cjs');
6
6
  const lucideReact = require('lucide-react');
7
7
 
@@ -88,4 +88,4 @@ const Notice = Object.assign(NoticeRoot, {
88
88
  });
89
89
 
90
90
  exports.Notice = Notice;
91
- //# sourceMappingURL=Notice-DSfh1Ap5.cjs.map
91
+ //# sourceMappingURL=Notice-C6IkjU_x.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Notice-DSfh1Ap5.cjs","sources":["../src/ds/components/Notice/notice-button.tsx","../src/ds/components/Notice/notice-message.tsx","../src/ds/components/Notice/notice-root.tsx","../src/ds/components/Notice/Notice.tsx"],"sourcesContent":["import type { ButtonProps } from '../Button';\nimport { Button } from '../Button';\n\nexport function NoticeButton(props: ButtonProps) {\n return <Button size=\"sm\" variant=\"ghost\" {...props} />;\n}\n","import { cn } from '@/lib/utils';\n\nexport interface NoticeMessageProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport function NoticeMessage({ children, className }: NoticeMessageProps) {\n return <div className={cn('text-ui-md leading-ui-md', className)}>{children}</div>;\n}\n","import { FileTextIcon, InfoIcon, LightbulbIcon, OctagonAlertIcon, TriangleAlertIcon } from 'lucide-react';\nimport React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type NoticeVariant = 'warning' | 'destructive' | 'success' | 'info' | 'note';\n\nconst variantConfig: Record<NoticeVariant, { icon: React.ReactNode; classes: string }> = {\n success: {\n icon: <LightbulbIcon />,\n classes: 'bg-notice-success/20 border-notice-success/20 text-notice-success-fg',\n },\n destructive: {\n icon: <OctagonAlertIcon />,\n classes: 'bg-notice-destructive/20 border-notice-destructive/20 text-notice-destructive-fg',\n },\n warning: {\n icon: <TriangleAlertIcon />,\n classes: 'bg-notice-warning/20 border-notice-warning/20 text-notice-warning-fg',\n },\n info: {\n icon: <InfoIcon />,\n classes: 'bg-notice-info/20 border-notice-info/20 text-notice-info-fg',\n },\n note: {\n icon: <FileTextIcon />,\n classes: 'bg-notice-note border-border1 text-notice-note-fg',\n },\n};\n\nexport interface NoticeRootProps {\n variant: NoticeVariant;\n title?: React.ReactNode;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport function NoticeRoot({ variant, title, icon, action, children, className }: NoticeRootProps) {\n const { icon: defaultIcon, classes } = variantConfig[variant];\n const resolvedIcon = icon ?? defaultIcon;\n\n if (!title) {\n return (\n <div\n className={cn(\n '@container relative rounded-2xl border p-3 text-ui-md leading-ui-md',\n 'animate-in duration-200 fade-in-0 slide-in-from-top-2',\n classes,\n className,\n )}\n >\n <div className=\"flex flex-col gap-3 @md:flex-row @md:items-start @md:gap-2\">\n <div className=\"flex min-w-0 flex-1 items-start gap-2 [&>svg]:size-4\">\n <span className=\"flex h-[1lh] shrink-0 items-center [&>svg]:size-4\">{resolvedIcon}</span>\n {/* wrap-anywhere — messages carry URLs and tokens with no break opportunity */}\n {children && <div className=\"min-w-0 flex-1 wrap-anywhere\">{children}</div>}\n </div>\n {action && <div className=\"@md:-my-1 [&>button]:w-full @md:[&>button]:w-auto\">{action}</div>}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n '@container relative flex flex-col gap-4 rounded-2xl border p-3',\n 'animate-in duration-200 fade-in-0 slide-in-from-top-2',\n classes,\n className,\n )}\n >\n <div className=\"flex h-4 min-w-0 items-center gap-2 [&>svg]:size-4\">\n {resolvedIcon}\n {/* truncate, not wrap — the row is 1rem tall, a wrapped title would spill out of it */}\n <span className=\"text-ui-sm truncate leading-none font-medium tracking-wide uppercase\">{title}</span>\n </div>\n {action && <div className=\"absolute top-2 right-2 hidden @md:block\">{action}</div>}\n {(children || action) && (\n <div className=\"flex min-w-0 flex-col gap-5 wrap-anywhere\">\n {children}\n {action && <div className=\"self-start @md:hidden\">{action}</div>}\n </div>\n )}\n </div>\n );\n}\n","import { NoticeButton } from './notice-button';\nimport { NoticeMessage } from './notice-message';\nimport { NoticeRoot } from './notice-root';\n\nexport { type NoticeVariant, type NoticeRootProps } from './notice-root';\nexport { type NoticeMessageProps } from './notice-message';\n\nexport const Notice = Object.assign(NoticeRoot, {\n Message: NoticeMessage,\n Button: NoticeButton,\n});\n"],"names":["Button","cn","LightbulbIcon","OctagonAlertIcon","TriangleAlertIcon","InfoIcon","FileTextIcon","jsx","jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"Notice-C6IkjU_x.cjs","sources":["../src/ds/components/Notice/notice-button.tsx","../src/ds/components/Notice/notice-message.tsx","../src/ds/components/Notice/notice-root.tsx","../src/ds/components/Notice/Notice.tsx"],"sourcesContent":["import type { ButtonProps } from '../Button';\nimport { Button } from '../Button';\n\nexport function NoticeButton(props: ButtonProps) {\n return <Button size=\"sm\" variant=\"ghost\" {...props} />;\n}\n","import { cn } from '@/lib/utils';\n\nexport interface NoticeMessageProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport function NoticeMessage({ children, className }: NoticeMessageProps) {\n return <div className={cn('text-ui-md leading-ui-md', className)}>{children}</div>;\n}\n","import { FileTextIcon, InfoIcon, LightbulbIcon, OctagonAlertIcon, TriangleAlertIcon } from 'lucide-react';\nimport React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type NoticeVariant = 'warning' | 'destructive' | 'success' | 'info' | 'note';\n\nconst variantConfig: Record<NoticeVariant, { icon: React.ReactNode; classes: string }> = {\n success: {\n icon: <LightbulbIcon />,\n classes: 'bg-notice-success/20 border-notice-success/20 text-notice-success-fg',\n },\n destructive: {\n icon: <OctagonAlertIcon />,\n classes: 'bg-notice-destructive/20 border-notice-destructive/20 text-notice-destructive-fg',\n },\n warning: {\n icon: <TriangleAlertIcon />,\n classes: 'bg-notice-warning/20 border-notice-warning/20 text-notice-warning-fg',\n },\n info: {\n icon: <InfoIcon />,\n classes: 'bg-notice-info/20 border-notice-info/20 text-notice-info-fg',\n },\n note: {\n icon: <FileTextIcon />,\n classes: 'bg-notice-note border-border1 text-notice-note-fg',\n },\n};\n\nexport interface NoticeRootProps {\n variant: NoticeVariant;\n title?: React.ReactNode;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n children?: React.ReactNode;\n className?: string;\n}\n\nexport function NoticeRoot({ variant, title, icon, action, children, className }: NoticeRootProps) {\n const { icon: defaultIcon, classes } = variantConfig[variant];\n const resolvedIcon = icon ?? defaultIcon;\n\n if (!title) {\n return (\n <div\n className={cn(\n '@container relative rounded-2xl border p-3 text-ui-md leading-ui-md',\n 'animate-in duration-200 fade-in-0 slide-in-from-top-2',\n classes,\n className,\n )}\n >\n <div className=\"flex flex-col gap-3 @md:flex-row @md:items-start @md:gap-2\">\n <div className=\"flex min-w-0 flex-1 items-start gap-2 [&>svg]:size-4\">\n <span className=\"flex h-[1lh] shrink-0 items-center [&>svg]:size-4\">{resolvedIcon}</span>\n {/* wrap-anywhere — messages carry URLs and tokens with no break opportunity */}\n {children && <div className=\"min-w-0 flex-1 wrap-anywhere\">{children}</div>}\n </div>\n {action && <div className=\"@md:-my-1 [&>button]:w-full @md:[&>button]:w-auto\">{action}</div>}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n '@container relative flex flex-col gap-4 rounded-2xl border p-3',\n 'animate-in duration-200 fade-in-0 slide-in-from-top-2',\n classes,\n className,\n )}\n >\n <div className=\"flex h-4 min-w-0 items-center gap-2 [&>svg]:size-4\">\n {resolvedIcon}\n {/* truncate, not wrap — the row is 1rem tall, a wrapped title would spill out of it */}\n <span className=\"text-ui-sm truncate leading-none font-medium tracking-wide uppercase\">{title}</span>\n </div>\n {action && <div className=\"absolute top-2 right-2 hidden @md:block\">{action}</div>}\n {(children || action) && (\n <div className=\"flex min-w-0 flex-col gap-5 wrap-anywhere\">\n {children}\n {action && <div className=\"self-start @md:hidden\">{action}</div>}\n </div>\n )}\n </div>\n );\n}\n","import { NoticeButton } from './notice-button';\nimport { NoticeMessage } from './notice-message';\nimport { NoticeRoot } from './notice-root';\n\nexport { type NoticeVariant, type NoticeRootProps } from './notice-root';\nexport { type NoticeMessageProps } from './notice-message';\n\nexport const Notice = Object.assign(NoticeRoot, {\n Message: NoticeMessage,\n Button: NoticeButton,\n});\n"],"names":["Button","cn","LightbulbIcon","OctagonAlertIcon","TriangleAlertIcon","InfoIcon","FileTextIcon","jsx","jsxs"],"mappings":";;;;;;;AAGO,SAAS,aAAa,KAAA,EAAoB;AAC/C,EAAA,sCAAQA,aAAA,EAAA,EAAO,IAAA,EAAK,MAAK,OAAA,EAAQ,OAAA,EAAS,GAAG,KAAA,EAAO,CAAA;AACtD;;ACEO,SAAS,aAAA,CAAc,EAAE,QAAA,EAAU,SAAA,EAAU,EAAuB;AACzE,EAAA,sCAAQ,KAAA,EAAA,EAAI,SAAA,EAAWC,YAAG,0BAAA,EAA4B,SAAS,GAAI,QAAA,EAAS,CAAA;AAC9E;;ACHA,MAAM,aAAA,GAAmF;AAAA,EACvF,OAAA,EAAS;AAAA,IACP,IAAA,iCAAOC,yBAAA,EAAA,EAAc,CAAA;AAAA,IACrB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,WAAA,EAAa;AAAA,IACX,IAAA,iCAAOC,4BAAA,EAAA,EAAiB,CAAA;AAAA,IACxB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,iCAAOC,6BAAA,EAAA,EAAkB,CAAA;AAAA,IACzB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,iCAAOC,oBAAA,EAAA,EAAS,CAAA;AAAA,IAChB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,iCAAOC,wBAAA,EAAA,EAAa,CAAA;AAAA,IACpB,OAAA,EAAS;AAAA;AAEb,CAAA;AAWO,SAAS,UAAA,CAAW,EAAE,OAAA,EAAS,KAAA,EAAO,MAAM,MAAA,EAAQ,QAAA,EAAU,WAAU,EAAoB;AACjG,EAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAa,OAAA,EAAQ,GAAI,cAAc,OAAO,CAAA;AAC5D,EAAA,MAAM,eAAe,IAAA,IAAQ,WAAA;AAE7B,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,uBACEC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWN,WAAA;AAAA,UACT,qEAAA;AAAA,UACA,uDAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,kBAAAO,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4DAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,sDAAA,EACb,QAAA,EAAA;AAAA,4BAAAD,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mDAAA,EAAqD,QAAA,EAAA,YAAA,EAAa,CAAA;AAAA,YAEjF,QAAA,oBAAYA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gCAAgC,QAAA,EAAS;AAAA,WAAA,EACvE,CAAA;AAAA,UACC,MAAA,oBAAUA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qDAAqD,QAAA,EAAA,MAAA,EAAO;AAAA,SAAA,EACxF;AAAA;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,uBACEC,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWP,WAAA;AAAA,QACT,gEAAA;AAAA,QACA,uDAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAO,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,oDAAA,EACZ,QAAA,EAAA;AAAA,UAAA,YAAA;AAAA,0BAEDD,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sEAAA,EAAwE,QAAA,EAAA,KAAA,EAAM;AAAA,SAAA,EAChG,CAAA;AAAA,QACC,MAAA,oBAAUA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAA2C,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,QAAA,CAC1E,QAAA,IAAY,MAAA,qBACZC,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,2CAAA,EACZ,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,MAAA,oBAAUD,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAyB,QAAA,EAAA,MAAA,EAAO;AAAA,SAAA,EAC5D;AAAA;AAAA;AAAA,GAEJ;AAEJ;;AChFO,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY;AAAA,EAC9C,OAAA,EAAS,aAAA;AAAA,EACT,MAAA,EAAQ;AACV,CAAC;;;;"}
@@ -3,7 +3,7 @@ import { useMastraClient } from '@mastra/react';
3
3
  import { LogIn } from 'lucide-react';
4
4
  import { useState, useCallback } from 'react';
5
5
  import { Icon } from './icons/Icon.es.js';
6
- import { B as Button } from './Button-C-9Pzy-Z.js';
6
+ import { B as Button } from './Button-XHy01fYR.js';
7
7
  import { E as EmptyState } from './EmptyState-BLd-LJOA.js';
8
8
 
9
9
  function SessionExpired({ title, description, className }) {
@@ -42,4 +42,4 @@ function SessionExpired({ title, description, className }) {
42
42
  }
43
43
 
44
44
  export { SessionExpired as S };
45
- //# sourceMappingURL=SessionExpired-qvMB5AP_.js.map
45
+ //# sourceMappingURL=SessionExpired-BJ2GbVh1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionExpired-qvMB5AP_.js","sources":["../src/ds/components/SessionExpired/SessionExpired.tsx"],"sourcesContent":["import { useMastraClient } from '@mastra/react';\nimport { LogIn } from 'lucide-react';\nimport { useState, useCallback } from 'react';\n\nimport { Icon } from '../../icons/Icon';\nimport { Button } from '../Button';\nimport { EmptyState } from '../EmptyState';\n\nexport interface SessionExpiredProps {\n /** Custom title override */\n title?: string;\n /** Custom description override */\n description?: string;\n /** Additional CSS classes */\n className?: string;\n}\n\nexport function SessionExpired({ title, description, className }: SessionExpiredProps) {\n const [isPending, setIsPending] = useState(false);\n const client = useMastraClient();\n\n const handleLogin = useCallback(async () => {\n try {\n setIsPending(true);\n const { baseUrl = '', apiPrefix } = (client as any).options || {};\n const raw = (apiPrefix || '/api').trim();\n const prefix = (raw.startsWith('/') ? raw : `/${raw}`).replace(/\\/$/, '');\n const params = new URLSearchParams({ redirect_uri: window.location.href });\n const url = `${baseUrl}${prefix}/auth/sso/login?${params}`;\n\n const response = await fetch(url, {\n credentials: 'include',\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (response.ok) {\n const data = await response.json();\n window.location.href = data.url;\n }\n } finally {\n setIsPending(false);\n }\n }, [client]);\n\n return (\n <EmptyState\n className={className}\n iconSlot={\n <Icon size=\"lg\" className=\"text-neutral3\">\n <LogIn />\n </Icon>\n }\n titleSlot={title ?? 'Session Expired'}\n descriptionSlot={description ?? 'Your session has expired. Please log in again to continue.'}\n actionSlot={\n <Button variant=\"default\" onClick={handleLogin} disabled={isPending}>\n {isPending ? 'Redirecting...' : 'Log in'}\n </Button>\n }\n />\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAiBO,SAAS,cAAA,CAAe,EAAE,KAAA,EAAO,WAAA,EAAa,WAAU,EAAwB;AACrF,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,SAAS,eAAA,EAAgB;AAE/B,EAAA,MAAM,WAAA,GAAc,YAAY,YAAY;AAC1C,IAAA,IAAI;AACF,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,MAAM,EAAE,OAAA,GAAU,EAAA,EAAI,WAAU,GAAK,MAAA,CAAe,WAAW,EAAC;AAChE,MAAA,MAAM,GAAA,GAAA,CAAO,SAAA,IAAa,MAAA,EAAQ,IAAA,EAAK;AACvC,MAAA,MAAM,MAAA,GAAA,CAAU,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA,GAAI,GAAA,GAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACxE,MAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,EAAE,cAAc,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA;AACzE,MAAA,MAAM,MAAM,CAAA,EAAG,OAAO,CAAA,EAAG,MAAM,mBAAmB,MAAM,CAAA,CAAA;AAExD,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,QAChC,WAAA,EAAa,SAAA;AAAA,QACb,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAAmB,OAC/C,CAAA;AAED,MAAA,IAAI,SAAS,EAAA,EAAI;AACf,QAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,QAAA,MAAA,CAAO,QAAA,CAAS,OAAO,IAAA,CAAK,GAAA;AAAA,MAC9B;AAAA,IACF,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,QAAA,sBACG,IAAA,EAAA,EAAK,IAAA,EAAK,MAAK,SAAA,EAAU,eAAA,EACxB,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,CAAA,EACT,CAAA;AAAA,MAEF,WAAW,KAAA,IAAS,iBAAA;AAAA,MACpB,iBAAiB,WAAA,IAAe,4DAAA;AAAA,MAChC,UAAA,kBACE,GAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,OAAA,EAAS,WAAA,EAAa,QAAA,EAAU,SAAA,EACvD,QAAA,EAAA,SAAA,GAAY,gBAAA,GAAmB,QAAA,EAClC;AAAA;AAAA,GAEJ;AAEJ;;;;"}
1
+ {"version":3,"file":"SessionExpired-BJ2GbVh1.js","sources":["../src/ds/components/SessionExpired/SessionExpired.tsx"],"sourcesContent":["import { useMastraClient } from '@mastra/react';\nimport { LogIn } from 'lucide-react';\nimport { useState, useCallback } from 'react';\n\nimport { Icon } from '../../icons/Icon';\nimport { Button } from '../Button';\nimport { EmptyState } from '../EmptyState';\n\nexport interface SessionExpiredProps {\n /** Custom title override */\n title?: string;\n /** Custom description override */\n description?: string;\n /** Additional CSS classes */\n className?: string;\n}\n\nexport function SessionExpired({ title, description, className }: SessionExpiredProps) {\n const [isPending, setIsPending] = useState(false);\n const client = useMastraClient();\n\n const handleLogin = useCallback(async () => {\n try {\n setIsPending(true);\n const { baseUrl = '', apiPrefix } = (client as any).options || {};\n const raw = (apiPrefix || '/api').trim();\n const prefix = (raw.startsWith('/') ? raw : `/${raw}`).replace(/\\/$/, '');\n const params = new URLSearchParams({ redirect_uri: window.location.href });\n const url = `${baseUrl}${prefix}/auth/sso/login?${params}`;\n\n const response = await fetch(url, {\n credentials: 'include',\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (response.ok) {\n const data = await response.json();\n window.location.href = data.url;\n }\n } finally {\n setIsPending(false);\n }\n }, [client]);\n\n return (\n <EmptyState\n className={className}\n iconSlot={\n <Icon size=\"lg\" className=\"text-neutral3\">\n <LogIn />\n </Icon>\n }\n titleSlot={title ?? 'Session Expired'}\n descriptionSlot={description ?? 'Your session has expired. Please log in again to continue.'}\n actionSlot={\n <Button variant=\"default\" onClick={handleLogin} disabled={isPending}>\n {isPending ? 'Redirecting...' : 'Log in'}\n </Button>\n }\n />\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAiBO,SAAS,cAAA,CAAe,EAAE,KAAA,EAAO,WAAA,EAAa,WAAU,EAAwB;AACrF,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,SAAS,eAAA,EAAgB;AAE/B,EAAA,MAAM,WAAA,GAAc,YAAY,YAAY;AAC1C,IAAA,IAAI;AACF,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,MAAM,EAAE,OAAA,GAAU,EAAA,EAAI,WAAU,GAAK,MAAA,CAAe,WAAW,EAAC;AAChE,MAAA,MAAM,GAAA,GAAA,CAAO,SAAA,IAAa,MAAA,EAAQ,IAAA,EAAK;AACvC,MAAA,MAAM,MAAA,GAAA,CAAU,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA,GAAI,GAAA,GAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACxE,MAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,EAAE,cAAc,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA;AACzE,MAAA,MAAM,MAAM,CAAA,EAAG,OAAO,CAAA,EAAG,MAAM,mBAAmB,MAAM,CAAA,CAAA;AAExD,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,QAChC,WAAA,EAAa,SAAA;AAAA,QACb,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAAmB,OAC/C,CAAA;AAED,MAAA,IAAI,SAAS,EAAA,EAAI;AACf,QAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,QAAA,MAAA,CAAO,QAAA,CAAS,OAAO,IAAA,CAAK,GAAA;AAAA,MAC9B;AAAA,IACF,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,QAAA,sBACG,IAAA,EAAA,EAAK,IAAA,EAAK,MAAK,SAAA,EAAU,eAAA,EACxB,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,CAAA,EACT,CAAA;AAAA,MAEF,WAAW,KAAA,IAAS,iBAAA;AAAA,MACpB,iBAAiB,WAAA,IAAe,4DAAA;AAAA,MAChC,UAAA,kBACE,GAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,OAAA,EAAS,WAAA,EAAa,QAAA,EAAU,SAAA,EACvD,QAAA,EAAA,SAAA,GAAY,gBAAA,GAAmB,QAAA,EAClC;AAAA;AAAA,GAEJ;AAEJ;;;;"}
@@ -5,7 +5,7 @@ const react = require('@mastra/react');
5
5
  const lucideReact = require('lucide-react');
6
6
  const React = require('react');
7
7
  const icons_Icon = require('./icons/Icon.cjs.js');
8
- const Button = require('./Button-B4Ixj2aW.cjs');
8
+ const Button = require('./Button-BWj3opYd.cjs');
9
9
  const EmptyState = require('./EmptyState-sff7IGrD.cjs');
10
10
 
11
11
  function SessionExpired({ title, description, className }) {
@@ -44,4 +44,4 @@ function SessionExpired({ title, description, className }) {
44
44
  }
45
45
 
46
46
  exports.SessionExpired = SessionExpired;
47
- //# sourceMappingURL=SessionExpired-CL4bppLl.cjs.map
47
+ //# sourceMappingURL=SessionExpired-C0ELbOFr.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionExpired-CL4bppLl.cjs","sources":["../src/ds/components/SessionExpired/SessionExpired.tsx"],"sourcesContent":["import { useMastraClient } from '@mastra/react';\nimport { LogIn } from 'lucide-react';\nimport { useState, useCallback } from 'react';\n\nimport { Icon } from '../../icons/Icon';\nimport { Button } from '../Button';\nimport { EmptyState } from '../EmptyState';\n\nexport interface SessionExpiredProps {\n /** Custom title override */\n title?: string;\n /** Custom description override */\n description?: string;\n /** Additional CSS classes */\n className?: string;\n}\n\nexport function SessionExpired({ title, description, className }: SessionExpiredProps) {\n const [isPending, setIsPending] = useState(false);\n const client = useMastraClient();\n\n const handleLogin = useCallback(async () => {\n try {\n setIsPending(true);\n const { baseUrl = '', apiPrefix } = (client as any).options || {};\n const raw = (apiPrefix || '/api').trim();\n const prefix = (raw.startsWith('/') ? raw : `/${raw}`).replace(/\\/$/, '');\n const params = new URLSearchParams({ redirect_uri: window.location.href });\n const url = `${baseUrl}${prefix}/auth/sso/login?${params}`;\n\n const response = await fetch(url, {\n credentials: 'include',\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (response.ok) {\n const data = await response.json();\n window.location.href = data.url;\n }\n } finally {\n setIsPending(false);\n }\n }, [client]);\n\n return (\n <EmptyState\n className={className}\n iconSlot={\n <Icon size=\"lg\" className=\"text-neutral3\">\n <LogIn />\n </Icon>\n }\n titleSlot={title ?? 'Session Expired'}\n descriptionSlot={description ?? 'Your session has expired. Please log in again to continue.'}\n actionSlot={\n <Button variant=\"default\" onClick={handleLogin} disabled={isPending}>\n {isPending ? 'Redirecting...' : 'Log in'}\n </Button>\n }\n />\n );\n}\n"],"names":["useState","useMastraClient","useCallback","jsx","EmptyState","Icon","LogIn","Button"],"mappings":";;;;;;;;;;AAiBO,SAAS,cAAA,CAAe,EAAE,KAAA,EAAO,WAAA,EAAa,WAAU,EAAwB;AACrF,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,SAASC,qBAAA,EAAgB;AAE/B,EAAA,MAAM,WAAA,GAAcC,kBAAY,YAAY;AAC1C,IAAA,IAAI;AACF,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,MAAM,EAAE,OAAA,GAAU,EAAA,EAAI,WAAU,GAAK,MAAA,CAAe,WAAW,EAAC;AAChE,MAAA,MAAM,GAAA,GAAA,CAAO,SAAA,IAAa,MAAA,EAAQ,IAAA,EAAK;AACvC,MAAA,MAAM,MAAA,GAAA,CAAU,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA,GAAI,GAAA,GAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACxE,MAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,EAAE,cAAc,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA;AACzE,MAAA,MAAM,MAAM,CAAA,EAAG,OAAO,CAAA,EAAG,MAAM,mBAAmB,MAAM,CAAA,CAAA;AAExD,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,QAChC,WAAA,EAAa,SAAA;AAAA,QACb,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAAmB,OAC/C,CAAA;AAED,MAAA,IAAI,SAAS,EAAA,EAAI;AACf,QAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,QAAA,MAAA,CAAO,QAAA,CAAS,OAAO,IAAA,CAAK,GAAA;AAAA,MAC9B;AAAA,IACF,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACEC,cAAA;AAAA,IAACC,qBAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,QAAA,iCACGC,eAAA,EAAA,EAAK,IAAA,EAAK,MAAK,SAAA,EAAU,eAAA,EACxB,QAAA,kBAAAF,cAAA,CAACG,iBAAA,EAAA,EAAM,CAAA,EACT,CAAA;AAAA,MAEF,WAAW,KAAA,IAAS,iBAAA;AAAA,MACpB,iBAAiB,WAAA,IAAe,4DAAA;AAAA,MAChC,UAAA,kBACEH,cAAA,CAACI,aAAA,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,OAAA,EAAS,WAAA,EAAa,QAAA,EAAU,SAAA,EACvD,QAAA,EAAA,SAAA,GAAY,gBAAA,GAAmB,QAAA,EAClC;AAAA;AAAA,GAEJ;AAEJ;;;;"}
1
+ {"version":3,"file":"SessionExpired-C0ELbOFr.cjs","sources":["../src/ds/components/SessionExpired/SessionExpired.tsx"],"sourcesContent":["import { useMastraClient } from '@mastra/react';\nimport { LogIn } from 'lucide-react';\nimport { useState, useCallback } from 'react';\n\nimport { Icon } from '../../icons/Icon';\nimport { Button } from '../Button';\nimport { EmptyState } from '../EmptyState';\n\nexport interface SessionExpiredProps {\n /** Custom title override */\n title?: string;\n /** Custom description override */\n description?: string;\n /** Additional CSS classes */\n className?: string;\n}\n\nexport function SessionExpired({ title, description, className }: SessionExpiredProps) {\n const [isPending, setIsPending] = useState(false);\n const client = useMastraClient();\n\n const handleLogin = useCallback(async () => {\n try {\n setIsPending(true);\n const { baseUrl = '', apiPrefix } = (client as any).options || {};\n const raw = (apiPrefix || '/api').trim();\n const prefix = (raw.startsWith('/') ? raw : `/${raw}`).replace(/\\/$/, '');\n const params = new URLSearchParams({ redirect_uri: window.location.href });\n const url = `${baseUrl}${prefix}/auth/sso/login?${params}`;\n\n const response = await fetch(url, {\n credentials: 'include',\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (response.ok) {\n const data = await response.json();\n window.location.href = data.url;\n }\n } finally {\n setIsPending(false);\n }\n }, [client]);\n\n return (\n <EmptyState\n className={className}\n iconSlot={\n <Icon size=\"lg\" className=\"text-neutral3\">\n <LogIn />\n </Icon>\n }\n titleSlot={title ?? 'Session Expired'}\n descriptionSlot={description ?? 'Your session has expired. Please log in again to continue.'}\n actionSlot={\n <Button variant=\"default\" onClick={handleLogin} disabled={isPending}>\n {isPending ? 'Redirecting...' : 'Log in'}\n </Button>\n }\n />\n );\n}\n"],"names":["useState","useMastraClient","useCallback","jsx","EmptyState","Icon","LogIn","Button"],"mappings":";;;;;;;;;;AAiBO,SAAS,cAAA,CAAe,EAAE,KAAA,EAAO,WAAA,EAAa,WAAU,EAAwB;AACrF,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,SAASC,qBAAA,EAAgB;AAE/B,EAAA,MAAM,WAAA,GAAcC,kBAAY,YAAY;AAC1C,IAAA,IAAI;AACF,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,MAAM,EAAE,OAAA,GAAU,EAAA,EAAI,WAAU,GAAK,MAAA,CAAe,WAAW,EAAC;AAChE,MAAA,MAAM,GAAA,GAAA,CAAO,SAAA,IAAa,MAAA,EAAQ,IAAA,EAAK;AACvC,MAAA,MAAM,MAAA,GAAA,CAAU,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA,GAAI,GAAA,GAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACxE,MAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,EAAE,cAAc,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA;AACzE,MAAA,MAAM,MAAM,CAAA,EAAG,OAAO,CAAA,EAAG,MAAM,mBAAmB,MAAM,CAAA,CAAA;AAExD,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,QAChC,WAAA,EAAa,SAAA;AAAA,QACb,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAAmB,OAC/C,CAAA;AAED,MAAA,IAAI,SAAS,EAAA,EAAI;AACf,QAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,QAAA,MAAA,CAAO,QAAA,CAAS,OAAO,IAAA,CAAK,GAAA;AAAA,MAC9B;AAAA,IACF,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACEC,cAAA;AAAA,IAACC,qBAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,QAAA,iCACGC,eAAA,EAAA,EAAK,IAAA,EAAK,MAAK,SAAA,EAAU,eAAA,EACxB,QAAA,kBAAAF,cAAA,CAACG,iBAAA,EAAA,EAAM,CAAA,EACT,CAAA;AAAA,MAEF,WAAW,KAAA,IAAS,iBAAA;AAAA,MACpB,iBAAiB,WAAA,IAAe,4DAAA;AAAA,MAChC,UAAA,kBACEH,cAAA,CAACI,aAAA,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,OAAA,EAAS,WAAA,EAAa,QAAA,EAAU,SAAA,EACvD,QAAA,EAAA,SAAA,GAAY,gBAAA,GAAmB,QAAA,EAClC;AAAA;AAAA,GAEJ;AAEJ;;;;"}
@@ -44,14 +44,15 @@ const buttonsGroupVariants = cva(
44
44
  "[&>*:has(~_*:not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]))]:rounded-r-none",
45
45
  "[&>*:not(:first-child):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns])]:rounded-l-none",
46
46
  // One-line seam: `-ml-px` overlaps adjacent borders onto the same pixel. Filled
47
- // segments (opaque bg: default/primary buttons, the text chip) keep their own
48
- // border — the bg hides the neighbour's. Transparent/outline segments null their
49
- // left border at rest (so the neighbour's shows without doubling) and reveal it on
50
- // hover / keyboard-focus, where the z-10 lift paints the complete border on top.
47
+ // segments (opaque bg: default/primary/destructive buttons, the text chip) keep
48
+ // their own border — the bg hides the neighbour's. Transparent/outline segments
49
+ // null their left border at rest (so the neighbour's shows without doubling) and
50
+ // reveal it on hover / keyboard-focus, where the z-10 lift paints the complete border.
51
51
  "[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]):not(:first-child)]:-ml-px",
52
- "[&>*: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",
53
- // `primary` is filled but borderless — give it (only) an inset-shadow divider.
52
+ "[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not([data-variant=destructive]):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",
53
+ // Borderless filled variants get an inset-shadow divider.
54
54
  "[&>[data-variant=primary]:not([aria-hidden=true]):not(:first-child)]:shadow-[inset_1px_0_0_0_var(--color-border1)]",
55
+ "[&>[data-variant=destructive]:not([aria-hidden=true]):not(:first-child)]:shadow-[inset_1px_0_0_0_var(--color-border1)]",
55
56
  // Animate only colour/bg so the seam + ring snap (no fade desynced from the z-10 drop).
56
57
  "[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true])]:transition-[color,background-color]",
57
58
  // Group owns sizing (no consumer width classes): fill on flex/InputGroup/input,
@@ -74,8 +75,9 @@ const buttonsGroupVariants = cva(
74
75
  "[&>:first-child]:rounded-t-xl",
75
76
  "[&>:last-child]:rounded-b-xl",
76
77
  "[&>*:not([data-slot=buttons-group-separator]):not(:first-child)]:-mt-px",
77
- "[&>*: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",
78
+ "[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not([data-variant=destructive]):not(:first-child):not(:hover):not(:focus-visible):not(:has(:focus-visible))]:border-t-transparent",
78
79
  "[&>[data-variant=primary]:not(:first-child)]:shadow-[inset_0_1px_0_0_var(--color-border1)]",
80
+ "[&>[data-variant=destructive]:not(:first-child)]:shadow-[inset_0_1px_0_0_var(--color-border1)]",
79
81
  "[&>*:not([data-slot=buttons-group-separator])]:transition-[color,background-color]"
80
82
  )
81
83
  }
@@ -158,4 +160,4 @@ const ButtonsGroupText = React.forwardRef(
158
160
  ButtonsGroupText.displayName = "ButtonsGroupText";
159
161
 
160
162
  export { ButtonsGroup as B, ButtonsGroupSeparator as a, ButtonsGroupText as b, buttonsGroupVariants as c };
161
- //# sourceMappingURL=buttons-group-DJh4wnMs.js.map
163
+ //# sourceMappingURL=buttons-group-D01G8mAW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buttons-group-D01G8mAW.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/destructive buttons, the text chip) keep\n // their own border — the bg hides the neighbour's. Transparent/outline segments\n // null their left border at rest (so the neighbour's shows without doubling) and\n // reveal it on hover / keyboard-focus, where the z-10 lift paints the complete border.\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([data-variant=destructive]):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 // Borderless filled variants get 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 '[&>[data-variant=destructive]: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([data-variant=destructive]):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 '[&>[data-variant=destructive]: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\n// eslint-disable-next-line react-refresh/only-export-components -- exported variant helper is part of ButtonsGroup's public API\nexport { buttonsGroupVariants };\n"],"names":[],"mappings":"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"}
@@ -65,14 +65,15 @@ const buttonsGroupVariants = index.cva(
65
65
  "[&>*:has(~_*:not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]))]:rounded-r-none",
66
66
  "[&>*:not(:first-child):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns])]:rounded-l-none",
67
67
  // One-line seam: `-ml-px` overlaps adjacent borders onto the same pixel. Filled
68
- // segments (opaque bg: default/primary buttons, the text chip) keep their own
69
- // border — the bg hides the neighbour's. Transparent/outline segments null their
70
- // left border at rest (so the neighbour's shows without doubling) and reveal it on
71
- // hover / keyboard-focus, where the z-10 lift paints the complete border on top.
68
+ // segments (opaque bg: default/primary/destructive buttons, the text chip) keep
69
+ // their own border — the bg hides the neighbour's. Transparent/outline segments
70
+ // null their left border at rest (so the neighbour's shows without doubling) and
71
+ // reveal it on hover / keyboard-focus, where the z-10 lift paints the complete border.
72
72
  "[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]):not(:first-child)]:-ml-px",
73
- "[&>*: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",
74
- // `primary` is filled but borderless — give it (only) an inset-shadow divider.
73
+ "[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not([data-variant=destructive]):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",
74
+ // Borderless filled variants get an inset-shadow divider.
75
75
  "[&>[data-variant=primary]:not([aria-hidden=true]):not(:first-child)]:shadow-[inset_1px_0_0_0_var(--color-border1)]",
76
+ "[&>[data-variant=destructive]:not([aria-hidden=true]):not(:first-child)]:shadow-[inset_1px_0_0_0_var(--color-border1)]",
76
77
  // Animate only colour/bg so the seam + ring snap (no fade desynced from the z-10 drop).
77
78
  "[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true])]:transition-[color,background-color]",
78
79
  // Group owns sizing (no consumer width classes): fill on flex/InputGroup/input,
@@ -95,8 +96,9 @@ const buttonsGroupVariants = index.cva(
95
96
  "[&>:first-child]:rounded-t-xl",
96
97
  "[&>:last-child]:rounded-b-xl",
97
98
  "[&>*:not([data-slot=buttons-group-separator]):not(:first-child)]:-mt-px",
98
- "[&>*: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",
99
+ "[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not([data-variant=destructive]):not(:first-child):not(:hover):not(:focus-visible):not(:has(:focus-visible))]:border-t-transparent",
99
100
  "[&>[data-variant=primary]:not(:first-child)]:shadow-[inset_0_1px_0_0_var(--color-border1)]",
101
+ "[&>[data-variant=destructive]:not(:first-child)]:shadow-[inset_0_1px_0_0_var(--color-border1)]",
100
102
  "[&>*:not([data-slot=buttons-group-separator])]:transition-[color,background-color]"
101
103
  )
102
104
  }
@@ -182,4 +184,4 @@ exports.ButtonsGroup = ButtonsGroup;
182
184
  exports.ButtonsGroupSeparator = ButtonsGroupSeparator;
183
185
  exports.ButtonsGroupText = ButtonsGroupText;
184
186
  exports.buttonsGroupVariants = buttonsGroupVariants;
185
- //# sourceMappingURL=buttons-group-Dw8Wu4sj.cjs.map
187
+ //# sourceMappingURL=buttons-group-w9QHUGVh.cjs.map