@mastra/playground-ui 36.1.0-alpha.1 → 36.1.0-alpha.2

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 (395) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/dist/{Button-DoOEJwa_.js → Button-CIPDOgxX.js} +2 -2
  3. package/dist/{Button-DoOEJwa_.js.map → Button-CIPDOgxX.js.map} +1 -1
  4. package/dist/{Button-DpIX8JMz.cjs → Button-DhjKny12.cjs} +2 -2
  5. package/dist/{Button-DpIX8JMz.cjs.map → Button-DhjKny12.cjs.map} +1 -1
  6. package/dist/{ErrorBoundary-BqiUSXyJ.cjs → ErrorBoundary-DHKgEKNj.cjs} +2 -2
  7. package/dist/{ErrorBoundary-BqiUSXyJ.cjs.map → ErrorBoundary-DHKgEKNj.cjs.map} +1 -1
  8. package/dist/{ErrorBoundary-6_BD8AkH.js → ErrorBoundary-dIqbGlfe.js} +2 -2
  9. package/dist/{ErrorBoundary-6_BD8AkH.js.map → ErrorBoundary-dIqbGlfe.js.map} +1 -1
  10. package/dist/{Notice-D5nzvm08.js → Notice-CeF-1wDL.js} +2 -2
  11. package/dist/{Notice-D5nzvm08.js.map → Notice-CeF-1wDL.js.map} +1 -1
  12. package/dist/{Notice-Mjo3MJi2.cjs → Notice-CoxDmlFE.cjs} +2 -2
  13. package/dist/{Notice-Mjo3MJi2.cjs.map → Notice-CoxDmlFE.cjs.map} +1 -1
  14. package/dist/{SessionExpired-DGk3CXNp.cjs → SessionExpired-B-3L6-qf.cjs} +2 -2
  15. package/dist/{SessionExpired-DGk3CXNp.cjs.map → SessionExpired-B-3L6-qf.cjs.map} +1 -1
  16. package/dist/{SessionExpired-Dhmm8eLq.js → SessionExpired-DfwSc_Ra.js} +2 -2
  17. package/dist/{SessionExpired-Dhmm8eLq.js.map → SessionExpired-DfwSc_Ra.js.map} +1 -1
  18. package/dist/{alert-dialog-DfQhrc2F.cjs → alert-dialog-BovzZq26.cjs} +2 -2
  19. package/dist/{alert-dialog-DfQhrc2F.cjs.map → alert-dialog-BovzZq26.cjs.map} +1 -1
  20. package/dist/{alert-dialog-bKOBpddM.js → alert-dialog-DjNWuZ_D.js} +2 -2
  21. package/dist/{alert-dialog-bKOBpddM.js.map → alert-dialog-DjNWuZ_D.js.map} +1 -1
  22. package/dist/{code-block-BPI6hA9o.cjs → code-block-B0JgzCAI.cjs} +3 -3
  23. package/dist/{code-block-BPI6hA9o.cjs.map → code-block-B0JgzCAI.cjs.map} +1 -1
  24. package/dist/{code-block-BdjHwqE4.js → code-block-DlN7SOIs.js} +3 -3
  25. package/dist/{code-block-BdjHwqE4.js.map → code-block-DlN7SOIs.js.map} +1 -1
  26. package/dist/{code-editor-DarXoYtw.js → code-editor-CA_5t_YB.js} +2 -2
  27. package/dist/{code-editor-DarXoYtw.js.map → code-editor-CA_5t_YB.js.map} +1 -1
  28. package/dist/{code-editor-BKM9AbX0.cjs → code-editor-DtZgszjz.cjs} +2 -2
  29. package/dist/{code-editor-BKM9AbX0.cjs.map → code-editor-DtZgszjz.cjs.map} +1 -1
  30. package/dist/{combobox-DQdRtI_v.cjs → combobox-Bymhm65F.cjs} +2 -2
  31. package/dist/{combobox-DQdRtI_v.cjs.map → combobox-Bymhm65F.cjs.map} +1 -1
  32. package/dist/{combobox-DvRTz5eL.js → combobox-MFS1zEfJ.js} +2 -2
  33. package/dist/{combobox-DvRTz5eL.js.map → combobox-MFS1zEfJ.js.map} +1 -1
  34. package/dist/{command-EI7t_0WS.cjs → command-_06ZiPFA.cjs} +2 -2
  35. package/dist/{command-EI7t_0WS.cjs.map → command-_06ZiPFA.cjs.map} +1 -1
  36. package/dist/{command-CkFCH229.js → command-b2kxr61U.js} +2 -2
  37. package/dist/{command-CkFCH229.js.map → command-b2kxr61U.js.map} +1 -1
  38. package/dist/components/AlertDialog.cjs.js +1 -1
  39. package/dist/components/AlertDialog.es.js +1 -1
  40. package/dist/components/Button.cjs.js +1 -1
  41. package/dist/components/Button.es.js +1 -1
  42. package/dist/components/CodeBlock.cjs.js +1 -1
  43. package/dist/components/CodeBlock.es.js +1 -1
  44. package/dist/components/CodeEditor.cjs.js +1 -1
  45. package/dist/components/CodeEditor.es.js +1 -1
  46. package/dist/components/Columns.cjs.js +1 -1
  47. package/dist/components/Columns.es.js +1 -1
  48. package/dist/components/Combobox.cjs.js +1 -1
  49. package/dist/components/Combobox.es.js +1 -1
  50. package/dist/components/Command.cjs.js +1 -1
  51. package/dist/components/Command.es.js +1 -1
  52. package/dist/components/ContextMenu.cjs.js +73 -30
  53. package/dist/components/ContextMenu.cjs.js.map +1 -1
  54. package/dist/components/ContextMenu.es.js +73 -30
  55. package/dist/components/ContextMenu.es.js.map +1 -1
  56. package/dist/components/CopyButton.cjs.js +1 -1
  57. package/dist/components/CopyButton.es.js +1 -1
  58. package/dist/components/DataCodeSection.cjs.js +1 -1
  59. package/dist/components/DataCodeSection.es.js +1 -1
  60. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  61. package/dist/components/DataDetailsPanel.es.js +2 -2
  62. package/dist/components/DataFilter.cjs.js +1 -1
  63. package/dist/components/DataFilter.es.js +1 -1
  64. package/dist/components/DataKeysAndValues.cjs.js +1 -1
  65. package/dist/components/DataKeysAndValues.es.js +1 -1
  66. package/dist/components/DataList.cjs.js +5 -4
  67. package/dist/components/DataList.cjs.js.map +1 -1
  68. package/dist/components/DataList.es.js +3 -2
  69. package/dist/components/DataList.es.js.map +1 -1
  70. package/dist/components/DataPanel.cjs.js +1 -1
  71. package/dist/components/DataPanel.es.js +1 -1
  72. package/dist/components/DateTimePicker.cjs.js +2 -2
  73. package/dist/components/DateTimePicker.es.js +2 -2
  74. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  75. package/dist/components/DateTimeRangePicker.es.js +1 -1
  76. package/dist/components/Dialog.cjs.js +1 -1
  77. package/dist/components/Dialog.es.js +1 -1
  78. package/dist/components/Drawer.cjs.js +1 -1
  79. package/dist/components/Drawer.es.js +1 -1
  80. package/dist/components/DropdownMenu.cjs.js +1 -1
  81. package/dist/components/DropdownMenu.es.js +1 -1
  82. package/dist/components/EnvironmentVariablesEditor.cjs.js +10 -0
  83. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -0
  84. package/dist/components/EnvironmentVariablesEditor.d.ts +2 -0
  85. package/dist/components/EnvironmentVariablesEditor.es.js +2 -0
  86. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -0
  87. package/dist/components/ErrorBoundary.cjs.js +1 -1
  88. package/dist/components/ErrorBoundary.es.js +1 -1
  89. package/dist/components/FormFieldBlocks.cjs.js +2 -2
  90. package/dist/components/FormFieldBlocks.es.js +2 -2
  91. package/dist/components/HorizontalBars.cjs.js +1 -1
  92. package/dist/components/HorizontalBars.es.js +1 -1
  93. package/dist/components/HoverCard.cjs.js +1 -1
  94. package/dist/components/HoverCard.es.js +1 -1
  95. package/dist/components/InputGroup.cjs.js +1 -1
  96. package/dist/components/InputGroup.es.js +1 -1
  97. package/dist/components/ItemList.cjs.js +1 -1
  98. package/dist/components/ItemList.es.js +1 -1
  99. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  100. package/dist/components/JSONSchemaForm.es.js +2 -2
  101. package/dist/components/KeyValueList.cjs.js +1 -1
  102. package/dist/components/KeyValueList.es.js +1 -1
  103. package/dist/components/ListSearch.cjs.js +1 -1
  104. package/dist/components/ListSearch.es.js +1 -1
  105. package/dist/components/LogsDataList.cjs.js +2 -2
  106. package/dist/components/LogsDataList.es.js +2 -2
  107. package/dist/components/MainSidebar.cjs.js +1 -1
  108. package/dist/components/MainSidebar.es.js +1 -1
  109. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  110. package/dist/components/MarkdownRenderer.es.js +1 -1
  111. package/dist/components/Notice.cjs.js +1 -1
  112. package/dist/components/Notice.es.js +1 -1
  113. package/dist/components/Popover.cjs.js +1 -1
  114. package/dist/components/Popover.es.js +1 -1
  115. package/dist/components/PrevNextNav.cjs.js +1 -1
  116. package/dist/components/PrevNextNav.es.js +1 -1
  117. package/dist/components/PropertyFilter.cjs.js +1 -1
  118. package/dist/components/PropertyFilter.es.js +1 -1
  119. package/dist/components/ScatterPlotChart.cjs.js +2 -1
  120. package/dist/components/ScatterPlotChart.cjs.js.map +1 -1
  121. package/dist/components/ScatterPlotChart.es.js +1 -1
  122. package/dist/components/Select.cjs.js +1 -1
  123. package/dist/components/Select.es.js +1 -1
  124. package/dist/components/SessionExpired.cjs.js +1 -1
  125. package/dist/components/SessionExpired.es.js +1 -1
  126. package/dist/components/SideDialog.cjs.js +3 -3
  127. package/dist/components/SideDialog.es.js +3 -3
  128. package/dist/components/ThreadList.cjs.js +1 -1
  129. package/dist/components/ThreadList.es.js +1 -1
  130. package/dist/components/Tooltip.cjs.js +1 -1
  131. package/dist/components/Tooltip.es.js +1 -1
  132. package/dist/components/Truncate.cjs.js +1 -1
  133. package/dist/components/Truncate.es.js +1 -1
  134. package/dist/{copy-button-RffVknBA.js → copy-button-B-6j0Ghf.js} +3 -3
  135. package/dist/{copy-button-RffVknBA.js.map → copy-button-B-6j0Ghf.js.map} +1 -1
  136. package/dist/{copy-button-ler9dH8g.cjs → copy-button-MNcP8mIU.cjs} +3 -3
  137. package/dist/{copy-button-ler9dH8g.cjs.map → copy-button-MNcP8mIU.cjs.map} +1 -1
  138. package/dist/{data-code-section-ChVXPz-i.cjs → data-code-section-BJpV0KUn.cjs} +5 -5
  139. package/dist/{data-code-section-ChVXPz-i.cjs.map → data-code-section-BJpV0KUn.cjs.map} +1 -1
  140. package/dist/{data-code-section-BBBffVVs.js → data-code-section-tiCO-71n.js} +5 -5
  141. package/dist/{data-code-section-BBBffVVs.js.map → data-code-section-tiCO-71n.js.map} +1 -1
  142. package/dist/{data-keys-and-values-KIwfkmc7.cjs → data-keys-and-values-Ccw1YngY.cjs} +2 -2
  143. package/dist/{data-keys-and-values-KIwfkmc7.cjs.map → data-keys-and-values-Ccw1YngY.cjs.map} +1 -1
  144. package/dist/{data-keys-and-values-C3pzr_d1.js → data-keys-and-values-Dsy4JtgG.js} +2 -2
  145. package/dist/{data-keys-and-values-C3pzr_d1.js.map → data-keys-and-values-Dsy4JtgG.js.map} +1 -1
  146. package/dist/data-list-CIqwJqP6.js +131 -0
  147. package/dist/data-list-CIqwJqP6.js.map +1 -0
  148. package/dist/data-list-DLNj4u4L.cjs +135 -0
  149. package/dist/data-list-DLNj4u4L.cjs.map +1 -0
  150. package/dist/data-list-skeleton-BCx_L8EW.js +55 -0
  151. package/dist/data-list-skeleton-BCx_L8EW.js.map +1 -0
  152. package/dist/data-list-skeleton-CFw0wA4X.cjs +59 -0
  153. package/dist/data-list-skeleton-CFw0wA4X.cjs.map +1 -0
  154. package/dist/{data-list-skeleton-BlOwAki1.cjs → data-list-top-cell-C2XN7N1Q.cjs} +142 -96
  155. package/dist/data-list-top-cell-C2XN7N1Q.cjs.map +1 -0
  156. package/dist/{data-list-skeleton-DD7ljjgS.js → data-list-top-cell-DcI6Vwlh.js} +142 -95
  157. package/dist/data-list-top-cell-DcI6Vwlh.js.map +1 -0
  158. package/dist/{data-panel-DBxE_3ux.cjs → data-panel-Be5IQoR_.cjs} +3 -3
  159. package/dist/{data-panel-DBxE_3ux.cjs.map → data-panel-Be5IQoR_.cjs.map} +1 -1
  160. package/dist/{data-panel-DPVF9Yok.js → data-panel-Bq4egua6.js} +3 -3
  161. package/dist/{data-panel-DPVF9Yok.js.map → data-panel-Bq4egua6.js.map} +1 -1
  162. package/dist/{date-time-picker-BKSdFrHR.js → date-time-picker-DSLxVXii.js} +4 -4
  163. package/dist/{date-time-picker-BKSdFrHR.js.map → date-time-picker-DSLxVXii.js.map} +1 -1
  164. package/dist/{date-time-picker-Bjr6V3AR.cjs → date-time-picker-ycaMiQLT.cjs} +4 -4
  165. package/dist/{date-time-picker-Bjr6V3AR.cjs.map → date-time-picker-ycaMiQLT.cjs.map} +1 -1
  166. package/dist/{date-time-range-picker-DKvS9c4j.js → date-time-range-picker-CWcKSSEc.js} +5 -5
  167. package/dist/{date-time-range-picker-DKvS9c4j.js.map → date-time-range-picker-CWcKSSEc.js.map} +1 -1
  168. package/dist/{date-time-range-picker-DjcVeD-Z.cjs → date-time-range-picker-Cjr8PooB.cjs} +5 -5
  169. package/dist/{date-time-range-picker-DjcVeD-Z.cjs.map → date-time-range-picker-Cjr8PooB.cjs.map} +1 -1
  170. package/dist/{dialog-C0gOGKEK.cjs → dialog-Bmx-XnsU.cjs} +2 -2
  171. package/dist/{dialog-C0gOGKEK.cjs.map → dialog-Bmx-XnsU.cjs.map} +1 -1
  172. package/dist/{dialog-DTLHod4X.js → dialog-fl9TtR38.js} +2 -2
  173. package/dist/{dialog-DTLHod4X.js.map → dialog-fl9TtR38.js.map} +1 -1
  174. package/dist/{drawer-kUj-H7_u.js → drawer-BW5z1C5B.js} +2 -2
  175. package/dist/{drawer-kUj-H7_u.js.map → drawer-BW5z1C5B.js.map} +1 -1
  176. package/dist/{drawer-DQDa97Ep.cjs → drawer-DAH6ENAQ.cjs} +2 -2
  177. package/dist/{drawer-DQDa97Ep.cjs.map → drawer-DAH6ENAQ.cjs.map} +1 -1
  178. package/dist/{dropdown-menu-Vl_C0N5e.cjs → dropdown-menu-Bdxu9uRc.cjs} +76 -37
  179. package/dist/dropdown-menu-Bdxu9uRc.cjs.map +1 -0
  180. package/dist/{dropdown-menu-Dh-CMMjl.js → dropdown-menu-Zy39I8E6.js} +76 -37
  181. package/dist/dropdown-menu-Zy39I8E6.js.map +1 -0
  182. package/dist/env-file-BF23giwP.js +217 -0
  183. package/dist/env-file-BF23giwP.js.map +1 -0
  184. package/dist/env-file-NaBwN1WJ.cjs +228 -0
  185. package/dist/env-file-NaBwN1WJ.cjs.map +1 -0
  186. package/dist/environment-variables-editor-CBelv_y4.js +517 -0
  187. package/dist/environment-variables-editor-CBelv_y4.js.map +1 -0
  188. package/dist/environment-variables-editor-D1AhR2r1.cjs +519 -0
  189. package/dist/environment-variables-editor-D1AhR2r1.cjs.map +1 -0
  190. package/dist/{helpers-BbJUaSrW.cjs → helpers-CKLV_hu4.cjs} +2 -2
  191. package/dist/{helpers-BbJUaSrW.cjs.map → helpers-CKLV_hu4.cjs.map} +1 -1
  192. package/dist/{helpers-BH-wPlF0.js → helpers-CmNb4X81.js} +2 -2
  193. package/dist/{helpers-BH-wPlF0.js.map → helpers-CmNb4X81.js.map} +1 -1
  194. package/dist/hooks/use-environment-variables-editor.cjs.js +195 -0
  195. package/dist/hooks/use-environment-variables-editor.cjs.js.map +1 -0
  196. package/dist/hooks/use-environment-variables-editor.d.ts +2 -0
  197. package/dist/hooks/use-environment-variables-editor.es.js +190 -0
  198. package/dist/hooks/use-environment-variables-editor.es.js.map +1 -0
  199. package/dist/{horizontal-bars-r1aEIHUc.js → horizontal-bars-BCtFuFMq.js} +2 -2
  200. package/dist/horizontal-bars-BCtFuFMq.js.map +1 -0
  201. package/dist/{horizontal-bars-uPFpgihX.cjs → horizontal-bars-DbOdclKC.cjs} +2 -2
  202. package/dist/horizontal-bars-DbOdclKC.cjs.map +1 -0
  203. package/dist/hover-card-D2yWTqja.js +67 -0
  204. package/dist/hover-card-D2yWTqja.js.map +1 -0
  205. package/dist/hover-card-F1UdDxwc.cjs +90 -0
  206. package/dist/hover-card-F1UdDxwc.cjs.map +1 -0
  207. package/dist/index.cjs.js +1191 -117
  208. package/dist/index.cjs.js.map +1 -1
  209. package/dist/index.css +318 -16
  210. package/dist/index.es.js +1173 -122
  211. package/dist/index.es.js.map +1 -1
  212. package/dist/{input-group-DpQPpHRU.js → input-group-36p8kLTo.js} +2 -2
  213. package/dist/{input-group-DpQPpHRU.js.map → input-group-36p8kLTo.js.map} +1 -1
  214. package/dist/{input-group-Bi_4j-WW.cjs → input-group-BTi9MLUI.cjs} +2 -2
  215. package/dist/{input-group-Bi_4j-WW.cjs.map → input-group-BTi9MLUI.cjs.map} +1 -1
  216. package/dist/{key-value-list-D067I300.cjs → key-value-list-lPPZ49xw.cjs} +2 -2
  217. package/dist/{key-value-list-D067I300.cjs.map → key-value-list-lPPZ49xw.cjs.map} +1 -1
  218. package/dist/{key-value-list-BFGuMFbL.js → key-value-list-tgXqz4Ft.js} +2 -2
  219. package/dist/{key-value-list-BFGuMFbL.js.map → key-value-list-tgXqz4Ft.js.map} +1 -1
  220. package/dist/{list-search-DY84ZCM-.cjs → list-search-BJyDJlKe.cjs} +2 -2
  221. package/dist/{list-search-DY84ZCM-.cjs.map → list-search-BJyDJlKe.cjs.map} +1 -1
  222. package/dist/{list-search-Dk2A1fUf.js → list-search-DfY420q7.js} +2 -2
  223. package/dist/{list-search-Dk2A1fUf.js.map → list-search-DfY420q7.js.map} +1 -1
  224. package/dist/{logs-data-list-Dh6c7URj.js → logs-data-list-Bl_RjW-m.js} +3 -2
  225. package/dist/{logs-data-list-Dh6c7URj.js.map → logs-data-list-Bl_RjW-m.js.map} +1 -1
  226. package/dist/{logs-data-list-3qmFjBz8.cjs → logs-data-list-CONoy_hv.cjs} +21 -20
  227. package/dist/{logs-data-list-3qmFjBz8.cjs.map → logs-data-list-CONoy_hv.cjs.map} +1 -1
  228. package/dist/{main-sidebar-BFkciPDl.cjs → main-sidebar-4AkWj-fu.cjs} +3 -3
  229. package/dist/main-sidebar-4AkWj-fu.cjs.map +1 -0
  230. package/dist/{main-sidebar-35yt_w11.js → main-sidebar-Cwesy0Nt.js} +3 -3
  231. package/dist/main-sidebar-Cwesy0Nt.js.map +1 -0
  232. package/dist/{markdown-renderer-Dyg_1QXx.cjs → markdown-renderer-CpynPtYt.cjs} +2 -2
  233. package/dist/{markdown-renderer-Dyg_1QXx.cjs.map → markdown-renderer-CpynPtYt.cjs.map} +1 -1
  234. package/dist/{markdown-renderer-QftQuP4g.js → markdown-renderer-D67PpB6R.js} +2 -2
  235. package/dist/{markdown-renderer-QftQuP4g.js.map → markdown-renderer-D67PpB6R.js.map} +1 -1
  236. package/dist/{multi-column-BLRjYB5N.cjs → multi-column-ByVOxqGN.cjs} +2 -2
  237. package/dist/{multi-column-BLRjYB5N.cjs.map → multi-column-ByVOxqGN.cjs.map} +1 -1
  238. package/dist/{multi-column-e_-j_rrO.js → multi-column-DoMyaISV.js} +2 -2
  239. package/dist/{multi-column-e_-j_rrO.js.map → multi-column-DoMyaISV.js.map} +1 -1
  240. package/dist/{popover-B8RFw-D-.cjs → popover-DKD5OLdY.cjs} +35 -25
  241. package/dist/popover-DKD5OLdY.cjs.map +1 -0
  242. package/dist/{popover-C65fxQ7m.js → popover-Udpn9Z2N.js} +35 -25
  243. package/dist/popover-Udpn9Z2N.js.map +1 -0
  244. package/dist/{property-filter-creator-CaG_zPdy.cjs → property-filter-creator-BZgP0jYi.cjs} +6 -6
  245. package/dist/{property-filter-creator-CaG_zPdy.cjs.map → property-filter-creator-BZgP0jYi.cjs.map} +1 -1
  246. package/dist/{property-filter-creator-Cl9E6wxf.js → property-filter-creator-CnX6dWzN.js} +6 -6
  247. package/dist/{property-filter-creator-Cl9E6wxf.js.map → property-filter-creator-CnX6dWzN.js.map} +1 -1
  248. package/dist/{scatter-plot-chart-BDRQ77OX.js → scatter-plot-chart-DGMFaT-u.js} +6 -5
  249. package/dist/scatter-plot-chart-DGMFaT-u.js.map +1 -0
  250. package/dist/{scatter-plot-chart-MLvMlaxH.cjs → scatter-plot-chart-pPVR9vne.cjs} +6 -4
  251. package/dist/scatter-plot-chart-pPVR9vne.cjs.map +1 -0
  252. package/dist/{search-field-block-CuyiDT1k.js → search-field-block-DZ9QUE2e.js} +3 -3
  253. package/dist/{search-field-block-CuyiDT1k.js.map → search-field-block-DZ9QUE2e.js.map} +1 -1
  254. package/dist/{search-field-block-Cn_Ffn5P.cjs → search-field-block-hpfI27ov.cjs} +3 -3
  255. package/dist/{search-field-block-Cn_Ffn5P.cjs.map → search-field-block-hpfI27ov.cjs.map} +1 -1
  256. package/dist/{select-D2w0zRz4.js → select-CYf1u7Vd.js} +49 -25
  257. package/dist/select-CYf1u7Vd.js.map +1 -0
  258. package/dist/{select-DDgw1wG-.cjs → select-CvOn0-Xn.cjs} +49 -25
  259. package/dist/select-CvOn0-Xn.cjs.map +1 -0
  260. package/dist/{select-data-filter-BFGZYkQ_.js → select-data-filter-CikxmWIL.js} +3 -3
  261. package/dist/{select-data-filter-BFGZYkQ_.js.map → select-data-filter-CikxmWIL.js.map} +1 -1
  262. package/dist/{select-data-filter-DxoxTXk2.cjs → select-data-filter-D1KsoTi_.cjs} +3 -3
  263. package/dist/{select-data-filter-DxoxTXk2.cjs.map → select-data-filter-D1KsoTi_.cjs.map} +1 -1
  264. package/dist/{select-field-block-BA6vHkOP.js → select-field-block-DhG3cqyr.js} +2 -2
  265. package/dist/{select-field-block-BA6vHkOP.js.map → select-field-block-DhG3cqyr.js.map} +1 -1
  266. package/dist/{select-field-block-BpXYm4K0.cjs → select-field-block-X1_PaG0F.cjs} +2 -2
  267. package/dist/{select-field-block-BpXYm4K0.cjs.map → select-field-block-X1_PaG0F.cjs.map} +1 -1
  268. package/dist/src/domains/memory/components/flame-graph.d.ts +25 -0
  269. package/dist/src/domains/memory/components/index.d.ts +6 -0
  270. package/dist/src/domains/memory/components/memory-studio-panel.d.ts +25 -0
  271. package/dist/src/domains/memory/components/observation-detail-view.d.ts +8 -0
  272. package/dist/src/domains/memory/components/thread-context-progress-utils.d.ts +1 -0
  273. package/dist/src/domains/memory/components/thread-context-progress.d.ts +10 -0
  274. package/dist/src/domains/memory/hooks/index.d.ts +3 -0
  275. package/dist/src/domains/memory/hooks/use-memory-status.d.ts +15 -0
  276. package/dist/src/domains/memory/hooks/use-memory-thread-messages.d.ts +5 -0
  277. package/dist/src/domains/memory/hooks/use-observational-memory.d.ts +53 -0
  278. package/dist/src/domains/memory/index.d.ts +3 -0
  279. package/dist/src/domains/memory/lib/extract-markers.d.ts +11 -0
  280. package/dist/src/domains/memory/lib/replay-selection.d.ts +12 -0
  281. package/dist/src/domains/memory/lib/thread-context-window-state.d.ts +14 -0
  282. package/dist/src/domains/memory/lib/timeline.d.ts +9 -0
  283. package/dist/src/domains/memory/types.d.ts +6 -0
  284. package/dist/src/domains/metrics/components/card-action-buttons.d.ts +2 -2
  285. package/dist/src/domains/metrics/components/memory-card-view.d.ts +3 -2
  286. package/dist/src/domains/metrics/components/metrics-utils.d.ts +7 -0
  287. package/dist/src/domains/metrics/components/model-usage-cost-card-view.d.ts +3 -2
  288. package/dist/src/domains/metrics/components/token-usage-by-agent-card-view.d.ts +3 -2
  289. package/dist/src/domains/metrics/components/traces-volume-card-view.d.ts +3 -2
  290. package/dist/src/ds/components/ContextMenu/context-menu.d.ts +4 -3
  291. package/dist/src/ds/components/DataList/ScoresDataList/scores-data-list.d.ts +1 -0
  292. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list.d.ts +1 -0
  293. package/dist/src/ds/components/DataList/data-list-cells.d.ts +22 -1
  294. package/dist/src/ds/components/DataList/data-list-no-match.d.ts +3 -3
  295. package/dist/src/ds/components/DataList/data-list-root.d.ts +15 -3
  296. package/dist/src/ds/components/DataList/data-list-row-link.d.ts +1 -1
  297. package/dist/src/ds/components/DataList/data-list-top-cell.d.ts +5 -0
  298. package/dist/src/ds/components/DataList/data-list-top.d.ts +3 -5
  299. package/dist/src/ds/components/DataList/data-list.d.ts +5 -1
  300. package/dist/src/ds/components/DataList/data-list.stories.d.ts +4 -1
  301. package/dist/src/ds/components/DataList/shared.d.ts +2 -0
  302. package/dist/src/ds/components/DropdownMenu/dropdown-menu.d.ts +4 -3
  303. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-actions.d.ts +2 -0
  304. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-add-button.d.ts +2 -0
  305. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-context.d.ts +18 -0
  306. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-duplicate-keys-error.d.ts +2 -0
  307. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-messages.d.ts +2 -0
  308. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-read-only-empty.d.ts +2 -0
  309. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-read-only-header.d.ts +2 -0
  310. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-read-only-item.d.ts +2 -0
  311. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-read-only-list.d.ts +2 -0
  312. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-root.d.ts +3 -0
  313. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-row.d.ts +2 -0
  314. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-rows.d.ts +2 -0
  315. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-upload-button.d.ts +2 -0
  316. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-upload-error.d.ts +2 -0
  317. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-upload.d.ts +2 -0
  318. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor.d.ts +33 -0
  319. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor.stories.d.ts +12 -0
  320. package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor.types.d.ts +90 -0
  321. package/dist/src/ds/components/EnvironmentVariablesEditor/index.d.ts +2 -0
  322. package/dist/src/ds/components/HorizontalBars/horizontal-bars.d.ts +2 -2
  323. package/dist/src/ds/components/HoverCard/hover-card.d.ts +3 -5
  324. package/dist/src/ds/components/LogsDataList/logs-data-list.d.ts +1 -0
  325. package/dist/src/ds/components/Popover/popover.d.ts +3 -2
  326. package/dist/src/ds/components/ScatterPlotChart/index.d.ts +2 -1
  327. package/dist/src/ds/components/ScatterPlotChart/scatter-plot-chart-utils.d.ts +4 -0
  328. package/dist/src/ds/components/ScatterPlotChart/scatter-plot-chart.d.ts +0 -3
  329. package/dist/src/ds/components/Select/select.d.ts +3 -5
  330. package/dist/src/ds/components/Tooltip/tooltip.d.ts +3 -2
  331. package/dist/src/ds/types/link-component.d.ts +2 -2
  332. package/dist/src/ee/signals/components/index.d.ts +1 -0
  333. package/dist/src/ee/signals/components/signal-details-page.d.ts +0 -1
  334. package/dist/src/ee/signals/components/signal-details-utils.d.ts +1 -0
  335. package/dist/src/hooks/use-environment-variables-editor.d.ts +48 -0
  336. package/dist/src/index.d.ts +4 -1
  337. package/dist/src/lib/env-file/env-file.d.ts +37 -0
  338. package/dist/src/lib/env-file/index.d.ts +1 -0
  339. package/dist/{thread-list-CkgV4nYA.js → thread-list-BHbkkI65.js} +2 -2
  340. package/dist/{thread-list-CkgV4nYA.js.map → thread-list-BHbkkI65.js.map} +1 -1
  341. package/dist/{thread-list-CX4UNk2L.cjs → thread-list-DekqqJOH.cjs} +2 -2
  342. package/dist/{thread-list-CX4UNk2L.cjs.map → thread-list-DekqqJOH.cjs.map} +1 -1
  343. package/dist/{time-picker-BtJz6IU2.js → time-picker-CcatSlth.js} +2 -2
  344. package/dist/{time-picker-BtJz6IU2.js.map → time-picker-CcatSlth.js.map} +1 -1
  345. package/dist/{time-picker-DWrxHBfR.cjs → time-picker-DaF1ss5M.cjs} +2 -2
  346. package/dist/{time-picker-DWrxHBfR.cjs.map → time-picker-DaF1ss5M.cjs.map} +1 -1
  347. package/dist/{tooltip-j8gUR1Qk.cjs → tooltip-FowezTqp.cjs} +60 -39
  348. package/dist/tooltip-FowezTqp.cjs.map +1 -0
  349. package/dist/tooltip-wX2UZKox.js +111 -0
  350. package/dist/tooltip-wX2UZKox.js.map +1 -0
  351. package/dist/{traces-data-list-DRyI45Ke.js → traces-data-list-DKU-oZxQ.js} +9 -129
  352. package/dist/traces-data-list-DKU-oZxQ.js.map +1 -0
  353. package/dist/traces-data-list-kqDZjURb.cjs +125 -0
  354. package/dist/traces-data-list-kqDZjURb.cjs.map +1 -0
  355. package/dist/{truncate-B8_8wx-G.js → truncate-CNJINJdu.js} +3 -3
  356. package/dist/{truncate-B8_8wx-G.js.map → truncate-CNJINJdu.js.map} +1 -1
  357. package/dist/{truncate-Csk5KmAy.cjs → truncate-k92HJG2-.cjs} +3 -3
  358. package/dist/{truncate-Csk5KmAy.cjs.map → truncate-k92HJG2-.cjs.map} +1 -1
  359. package/package.json +8 -6
  360. package/dist/components/MetricsDataTable.cjs.js +0 -10
  361. package/dist/components/MetricsDataTable.cjs.js.map +0 -1
  362. package/dist/components/MetricsDataTable.d.ts +0 -2
  363. package/dist/components/MetricsDataTable.es.js +0 -2
  364. package/dist/components/MetricsDataTable.es.js.map +0 -1
  365. package/dist/data-list-skeleton-BlOwAki1.cjs.map +0 -1
  366. package/dist/data-list-skeleton-DD7ljjgS.js.map +0 -1
  367. package/dist/dropdown-menu-Dh-CMMjl.js.map +0 -1
  368. package/dist/dropdown-menu-Vl_C0N5e.cjs.map +0 -1
  369. package/dist/horizontal-bars-r1aEIHUc.js.map +0 -1
  370. package/dist/horizontal-bars-uPFpgihX.cjs.map +0 -1
  371. package/dist/hover-card-ByLYfB05.cjs +0 -56
  372. package/dist/hover-card-ByLYfB05.cjs.map +0 -1
  373. package/dist/hover-card-CV2ASE_w.js +0 -33
  374. package/dist/hover-card-CV2ASE_w.js.map +0 -1
  375. package/dist/main-sidebar-35yt_w11.js.map +0 -1
  376. package/dist/main-sidebar-BFkciPDl.cjs.map +0 -1
  377. package/dist/metrics-data-table-AjAA-dqH.cjs +0 -77
  378. package/dist/metrics-data-table-AjAA-dqH.cjs.map +0 -1
  379. package/dist/metrics-data-table-hSmtDNck.js +0 -75
  380. package/dist/metrics-data-table-hSmtDNck.js.map +0 -1
  381. package/dist/popover-B8RFw-D-.cjs.map +0 -1
  382. package/dist/popover-C65fxQ7m.js.map +0 -1
  383. package/dist/scatter-plot-chart-BDRQ77OX.js.map +0 -1
  384. package/dist/scatter-plot-chart-MLvMlaxH.cjs.map +0 -1
  385. package/dist/select-D2w0zRz4.js.map +0 -1
  386. package/dist/select-DDgw1wG-.cjs.map +0 -1
  387. package/dist/src/ds/components/MetricsDataTable/index.d.ts +0 -1
  388. package/dist/src/ds/components/MetricsDataTable/metrics-data-table.d.ts +0 -21
  389. package/dist/src/ds/components/MetricsDataTable/metrics-data-table.stories.d.ts +0 -16
  390. package/dist/tooltip-DehuxlSR.js +0 -90
  391. package/dist/tooltip-DehuxlSR.js.map +0 -1
  392. package/dist/tooltip-j8gUR1Qk.cjs.map +0 -1
  393. package/dist/traces-data-list-BNmnKyDD.cjs +0 -246
  394. package/dist/traces-data-list-BNmnKyDD.cjs.map +0 -1
  395. package/dist/traces-data-list-DRyI45Ke.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,78 @@
1
1
  # @mastra/playground-ui
2
2
 
3
+ ## 36.1.0-alpha.2
4
+
5
+ ### Minor Changes
6
+
7
+ - Added a reusable environment variables editor with .env import, bulk paste support, and custom-row hook support. ([#18371](https://github.com/mastra-ai/mastra/pull/18371))
8
+
9
+ ```tsx
10
+ import { EnvironmentVariablesEditor, useEnvironmentVariablesEditor } from '@mastra/playground-ui';
11
+
12
+ function SettingsEnvVars() {
13
+ const editor = useEnvironmentVariablesEditor({
14
+ initialRows: [{ key: 'PUBLIC_BASE_URL', value: 'https://example.com' }],
15
+ });
16
+
17
+ return (
18
+ <EnvironmentVariablesEditor
19
+ editor={editor}
20
+ actions={
21
+ <button type="button" onClick={() => editor.getEnvironmentVariablesForSubmit()}>
22
+ Save
23
+ </button>
24
+ }
25
+ />
26
+ );
27
+ }
28
+ ```
29
+
30
+ - Added sticky row headers to DataList. ([#18222](https://github.com/mastra-ai/mastra/pull/18222))
31
+
32
+ Use `sticky="start"` on the leading `DataList.TopCell` and render matching row cells with `DataList.RowHeaderCell`:
33
+
34
+ ```tsx
35
+ <DataList columns="auto auto auto" variant="lined">
36
+ <DataList.Top>
37
+ <DataList.TopCell sticky="start">Model</DataList.TopCell>
38
+ <DataList.TopCell>Input</DataList.TopCell>
39
+ <DataList.TopCell>Output</DataList.TopCell>
40
+ </DataList.Top>
41
+ <DataList.RowStatic>
42
+ <DataList.RowHeaderCell>Model A</DataList.RowHeaderCell>
43
+ <DataList.Cell>1,200</DataList.Cell>
44
+ <DataList.Cell>800</DataList.Cell>
45
+ </DataList.RowStatic>
46
+ </DataList>
47
+ ```
48
+
49
+ Metrics tables now render directly through DataList so sticky row headers share the same header colors and hover treatment as the rest of the list system. Metrics tables also follow the default DataList variant, and sticky row headers use the same neutral header treatment as column headers.
50
+
51
+ DataList now exposes `stickyHeaderBackground` to keep the top header and sticky row-header fill in sync, and forwards `mask` to the underlying ScrollArea so sticky-start tables can disable the left edge fade.
52
+
53
+ Added `DataList.NumberCell` for right-aligned numeric columns. It bakes in the tabular-figure, compact metric-table styling, with a `highlight` prop for the emphasized value:
54
+
55
+ ```tsx
56
+ <DataList.NumberCell>1,200</DataList.NumberCell>
57
+ <DataList.NumberCell highlight>$0.42</DataList.NumberCell>
58
+ ```
59
+
60
+ The metrics-specific `MetricsDataTable` wrapper was removed. Use DataList for DS-owned metrics table layouts.
61
+
62
+ ### Patch Changes
63
+
64
+ - Fixed overlay content components to support Base UI positioning options. ([#18431](https://github.com/mastra-ai/mastra/pull/18431))
65
+
66
+ - Move the Memory Studio (timeline, flamegraph, and observational-memory detail) into the agent chat view as an opt-in panel. ([#18272](https://github.com/mastra-ai/mastra/pull/18272))
67
+ - The standalone Memory nav entry, `/memory` routes, and the separate thread/chat list are removed; the studio is now opened from the chat view and shown inside the Memory sidepanel, with the agent layout's left resizable panel expanding when the detail opens. Clicking the flamegraph timeline drives a replay cursor that highlights the matching observational-memory record. Marker types are imported from `@mastra/memory` instead of being redeclared in the UI so the studio stays in sync with the stream format.
68
+ - `MemoryStudioPanel` gains an optional `contextWindow` prop so callers can supply authoritative message/observation token counts and thresholds; when provided these take precedence over values re-derived from message markers, keeping the panel's MESSAGES/OBSERVATIONS readout in sync with the observational-memory sidebar (marker-derived values remain the fallback for standalone usage).
69
+ - `MemoryStudioPanel` now shows both Messages and Observations progress bars, matching the collapsed memory sidebar. The FlameGraph zoom range is lifted into the panel and filters the observation list: collapsing the range hides out-of-range observations and "Reset zoom" restores the full list. `FlameGraph` gains optional controlled `zoomRange`/`onZoomRangeChange` props (uncontrolled usage is unchanged).
70
+
71
+ - Updated dependencies [[`86623c1`](https://github.com/mastra-ai/mastra/commit/86623c1adf7d22de32cc916dda17f4155184db36), [`7c9dd77`](https://github.com/mastra-ai/mastra/commit/7c9dd77bd18cb8dc72797e25f1a0fbdc71a11347), [`9990965`](https://github.com/mastra-ai/mastra/commit/999096571635a83b42ef40841fd7028cfa630779), [`c0ffa3c`](https://github.com/mastra-ai/mastra/commit/c0ffa3c897ccd326de880df734740a7f0681a18f), [`0504bf5`](https://github.com/mastra-ai/mastra/commit/0504bf5e8cffc571a4b343326178de371e6f859b), [`5afe423`](https://github.com/mastra-ai/mastra/commit/5afe423e4badf040f1b0d4525183a856fcb8146e), [`86623c1`](https://github.com/mastra-ai/mastra/commit/86623c1adf7d22de32cc916dda17f4155184db36), [`8c9f1c0`](https://github.com/mastra-ai/mastra/commit/8c9f1c0361d89066f9bcd14a2f69e761b01766c8)]:
72
+ - @mastra/core@1.47.0-alpha.2
73
+ - @mastra/client-js@1.27.1-alpha.2
74
+ - @mastra/react@1.1.2-alpha.2
75
+
3
76
  ## 36.1.0-alpha.1
4
77
 
5
78
  ### Minor Changes
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { c as cva } from './index-CsyK0ihk.js';
3
3
  import React__default from 'react';
4
- import { T as Tooltip, c as TooltipTrigger, a as TooltipContent } from './tooltip-DehuxlSR.js';
4
+ import { T as Tooltip, c as TooltipTrigger, a as TooltipContent } from './tooltip-wX2UZKox.js';
5
5
  import { I as Icon } from './Icon-CJEjdbjB.js';
6
6
  import { c as controlHeight, a as controlSizeClasses } from './control-size-BdDLgGX4.js';
7
7
  import { c as controlFocusBorderVisible, s as sharedFormElementDisabledStyle } from './form-element-DUtZESwq.js';
@@ -102,4 +102,4 @@ const Button = React__default.forwardRef(
102
102
  Button.displayName = "Button";
103
103
 
104
104
  export { Button as B, buttonVariants as b };
105
- //# sourceMappingURL=Button-DoOEJwa_.js.map
105
+ //# sourceMappingURL=Button-CIPDOgxX.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button-DoOEJwa_.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]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:mx-[-.3em]',\n '[&>svg]:opacity-50 [&:hover>svg]:opacity-100',\n);\n\nexport const buttonVariants = cva(\n cn(\n 'inline-flex items-center justify-center leading-0 cursor-pointer',\n 'transition-all duration-normal ease-out-custom',\n sharedFormElementDisabledStyle,\n controlFocusBorderVisible,\n ),\n {\n variants: {\n variant: {\n default:\n 'bg-surface3 border border-border2 hover:bg-surface5 hover:text-neutral6 active:bg-surface6 text-neutral6',\n primary:\n 'bg-neutral6 border border-transparent hover:bg-neutral6/90 active:bg-neutral6/80 text-surface1 font-medium',\n ghost:\n 'bg-transparent border border-transparent hover:bg-neutral6/5 hover:text-neutral6 active:bg-neutral6/10 text-neutral4',\n outline:\n 'bg-transparent border border-border1 hover:bg-surface3 hover:text-neutral6 active:bg-surface4 text-neutral5',\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":";;;;;;;;;AAYA,MAAM,oBAAA,GAAuB,EAAA;AAAA,EAC3B,0BAAA;AAAA,EACA,wDAAA;AAAA,EACA;AACF,CAAA;AAEO,MAAM,cAAA,GAAiB,GAAA;AAAA,EAC5B,EAAA;AAAA,IACE,kEAAA;AAAA,IACA,gDAAA;AAAA,IACA,8BAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EACE,0GAAA;AAAA,QACF,OAAA,EACE,4GAAA;AAAA,QACF,KAAA,EACE,sHAAA;AAAA,QACF,OAAA,EACE;AAAA,OACJ;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,EAAA,CAAG,kBAAA,CAAmB,EAAA,EAAI,aAAa,oBAAoB,CAAA;AAAA,QAC/D,EAAA,EAAI,EAAA,CAAG,kBAAA,CAAmB,EAAA,EAAI,aAAa,oBAAoB,CAAA;AAAA,QAC/D,EAAA,EAAI,EAAA,CAAG,kBAAA,CAAmB,EAAA,EAAI,aAAa,oBAAoB,CAAA;AAAA,QAC/D,EAAA,EAAI,EAAA,CAAG,kBAAA,CAAmB,OAAA,EAAS,YAAY,oBAAoB,CAAA;AAAA;AAAA;AAAA,QAGnE,SAAA,EAAW,EAAA,CAAG,aAAA,CAAc,EAAA,EAAI,wBAAwB,CAAA;AAAA,QACxD,SAAA,EAAW,EAAA,CAAG,aAAA,CAAc,EAAA,EAAI,wBAAwB,CAAA;AAAA,QACxD,SAAA,EAAW,EAAA,CAAG,aAAA,CAAc,EAAA,EAAI,wBAAwB,CAAA;AAAA,QACxD,SAAA,EAAW,EAAA,CAAG,aAAA,CAAc,EAAA,EAAI,wBAAwB;AAAA;AAC1D,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ;AAyBA,MAAM,gBAAA,GAAoE;AAAA,EACxE,SAAA,EAAW,IAAA;AAAA,EACX,SAAA,EAAW,IAAA;AAAA,EACX,SAAA,EAAW,SAAA;AAAA,EACX,SAAA,EAAW;AACb,CAAA;AAIA,SAAS,gBAAgB,QAAA,EAA8C;AACrE,EAAA,MAAM,SAA4B,EAAC;AACnC,EAAAA,cAAA,CAAM,QAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,CAAA,KAAA,KAAS;AACxC,IAAA,IAAIA,eAAM,cAAA,CAA+C,KAAK,KAAK,KAAA,CAAM,IAAA,KAASA,eAAM,QAAA,EAAU;AAChG,MAAA,MAAA,CAAO,KAAK,GAAG,eAAA,CAAgB,KAAA,CAAM,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,IACtD,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,IACnB;AAAA,EACF,CAAC,CAAA;AACD,EAAA,OAAO,MAAA;AACT;AAIA,SAAS,WAAW,QAAA,EAAoC;AACtD,EAAA,MAAM,IAAA,GAAO,gBAAgB,QAAQ,CAAA;AACrC,EAAA,OAAO,IAAA,CAAK,SAAS,CAAA,IAAK,IAAA,CAAK,MAAM,CAAA,KAAA,KAASA,cAAA,CAAM,cAAA,CAAe,KAAK,CAAC,CAAA;AAC3E;AAIA,SAAS,iBAAiB,IAAA,EAA6D;AACrF,EAAA,OAAO,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,WAAW,OAAO,CAAA;AAC5D;AAEO,MAAM,SAASA,cAAA,CAAM,UAAA;AAAA,EAC1B,CACE,EAAE,SAAA,EAAW,EAAA,EAAI,MAAM,OAAA,GAAU,SAAA,EAAW,QAAA,EAAU,QAAA,EAAU,SAAS,YAAA,EAAc,aAAA,EAAe,GAAG,KAAA,IACzG,GAAA,KACG;AACH,IAAA,MAAM,YAAY,EAAA,IAAM,QAAA;AACxB,IAAA,MAAM,QAAA,GAAW,iBAAiB,IAAI,CAAA;AACtC,IAAA,MAAM,eAA2B,IAAA,IAAQ,IAAA;AACzC,IAAA,MAAM,WAAA,GAAc,CAAC,QAAA,IAAY,UAAA,CAAW,QAAQ,CAAA;AAGpD,IAAA,MAAM,YAAY,aAAA,KAAA,CAAmB,QAAA,IAAY,gBAAgB,OAAO,OAAA,KAAY,WAAW,OAAA,GAAU,MAAA,CAAA;AAEzG,IAAA,MAAM,OAAA,GAAU,2BAAW,GAAA,CAAC,IAAA,EAAA,EAAK,MAAM,gBAAA,CAAiB,IAAsB,CAAA,EAAI,QAAA,EAAS,CAAA,GAAU,QAAA;AAErG,IAAA,MAAM,MAAA,mBACJ,GAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,QAAA;AAAA,QACA,YAAA,EAAY,SAAA;AAAA,QAIZ,cAAA,EAAc,OAAA;AAAA,QACd,SAAA,EAAW,EAAA,CAAG,cAAA,CAAe,EAAE,OAAA,EAAS,IAAA,EAAM,YAAA,EAAc,CAAA,EAAG,WAAA,IAAe,oBAAA,EAAsB,SAAS,CAAA;AAAA,QAC5G,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA;AAAA,KACH;AAGF,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,4BACG,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EAAE,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,wBAChC,GAAA,CAAC,kBAAgB,QAAA,EAAA,OAAA,EAAQ;AAAA,OAAA,EAC3B,CAAA;AAAA,IAEJ;AAEA,IAAA,OAAO,MAAA;AAAA,EACT;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;;;;"}
1
+ {"version":3,"file":"Button-CIPDOgxX.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]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:mx-[-.3em]',\n '[&>svg]:opacity-50 [&:hover>svg]:opacity-100',\n);\n\nexport const buttonVariants = cva(\n cn(\n 'inline-flex items-center justify-center leading-0 cursor-pointer',\n 'transition-all duration-normal ease-out-custom',\n sharedFormElementDisabledStyle,\n controlFocusBorderVisible,\n ),\n {\n variants: {\n variant: {\n default:\n 'bg-surface3 border border-border2 hover:bg-surface5 hover:text-neutral6 active:bg-surface6 text-neutral6',\n primary:\n 'bg-neutral6 border border-transparent hover:bg-neutral6/90 active:bg-neutral6/80 text-surface1 font-medium',\n ghost:\n 'bg-transparent border border-transparent hover:bg-neutral6/5 hover:text-neutral6 active:bg-neutral6/10 text-neutral4',\n outline:\n 'bg-transparent border border-border1 hover:bg-surface3 hover:text-neutral6 active:bg-surface4 text-neutral5',\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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"}
@@ -3,7 +3,7 @@
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
4
  const index = require('./index-DPkWrpVb.cjs');
5
5
  const React = require('react');
6
- const tooltip = require('./tooltip-j8gUR1Qk.cjs');
6
+ const tooltip = require('./tooltip-FowezTqp.cjs');
7
7
  const Icon = require('./Icon-C_Ooy-cP.cjs');
8
8
  const controlSize = require('./control-size-D67C0kPZ.cjs');
9
9
  const formElement = require('./form-element-Cy7aV1Ds.cjs');
@@ -105,4 +105,4 @@ Button.displayName = "Button";
105
105
 
106
106
  exports.Button = Button;
107
107
  exports.buttonVariants = buttonVariants;
108
- //# sourceMappingURL=Button-DpIX8JMz.cjs.map
108
+ //# sourceMappingURL=Button-DhjKny12.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Button-DpIX8JMz.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]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:mx-[-.3em]',\n '[&>svg]:opacity-50 [&:hover>svg]:opacity-100',\n);\n\nexport const buttonVariants = cva(\n cn(\n 'inline-flex items-center justify-center leading-0 cursor-pointer',\n 'transition-all duration-normal ease-out-custom',\n sharedFormElementDisabledStyle,\n controlFocusBorderVisible,\n ),\n {\n variants: {\n variant: {\n default:\n 'bg-surface3 border border-border2 hover:bg-surface5 hover:text-neutral6 active:bg-surface6 text-neutral6',\n primary:\n 'bg-neutral6 border border-transparent hover:bg-neutral6/90 active:bg-neutral6/80 text-surface1 font-medium',\n ghost:\n 'bg-transparent border border-transparent hover:bg-neutral6/5 hover:text-neutral6 active:bg-neutral6/10 text-neutral4',\n outline:\n 'bg-transparent border border-border1 hover:bg-surface3 hover:text-neutral6 active:bg-surface4 text-neutral5',\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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"}
1
+ {"version":3,"file":"Button-DhjKny12.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]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:mx-[-.3em]',\n '[&>svg]:opacity-50 [&:hover>svg]:opacity-100',\n);\n\nexport const buttonVariants = cva(\n cn(\n 'inline-flex items-center justify-center leading-0 cursor-pointer',\n 'transition-all duration-normal ease-out-custom',\n sharedFormElementDisabledStyle,\n controlFocusBorderVisible,\n ),\n {\n variants: {\n variant: {\n default:\n 'bg-surface3 border border-border2 hover:bg-surface5 hover:text-neutral6 active:bg-surface6 text-neutral6',\n primary:\n 'bg-neutral6 border border-transparent hover:bg-neutral6/90 active:bg-neutral6/80 text-surface1 font-medium',\n ghost:\n 'bg-transparent border border-transparent hover:bg-neutral6/5 hover:text-neutral6 active:bg-neutral6/10 text-neutral4',\n outline:\n 'bg-transparent border border-border1 hover:bg-surface3 hover:text-neutral6 active:bg-surface4 text-neutral5',\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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"}
@@ -3,7 +3,7 @@
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
4
  const lucideReact = require('lucide-react');
5
5
  const React = require('react');
6
- const Button = require('./Button-DpIX8JMz.cjs');
6
+ const Button = require('./Button-DhjKny12.cjs');
7
7
  const utils = require('./utils-vA5sWo9W.cjs');
8
8
 
9
9
  function _interopNamespaceDefault(e) {
@@ -172,4 +172,4 @@ function DefaultErrorFallback({
172
172
  }
173
173
 
174
174
  exports.ErrorBoundary = ErrorBoundary;
175
- //# sourceMappingURL=ErrorBoundary-BqiUSXyJ.cjs.map
175
+ //# sourceMappingURL=ErrorBoundary-DHKgEKNj.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorBoundary-BqiUSXyJ.cjs","sources":["../src/ds/components/ErrorBoundary/ErrorBoundary.tsx"],"sourcesContent":["import { AlertTriangle } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from '../Button';\nimport { cn } from '@/lib/utils';\n\nexport type ErrorBoundaryVariant = 'section' | 'inline';\n\nexport type ErrorBoundaryFallbackProps = {\n error: Error;\n errorInfo: React.ErrorInfo | null;\n reset: () => void;\n};\n\nexport interface ErrorBoundaryProps {\n children: React.ReactNode;\n /** Custom fallback rendered when an error is caught. Receives the error and a reset callback. */\n fallback?: React.ReactNode | ((props: ErrorBoundaryFallbackProps) => React.ReactNode);\n /** Called when an error is caught. Useful for reporting to an error tracker. */\n onError?: (error: Error, errorInfo: React.ErrorInfo) => void;\n /**\n * When any value in this array changes between renders, the boundary resets.\n * Useful for clearing an error on route change: `resetKeys={[pathname]}`.\n */\n resetKeys?: ReadonlyArray<unknown>;\n /** Heading shown in the default fallback. */\n title?: string;\n /** Description shown in the default fallback. */\n description?: string;\n /**\n * Controls the default fallback's footprint:\n * - `'section'` (default): fills available height and centers content — use when the boundary wraps a page or region.\n * - `'inline'`: stays compact — use when scoping to a single widget so the rest of the UI is untouched.\n */\n variant?: ErrorBoundaryVariant;\n /** Additional classes applied to the default fallback's outer wrapper. */\n className?: string;\n}\n\ntype ErrorBoundaryState = {\n error: Error | null;\n errorInfo: React.ErrorInfo | null;\n};\n\nconst INITIAL_STATE: ErrorBoundaryState = { error: null, errorInfo: null };\n\nfunction keysChanged(prev: ReadonlyArray<unknown> | undefined, next: ReadonlyArray<unknown> | undefined): boolean {\n if (prev === next) return false;\n if (!prev || !next) return true;\n if (prev.length !== next.length) return true;\n for (let i = 0; i < prev.length; i++) {\n if (!Object.is(prev[i], next[i])) return true;\n }\n return false;\n}\n\nexport class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = INITIAL_STATE;\n\n static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState> {\n return { error };\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n this.setState({ errorInfo });\n if (this.props.onError) {\n try {\n this.props.onError(error, errorInfo);\n } catch (handlerError) {\n if (typeof console !== 'undefined') {\n console.error('[ErrorBoundary] onError handler threw:', handlerError);\n }\n }\n }\n if (typeof console !== 'undefined') {\n console.error('[ErrorBoundary] Uncaught error:', error, errorInfo);\n }\n }\n\n componentDidUpdate(prevProps: ErrorBoundaryProps) {\n if (this.state.error && keysChanged(prevProps.resetKeys, this.props.resetKeys)) {\n this.reset();\n }\n }\n\n reset = () => {\n this.setState(INITIAL_STATE);\n };\n\n render() {\n const { error, errorInfo } = this.state;\n const { children, fallback, title, description, variant, className } = this.props;\n\n if (!error) return children;\n\n if (typeof fallback === 'function') {\n return fallback({ error, errorInfo, reset: this.reset });\n }\n\n if (fallback !== undefined) return fallback;\n\n return (\n <DefaultErrorFallback\n error={error}\n errorInfo={errorInfo}\n reset={this.reset}\n title={title}\n description={description}\n variant={variant ?? 'section'}\n className={className}\n />\n );\n }\n}\n\ntype DefaultErrorFallbackProps = ErrorBoundaryFallbackProps & {\n title?: string;\n description?: string;\n variant: ErrorBoundaryVariant;\n className?: string;\n};\n\nfunction DefaultErrorFallback({\n error,\n errorInfo,\n reset,\n title,\n description,\n variant,\n className,\n}: DefaultErrorFallbackProps) {\n const stack = errorInfo?.componentStack ?? error.stack ?? '';\n const isInline = variant === 'inline';\n\n return (\n <div\n role=\"alert\"\n className={cn(\n '@container flex w-full items-center justify-center',\n isInline ? 'py-6 px-4' : 'h-full min-h-[240px] flex-1 py-10 px-6',\n className,\n )}\n >\n <div\n className={cn(\n 'flex flex-col items-center text-center',\n isInline ? 'gap-3 max-w-md' : 'gap-4 max-w-2xl @md:gap-5 @lg:gap-6',\n )}\n >\n <div\n className={cn(\n 'rounded-full bg-accent2/10 text-accent2 flex items-center justify-center',\n isInline\n ? 'h-10 w-10 [&>svg]:h-5 [&>svg]:w-5'\n : 'h-14 w-14 [&>svg]:h-7 [&>svg]:w-7 @md:h-16 @md:w-16 @md:[&>svg]:h-8 @md:[&>svg]:w-8 @lg:h-20 @lg:w-20 @lg:[&>svg]:h-10 @lg:[&>svg]:w-10',\n )}\n >\n <AlertTriangle />\n </div>\n <h3\n className={cn(\n 'font-medium text-neutral6',\n isInline ? 'text-ui-md' : 'text-ui-lg @md:text-header-md @lg:text-header-lg',\n )}\n >\n {title ?? 'Something went wrong'}\n </h3>\n <p className={cn('text-neutral3', isInline ? 'text-ui-sm' : 'text-ui-md @lg:text-ui-lg')}>\n {description ?? 'An unexpected error occurred while rendering this part of the page.'}\n </p>\n <p\n className={cn(\n 'font-mono text-neutral4 break-words rounded-md bg-surface3 px-3 py-2',\n isInline ? 'text-ui-xs' : 'text-ui-sm',\n )}\n >\n {error.message}\n </p>\n <div className={cn('flex flex-wrap items-center justify-center gap-2', isInline ? 'mt-1' : 'mt-2')}>\n <Button variant=\"primary\" size={isInline ? 'sm' : 'lg'} onClick={reset}>\n Try again\n </Button>\n <Button variant=\"default\" size={isInline ? 'sm' : 'lg'} onClick={() => window.location.reload()}>\n Reload page\n </Button>\n <Button\n as=\"a\"\n variant=\"default\"\n size={isInline ? 'sm' : 'lg'}\n href=\"https://github.com/mastra-ai/mastra/issues\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Report issue\n </Button>\n </div>\n {stack ? (\n <details className={cn('w-full text-left', isInline ? 'mt-1' : 'mt-2')}>\n <summary className=\"cursor-pointer text-ui-sm text-neutral3 hover:text-neutral4\">\n Show error details\n </summary>\n <pre className=\"mt-2 max-h-64 overflow-auto rounded-md bg-surface3 p-3 text-ui-xs text-neutral4 whitespace-pre-wrap break-words\">\n {stack}\n </pre>\n </details>\n ) : null}\n </div>\n </div>\n );\n}\n"],"names":["React","jsx","cn","jsxs","AlertTriangle","Button"],"mappings":"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"}
1
+ {"version":3,"file":"ErrorBoundary-DHKgEKNj.cjs","sources":["../src/ds/components/ErrorBoundary/ErrorBoundary.tsx"],"sourcesContent":["import { AlertTriangle } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from '../Button';\nimport { cn } from '@/lib/utils';\n\nexport type ErrorBoundaryVariant = 'section' | 'inline';\n\nexport type ErrorBoundaryFallbackProps = {\n error: Error;\n errorInfo: React.ErrorInfo | null;\n reset: () => void;\n};\n\nexport interface ErrorBoundaryProps {\n children: React.ReactNode;\n /** Custom fallback rendered when an error is caught. Receives the error and a reset callback. */\n fallback?: React.ReactNode | ((props: ErrorBoundaryFallbackProps) => React.ReactNode);\n /** Called when an error is caught. Useful for reporting to an error tracker. */\n onError?: (error: Error, errorInfo: React.ErrorInfo) => void;\n /**\n * When any value in this array changes between renders, the boundary resets.\n * Useful for clearing an error on route change: `resetKeys={[pathname]}`.\n */\n resetKeys?: ReadonlyArray<unknown>;\n /** Heading shown in the default fallback. */\n title?: string;\n /** Description shown in the default fallback. */\n description?: string;\n /**\n * Controls the default fallback's footprint:\n * - `'section'` (default): fills available height and centers content — use when the boundary wraps a page or region.\n * - `'inline'`: stays compact — use when scoping to a single widget so the rest of the UI is untouched.\n */\n variant?: ErrorBoundaryVariant;\n /** Additional classes applied to the default fallback's outer wrapper. */\n className?: string;\n}\n\ntype ErrorBoundaryState = {\n error: Error | null;\n errorInfo: React.ErrorInfo | null;\n};\n\nconst INITIAL_STATE: ErrorBoundaryState = { error: null, errorInfo: null };\n\nfunction keysChanged(prev: ReadonlyArray<unknown> | undefined, next: ReadonlyArray<unknown> | undefined): boolean {\n if (prev === next) return false;\n if (!prev || !next) return true;\n if (prev.length !== next.length) return true;\n for (let i = 0; i < prev.length; i++) {\n if (!Object.is(prev[i], next[i])) return true;\n }\n return false;\n}\n\nexport class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = INITIAL_STATE;\n\n static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState> {\n return { error };\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n this.setState({ errorInfo });\n if (this.props.onError) {\n try {\n this.props.onError(error, errorInfo);\n } catch (handlerError) {\n if (typeof console !== 'undefined') {\n console.error('[ErrorBoundary] onError handler threw:', handlerError);\n }\n }\n }\n if (typeof console !== 'undefined') {\n console.error('[ErrorBoundary] Uncaught error:', error, errorInfo);\n }\n }\n\n componentDidUpdate(prevProps: ErrorBoundaryProps) {\n if (this.state.error && keysChanged(prevProps.resetKeys, this.props.resetKeys)) {\n this.reset();\n }\n }\n\n reset = () => {\n this.setState(INITIAL_STATE);\n };\n\n render() {\n const { error, errorInfo } = this.state;\n const { children, fallback, title, description, variant, className } = this.props;\n\n if (!error) return children;\n\n if (typeof fallback === 'function') {\n return fallback({ error, errorInfo, reset: this.reset });\n }\n\n if (fallback !== undefined) return fallback;\n\n return (\n <DefaultErrorFallback\n error={error}\n errorInfo={errorInfo}\n reset={this.reset}\n title={title}\n description={description}\n variant={variant ?? 'section'}\n className={className}\n />\n );\n }\n}\n\ntype DefaultErrorFallbackProps = ErrorBoundaryFallbackProps & {\n title?: string;\n description?: string;\n variant: ErrorBoundaryVariant;\n className?: string;\n};\n\nfunction DefaultErrorFallback({\n error,\n errorInfo,\n reset,\n title,\n description,\n variant,\n className,\n}: DefaultErrorFallbackProps) {\n const stack = errorInfo?.componentStack ?? error.stack ?? '';\n const isInline = variant === 'inline';\n\n return (\n <div\n role=\"alert\"\n className={cn(\n '@container flex w-full items-center justify-center',\n isInline ? 'py-6 px-4' : 'h-full min-h-[240px] flex-1 py-10 px-6',\n className,\n )}\n >\n <div\n className={cn(\n 'flex flex-col items-center text-center',\n isInline ? 'gap-3 max-w-md' : 'gap-4 max-w-2xl @md:gap-5 @lg:gap-6',\n )}\n >\n <div\n className={cn(\n 'rounded-full bg-accent2/10 text-accent2 flex items-center justify-center',\n isInline\n ? 'h-10 w-10 [&>svg]:h-5 [&>svg]:w-5'\n : 'h-14 w-14 [&>svg]:h-7 [&>svg]:w-7 @md:h-16 @md:w-16 @md:[&>svg]:h-8 @md:[&>svg]:w-8 @lg:h-20 @lg:w-20 @lg:[&>svg]:h-10 @lg:[&>svg]:w-10',\n )}\n >\n <AlertTriangle />\n </div>\n <h3\n className={cn(\n 'font-medium text-neutral6',\n isInline ? 'text-ui-md' : 'text-ui-lg @md:text-header-md @lg:text-header-lg',\n )}\n >\n {title ?? 'Something went wrong'}\n </h3>\n <p className={cn('text-neutral3', isInline ? 'text-ui-sm' : 'text-ui-md @lg:text-ui-lg')}>\n {description ?? 'An unexpected error occurred while rendering this part of the page.'}\n </p>\n <p\n className={cn(\n 'font-mono text-neutral4 break-words rounded-md bg-surface3 px-3 py-2',\n isInline ? 'text-ui-xs' : 'text-ui-sm',\n )}\n >\n {error.message}\n </p>\n <div className={cn('flex flex-wrap items-center justify-center gap-2', isInline ? 'mt-1' : 'mt-2')}>\n <Button variant=\"primary\" size={isInline ? 'sm' : 'lg'} onClick={reset}>\n Try again\n </Button>\n <Button variant=\"default\" size={isInline ? 'sm' : 'lg'} onClick={() => window.location.reload()}>\n Reload page\n </Button>\n <Button\n as=\"a\"\n variant=\"default\"\n size={isInline ? 'sm' : 'lg'}\n href=\"https://github.com/mastra-ai/mastra/issues\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Report issue\n </Button>\n </div>\n {stack ? (\n <details className={cn('w-full text-left', isInline ? 'mt-1' : 'mt-2')}>\n <summary className=\"cursor-pointer text-ui-sm text-neutral3 hover:text-neutral4\">\n Show error details\n </summary>\n <pre className=\"mt-2 max-h-64 overflow-auto rounded-md bg-surface3 p-3 text-ui-xs text-neutral4 whitespace-pre-wrap break-words\">\n {stack}\n </pre>\n </details>\n ) : null}\n </div>\n </div>\n );\n}\n"],"names":["React","jsx","cn","jsxs","AlertTriangle","Button"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { AlertTriangle } from 'lucide-react';
3
3
  import * as React from 'react';
4
- import { B as Button } from './Button-DoOEJwa_.js';
4
+ import { B as Button } from './Button-CIPDOgxX.js';
5
5
  import { c as cn } from './utils-CzYGxqbG.js';
6
6
 
7
7
  const INITIAL_STATE = { error: null, errorInfo: null };
@@ -151,4 +151,4 @@ function DefaultErrorFallback({
151
151
  }
152
152
 
153
153
  export { ErrorBoundary as E };
154
- //# sourceMappingURL=ErrorBoundary-6_BD8AkH.js.map
154
+ //# sourceMappingURL=ErrorBoundary-dIqbGlfe.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorBoundary-6_BD8AkH.js","sources":["../src/ds/components/ErrorBoundary/ErrorBoundary.tsx"],"sourcesContent":["import { AlertTriangle } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from '../Button';\nimport { cn } from '@/lib/utils';\n\nexport type ErrorBoundaryVariant = 'section' | 'inline';\n\nexport type ErrorBoundaryFallbackProps = {\n error: Error;\n errorInfo: React.ErrorInfo | null;\n reset: () => void;\n};\n\nexport interface ErrorBoundaryProps {\n children: React.ReactNode;\n /** Custom fallback rendered when an error is caught. Receives the error and a reset callback. */\n fallback?: React.ReactNode | ((props: ErrorBoundaryFallbackProps) => React.ReactNode);\n /** Called when an error is caught. Useful for reporting to an error tracker. */\n onError?: (error: Error, errorInfo: React.ErrorInfo) => void;\n /**\n * When any value in this array changes between renders, the boundary resets.\n * Useful for clearing an error on route change: `resetKeys={[pathname]}`.\n */\n resetKeys?: ReadonlyArray<unknown>;\n /** Heading shown in the default fallback. */\n title?: string;\n /** Description shown in the default fallback. */\n description?: string;\n /**\n * Controls the default fallback's footprint:\n * - `'section'` (default): fills available height and centers content — use when the boundary wraps a page or region.\n * - `'inline'`: stays compact — use when scoping to a single widget so the rest of the UI is untouched.\n */\n variant?: ErrorBoundaryVariant;\n /** Additional classes applied to the default fallback's outer wrapper. */\n className?: string;\n}\n\ntype ErrorBoundaryState = {\n error: Error | null;\n errorInfo: React.ErrorInfo | null;\n};\n\nconst INITIAL_STATE: ErrorBoundaryState = { error: null, errorInfo: null };\n\nfunction keysChanged(prev: ReadonlyArray<unknown> | undefined, next: ReadonlyArray<unknown> | undefined): boolean {\n if (prev === next) return false;\n if (!prev || !next) return true;\n if (prev.length !== next.length) return true;\n for (let i = 0; i < prev.length; i++) {\n if (!Object.is(prev[i], next[i])) return true;\n }\n return false;\n}\n\nexport class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = INITIAL_STATE;\n\n static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState> {\n return { error };\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n this.setState({ errorInfo });\n if (this.props.onError) {\n try {\n this.props.onError(error, errorInfo);\n } catch (handlerError) {\n if (typeof console !== 'undefined') {\n console.error('[ErrorBoundary] onError handler threw:', handlerError);\n }\n }\n }\n if (typeof console !== 'undefined') {\n console.error('[ErrorBoundary] Uncaught error:', error, errorInfo);\n }\n }\n\n componentDidUpdate(prevProps: ErrorBoundaryProps) {\n if (this.state.error && keysChanged(prevProps.resetKeys, this.props.resetKeys)) {\n this.reset();\n }\n }\n\n reset = () => {\n this.setState(INITIAL_STATE);\n };\n\n render() {\n const { error, errorInfo } = this.state;\n const { children, fallback, title, description, variant, className } = this.props;\n\n if (!error) return children;\n\n if (typeof fallback === 'function') {\n return fallback({ error, errorInfo, reset: this.reset });\n }\n\n if (fallback !== undefined) return fallback;\n\n return (\n <DefaultErrorFallback\n error={error}\n errorInfo={errorInfo}\n reset={this.reset}\n title={title}\n description={description}\n variant={variant ?? 'section'}\n className={className}\n />\n );\n }\n}\n\ntype DefaultErrorFallbackProps = ErrorBoundaryFallbackProps & {\n title?: string;\n description?: string;\n variant: ErrorBoundaryVariant;\n className?: string;\n};\n\nfunction DefaultErrorFallback({\n error,\n errorInfo,\n reset,\n title,\n description,\n variant,\n className,\n}: DefaultErrorFallbackProps) {\n const stack = errorInfo?.componentStack ?? error.stack ?? '';\n const isInline = variant === 'inline';\n\n return (\n <div\n role=\"alert\"\n className={cn(\n '@container flex w-full items-center justify-center',\n isInline ? 'py-6 px-4' : 'h-full min-h-[240px] flex-1 py-10 px-6',\n className,\n )}\n >\n <div\n className={cn(\n 'flex flex-col items-center text-center',\n isInline ? 'gap-3 max-w-md' : 'gap-4 max-w-2xl @md:gap-5 @lg:gap-6',\n )}\n >\n <div\n className={cn(\n 'rounded-full bg-accent2/10 text-accent2 flex items-center justify-center',\n isInline\n ? 'h-10 w-10 [&>svg]:h-5 [&>svg]:w-5'\n : 'h-14 w-14 [&>svg]:h-7 [&>svg]:w-7 @md:h-16 @md:w-16 @md:[&>svg]:h-8 @md:[&>svg]:w-8 @lg:h-20 @lg:w-20 @lg:[&>svg]:h-10 @lg:[&>svg]:w-10',\n )}\n >\n <AlertTriangle />\n </div>\n <h3\n className={cn(\n 'font-medium text-neutral6',\n isInline ? 'text-ui-md' : 'text-ui-lg @md:text-header-md @lg:text-header-lg',\n )}\n >\n {title ?? 'Something went wrong'}\n </h3>\n <p className={cn('text-neutral3', isInline ? 'text-ui-sm' : 'text-ui-md @lg:text-ui-lg')}>\n {description ?? 'An unexpected error occurred while rendering this part of the page.'}\n </p>\n <p\n className={cn(\n 'font-mono text-neutral4 break-words rounded-md bg-surface3 px-3 py-2',\n isInline ? 'text-ui-xs' : 'text-ui-sm',\n )}\n >\n {error.message}\n </p>\n <div className={cn('flex flex-wrap items-center justify-center gap-2', isInline ? 'mt-1' : 'mt-2')}>\n <Button variant=\"primary\" size={isInline ? 'sm' : 'lg'} onClick={reset}>\n Try again\n </Button>\n <Button variant=\"default\" size={isInline ? 'sm' : 'lg'} onClick={() => window.location.reload()}>\n Reload page\n </Button>\n <Button\n as=\"a\"\n variant=\"default\"\n size={isInline ? 'sm' : 'lg'}\n href=\"https://github.com/mastra-ai/mastra/issues\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Report issue\n </Button>\n </div>\n {stack ? (\n <details className={cn('w-full text-left', isInline ? 'mt-1' : 'mt-2')}>\n <summary className=\"cursor-pointer text-ui-sm text-neutral3 hover:text-neutral4\">\n Show error details\n </summary>\n <pre className=\"mt-2 max-h-64 overflow-auto rounded-md bg-surface3 p-3 text-ui-xs text-neutral4 whitespace-pre-wrap break-words\">\n {stack}\n </pre>\n </details>\n ) : null}\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ErrorBoundary-dIqbGlfe.js","sources":["../src/ds/components/ErrorBoundary/ErrorBoundary.tsx"],"sourcesContent":["import { AlertTriangle } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from '../Button';\nimport { cn } from '@/lib/utils';\n\nexport type ErrorBoundaryVariant = 'section' | 'inline';\n\nexport type ErrorBoundaryFallbackProps = {\n error: Error;\n errorInfo: React.ErrorInfo | null;\n reset: () => void;\n};\n\nexport interface ErrorBoundaryProps {\n children: React.ReactNode;\n /** Custom fallback rendered when an error is caught. Receives the error and a reset callback. */\n fallback?: React.ReactNode | ((props: ErrorBoundaryFallbackProps) => React.ReactNode);\n /** Called when an error is caught. Useful for reporting to an error tracker. */\n onError?: (error: Error, errorInfo: React.ErrorInfo) => void;\n /**\n * When any value in this array changes between renders, the boundary resets.\n * Useful for clearing an error on route change: `resetKeys={[pathname]}`.\n */\n resetKeys?: ReadonlyArray<unknown>;\n /** Heading shown in the default fallback. */\n title?: string;\n /** Description shown in the default fallback. */\n description?: string;\n /**\n * Controls the default fallback's footprint:\n * - `'section'` (default): fills available height and centers content — use when the boundary wraps a page or region.\n * - `'inline'`: stays compact — use when scoping to a single widget so the rest of the UI is untouched.\n */\n variant?: ErrorBoundaryVariant;\n /** Additional classes applied to the default fallback's outer wrapper. */\n className?: string;\n}\n\ntype ErrorBoundaryState = {\n error: Error | null;\n errorInfo: React.ErrorInfo | null;\n};\n\nconst INITIAL_STATE: ErrorBoundaryState = { error: null, errorInfo: null };\n\nfunction keysChanged(prev: ReadonlyArray<unknown> | undefined, next: ReadonlyArray<unknown> | undefined): boolean {\n if (prev === next) return false;\n if (!prev || !next) return true;\n if (prev.length !== next.length) return true;\n for (let i = 0; i < prev.length; i++) {\n if (!Object.is(prev[i], next[i])) return true;\n }\n return false;\n}\n\nexport class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = INITIAL_STATE;\n\n static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState> {\n return { error };\n }\n\n componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n this.setState({ errorInfo });\n if (this.props.onError) {\n try {\n this.props.onError(error, errorInfo);\n } catch (handlerError) {\n if (typeof console !== 'undefined') {\n console.error('[ErrorBoundary] onError handler threw:', handlerError);\n }\n }\n }\n if (typeof console !== 'undefined') {\n console.error('[ErrorBoundary] Uncaught error:', error, errorInfo);\n }\n }\n\n componentDidUpdate(prevProps: ErrorBoundaryProps) {\n if (this.state.error && keysChanged(prevProps.resetKeys, this.props.resetKeys)) {\n this.reset();\n }\n }\n\n reset = () => {\n this.setState(INITIAL_STATE);\n };\n\n render() {\n const { error, errorInfo } = this.state;\n const { children, fallback, title, description, variant, className } = this.props;\n\n if (!error) return children;\n\n if (typeof fallback === 'function') {\n return fallback({ error, errorInfo, reset: this.reset });\n }\n\n if (fallback !== undefined) return fallback;\n\n return (\n <DefaultErrorFallback\n error={error}\n errorInfo={errorInfo}\n reset={this.reset}\n title={title}\n description={description}\n variant={variant ?? 'section'}\n className={className}\n />\n );\n }\n}\n\ntype DefaultErrorFallbackProps = ErrorBoundaryFallbackProps & {\n title?: string;\n description?: string;\n variant: ErrorBoundaryVariant;\n className?: string;\n};\n\nfunction DefaultErrorFallback({\n error,\n errorInfo,\n reset,\n title,\n description,\n variant,\n className,\n}: DefaultErrorFallbackProps) {\n const stack = errorInfo?.componentStack ?? error.stack ?? '';\n const isInline = variant === 'inline';\n\n return (\n <div\n role=\"alert\"\n className={cn(\n '@container flex w-full items-center justify-center',\n isInline ? 'py-6 px-4' : 'h-full min-h-[240px] flex-1 py-10 px-6',\n className,\n )}\n >\n <div\n className={cn(\n 'flex flex-col items-center text-center',\n isInline ? 'gap-3 max-w-md' : 'gap-4 max-w-2xl @md:gap-5 @lg:gap-6',\n )}\n >\n <div\n className={cn(\n 'rounded-full bg-accent2/10 text-accent2 flex items-center justify-center',\n isInline\n ? 'h-10 w-10 [&>svg]:h-5 [&>svg]:w-5'\n : 'h-14 w-14 [&>svg]:h-7 [&>svg]:w-7 @md:h-16 @md:w-16 @md:[&>svg]:h-8 @md:[&>svg]:w-8 @lg:h-20 @lg:w-20 @lg:[&>svg]:h-10 @lg:[&>svg]:w-10',\n )}\n >\n <AlertTriangle />\n </div>\n <h3\n className={cn(\n 'font-medium text-neutral6',\n isInline ? 'text-ui-md' : 'text-ui-lg @md:text-header-md @lg:text-header-lg',\n )}\n >\n {title ?? 'Something went wrong'}\n </h3>\n <p className={cn('text-neutral3', isInline ? 'text-ui-sm' : 'text-ui-md @lg:text-ui-lg')}>\n {description ?? 'An unexpected error occurred while rendering this part of the page.'}\n </p>\n <p\n className={cn(\n 'font-mono text-neutral4 break-words rounded-md bg-surface3 px-3 py-2',\n isInline ? 'text-ui-xs' : 'text-ui-sm',\n )}\n >\n {error.message}\n </p>\n <div className={cn('flex flex-wrap items-center justify-center gap-2', isInline ? 'mt-1' : 'mt-2')}>\n <Button variant=\"primary\" size={isInline ? 'sm' : 'lg'} onClick={reset}>\n Try again\n </Button>\n <Button variant=\"default\" size={isInline ? 'sm' : 'lg'} onClick={() => window.location.reload()}>\n Reload page\n </Button>\n <Button\n as=\"a\"\n variant=\"default\"\n size={isInline ? 'sm' : 'lg'}\n href=\"https://github.com/mastra-ai/mastra/issues\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Report issue\n </Button>\n </div>\n {stack ? (\n <details className={cn('w-full text-left', isInline ? 'mt-1' : 'mt-2')}>\n <summary className=\"cursor-pointer text-ui-sm text-neutral3 hover:text-neutral4\">\n Show error details\n </summary>\n <pre className=\"mt-2 max-h-64 overflow-auto rounded-md bg-surface3 p-3 text-ui-xs text-neutral4 whitespace-pre-wrap break-words\">\n {stack}\n </pre>\n </details>\n ) : null}\n </div>\n </div>\n );\n}\n"],"names":[],"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-DoOEJwa_.js';
2
+ import { B as Button } from './Button-CIPDOgxX.js';
3
3
  import { c as cn } from './utils-CzYGxqbG.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-D5nzvm08.js.map
89
+ //# sourceMappingURL=Notice-CeF-1wDL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Notice-D5nzvm08.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 'relative @container rounded-2xl border p-3 text-ui-md leading-ui-md',\n 'animate-in fade-in-0 slide-in-from-top-2 duration-200',\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 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 {children && <div className=\"flex-1\">{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 'relative @container flex flex-col gap-4 rounded-2xl border p-3',\n 'animate-in fade-in-0 slide-in-from-top-2 duration-200',\n classes,\n className,\n )}\n >\n <div className=\"flex h-4 items-center gap-2 [&>svg]:size-4\">\n {resolvedIcon}\n <span className=\"text-ui-sm font-medium uppercase tracking-wide leading-none\">{title}</span>\n </div>\n {action && <div className=\"absolute right-2 top-2 hidden @md:block\">{action}</div>}\n {(children || action) && (\n <div className=\"flex flex-col gap-5\">\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-CeF-1wDL.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 'relative @container rounded-2xl border p-3 text-ui-md leading-ui-md',\n 'animate-in fade-in-0 slide-in-from-top-2 duration-200',\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 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 {children && <div className=\"flex-1\">{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 'relative @container flex flex-col gap-4 rounded-2xl border p-3',\n 'animate-in fade-in-0 slide-in-from-top-2 duration-200',\n classes,\n className,\n )}\n >\n <div className=\"flex h-4 items-center gap-2 [&>svg]:size-4\">\n {resolvedIcon}\n <span className=\"text-ui-sm font-medium uppercase tracking-wide leading-none\">{title}</span>\n </div>\n {action && <div className=\"absolute right-2 top-2 hidden @md:block\">{action}</div>}\n {(children || action) && (\n <div className=\"flex flex-col gap-5\">\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":";;;;;AAGO,SAAS,aAAa,KAAA,EAAoB;AAC/C,EAAA,2BAAQ,MAAA,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,2BAAQ,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,0BAAA,EAA4B,SAAS,GAAI,QAAA,EAAS,CAAA;AAC9E;;ACHA,MAAM,aAAA,GAAmF;AAAA,EACvF,OAAA,EAAS;AAAA,IACP,IAAA,sBAAO,aAAA,EAAA,EAAc,CAAA;AAAA,IACrB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,WAAA,EAAa;AAAA,IACX,IAAA,sBAAO,gBAAA,EAAA,EAAiB,CAAA;AAAA,IACxB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,OAAA,EAAS;AAAA,IACP,IAAA,sBAAO,iBAAA,EAAA,EAAkB,CAAA;AAAA,IACzB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,sBAAO,QAAA,EAAA,EAAS,CAAA;AAAA,IAChB,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,sBAAO,YAAA,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,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,qEAAA;AAAA,UACA,uDAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4DAAA,EACb,QAAA,EAAA;AAAA,0BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,8CAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mDAAA,EAAqD,QAAA,EAAA,YAAA,EAAa,CAAA;AAAA,YACjF,QAAA,oBAAY,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAU,QAAA,EAAS;AAAA,WAAA,EACjD,CAAA;AAAA,UACC,MAAA,oBAAU,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qDAAqD,QAAA,EAAA,MAAA,EAAO;AAAA,SAAA,EACxF;AAAA;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,gEAAA;AAAA,QACA,uDAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,4CAAA,EACZ,QAAA,EAAA;AAAA,UAAA,YAAA;AAAA,0BACD,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6DAAA,EAA+D,QAAA,EAAA,KAAA,EAAM;AAAA,SAAA,EACvF,CAAA;AAAA,QACC,MAAA,oBAAU,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAA2C,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,QAAA,CAC1E,QAAA,IAAY,MAAA,qBACZ,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,MAAA,oBAAU,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAyB,QAAA,EAAA,MAAA,EAAO;AAAA,SAAA,EAC5D;AAAA;AAAA;AAAA,GAEJ;AAEJ;;AC9EO,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY;AAAA,EAC9C,OAAA,EAAS,aAAA;AAAA,EACT,MAAA,EAAQ;AACV,CAAC;;;;"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
- const Button = require('./Button-DpIX8JMz.cjs');
4
+ const Button = require('./Button-DhjKny12.cjs');
5
5
  const utils = require('./utils-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-Mjo3MJi2.cjs.map
91
+ //# sourceMappingURL=Notice-CoxDmlFE.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Notice-Mjo3MJi2.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 'relative @container rounded-2xl border p-3 text-ui-md leading-ui-md',\n 'animate-in fade-in-0 slide-in-from-top-2 duration-200',\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 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 {children && <div className=\"flex-1\">{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 'relative @container flex flex-col gap-4 rounded-2xl border p-3',\n 'animate-in fade-in-0 slide-in-from-top-2 duration-200',\n classes,\n className,\n )}\n >\n <div className=\"flex h-4 items-center gap-2 [&>svg]:size-4\">\n {resolvedIcon}\n <span className=\"text-ui-sm font-medium uppercase tracking-wide leading-none\">{title}</span>\n </div>\n {action && <div className=\"absolute right-2 top-2 hidden @md:block\">{action}</div>}\n {(children || action) && (\n <div className=\"flex flex-col gap-5\">\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-CoxDmlFE.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 'relative @container rounded-2xl border p-3 text-ui-md leading-ui-md',\n 'animate-in fade-in-0 slide-in-from-top-2 duration-200',\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 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 {children && <div className=\"flex-1\">{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 'relative @container flex flex-col gap-4 rounded-2xl border p-3',\n 'animate-in fade-in-0 slide-in-from-top-2 duration-200',\n classes,\n className,\n )}\n >\n <div className=\"flex h-4 items-center gap-2 [&>svg]:size-4\">\n {resolvedIcon}\n <span className=\"text-ui-sm font-medium uppercase tracking-wide leading-none\">{title}</span>\n </div>\n {action && <div className=\"absolute right-2 top-2 hidden @md:block\">{action}</div>}\n {(children || action) && (\n <div className=\"flex flex-col gap-5\">\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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"}
@@ -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 Icon = require('./Icon-C_Ooy-cP.cjs');
8
- const Button = require('./Button-DpIX8JMz.cjs');
8
+ const Button = require('./Button-DhjKny12.cjs');
9
9
  const EmptyState = require('./EmptyState-vw7dhSKP.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-DGk3CXNp.cjs.map
47
+ //# sourceMappingURL=SessionExpired-B-3L6-qf.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionExpired-DGk3CXNp.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,SAAA,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-B-3L6-qf.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,SAAA,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;;;;"}
@@ -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 { I as Icon } from './Icon-CJEjdbjB.js';
6
- import { B as Button } from './Button-DoOEJwa_.js';
6
+ import { B as Button } from './Button-CIPDOgxX.js';
7
7
  import { E as EmptyState } from './EmptyState-DfXdX6I8.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-Dhmm8eLq.js.map
45
+ //# sourceMappingURL=SessionExpired-DfwSc_Ra.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionExpired-Dhmm8eLq.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-DfwSc_Ra.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;;;;"}
@@ -3,7 +3,7 @@
3
3
  require('./dialog.css');const jsxRuntime = require('react/jsx-runtime');
4
4
  const alertDialog = require('@base-ui/react/alert-dialog');
5
5
  const React = require('react');
6
- const Button = require('./Button-DpIX8JMz.cjs');
6
+ const Button = require('./Button-DhjKny12.cjs');
7
7
  const asChild = require('./as-child-Dgr1RHLO.cjs');
8
8
  const utils = require('./utils-vA5sWo9W.cjs');
9
9
  ;/* empty css */
@@ -117,4 +117,4 @@ AlertDialog.Action = AlertDialogAction;
117
117
  AlertDialog.Cancel = AlertDialogCancel;
118
118
 
119
119
  exports.AlertDialog = AlertDialog;
120
- //# sourceMappingURL=alert-dialog-DfQhrc2F.cjs.map
120
+ //# sourceMappingURL=alert-dialog-BovzZq26.cjs.map