@mastra/playground-ui 57.0.0 → 57.1.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (698) hide show
  1. package/dist/{Button-KUj0U-5I.js → Button-B8nF87ai.js} +2 -8
  2. package/dist/Button-B8nF87ai.js.map +1 -0
  3. package/dist/{Button-MMZPEb_q.cjs → Button-BAMnPqos.cjs} +1 -7
  4. package/dist/Button-BAMnPqos.cjs.map +1 -0
  5. package/dist/{Card-DwGasv0K.cjs → Card-BbwF20OW.cjs} +3 -3
  6. package/dist/Card-BbwF20OW.cjs.map +1 -0
  7. package/dist/{Card-B_buJ5yF.js → Card-DmT57Pve.js} +3 -3
  8. package/dist/Card-DmT57Pve.js.map +1 -0
  9. package/dist/{EmptyState-DiSP6UIy.cjs → EmptyState-2XQgeju6.cjs} +12 -3
  10. package/dist/EmptyState-2XQgeju6.cjs.map +1 -0
  11. package/dist/{EmptyState-B6cyZw6m.js → EmptyState-Bc4nJ9QH.js} +13 -4
  12. package/dist/EmptyState-Bc4nJ9QH.js.map +1 -0
  13. package/dist/{Notice-CPyYcX5J.cjs → Notice-AUNd8fqT.cjs} +2 -2
  14. package/dist/{Notice-CPyYcX5J.cjs.map → Notice-AUNd8fqT.cjs.map} +1 -1
  15. package/dist/{Notice-KC18b8Nd.js → Notice-WT8G4OA6.js} +2 -2
  16. package/dist/{Notice-KC18b8Nd.js.map → Notice-WT8G4OA6.js.map} +1 -1
  17. package/dist/{ask-user-DaRRR4qQ.cjs → ask-user--Samf9gv.cjs} +2 -2
  18. package/dist/{ask-user-DaRRR4qQ.cjs.map → ask-user--Samf9gv.cjs.map} +1 -1
  19. package/dist/{ask-user-C4DTzEQF.js → ask-user-C-B3dhNP.js} +2 -2
  20. package/dist/{ask-user-C4DTzEQF.js.map → ask-user-C-B3dhNP.js.map} +1 -1
  21. package/dist/buttons-group.css +2 -14
  22. package/dist/{chat-notification-DeKD1Ifx.js → chat-notification-CmdRGO_D.js} +2 -2
  23. package/dist/{chat-notification-DeKD1Ifx.js.map → chat-notification-CmdRGO_D.js.map} +1 -1
  24. package/dist/{chat-notification-C5Ox5tuS.cjs → chat-notification-DJykWtoj.cjs} +2 -2
  25. package/dist/{chat-notification-C5Ox5tuS.cjs.map → chat-notification-DJykWtoj.cjs.map} +1 -1
  26. package/dist/{chat-signal-DiAHks6_.js → chat-signal-Vg8pGXwH.js} +2 -2
  27. package/dist/{chat-signal-DiAHks6_.js.map → chat-signal-Vg8pGXwH.js.map} +1 -1
  28. package/dist/{chat-signal-ClyJeml8.cjs → chat-signal-xs3FkPts.cjs} +2 -2
  29. package/dist/{chat-signal-ClyJeml8.cjs.map → chat-signal-xs3FkPts.cjs.map} +1 -1
  30. package/dist/{code-block-D37olB3O.js → code-block-CoKMTAdr.js} +5 -5
  31. package/dist/{code-block-D37olB3O.js.map → code-block-CoKMTAdr.js.map} +1 -1
  32. package/dist/{code-block-BoTq0TMr.cjs → code-block-FTEGH9VP.cjs} +5 -5
  33. package/dist/{code-block-BoTq0TMr.cjs.map → code-block-FTEGH9VP.cjs.map} +1 -1
  34. package/dist/{code-editor-BfoJXq9l.cjs → code-editor-D0wHkvDt.cjs} +2 -2
  35. package/dist/{code-editor-BfoJXq9l.cjs.map → code-editor-D0wHkvDt.cjs.map} +1 -1
  36. package/dist/{code-editor-BQTDma1I.js → code-editor-DmvGc1jj.js} +2 -2
  37. package/dist/{code-editor-BQTDma1I.js.map → code-editor-DmvGc1jj.js.map} +1 -1
  38. package/dist/{combobox-Bn_uyUSB.cjs → combobox-1tyP_dy-.cjs} +3 -3
  39. package/dist/{combobox-Bn_uyUSB.cjs.map → combobox-1tyP_dy-.cjs.map} +1 -1
  40. package/dist/{combobox-Cykfy5wc.js → combobox-gPiXyJgX.js} +3 -3
  41. package/dist/{combobox-Cykfy5wc.js.map → combobox-gPiXyJgX.js.map} +1 -1
  42. package/dist/{combobox-styles-CSsS2LEx.cjs → combobox-styles-CeTbTVnX.cjs} +2 -2
  43. package/dist/combobox-styles-CeTbTVnX.cjs.map +1 -0
  44. package/dist/{combobox-styles-iuJUkJEQ.js → combobox-styles-DZbWnLlE.js} +2 -2
  45. package/dist/combobox-styles-DZbWnLlE.js.map +1 -0
  46. package/dist/{command-Bmy4PznC.js → command-6BKuiTWd.js} +2 -2
  47. package/dist/{command-Bmy4PznC.js.map → command-6BKuiTWd.js.map} +1 -1
  48. package/dist/{command-B7H-emho.cjs → command-ByQRbkpW.cjs} +2 -2
  49. package/dist/{command-B7H-emho.cjs.map → command-ByQRbkpW.cjs.map} +1 -1
  50. package/dist/components/AlertDialog.cjs.js +1 -1
  51. package/dist/components/AlertDialog.es.js +1 -1
  52. package/dist/components/Button.cjs.js +1 -1
  53. package/dist/components/Button.es.js +2 -2
  54. package/dist/components/Card.cjs.js +1 -1
  55. package/dist/components/Card.es.js +1 -1
  56. package/dist/components/ClampedText.cjs.js +1 -1
  57. package/dist/components/ClampedText.es.js +1 -1
  58. package/dist/components/CodeBlock.cjs.js +1 -1
  59. package/dist/components/CodeBlock.es.js +1 -1
  60. package/dist/components/CodeEditor.cjs.js +1 -1
  61. package/dist/components/CodeEditor.es.js +1 -1
  62. package/dist/components/Columns.cjs.js +2 -106
  63. package/dist/components/Columns.cjs.js.map +1 -1
  64. package/dist/components/Columns.es.js +4 -107
  65. package/dist/components/Columns.es.js.map +1 -1
  66. package/dist/components/Combobox.cjs.js +2 -2
  67. package/dist/components/Combobox.es.js +2 -2
  68. package/dist/components/Command.cjs.js +1 -1
  69. package/dist/components/Command.es.js +1 -1
  70. package/dist/components/CommandPalette.cjs.js +1 -1
  71. package/dist/components/CommandPalette.es.js +1 -1
  72. package/dist/components/Comment.cjs.js +3 -3
  73. package/dist/components/Comment.cjs.js.map +1 -1
  74. package/dist/components/Comment.es.js +3 -3
  75. package/dist/components/Comment.es.js.map +1 -1
  76. package/dist/components/CopyButton.cjs.js +1 -1
  77. package/dist/components/CopyButton.es.js +1 -1
  78. package/dist/components/DataCodeSection.cjs.js +1 -1
  79. package/dist/components/DataCodeSection.es.js +1 -1
  80. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  81. package/dist/components/DataDetailsPanel.es.js +2 -2
  82. package/dist/components/DataKeysAndValues.cjs.js +1 -1
  83. package/dist/components/DataKeysAndValues.es.js +1 -1
  84. package/dist/components/DataList.cjs.js +3 -3
  85. package/dist/components/DataList.es.js +3 -3
  86. package/dist/components/DataPanel.cjs.js +1 -1
  87. package/dist/components/DataPanel.es.js +1 -1
  88. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  89. package/dist/components/DateRangeTimeline.es.js +1 -1
  90. package/dist/components/DateTimePicker.cjs.js +2 -2
  91. package/dist/components/DateTimePicker.es.js +2 -2
  92. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  93. package/dist/components/DateTimeRangePicker.es.js +1 -1
  94. package/dist/components/Dialog.cjs.js +2 -2
  95. package/dist/components/Dialog.es.js +3 -3
  96. package/dist/components/DisabledFeatureButton.cjs.js +1 -1
  97. package/dist/components/DisabledFeatureButton.es.js +1 -1
  98. package/dist/components/Drawer.cjs.js +1 -1
  99. package/dist/components/Drawer.es.js +1 -1
  100. package/dist/components/EmptyState.cjs.js +1 -1
  101. package/dist/components/EmptyState.es.js +1 -1
  102. package/dist/components/EnvironmentVariablesEditor.cjs.js +4 -4
  103. package/dist/components/EnvironmentVariablesEditor.es.js +4 -4
  104. package/dist/components/ErrorBoundary.cjs.js +1 -1
  105. package/dist/components/ErrorBoundary.es.js +1 -1
  106. package/dist/components/FilterBar.cjs.js +3 -3
  107. package/dist/components/FilterBar.es.js +4 -4
  108. package/dist/components/FormFieldBlocks.cjs.js +2 -2
  109. package/dist/components/FormFieldBlocks.es.js +2 -2
  110. package/dist/components/InputGroup.cjs.js +1 -1
  111. package/dist/components/InputGroup.es.js +1 -1
  112. package/dist/components/IntegrationDialog.cjs.js +2 -2
  113. package/dist/components/IntegrationDialog.es.js +2 -2
  114. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  115. package/dist/components/JSONSchemaForm.es.js +2 -2
  116. package/dist/components/ListSearch.cjs.js +1 -1
  117. package/dist/components/ListSearch.es.js +1 -1
  118. package/dist/components/LogsDataList.cjs.js +1 -1
  119. package/dist/components/LogsDataList.es.js +1 -1
  120. package/dist/components/MainSidebar.cjs.js +125 -11
  121. package/dist/components/MainSidebar.cjs.js.map +1 -1
  122. package/dist/components/MainSidebar.es.js +120 -1
  123. package/dist/components/MainSidebar.es.js.map +1 -1
  124. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  125. package/dist/components/MarkdownRenderer.es.js +1 -1
  126. package/dist/components/Message.cjs.js +1 -1
  127. package/dist/components/Message.es.js +1 -1
  128. package/dist/components/MetricsCard.cjs.js +1 -1
  129. package/dist/components/MetricsCard.es.js +1 -1
  130. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  131. package/dist/components/MetricsKpiCard.es.js +1 -1
  132. package/dist/components/Notice.cjs.js +1 -1
  133. package/dist/components/Notice.es.js +1 -1
  134. package/dist/components/PageHeader.cjs.js +1 -1
  135. package/dist/components/PageHeader.es.js +1 -1
  136. package/dist/components/PageLayout.cjs.js +26 -3
  137. package/dist/components/PageLayout.cjs.js.map +1 -1
  138. package/dist/components/PageLayout.es.js +27 -4
  139. package/dist/components/PageLayout.es.js.map +1 -1
  140. package/dist/components/PrevNextNav.cjs.js +1 -1
  141. package/dist/components/PrevNextNav.es.js +1 -1
  142. package/dist/components/PropertyFilter.cjs.js +5 -5
  143. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  144. package/dist/components/PropertyFilter.es.js +6 -6
  145. package/dist/components/PropertyFilter.es.js.map +1 -1
  146. package/dist/components/RuleBuilder.cjs.js +2 -2
  147. package/dist/components/RuleBuilder.es.js +2 -2
  148. package/dist/components/Select.cjs.js +1 -1
  149. package/dist/components/Select.es.js +1 -1
  150. package/dist/components/SideDialog.cjs.js +3 -3
  151. package/dist/components/SideDialog.es.js +3 -3
  152. package/dist/components/Tabs.cjs.js +3 -3
  153. package/dist/components/Tabs.es.js +3 -3
  154. package/dist/components/ThreadList.cjs.js +1 -1
  155. package/dist/components/ThreadList.es.js +1 -1
  156. package/dist/components/Truncate.cjs.js +1 -1
  157. package/dist/components/Truncate.es.js +1 -1
  158. package/dist/components/Workflow.cjs.js +4 -4
  159. package/dist/components/Workflow.es.js +4 -4
  160. package/dist/components/ai/ask-user.cjs.js +1 -1
  161. package/dist/components/ai/ask-user.es.js +1 -1
  162. package/dist/components/ai/chat-event.cjs.js +3 -3
  163. package/dist/components/ai/chat-event.es.js +4 -4
  164. package/dist/components/ai/plan.cjs.js +2 -2
  165. package/dist/components/ai/plan.es.js +2 -2
  166. package/dist/components/ai/tool-approval.cjs.js +1 -1
  167. package/dist/components/ai/tool-approval.es.js +1 -1
  168. package/dist/components/ai/tool-call.cjs.js +2 -2
  169. package/dist/components/ai/tool-call.es.js +3 -3
  170. package/dist/{copy-button-B5ZCtnTb.cjs → copy-button-D2MTGxq_.cjs} +2 -2
  171. package/dist/{copy-button-B5ZCtnTb.cjs.map → copy-button-D2MTGxq_.cjs.map} +1 -1
  172. package/dist/{copy-button-DZqxEuiE.js → copy-button-DcZ1mdw4.js} +2 -2
  173. package/dist/{copy-button-DZqxEuiE.js.map → copy-button-DcZ1mdw4.js.map} +1 -1
  174. package/dist/{data-code-section-iXzoOYMX.cjs → data-code-section-C10eY4qv.cjs} +5 -5
  175. package/dist/{data-code-section-iXzoOYMX.cjs.map → data-code-section-C10eY4qv.cjs.map} +1 -1
  176. package/dist/{data-code-section-DJRr65hS.js → data-code-section-CW9vy-nF.js} +5 -5
  177. package/dist/{data-code-section-DJRr65hS.js.map → data-code-section-CW9vy-nF.js.map} +1 -1
  178. package/dist/{data-keys-and-values-DhC4U4Yl.js → data-keys-and-values-BTYDB-K2.js} +3 -20
  179. package/dist/data-keys-and-values-BTYDB-K2.js.map +1 -0
  180. package/dist/{data-keys-and-values-BduKvvC5.cjs → data-keys-and-values-CMJ9zHKm.cjs} +3 -20
  181. package/dist/data-keys-and-values-CMJ9zHKm.cjs.map +1 -0
  182. package/dist/{data-list-DSbuTWLI.cjs → data-list-CH3HAhK5.cjs} +5 -5
  183. package/dist/data-list-CH3HAhK5.cjs.map +1 -0
  184. package/dist/{data-list-Cn0Ls4l2.js → data-list-DXjH5wkB.js} +5 -5
  185. package/dist/data-list-DXjH5wkB.js.map +1 -0
  186. package/dist/{data-list-spacer-C0YimRXC.js → data-list-spacer-BQ4_YeyT.js} +2 -2
  187. package/dist/{data-list-spacer-C0YimRXC.js.map → data-list-spacer-BQ4_YeyT.js.map} +1 -1
  188. package/dist/{data-list-spacer-DUBpzv_H.cjs → data-list-spacer-GIVW2hB1.cjs} +2 -2
  189. package/dist/{data-list-spacer-DUBpzv_H.cjs.map → data-list-spacer-GIVW2hB1.cjs.map} +1 -1
  190. package/dist/{data-panel-Bd_Xsz-W.cjs → data-panel-BG7wlPAX.cjs} +3 -3
  191. package/dist/{data-panel-Bd_Xsz-W.cjs.map → data-panel-BG7wlPAX.cjs.map} +1 -1
  192. package/dist/{data-panel-Y7wD0xlR.js → data-panel-Dclh0gKS.js} +3 -3
  193. package/dist/{data-panel-Y7wD0xlR.js.map → data-panel-Dclh0gKS.js.map} +1 -1
  194. package/dist/{date-time-range-picker-D2g3RU5B.cjs → date-time-range-picker-CiWpvWGR.cjs} +3 -3
  195. package/dist/{date-time-range-picker-D2g3RU5B.cjs.map → date-time-range-picker-CiWpvWGR.cjs.map} +1 -1
  196. package/dist/{date-time-range-picker-Cb86jLFc.js → date-time-range-picker-YGP0bTkl.js} +3 -3
  197. package/dist/{date-time-range-picker-Cb86jLFc.js.map → date-time-range-picker-YGP0bTkl.js.map} +1 -1
  198. package/dist/{dialog-Bilo4jEU.cjs → dialog-B2DGYuyi.cjs} +2 -2
  199. package/dist/{dialog-Bilo4jEU.cjs.map → dialog-B2DGYuyi.cjs.map} +1 -1
  200. package/dist/{dialog-DMOXPT0N.js → dialog-BvDeW4yR.js} +2 -2
  201. package/dist/{dialog-DMOXPT0N.js.map → dialog-BvDeW4yR.js.map} +1 -1
  202. package/dist/domains/auth/components/permission-denied.cjs.js +22 -0
  203. package/dist/domains/auth/components/permission-denied.cjs.js.map +1 -0
  204. package/dist/domains/auth/components/permission-denied.d.ts +2 -0
  205. package/dist/domains/auth/components/permission-denied.es.js +18 -0
  206. package/dist/domains/auth/components/permission-denied.es.js.map +1 -0
  207. package/dist/domains/auth/components/session-expired.cjs.js +40 -0
  208. package/dist/domains/auth/components/session-expired.cjs.js.map +1 -0
  209. package/dist/domains/auth/components/session-expired.d.ts +2 -0
  210. package/dist/domains/auth/components/session-expired.es.js +36 -0
  211. package/dist/domains/auth/components/session-expired.es.js.map +1 -0
  212. package/dist/domains/auth/services/sso-login.cjs.js +28 -0
  213. package/dist/domains/auth/services/sso-login.cjs.js.map +1 -0
  214. package/dist/domains/auth/services/sso-login.d.ts +2 -0
  215. package/dist/domains/auth/services/sso-login.es.js +24 -0
  216. package/dist/domains/auth/services/sso-login.es.js.map +1 -0
  217. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -3
  218. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js.map +1 -1
  219. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -3
  220. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js.map +1 -1
  221. package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -2
  222. package/dist/domains/chat/attachments/composer-attachment.cjs.js.map +1 -1
  223. package/dist/domains/chat/attachments/composer-attachment.es.js +1 -2
  224. package/dist/domains/chat/attachments/composer-attachment.es.js.map +1 -1
  225. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  226. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  227. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +3 -3
  228. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +3 -3
  229. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  230. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  231. package/dist/domains/chat/messages/reasoning.cjs.js +1 -1
  232. package/dist/domains/chat/messages/reasoning.es.js +1 -1
  233. package/dist/domains/chat/messages/renderers/message-text.cjs.js +2 -2
  234. package/dist/domains/chat/messages/renderers/message-text.es.js +2 -2
  235. package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
  236. package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
  237. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  238. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  239. package/dist/domains/chat/messages/tripwire-notice.cjs.js +1 -1
  240. package/dist/domains/chat/messages/tripwire-notice.es.js +1 -1
  241. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  242. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  243. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
  244. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  245. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
  246. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
  247. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  248. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  249. package/dist/domains/chat/tools/badges/tool-approval-buttons.cjs.js +1 -1
  250. package/dist/domains/chat/tools/badges/tool-approval-buttons.es.js +1 -1
  251. package/dist/domains/logs/components/log-details-view.cjs.js +2 -2
  252. package/dist/domains/logs/components/log-details-view.es.js +2 -2
  253. package/dist/domains/logs/components/logs-error-content.cjs.js +6 -7
  254. package/dist/domains/logs/components/logs-error-content.cjs.js.map +1 -1
  255. package/dist/domains/logs/components/logs-error-content.es.js +4 -5
  256. package/dist/domains/logs/components/logs-error-content.es.js.map +1 -1
  257. package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
  258. package/dist/domains/logs/components/logs-list-view.es.js +1 -1
  259. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  260. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  261. package/dist/domains/logs/components/no-logs-info.cjs.js +2 -2
  262. package/dist/domains/logs/components/no-logs-info.es.js +2 -2
  263. package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
  264. package/dist/domains/memory/components/flame-graph.es.js +1 -1
  265. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  266. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  267. package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -1
  268. package/dist/domains/memory/components/observation-detail-view.es.js +1 -1
  269. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  270. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  271. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  272. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  273. package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
  274. package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
  275. package/dist/domains/metrics/components/latency-card-view.cjs.js +4 -4
  276. package/dist/domains/metrics/components/latency-card-view.es.js +4 -4
  277. package/dist/domains/metrics/components/memory-card-view.cjs.js +5 -5
  278. package/dist/domains/metrics/components/memory-card-view.es.js +5 -5
  279. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +2 -2
  280. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +2 -2
  281. package/dist/domains/metrics/components/scores-card-view.cjs.js +5 -5
  282. package/dist/domains/metrics/components/scores-card-view.es.js +5 -5
  283. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +4 -4
  284. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +4 -4
  285. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +4 -4
  286. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +4 -4
  287. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +4 -4
  288. package/dist/domains/metrics/components/traces-volume-card-view.es.js +4 -4
  289. package/dist/domains/traces/components/no-traces-info.cjs.js +1 -1
  290. package/dist/domains/traces/components/no-traces-info.es.js +1 -1
  291. package/dist/domains/traces/components/span-data-panel-view.cjs.js +19 -8
  292. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  293. package/dist/domains/traces/components/span-data-panel-view.es.js +20 -9
  294. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  295. package/dist/domains/traces/components/span-details-view.cjs.js +5 -3
  296. package/dist/domains/traces/components/span-details-view.cjs.js.map +1 -1
  297. package/dist/domains/traces/components/span-details-view.es.js +6 -4
  298. package/dist/domains/traces/components/span-details-view.es.js.map +1 -1
  299. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +3 -3
  300. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +3 -3
  301. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +5 -3
  302. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js.map +1 -1
  303. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +5 -3
  304. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js.map +1 -1
  305. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +13 -12
  306. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js.map +1 -1
  307. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +7 -6
  308. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js.map +1 -1
  309. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +1 -1
  310. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +1 -1
  311. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  312. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  313. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +79 -0
  314. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js.map +1 -0
  315. package/dist/domains/traces/components/span-payload/span-payload-processor.d.ts +2 -0
  316. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +75 -0
  317. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js.map +1 -0
  318. package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js +2 -0
  319. package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js.map +1 -1
  320. package/dist/domains/traces/components/span-payload/span-payload-registry.es.js +2 -1
  321. package/dist/domains/traces/components/span-payload/span-payload-registry.es.js.map +1 -1
  322. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +2 -2
  323. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +2 -2
  324. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  325. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  326. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +85 -0
  327. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js.map +1 -0
  328. package/dist/domains/traces/components/span-payload/span-processor-attributes.d.ts +2 -0
  329. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +81 -0
  330. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js.map +1 -0
  331. package/dist/domains/traces/components/span-payload.cjs.js +4 -0
  332. package/dist/domains/traces/components/span-payload.cjs.js.map +1 -1
  333. package/dist/domains/traces/components/span-payload.es.js +2 -0
  334. package/dist/domains/traces/components/span-payload.es.js.map +1 -1
  335. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  336. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  337. package/dist/domains/traces/components/span-timing-hover-card.cjs.js +1 -1
  338. package/dist/domains/traces/components/span-timing-hover-card.es.js +1 -1
  339. package/dist/domains/traces/components/span-token-usage.cjs.js +1 -1
  340. package/dist/domains/traces/components/span-token-usage.es.js +1 -1
  341. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  342. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  343. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +4 -4
  344. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +4 -4
  345. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +1 -1
  346. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +1 -1
  347. package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
  348. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  349. package/dist/domains/traces/components/trace-columns-menu.es.js +4 -4
  350. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  351. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +12 -16
  352. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  353. package/dist/domains/traces/components/trace-data-panel-view.es.js +12 -16
  354. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  355. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  356. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  357. package/dist/domains/traces/components/trace-summary-description.cjs.js +8 -1
  358. package/dist/domains/traces/components/trace-summary-description.cjs.js.map +1 -1
  359. package/dist/domains/traces/components/trace-summary-description.es.js +8 -1
  360. package/dist/domains/traces/components/trace-summary-description.es.js.map +1 -1
  361. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  362. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  363. package/dist/domains/traces/components/traces-error-content.cjs.js +6 -6
  364. package/dist/domains/traces/components/traces-error-content.cjs.js.map +1 -1
  365. package/dist/domains/traces/components/traces-error-content.es.js +4 -4
  366. package/dist/domains/traces/components/traces-error-content.es.js.map +1 -1
  367. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
  368. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
  369. package/dist/domains/traces/components/traces-list-view.cjs.js +2 -2
  370. package/dist/domains/traces/components/traces-list-view.es.js +2 -2
  371. package/dist/domains/traces/components.cjs.js +4 -2
  372. package/dist/domains/traces/components.cjs.js.map +1 -1
  373. package/dist/domains/traces/components.es.js +2 -1
  374. package/dist/domains/traces/components.es.js.map +1 -1
  375. package/dist/domains/traces.cjs.js +4 -2
  376. package/dist/domains/traces.cjs.js.map +1 -1
  377. package/dist/domains/traces.es.js +2 -1
  378. package/dist/domains/traces.es.js.map +1 -1
  379. package/dist/{drawer-B6Ftum77.cjs → drawer-CmzM8WKh.cjs} +2 -2
  380. package/dist/{drawer-B6Ftum77.cjs.map → drawer-CmzM8WKh.cjs.map} +1 -1
  381. package/dist/{drawer-CnCsgToD.js → drawer-b_iqX4G0.js} +2 -2
  382. package/dist/{drawer-CnCsgToD.js.map → drawer-b_iqX4G0.js.map} +1 -1
  383. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +1 -1
  384. package/dist/ee/signals/components/entity-index-compact-grid.es.js +1 -1
  385. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
  386. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  387. package/dist/ee/signals/components/signals-empty-state.cjs.js +2 -3
  388. package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -1
  389. package/dist/ee/signals/components/signals-empty-state.es.js +2 -3
  390. package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -1
  391. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +1 -1
  392. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +1 -1
  393. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +11 -12
  394. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  395. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +9 -10
  396. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  397. package/dist/ee/signals/examples-pager.cjs.js +1 -3
  398. package/dist/ee/signals/examples-pager.cjs.js.map +1 -1
  399. package/dist/ee/signals/examples-pager.es.js +1 -3
  400. package/dist/ee/signals/examples-pager.es.js.map +1 -1
  401. package/dist/ee/signals/flow-card.cjs.js +1 -1
  402. package/dist/ee/signals/flow-card.es.js +1 -1
  403. package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
  404. package/dist/ee/signals/noise-detail-panel.es.js +1 -1
  405. package/dist/ee/signals/sankey-signals.cjs.js +1 -1
  406. package/dist/ee/signals/sankey-signals.es.js +1 -1
  407. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +3 -3
  408. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +3 -3
  409. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +2 -2
  410. package/dist/ee/signals/settings/trace-signal-settings.es.js +2 -2
  411. package/dist/ee/signals/signals-error-state.cjs.js +2 -2
  412. package/dist/ee/signals/signals-error-state.cjs.js.map +1 -1
  413. package/dist/ee/signals/signals-error-state.es.js +2 -2
  414. package/dist/ee/signals/signals-error-state.es.js.map +1 -1
  415. package/dist/ee/signals/snapshot-timeline.cjs.js +1 -2
  416. package/dist/ee/signals/snapshot-timeline.cjs.js.map +1 -1
  417. package/dist/ee/signals/snapshot-timeline.es.js +1 -2
  418. package/dist/ee/signals/snapshot-timeline.es.js.map +1 -1
  419. package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
  420. package/dist/ee/signals/theme-detail-panel.es.js +1 -1
  421. package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
  422. package/dist/ee/signals/theme-filter-banner.es.js +1 -1
  423. package/dist/ee/signals/trace-insight-view.cjs.js +3 -12
  424. package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -1
  425. package/dist/ee/signals/trace-insight-view.es.js +3 -12
  426. package/dist/ee/signals/trace-insight-view.es.js.map +1 -1
  427. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  428. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  429. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +10 -19
  430. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js.map +1 -1
  431. package/dist/ee/topics/components/topic-trace-summary-list.es.js +10 -19
  432. package/dist/ee/topics/components/topic-trace-summary-list.es.js.map +1 -1
  433. package/dist/{filter-bar-chip-B_k_vbip.cjs → filter-bar-chip-Y_lejyj9.cjs} +3 -3
  434. package/dist/{filter-bar-chip-B_k_vbip.cjs.map → filter-bar-chip-Y_lejyj9.cjs.map} +1 -1
  435. package/dist/{filter-bar-chip-BlvuAPve.js → filter-bar-chip-yvB9JA0r.js} +3 -3
  436. package/dist/{filter-bar-chip-BlvuAPve.js.map → filter-bar-chip-yvB9JA0r.js.map} +1 -1
  437. package/dist/hooks/use-fluid-hover.cjs.js +2 -4
  438. package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
  439. package/dist/hooks/use-fluid-hover.es.js +2 -4
  440. package/dist/hooks/use-fluid-hover.es.js.map +1 -1
  441. package/dist/{input-group-DaIV9Orp.cjs → input-group-Dt7PI7Bh.cjs} +2 -2
  442. package/dist/{input-group-DaIV9Orp.cjs.map → input-group-Dt7PI7Bh.cjs.map} +1 -1
  443. package/dist/{input-group-B-pskRGt.js → input-group-QyOyAe2m.js} +2 -2
  444. package/dist/{input-group-B-pskRGt.js.map → input-group-QyOyAe2m.js.map} +1 -1
  445. package/dist/layout/tabbed-container.cjs.js +6 -6
  446. package/dist/layout/tabbed-container.es.js +6 -6
  447. package/dist/{list-search-DhReauU5.cjs → list-search-CspJ7pQa.cjs} +2 -2
  448. package/dist/{list-search-DhReauU5.cjs.map → list-search-CspJ7pQa.cjs.map} +1 -1
  449. package/dist/{list-search-DK2yMiME.js → list-search-hX4N3d_Y.js} +2 -2
  450. package/dist/{list-search-DK2yMiME.js.map → list-search-hX4N3d_Y.js.map} +1 -1
  451. package/dist/{logs-data-list-DgoCLb6k.cjs → logs-data-list-BGJTRyO_.cjs} +2 -2
  452. package/dist/{logs-data-list-DgoCLb6k.cjs.map → logs-data-list-BGJTRyO_.cjs.map} +1 -1
  453. package/dist/{logs-data-list-B24gfDle.js → logs-data-list-XU1hCwI5.js} +2 -2
  454. package/dist/{logs-data-list-B24gfDle.js.map → logs-data-list-XU1hCwI5.js.map} +1 -1
  455. package/dist/{main-sidebar-DYfRxFn4.cjs → main-sidebar-link-active-CYZwvfPC.cjs} +5 -118
  456. package/dist/main-sidebar-link-active-CYZwvfPC.cjs.map +1 -0
  457. package/dist/{main-sidebar-Cf5G9iaC.js → main-sidebar-link-active-NW5N8nMT.js} +7 -119
  458. package/dist/main-sidebar-link-active-NW5N8nMT.js.map +1 -0
  459. package/dist/{markdown-renderer-BUqHHH4y.js → markdown-renderer-4cVz18hI.js} +3 -3
  460. package/dist/{markdown-renderer-BUqHHH4y.js.map → markdown-renderer-4cVz18hI.js.map} +1 -1
  461. package/dist/{markdown-renderer-CZLwgva-.cjs → markdown-renderer-zbO5SMQg.cjs} +3 -3
  462. package/dist/{markdown-renderer-CZLwgva-.cjs.map → markdown-renderer-zbO5SMQg.cjs.map} +1 -1
  463. package/dist/{metrics-card-CN4VRQQJ.js → metrics-card-Bzm6m1dy.js} +3 -3
  464. package/dist/{metrics-card-CN4VRQQJ.js.map → metrics-card-Bzm6m1dy.js.map} +1 -1
  465. package/dist/{metrics-card-DStXI6yn.cjs → metrics-card-DCCHIG-z.cjs} +3 -3
  466. package/dist/{metrics-card-DStXI6yn.cjs.map → metrics-card-DCCHIG-z.cjs.map} +1 -1
  467. package/dist/{metrics-kpi-card-CvOXyEGn.cjs → metrics-kpi-card-Bhb4R4z0.cjs} +2 -2
  468. package/dist/{metrics-kpi-card-CvOXyEGn.cjs.map → metrics-kpi-card-Bhb4R4z0.cjs.map} +1 -1
  469. package/dist/{metrics-kpi-card-C-XLN_Us.js → metrics-kpi-card-BrnFhFQm.js} +2 -2
  470. package/dist/{metrics-kpi-card-C-XLN_Us.js.map → metrics-kpi-card-BrnFhFQm.js.map} +1 -1
  471. package/dist/new/layout/app-shell.cjs.js +13 -0
  472. package/dist/new/layout/app-shell.cjs.js.map +1 -1
  473. package/dist/new/layout/app-shell.es.js +13 -1
  474. package/dist/new/layout/app-shell.es.js.map +1 -1
  475. package/dist/new/layout/page-header.cjs.js +1 -1
  476. package/dist/new/layout/page-header.es.js +1 -1
  477. package/dist/new/settings.cjs.js +42 -2
  478. package/dist/new/settings.cjs.js.map +1 -1
  479. package/dist/new/settings.es.js +43 -3
  480. package/dist/new/settings.es.js.map +1 -1
  481. package/dist/new/sidebar.cjs.js +33 -33
  482. package/dist/new/sidebar.cjs.js.map +1 -1
  483. package/dist/new/sidebar.es.js +3 -3
  484. package/dist/new/sidebar.es.js.map +1 -1
  485. package/dist/{page-header-CSigVThQ.js → page-header-CyXAezlZ.js} +25 -26
  486. package/dist/page-header-CyXAezlZ.js.map +1 -0
  487. package/dist/{page-header-DzEEkOca.cjs → page-header-Dk3s3XtC.cjs} +25 -26
  488. package/dist/page-header-Dk3s3XtC.cjs.map +1 -0
  489. package/dist/primitives/control-size.cjs.js +1 -2
  490. package/dist/primitives/control-size.cjs.js.map +1 -1
  491. package/dist/primitives/control-size.es.js +1 -2
  492. package/dist/primitives/control-size.es.js.map +1 -1
  493. package/dist/primitives/form-element.cjs.js +0 -2
  494. package/dist/primitives/form-element.cjs.js.map +1 -1
  495. package/dist/primitives/form-element.es.js +1 -2
  496. package/dist/primitives/form-element.es.js.map +1 -1
  497. package/dist/primitives/menu-item.cjs.js +1 -1
  498. package/dist/primitives/menu-item.cjs.js.map +1 -1
  499. package/dist/primitives/menu-item.es.js +1 -1
  500. package/dist/primitives/menu-item.es.js.map +1 -1
  501. package/dist/primitives/trigger-button.cjs.js +1 -1
  502. package/dist/primitives/trigger-button.es.js +1 -1
  503. package/dist/{property-filter-applied-uYr-sCdm.js → property-filter-applied-CVVhhWGf.js} +2 -2
  504. package/dist/{property-filter-applied-uYr-sCdm.js.map → property-filter-applied-CVVhhWGf.js.map} +1 -1
  505. package/dist/{property-filter-applied-DxSZN3Om.cjs → property-filter-applied-DEeqrI0g.cjs} +2 -2
  506. package/dist/{property-filter-applied-DxSZN3Om.cjs.map → property-filter-applied-DEeqrI0g.cjs.map} +1 -1
  507. package/dist/resize/panel-drawer.cjs.js +1 -1
  508. package/dist/resize/panel-drawer.es.js +1 -1
  509. package/dist/{search-field-block-Bg9GPPaA.cjs → search-field-block-D34NmyvF.cjs} +2 -2
  510. package/dist/{search-field-block-Bg9GPPaA.cjs.map → search-field-block-D34NmyvF.cjs.map} +1 -1
  511. package/dist/{search-field-block-B0twxGWI.js → search-field-block-DCWcRx4k.js} +2 -2
  512. package/dist/{search-field-block-B0twxGWI.js.map → search-field-block-DCWcRx4k.js.map} +1 -1
  513. package/dist/{select-65j5NjtJ.cjs → select-DjXJeDlO.cjs} +2 -2
  514. package/dist/select-DjXJeDlO.cjs.map +1 -0
  515. package/dist/{select-BiY-SoMJ.js → select-TslOr65J.js} +2 -2
  516. package/dist/select-TslOr65J.js.map +1 -0
  517. package/dist/{select-field-block-D_b9N7od.js → select-field-block-660lYYtx.js} +2 -2
  518. package/dist/{select-field-block-D_b9N7od.js.map → select-field-block-660lYYtx.js.map} +1 -1
  519. package/dist/{select-field-block-CZbN1w__.cjs → select-field-block-BPSwJ76v.cjs} +2 -2
  520. package/dist/{select-field-block-CZbN1w__.cjs.map → select-field-block-BPSwJ76v.cjs.map} +1 -1
  521. package/dist/{span-payload-primitives-DlIOpCII.js → span-payload-primitives-DIIZ42fv.js} +3 -3
  522. package/dist/{span-payload-primitives-DlIOpCII.js.map → span-payload-primitives-DIIZ42fv.js.map} +1 -1
  523. package/dist/{span-payload-primitives-BjBTICfq.cjs → span-payload-primitives-c6C46Zp1.cjs} +3 -3
  524. package/dist/{span-payload-primitives-BjBTICfq.cjs.map → span-payload-primitives-c6C46Zp1.cjs.map} +1 -1
  525. package/dist/src/domains/auth/components/permission-denied.d.ts +6 -0
  526. package/dist/src/{ds/components/PermissionDenied → domains/auth/components}/permission-denied.stories.d.ts +1 -3
  527. package/dist/src/domains/auth/components/session-expired.d.ts +5 -0
  528. package/dist/src/{ds/components/SessionExpired → domains/auth/components}/session-expired.stories.d.ts +1 -2
  529. package/dist/src/domains/auth/services/sso-login.d.ts +7 -0
  530. package/dist/src/domains/logs/components/logs-error-content.d.ts +2 -2
  531. package/dist/src/domains/traces/components/index.d.ts +0 -1
  532. package/dist/src/domains/traces/components/span-payload/index.d.ts +2 -0
  533. package/dist/src/domains/traces/components/span-payload/span-payload-processor.d.ts +10 -0
  534. package/dist/src/domains/traces/components/span-payload/span-payload-registry.d.ts +1 -0
  535. package/dist/src/domains/traces/components/span-payload/span-payload.stories.d.ts +2 -0
  536. package/dist/src/domains/traces/components/span-payload/span-processor-attributes.d.ts +10 -0
  537. package/dist/src/domains/traces/components/trace-data-panel-view.stories.d.ts +94 -0
  538. package/dist/src/domains/traces/components/trace-summary-description.d.ts +1 -0
  539. package/dist/src/domains/traces/components/traces-error-content.d.ts +2 -2
  540. package/dist/src/ds/components/Button/Button.d.ts +1 -1
  541. package/dist/src/ds/components/ButtonsGroup/buttons-group.stories.d.ts +2 -2
  542. package/dist/src/ds/components/Columns/column-root.d.ts +1 -3
  543. package/dist/src/ds/components/Columns/columns.stories.d.ts +0 -1
  544. package/dist/src/ds/components/Columns/index.d.ts +0 -1
  545. package/dist/src/ds/components/Combobox/combobox-styles.d.ts +1 -2
  546. package/dist/src/ds/components/DataKeysAndValues/data-keys-and-values-root.d.ts +1 -2
  547. package/dist/src/ds/components/DataKeysAndValues/data-keys-and-values.stories.d.ts +1 -2
  548. package/dist/src/ds/components/EmptyState/EmptyState.d.ts +6 -2
  549. package/dist/src/ds/components/EmptyState/empty-state.stories.d.ts +1 -0
  550. package/dist/src/ds/components/PageLayout/page-layout.d.ts +8 -3
  551. package/dist/src/ds/components/PageLayout/page-layout.stories.d.ts +3 -0
  552. package/dist/src/ds/components/Select/select.d.ts +3 -4
  553. package/dist/src/ds/components/Select/select.stories.d.ts +2 -2
  554. package/dist/src/ds/new/layout/app-shell/index.d.ts +1 -0
  555. package/dist/src/ds/new/layout/app-shell/main-card.d.ts +5 -0
  556. package/dist/src/ds/new/settings/index.d.ts +1 -1
  557. package/dist/src/ds/new/settings/settings.stories.d.ts +2 -0
  558. package/dist/src/ds/primitives/control-size.d.ts +1 -1
  559. package/dist/src/ds/primitives/form-element.d.ts +0 -1
  560. package/dist/src/hooks/stories/browser/use-autoscroll.stories.d.ts +22 -0
  561. package/dist/src/hooks/stories/browser/use-copy-to-clipboard.stories.d.ts +22 -0
  562. package/dist/src/hooks/stories/browser/use-fluid-hover.stories.d.ts +17 -0
  563. package/dist/src/hooks/stories/browser/use-in-view.stories.d.ts +17 -0
  564. package/dist/src/hooks/stories/browser/use-is-apple-platform.stories.d.ts +17 -0
  565. package/dist/src/hooks/stories/browser/use-is-mobile.stories.d.ts +32 -0
  566. package/dist/src/hooks/stories/browser/use-isomorphic-layout-effect.stories.d.ts +32 -0
  567. package/dist/src/hooks/stories/browser/use-keyboard-shortcut-label.stories.d.ts +22 -0
  568. package/dist/src/hooks/stories/browser/use-register-fluid-hover-item.stories.d.ts +17 -0
  569. package/dist/src/hooks/stories/environment/use-custom-environment-variables-editor.stories.d.ts +17 -0
  570. package/dist/src/hooks/stories/environment/use-environment-variables-editor.stories.d.ts +17 -0
  571. package/dist/src/hooks/stories/state/use-debounced-value.stories.d.ts +32 -0
  572. package/dist/src/hooks/stories/state/use-expiring-local-storage-state.stories.d.ts +17 -0
  573. package/dist/src/hooks/stories/state/use-local-storage-state.stories.d.ts +17 -0
  574. package/dist/src/hooks/stories/text/use-is-clamped.stories.d.ts +17 -0
  575. package/dist/src/hooks/stories/text/use-measured-auto-height.stories.d.ts +17 -0
  576. package/dist/src/hooks/stories/text/use-scroll-to-first-highlight.stories.d.ts +17 -0
  577. package/dist/src/hooks/stories/text/use-text-highlight.stories.d.ts +17 -0
  578. package/dist/src/lib/keyboard/use-keyboard-scope-depth.stories.d.ts +17 -0
  579. package/dist/src/lib/keyboard/use-keyboard-shortcuts-context.stories.d.ts +17 -0
  580. package/dist/src/lib/keyboard/use-table-keydown.stories.d.ts +15 -0
  581. package/dist/style.css +28 -91
  582. package/dist/{tabs-content-DMrffE9p.js → tabs-content-7ODUUdQ0.js} +2 -2
  583. package/dist/{tabs-content-DMrffE9p.js.map → tabs-content-7ODUUdQ0.js.map} +1 -1
  584. package/dist/{tabs-content-CuUlcS67.cjs → tabs-content-DlCJoQUW.cjs} +2 -2
  585. package/dist/{tabs-content-CuUlcS67.cjs.map → tabs-content-DlCJoQUW.cjs.map} +1 -1
  586. package/dist/{tabs-root-DrK1hxeV.cjs → tabs-root-COCL6jcx.cjs} +2 -2
  587. package/dist/{tabs-root-DrK1hxeV.cjs.map → tabs-root-COCL6jcx.cjs.map} +1 -1
  588. package/dist/{tabs-root-B2sdkQ3A.js → tabs-root-UNPxoGhW.js} +2 -2
  589. package/dist/{tabs-root-B2sdkQ3A.js.map → tabs-root-UNPxoGhW.js.map} +1 -1
  590. package/dist/{tabs-tab-ClmulJmM.cjs → tabs-tab-DFmRMdi3.cjs} +2 -2
  591. package/dist/{tabs-tab-ClmulJmM.cjs.map → tabs-tab-DFmRMdi3.cjs.map} +1 -1
  592. package/dist/{tabs-tab-u6LS5twu.js → tabs-tab-DluwCnDF.js} +2 -2
  593. package/dist/{tabs-tab-u6LS5twu.js.map → tabs-tab-DluwCnDF.js.map} +1 -1
  594. package/dist/{time-picker-PXFCgAuR.cjs → time-picker-BokshW_l.cjs} +2 -2
  595. package/dist/{time-picker-PXFCgAuR.cjs.map → time-picker-BokshW_l.cjs.map} +1 -1
  596. package/dist/{time-picker-DMroqHbw.js → time-picker-D0GksHc0.js} +2 -2
  597. package/dist/{time-picker-DMroqHbw.js.map → time-picker-D0GksHc0.js.map} +1 -1
  598. package/dist/{tool-approval-DzOGIKRh.js → tool-approval-DXUFyrSl.js} +2 -2
  599. package/dist/{tool-approval-DzOGIKRh.js.map → tool-approval-DXUFyrSl.js.map} +1 -1
  600. package/dist/{tool-approval-DYX_ZNWc.cjs → tool-approval-LIy1nZZJ.cjs} +2 -2
  601. package/dist/{tool-approval-DYX_ZNWc.cjs.map → tool-approval-LIy1nZZJ.cjs.map} +1 -1
  602. package/dist/{tool-call-HNNRcirD.js → tool-call-Bs-9Cah5.js} +2 -2
  603. package/dist/{tool-call-HNNRcirD.js.map → tool-call-Bs-9Cah5.js.map} +1 -1
  604. package/dist/{tool-call-vZeZ5XT5.cjs → tool-call-C0JeHe8Z.cjs} +2 -2
  605. package/dist/{tool-call-vZeZ5XT5.cjs.map → tool-call-C0JeHe8Z.cjs.map} +1 -1
  606. package/dist/{traces-data-list-DHrC158-.js → traces-data-list-Cjy5a-1f.js} +3 -3
  607. package/dist/{traces-data-list-DHrC158-.js.map → traces-data-list-Cjy5a-1f.js.map} +1 -1
  608. package/dist/{traces-data-list-DNOtQze4.cjs → traces-data-list-DLeKSbaZ.cjs} +3 -3
  609. package/dist/{traces-data-list-DNOtQze4.cjs.map → traces-data-list-DLeKSbaZ.cjs.map} +1 -1
  610. package/package.json +13 -13
  611. package/dist/Button-KUj0U-5I.js.map +0 -1
  612. package/dist/Button-MMZPEb_q.cjs.map +0 -1
  613. package/dist/Card-B_buJ5yF.js.map +0 -1
  614. package/dist/Card-DwGasv0K.cjs.map +0 -1
  615. package/dist/EmptyState-B6cyZw6m.js.map +0 -1
  616. package/dist/EmptyState-DiSP6UIy.cjs.map +0 -1
  617. package/dist/ErrorState-B0839u-q.cjs +0 -21
  618. package/dist/ErrorState-B0839u-q.cjs.map +0 -1
  619. package/dist/ErrorState-HyRJdaA2.js +0 -19
  620. package/dist/ErrorState-HyRJdaA2.js.map +0 -1
  621. package/dist/PermissionDenied-CTqnE57B.js +0 -27
  622. package/dist/PermissionDenied-CTqnE57B.js.map +0 -1
  623. package/dist/PermissionDenied-fdVmTjjf.cjs +0 -29
  624. package/dist/PermissionDenied-fdVmTjjf.cjs.map +0 -1
  625. package/dist/SessionExpired-B9e1Kx4I.js +0 -44
  626. package/dist/SessionExpired-B9e1Kx4I.js.map +0 -1
  627. package/dist/SessionExpired-GSQkcV9f.cjs +0 -46
  628. package/dist/SessionExpired-GSQkcV9f.cjs.map +0 -1
  629. package/dist/combobox-styles-CSsS2LEx.cjs.map +0 -1
  630. package/dist/combobox-styles-iuJUkJEQ.js.map +0 -1
  631. package/dist/components/DataFilter.cjs.js +0 -173
  632. package/dist/components/DataFilter.cjs.js.map +0 -1
  633. package/dist/components/DataFilter.d.ts +0 -2
  634. package/dist/components/DataFilter.es.js +0 -169
  635. package/dist/components/DataFilter.es.js.map +0 -1
  636. package/dist/components/ErrorState.cjs.js +0 -10
  637. package/dist/components/ErrorState.cjs.js.map +0 -1
  638. package/dist/components/ErrorState.d.ts +0 -2
  639. package/dist/components/ErrorState.es.js +0 -2
  640. package/dist/components/ErrorState.es.js.map +0 -1
  641. package/dist/components/PermissionDenied.cjs.js +0 -10
  642. package/dist/components/PermissionDenied.cjs.js.map +0 -1
  643. package/dist/components/PermissionDenied.d.ts +0 -2
  644. package/dist/components/PermissionDenied.es.js +0 -2
  645. package/dist/components/PermissionDenied.es.js.map +0 -1
  646. package/dist/components/Sections.cjs.js +0 -13
  647. package/dist/components/Sections.cjs.js.map +0 -1
  648. package/dist/components/Sections.d.ts +0 -2
  649. package/dist/components/Sections.es.js +0 -9
  650. package/dist/components/Sections.es.js.map +0 -1
  651. package/dist/components/SessionExpired.cjs.js +0 -10
  652. package/dist/components/SessionExpired.cjs.js.map +0 -1
  653. package/dist/components/SessionExpired.d.ts +0 -2
  654. package/dist/components/SessionExpired.es.js +0 -2
  655. package/dist/components/SessionExpired.es.js.map +0 -1
  656. package/dist/components/SettingsLayout.cjs.js +0 -10
  657. package/dist/components/SettingsLayout.cjs.js.map +0 -1
  658. package/dist/components/SettingsLayout.d.ts +0 -2
  659. package/dist/components/SettingsLayout.es.js +0 -2
  660. package/dist/components/SettingsLayout.es.js.map +0 -1
  661. package/dist/data-keys-and-values-BduKvvC5.cjs.map +0 -1
  662. package/dist/data-keys-and-values-DhC4U4Yl.js.map +0 -1
  663. package/dist/data-list-Cn0Ls4l2.js.map +0 -1
  664. package/dist/data-list-DSbuTWLI.cjs.map +0 -1
  665. package/dist/domains/traces/components/trace-keys-and-values.cjs.js +0 -70
  666. package/dist/domains/traces/components/trace-keys-and-values.cjs.js.map +0 -1
  667. package/dist/domains/traces/components/trace-keys-and-values.d.ts +0 -2
  668. package/dist/domains/traces/components/trace-keys-and-values.es.js +0 -66
  669. package/dist/domains/traces/components/trace-keys-and-values.es.js.map +0 -1
  670. package/dist/main-sidebar-Cf5G9iaC.js.map +0 -1
  671. package/dist/main-sidebar-DYfRxFn4.cjs.map +0 -1
  672. package/dist/page-header-CSigVThQ.js.map +0 -1
  673. package/dist/page-header-DzEEkOca.cjs.map +0 -1
  674. package/dist/select-65j5NjtJ.cjs.map +0 -1
  675. package/dist/select-BiY-SoMJ.js.map +0 -1
  676. package/dist/settings-layout-BGvMSClL.cjs +0 -49
  677. package/dist/settings-layout-BGvMSClL.cjs.map +0 -1
  678. package/dist/settings-layout-DA-JWqW3.js +0 -47
  679. package/dist/settings-layout-DA-JWqW3.js.map +0 -1
  680. package/dist/src/domains/traces/components/trace-keys-and-values.d.ts +0 -24
  681. package/dist/src/domains/traces/components/trace-keys-and-values.stories.d.ts +0 -28
  682. package/dist/src/ds/components/Columns/multi-column.d.ts +0 -7
  683. package/dist/src/ds/components/DataFilter/index.d.ts +0 -2
  684. package/dist/src/ds/components/DataFilter/select-data-filter.d.ts +0 -40
  685. package/dist/src/ds/components/DataFilter/select-data-filter.stories.d.ts +0 -8
  686. package/dist/src/ds/components/ErrorState/ErrorState.d.ts +0 -8
  687. package/dist/src/ds/components/ErrorState/error-state.stories.d.ts +0 -8
  688. package/dist/src/ds/components/ErrorState/index.d.ts +0 -2
  689. package/dist/src/ds/components/PermissionDenied/PermissionDenied.d.ts +0 -16
  690. package/dist/src/ds/components/PermissionDenied/index.d.ts +0 -2
  691. package/dist/src/ds/components/Sections/index.d.ts +0 -1
  692. package/dist/src/ds/components/Sections/sections.d.ts +0 -5
  693. package/dist/src/ds/components/Sections/sections.stories.d.ts +0 -8
  694. package/dist/src/ds/components/SessionExpired/SessionExpired.d.ts +0 -11
  695. package/dist/src/ds/components/SessionExpired/index.d.ts +0 -2
  696. package/dist/src/ds/components/SettingsLayout/index.d.ts +0 -1
  697. package/dist/src/ds/components/SettingsLayout/settings-layout.stories.d.ts +0 -52
  698. /package/dist/src/ds/{components/SettingsLayout → new/settings}/settings-layout.d.ts +0 -0
package/dist/style.css CHANGED
@@ -129,7 +129,6 @@
129
129
  --color-red-500: oklch(63.7% .237 25.331);
130
130
  --color-red-600: oklch(57.7% .245 27.325);
131
131
  --color-red-700: oklch(50.5% .213 27.518);
132
- --color-red-900: oklch(39.6% .141 25.723);
133
132
  --color-amber-400: oklch(82.8% .189 84.429);
134
133
  --color-yellow-500: oklch(79.5% .184 86.047);
135
134
  --color-yellow-600: oklch(68.1% .162 75.834);
@@ -984,10 +983,6 @@
984
983
  grid-column-start: 1;
985
984
  }
986
985
 
987
- .col-start-\[action\] {
988
- grid-column-start: action;
989
- }
990
-
991
986
  .col-start-\[icon\] {
992
987
  grid-column-start: icon;
993
988
  }
@@ -1632,10 +1627,6 @@
1632
1627
  margin-top: calc(var(--spacing) * -.5);
1633
1628
  }
1634
1629
 
1635
- .-mt-1 {
1636
- margin-top: calc(var(--spacing) * -1);
1637
- }
1638
-
1639
1630
  .-mt-12 {
1640
1631
  margin-top: calc(var(--spacing) * -12);
1641
1632
  }
@@ -2209,10 +2200,6 @@
2209
2200
  height: calc(var(--spacing) * 125);
2210
2201
  }
2211
2202
 
2212
- .h-128 {
2213
- height: calc(var(--spacing) * 128);
2214
- }
2215
-
2216
2203
  .h-136 {
2217
2204
  height: calc(var(--spacing) * 136);
2218
2205
  }
@@ -2521,10 +2508,6 @@
2521
2508
  min-height: calc(var(--spacing) * 60);
2522
2509
  }
2523
2510
 
2524
- .min-h-64 {
2525
- min-height: calc(var(--spacing) * 64);
2526
- }
2527
-
2528
2511
  .min-h-72 {
2529
2512
  min-height: calc(var(--spacing) * 72);
2530
2513
  }
@@ -2817,12 +2800,12 @@
2817
2800
  width: calc(var(--spacing) * 220);
2818
2801
  }
2819
2802
 
2820
- .w-270 {
2821
- width: calc(var(--spacing) * 270);
2803
+ .w-240 {
2804
+ width: calc(var(--spacing) * 240);
2822
2805
  }
2823
2806
 
2824
- .w-\[3px\] {
2825
- width: 3px;
2807
+ .w-270 {
2808
+ width: calc(var(--spacing) * 270);
2826
2809
  }
2827
2810
 
2828
2811
  .w-\[20rem\] {
@@ -2853,10 +2836,6 @@
2853
2836
  width: 120%;
2854
2837
  }
2855
2838
 
2856
- .w-\[126px\] {
2857
- width: 126px;
2858
- }
2859
-
2860
2839
  .w-\[140px\] {
2861
2840
  width: 140px;
2862
2841
  }
@@ -3705,18 +3684,14 @@
3705
3684
  grid-template-columns: 200px auto;
3706
3685
  }
3707
3686
 
3708
- .grid-cols-\[\[title\]_auto_\[meta\]_minmax\(0\,1fr\)_\[action\]_auto_\[end\]\] {
3709
- grid-template-columns: [title] auto[meta] minmax(0, 1fr)[action] auto[end];
3687
+ .grid-cols-\[\[title\]_auto_\[meta\]_minmax\(0\,1fr\)_\[end\]\] {
3688
+ grid-template-columns: [title] auto[meta] minmax(0, 1fr)[end];
3710
3689
  }
3711
3690
 
3712
3691
  .grid-cols-\[auto_1fr\] {
3713
3692
  grid-template-columns: auto 1fr;
3714
3693
  }
3715
3694
 
3716
- .grid-cols-\[auto_1fr\]\! {
3717
- grid-template-columns: auto 1fr !important;
3718
- }
3719
-
3720
3695
  .grid-cols-\[auto_minmax\(0\,1fr\)\] {
3721
3696
  grid-template-columns: auto minmax(0, 1fr);
3722
3697
  }
@@ -4691,10 +4666,6 @@
4691
4666
  }
4692
4667
  }
4693
4668
 
4694
- .border-red-900 {
4695
- border-color: var(--color-red-900);
4696
- }
4697
-
4698
4669
  .border-transparent {
4699
4670
  border-color: #0000;
4700
4671
  }
@@ -4755,16 +4726,6 @@
4755
4726
  }
4756
4727
  }
4757
4728
 
4758
- .bg-accent1\/50 {
4759
- background-color: var(--color-accent1);
4760
- }
4761
-
4762
- @supports (color: color-mix(in lab, red, red)) {
4763
- .bg-accent1\/50 {
4764
- background-color: color-mix(in oklab, var(--color-accent1) 50%, transparent);
4765
- }
4766
- }
4767
-
4768
4729
  .bg-accent1Dark {
4769
4730
  background-color: var(--color-accent1Dark);
4770
4731
  }
@@ -5425,16 +5386,6 @@
5425
5386
  background-color: var(--color-red-700);
5426
5387
  }
5427
5388
 
5428
- .bg-red-900\/10 {
5429
- background-color: #82181a1a;
5430
- }
5431
-
5432
- @supports (color: color-mix(in lab, red, red)) {
5433
- .bg-red-900\/10 {
5434
- background-color: color-mix(in oklab, var(--color-red-900) 10%, transparent);
5435
- }
5436
- }
5437
-
5438
5389
  .bg-scrim, .bg-scrim\/30 {
5439
5390
  background-color: var(--color-scrim);
5440
5391
  }
@@ -5868,6 +5819,10 @@
5868
5819
  padding-block: calc(var(--spacing) * 10);
5869
5820
  }
5870
5821
 
5822
+ .py-12 {
5823
+ padding-block: calc(var(--spacing) * 12);
5824
+ }
5825
+
5871
5826
  .py-\[0\.6rem\] {
5872
5827
  padding-block: .6rem;
5873
5828
  }
@@ -6658,10 +6613,6 @@
6658
6613
  color: var(--color-red-700);
6659
6614
  }
6660
6615
 
6661
- .text-red-900 {
6662
- color: var(--color-red-900);
6663
- }
6664
-
6665
6616
  .text-sidebar {
6666
6617
  color: var(--sidebar);
6667
6618
  }
@@ -8684,10 +8635,6 @@
8684
8635
  --surface-tint: var(--fill-subtle);
8685
8636
  }
8686
8637
 
8687
- .not-disabled\:hover\:border-border-hover:not(:disabled):hover {
8688
- border-color: var(--border-hover);
8689
- }
8690
-
8691
8638
  .not-disabled\:hover\:bg-destructive\/20:not(:disabled):hover {
8692
8639
  background-color: var(--destructive);
8693
8640
  }
@@ -9058,10 +9005,6 @@
9058
9005
  cursor: not-allowed;
9059
9006
  }
9060
9007
 
9061
- .disabled\:border-border:disabled {
9062
- border-color: var(--border);
9063
- }
9064
-
9065
9008
  .disabled\:bg-fill-destructive-disabled:disabled {
9066
9009
  background-color: var(--fill-destructive-disabled);
9067
9010
  }
@@ -9234,8 +9177,8 @@
9234
9177
  border-radius: var(--radius-xl);
9235
9178
  }
9236
9179
 
9237
- .has-\[\>\[data-slot\=page-header-icon\]\]\:grid-cols-\[\[icon\]_auto_\[title\]_auto_\[meta\]_minmax\(0\,1fr\)_\[action\]_auto_\[end\]\]:has( > [data-slot="page-header-icon"]) {
9238
- grid-template-columns: [icon] auto[title] auto[meta] minmax(0, 1fr)[action] auto[end];
9180
+ .has-\[\>\[data-slot\=page-header-icon\]\]\:grid-cols-\[\[icon\]_auto_\[title\]_auto_\[meta\]_minmax\(0\,1fr\)_\[end\]\]:has( > [data-slot="page-header-icon"]) {
9181
+ grid-template-columns: [icon] auto[title] auto[meta] minmax(0, 1fr)[end];
9239
9182
  }
9240
9183
 
9241
9184
  .has-\[\>button\]\:pr-1:has( > button) {
@@ -9258,10 +9201,6 @@
9258
9201
  cursor: wait;
9259
9202
  }
9260
9203
 
9261
- .aria-disabled\:border-border[aria-disabled="true"] {
9262
- border-color: var(--border);
9263
- }
9264
-
9265
9204
  .aria-disabled\:bg-fill-destructive-disabled[aria-disabled="true"] {
9266
9205
  background-color: var(--fill-destructive-disabled);
9267
9206
  }
@@ -9909,10 +9848,6 @@
9909
9848
  color: var(--muted-foreground);
9910
9849
  }
9911
9850
 
9912
- .data-\[popup-open\]\:border-border-hover[data-popup-open] {
9913
- border-color: var(--border-hover);
9914
- }
9915
-
9916
9851
  .data-\[popup-open\]\:bg-fill-hover[data-popup-open] {
9917
9852
  background-color: var(--fill-hover);
9918
9853
  }
@@ -10078,6 +10013,12 @@
10078
10013
  transition-duration: var(--tw-duration, var(--default-transition-duration));
10079
10014
  }
10080
10015
 
10016
+ .motion-safe\:transition-\[height\] {
10017
+ transition-property: height;
10018
+ transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
10019
+ transition-duration: var(--tw-duration, var(--default-transition-duration));
10020
+ }
10021
+
10081
10022
  .motion-safe\:transition-colors {
10082
10023
  transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
10083
10024
  transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
@@ -10095,6 +10036,11 @@
10095
10036
  transition-duration: .15s;
10096
10037
  }
10097
10038
 
10039
+ .motion-safe\:duration-200 {
10040
+ --tw-duration: .2s;
10041
+ transition-duration: .2s;
10042
+ }
10043
+
10098
10044
  .motion-safe\:before\:animate-spin:before {
10099
10045
  content: var(--tw-content);
10100
10046
  animation: var(--animate-spin);
@@ -10415,10 +10361,6 @@
10415
10361
  padding-inline: calc(var(--spacing) * 4);
10416
10362
  }
10417
10363
 
10418
- .sm\:px-6 {
10419
- padding-inline: calc(var(--spacing) * 6);
10420
- }
10421
-
10422
10364
  .sm\:px-8 {
10423
10365
  padding-inline: calc(var(--spacing) * 8);
10424
10366
  }
@@ -10737,10 +10679,6 @@
10737
10679
  height: calc(var(--spacing) * 16);
10738
10680
  }
10739
10681
 
10740
- .\@md\:grid-cols-\[auto_auto_auto_1fr\]\! {
10741
- grid-template-columns: auto auto auto 1fr !important;
10742
- }
10743
-
10744
10682
  .\@md\:flex-row {
10745
10683
  flex-direction: row;
10746
10684
  }
@@ -10781,12 +10719,6 @@
10781
10719
  }
10782
10720
  }
10783
10721
 
10784
- @container (min-width: 36rem) {
10785
- .\@xl\:grid-cols-\[auto_auto_auto_auto_auto_1fr\]\! {
10786
- grid-template-columns: auto auto auto auto auto 1fr !important;
10787
- }
10788
- }
10789
-
10790
10722
  .rtl\:translate-x-0:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *) {
10791
10723
  --tw-translate-x: 0px;
10792
10724
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -11229,6 +11161,11 @@
11229
11161
  height: calc(var(--spacing) * 4);
11230
11162
  }
11231
11163
 
11164
+ .\[\&_svg\]\:size-8 svg {
11165
+ width: calc(var(--spacing) * 8);
11166
+ height: calc(var(--spacing) * 8);
11167
+ }
11168
+
11232
11169
  .\[\&_svg\]\:size-\[1\.1em\] svg {
11233
11170
  width: 1.1em;
11234
11171
  height: 1.1em;
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Tabs } from '@base-ui/react/tabs';
3
3
  import { useContext, useState, useEffect } from 'react';
4
- import { a as TabsContext } from './tabs-tab-u6LS5twu.js';
4
+ import { a as TabsContext } from './tabs-tab-DluwCnDF.js';
5
5
  import { focusRing } from './primitives/transitions.es.js';
6
6
  import { c as cn } from './cn-65Adrsfj.js';
7
7
 
@@ -32,4 +32,4 @@ const TabContent = ({ children, value, flush = false, keepMounted = false, class
32
32
  };
33
33
 
34
34
  export { TabContent as T };
35
- //# sourceMappingURL=tabs-content-DMrffE9p.js.map
35
+ //# sourceMappingURL=tabs-content-7ODUUdQ0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-content-DMrffE9p.js","sources":["../src/ds/components/Tabs/tabs-content.tsx"],"sourcesContent":["import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { useContext, useEffect, useState } from 'react';\nimport { TabsContext } from './tabs-context';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type TabContentProps = {\n children: React.ReactNode;\n value: string;\n flush?: boolean;\n keepMounted?: boolean;\n className?: string;\n};\n\nexport const TabContent = ({ children, value, flush = false, keepMounted = false, className }: TabContentProps) => {\n const tabs = useContext(TabsContext);\n const selected = tabs?.value === value;\n const [visited, setVisited] = useState(selected);\n useEffect(() => {\n if (keepMounted && selected) setVisited(true);\n }, [keepMounted, selected]);\n return (\n <BaseTabs.Panel\n value={value}\n keepMounted={keepMounted}\n data-slot=\"tabs-content\"\n data-flush={flush || undefined}\n className={cn(\n 'grid overflow-y-auto ring-offset-background',\n // Flush panels give the row to their content (scroll region, code block) instead of padding it.\n flush ? 'h-full min-h-0' : 'py-2',\n focusRing.visible,\n className,\n )}\n >\n <div data-slot=\"tabs-content-body\" className=\"contents\">\n {!keepMounted || selected || visited ? children : null}\n </div>\n </BaseTabs.Panel>\n );\n};\n"],"names":["BaseTabs"],"mappings":";;;;;;;AAcO,MAAM,UAAA,GAAa,CAAC,EAAE,QAAA,EAAU,KAAA,EAAO,QAAQ,KAAA,EAAO,WAAA,GAAc,KAAA,EAAO,SAAA,EAAU,KAAuB;AACjH,EAAA,MAAM,IAAA,GAAO,WAAW,WAAW,CAAA;AACnC,EAAA,MAAM,QAAA,GAAW,MAAM,KAAA,KAAU,KAAA;AACjC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,QAAQ,CAAA;AAC/C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAA,IAAe,QAAA,EAAU,UAAA,CAAW,IAAI,CAAA;AAAA,EAC9C,CAAA,EAAG,CAAC,WAAA,EAAa,QAAQ,CAAC,CAAA;AAC1B,EAAA,uBACE,GAAA;AAAA,IAACA,IAAA,CAAS,KAAA;AAAA,IAAT;AAAA,MACC,KAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA,EAAU,cAAA;AAAA,MACV,cAAY,KAAA,IAAS,MAAA;AAAA,MACrB,SAAA,EAAW,EAAA;AAAA,QACT,6CAAA;AAAA;AAAA,QAEA,QAAQ,gBAAA,GAAmB,MAAA;AAAA,QAC3B,SAAA,CAAU,OAAA;AAAA,QACV;AAAA,OACF;AAAA,MAEA,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,mBAAA,EAAoB,SAAA,EAAU,UAAA,EAC1C,QAAA,EAAA,CAAC,WAAA,IAAe,QAAA,IAAY,OAAA,GAAU,QAAA,GAAW,IAAA,EACpD;AAAA;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"tabs-content-7ODUUdQ0.js","sources":["../src/ds/components/Tabs/tabs-content.tsx"],"sourcesContent":["import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { useContext, useEffect, useState } from 'react';\nimport { TabsContext } from './tabs-context';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type TabContentProps = {\n children: React.ReactNode;\n value: string;\n flush?: boolean;\n keepMounted?: boolean;\n className?: string;\n};\n\nexport const TabContent = ({ children, value, flush = false, keepMounted = false, className }: TabContentProps) => {\n const tabs = useContext(TabsContext);\n const selected = tabs?.value === value;\n const [visited, setVisited] = useState(selected);\n useEffect(() => {\n if (keepMounted && selected) setVisited(true);\n }, [keepMounted, selected]);\n return (\n <BaseTabs.Panel\n value={value}\n keepMounted={keepMounted}\n data-slot=\"tabs-content\"\n data-flush={flush || undefined}\n className={cn(\n 'grid overflow-y-auto ring-offset-background',\n // Flush panels give the row to their content (scroll region, code block) instead of padding it.\n flush ? 'h-full min-h-0' : 'py-2',\n focusRing.visible,\n className,\n )}\n >\n <div data-slot=\"tabs-content-body\" className=\"contents\">\n {!keepMounted || selected || visited ? children : null}\n </div>\n </BaseTabs.Panel>\n );\n};\n"],"names":["BaseTabs"],"mappings":";;;;;;;AAcO,MAAM,UAAA,GAAa,CAAC,EAAE,QAAA,EAAU,KAAA,EAAO,QAAQ,KAAA,EAAO,WAAA,GAAc,KAAA,EAAO,SAAA,EAAU,KAAuB;AACjH,EAAA,MAAM,IAAA,GAAO,WAAW,WAAW,CAAA;AACnC,EAAA,MAAM,QAAA,GAAW,MAAM,KAAA,KAAU,KAAA;AACjC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,QAAQ,CAAA;AAC/C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAA,IAAe,QAAA,EAAU,UAAA,CAAW,IAAI,CAAA;AAAA,EAC9C,CAAA,EAAG,CAAC,WAAA,EAAa,QAAQ,CAAC,CAAA;AAC1B,EAAA,uBACE,GAAA;AAAA,IAACA,IAAA,CAAS,KAAA;AAAA,IAAT;AAAA,MACC,KAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA,EAAU,cAAA;AAAA,MACV,cAAY,KAAA,IAAS,MAAA;AAAA,MACrB,SAAA,EAAW,EAAA;AAAA,QACT,6CAAA;AAAA;AAAA,QAEA,QAAQ,gBAAA,GAAmB,MAAA;AAAA,QAC3B,SAAA,CAAU,OAAA;AAAA,QACV;AAAA,OACF;AAAA,MAEA,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,mBAAA,EAAoB,SAAA,EAAU,UAAA,EAC1C,QAAA,EAAA,CAAC,WAAA,IAAe,QAAA,IAAY,OAAA,GAAU,QAAA,GAAW,IAAA,EACpD;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -3,7 +3,7 @@
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
4
  const tabs = require('@base-ui/react/tabs');
5
5
  const React = require('react');
6
- const tabsTab = require('./tabs-tab-ClmulJmM.cjs');
6
+ const tabsTab = require('./tabs-tab-DFmRMdi3.cjs');
7
7
  const primitives_transitions = require('./primitives/transitions.cjs.js');
8
8
  const utils_cn = require('./cn-DG0X1KEP.cjs');
9
9
 
@@ -34,4 +34,4 @@ const TabContent = ({ children, value, flush = false, keepMounted = false, class
34
34
  };
35
35
 
36
36
  exports.TabContent = TabContent;
37
- //# sourceMappingURL=tabs-content-CuUlcS67.cjs.map
37
+ //# sourceMappingURL=tabs-content-DlCJoQUW.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-content-CuUlcS67.cjs","sources":["../src/ds/components/Tabs/tabs-content.tsx"],"sourcesContent":["import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { useContext, useEffect, useState } from 'react';\nimport { TabsContext } from './tabs-context';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type TabContentProps = {\n children: React.ReactNode;\n value: string;\n flush?: boolean;\n keepMounted?: boolean;\n className?: string;\n};\n\nexport const TabContent = ({ children, value, flush = false, keepMounted = false, className }: TabContentProps) => {\n const tabs = useContext(TabsContext);\n const selected = tabs?.value === value;\n const [visited, setVisited] = useState(selected);\n useEffect(() => {\n if (keepMounted && selected) setVisited(true);\n }, [keepMounted, selected]);\n return (\n <BaseTabs.Panel\n value={value}\n keepMounted={keepMounted}\n data-slot=\"tabs-content\"\n data-flush={flush || undefined}\n className={cn(\n 'grid overflow-y-auto ring-offset-background',\n // Flush panels give the row to their content (scroll region, code block) instead of padding it.\n flush ? 'h-full min-h-0' : 'py-2',\n focusRing.visible,\n className,\n )}\n >\n <div data-slot=\"tabs-content-body\" className=\"contents\">\n {!keepMounted || selected || visited ? children : null}\n </div>\n </BaseTabs.Panel>\n );\n};\n"],"names":["tabs","useContext","TabsContext","useState","useEffect","jsx","BaseTabs","cn","focusRing"],"mappings":";;;;;;;;;AAcO,MAAM,UAAA,GAAa,CAAC,EAAE,QAAA,EAAU,KAAA,EAAO,QAAQ,KAAA,EAAO,WAAA,GAAc,KAAA,EAAO,SAAA,EAAU,KAAuB;AACjH,EAAA,MAAMA,MAAA,GAAOC,iBAAWC,mBAAW,CAAA;AACnC,EAAA,MAAM,QAAA,GAAWF,QAAM,KAAA,KAAU,KAAA;AACjC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIG,eAAS,QAAQ,CAAA;AAC/C,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAA,IAAe,QAAA,EAAU,UAAA,CAAW,IAAI,CAAA;AAAA,EAC9C,CAAA,EAAG,CAAC,WAAA,EAAa,QAAQ,CAAC,CAAA;AAC1B,EAAA,uBACEC,cAAA;AAAA,IAACC,SAAA,CAAS,KAAA;AAAA,IAAT;AAAA,MACC,KAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA,EAAU,cAAA;AAAA,MACV,cAAY,KAAA,IAAS,MAAA;AAAA,MACrB,SAAA,EAAWC,WAAA;AAAA,QACT,6CAAA;AAAA;AAAA,QAEA,QAAQ,gBAAA,GAAmB,MAAA;AAAA,QAC3BC,gCAAA,CAAU,OAAA;AAAA,QACV;AAAA,OACF;AAAA,MAEA,QAAA,kBAAAH,cAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,mBAAA,EAAoB,SAAA,EAAU,UAAA,EAC1C,QAAA,EAAA,CAAC,WAAA,IAAe,QAAA,IAAY,OAAA,GAAU,QAAA,GAAW,IAAA,EACpD;AAAA;AAAA,GACF;AAEJ;;;;"}
1
+ {"version":3,"file":"tabs-content-DlCJoQUW.cjs","sources":["../src/ds/components/Tabs/tabs-content.tsx"],"sourcesContent":["import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { useContext, useEffect, useState } from 'react';\nimport { TabsContext } from './tabs-context';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type TabContentProps = {\n children: React.ReactNode;\n value: string;\n flush?: boolean;\n keepMounted?: boolean;\n className?: string;\n};\n\nexport const TabContent = ({ children, value, flush = false, keepMounted = false, className }: TabContentProps) => {\n const tabs = useContext(TabsContext);\n const selected = tabs?.value === value;\n const [visited, setVisited] = useState(selected);\n useEffect(() => {\n if (keepMounted && selected) setVisited(true);\n }, [keepMounted, selected]);\n return (\n <BaseTabs.Panel\n value={value}\n keepMounted={keepMounted}\n data-slot=\"tabs-content\"\n data-flush={flush || undefined}\n className={cn(\n 'grid overflow-y-auto ring-offset-background',\n // Flush panels give the row to their content (scroll region, code block) instead of padding it.\n flush ? 'h-full min-h-0' : 'py-2',\n focusRing.visible,\n className,\n )}\n >\n <div data-slot=\"tabs-content-body\" className=\"contents\">\n {!keepMounted || selected || visited ? children : null}\n </div>\n </BaseTabs.Panel>\n );\n};\n"],"names":["tabs","useContext","TabsContext","useState","useEffect","jsx","BaseTabs","cn","focusRing"],"mappings":";;;;;;;;;AAcO,MAAM,UAAA,GAAa,CAAC,EAAE,QAAA,EAAU,KAAA,EAAO,QAAQ,KAAA,EAAO,WAAA,GAAc,KAAA,EAAO,SAAA,EAAU,KAAuB;AACjH,EAAA,MAAMA,MAAA,GAAOC,iBAAWC,mBAAW,CAAA;AACnC,EAAA,MAAM,QAAA,GAAWF,QAAM,KAAA,KAAU,KAAA;AACjC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIG,eAAS,QAAQ,CAAA;AAC/C,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAA,IAAe,QAAA,EAAU,UAAA,CAAW,IAAI,CAAA;AAAA,EAC9C,CAAA,EAAG,CAAC,WAAA,EAAa,QAAQ,CAAC,CAAA;AAC1B,EAAA,uBACEC,cAAA;AAAA,IAACC,SAAA,CAAS,KAAA;AAAA,IAAT;AAAA,MACC,KAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA,EAAU,cAAA;AAAA,MACV,cAAY,KAAA,IAAS,MAAA;AAAA,MACrB,SAAA,EAAWC,WAAA;AAAA,QACT,6CAAA;AAAA;AAAA,QAEA,QAAQ,gBAAA,GAAmB,MAAA;AAAA,QAC3BC,gCAAA,CAAU,OAAA;AAAA,QACV;AAAA,OACF;AAAA,MAEA,QAAA,kBAAAH,cAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,mBAAA,EAAoB,SAAA,EAAU,UAAA,EAC1C,QAAA,EAAA,CAAC,WAAA,IAAe,QAAA,IAAY,OAAA,GAAU,QAAA,GAAW,IAAA,EACpD;AAAA;AAAA,GACF;AAEJ;;;;"}
@@ -7,7 +7,7 @@ const lucideReact = require('lucide-react');
7
7
  const React = require('react');
8
8
  const dropdownMenu = require('./dropdown-menu-j2y37TL5.cjs');
9
9
  const tooltip = require('./tooltip-FvWL16Xn.cjs');
10
- const tabsTab = require('./tabs-tab-ClmulJmM.cjs');
10
+ const tabsTab = require('./tabs-tab-DFmRMdi3.cjs');
11
11
  const primitives_transitions = require('./primitives/transitions.cjs.js');
12
12
  const utils_cn = require('./cn-DG0X1KEP.cjs');
13
13
 
@@ -312,4 +312,4 @@ const Tabs = ({
312
312
 
313
313
  exports.TabList = TabList;
314
314
  exports.Tabs = Tabs;
315
- //# sourceMappingURL=tabs-root-DrK1hxeV.cjs.map
315
+ //# sourceMappingURL=tabs-root-COCL6jcx.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-root-DrK1hxeV.cjs","sources":["../src/ds/components/Tabs/tabs-list.tsx","../src/ds/components/Tabs/tabs-root.tsx"],"sourcesContent":["import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { ChevronDown, X } from 'lucide-react';\nimport { Fragment, useCallback, useContext, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { DropdownMenu } from '../DropdownMenu/dropdown-menu';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../Tooltip/tooltip';\nimport { TabListContext, TabsContext } from './tabs-context';\nimport type { TabMeasurement } from './tabs-context';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nconst tabListVariants = cva('relative flex items-center text-body', {\n variants: {\n variant: {\n pill: 'w-fit gap-1 rounded-full bg-fill-subtle p-1',\n 'pill-ghost': 'w-fit gap-0.5 rounded-full',\n },\n },\n defaultVariants: {\n variant: 'pill',\n },\n});\n\ntype TabListVariantsProps = VariantProps<typeof tabListVariants>;\n\nexport type TabListVariant = NonNullable<TabListVariantsProps['variant']>;\n\nexport type TabListSize = 'sm' | 'md';\n\nexport type TabListProps = Omit<TabListVariantsProps, 'variant'> & {\n children: React.ReactNode;\n className?: string;\n sticky?: boolean;\n /** Control height of each tab; `sm` lines up with `size=\"sm\"` buttons (e.g. inside a `DataPanel.Header`). */\n size?: TabListSize;\n /** `pill` sits the selected tab on a track; `pill-ghost` drops the track. */\n variant?: TabListVariant | null;\n /**\n * Optional inline styles applied to the underlying tab list element.\n * To override the active tab indicator color, set the `--tab-indicator-color`\n * CSS variable, e.g. `style={{ '--tab-indicator-color': 'var(--accent5)' } as React.CSSProperties}`.\n */\n style?: React.CSSProperties;\n};\n\nexport const TabList = ({ children, className, variant, size = 'md', sticky, style }: TabListProps) => {\n const resolvedVariant = variant ?? 'pill';\n const tabs = useContext(TabsContext);\n const scrollRef = useRef<HTMLDivElement>(null);\n const closeRefs = useRef(new Map<string, HTMLDivElement>());\n const tabPositions = useRef(new Map<string, number>());\n const selectedValue = useRef(tabs?.value);\n const [available, setAvailable] = useState<number | null>(null);\n const [measurements, setMeasurements] = useState<TabMeasurement[]>([]);\n const register = useCallback((tab: TabMeasurement) => {\n setMeasurements(previous => {\n const existing = previous.find(item => item.value === tab.value);\n if (\n existing &&\n existing.element === tab.element &&\n existing.width === tab.width &&\n existing.label === tab.label &&\n existing.disabled === tab.disabled &&\n existing.onClick === tab.onClick &&\n existing.onClose === tab.onClose\n )\n return previous;\n const next = existing ? previous.map(item => (item.value === tab.value ? tab : item)) : [...previous, tab];\n return next.sort((a, b) => {\n if (a.element === b.element) return 0;\n return a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n });\n });\n }, []);\n const unregister = useCallback(\n (value: string) => setMeasurements(previous => previous.filter(tab => tab.value !== value)),\n [],\n );\n const contained = tabs?.appearance === 'contained';\n useLayoutEffect(() => {\n const viewport = scrollRef.current;\n if (!viewport || !contained) return;\n const measure = () => setAvailable(viewport.clientWidth);\n measure();\n if (!('ResizeObserver' in globalThis)) return;\n const observer = new ResizeObserver(measure);\n observer.observe(viewport);\n return () => observer.disconnect();\n }, [contained]);\n const gap = tabs?.frame === 'inset' ? 4 : 0;\n const frameReserve = tabs?.frame === 'inset' ? 30 : 0;\n const hiddenValues = useMemo(() => {\n const hidden = new Set<string>();\n if (!contained || available === null) return hidden;\n const tabTotal = measurements.reduce((sum, tab) => sum + tab.width, 0) + gap * Math.max(measurements.length - 1, 0);\n if (tabTotal + frameReserve <= available) return hidden;\n let remaining = available - frameReserve - 48;\n const active = measurements.find(tab => tab.value === tabs?.value);\n if (active) remaining -= active.width + gap;\n let full = false;\n for (const tab of measurements) {\n if (tab === active) continue;\n if (full || tab.width + gap > remaining) {\n full = true;\n hidden.add(tab.value);\n } else remaining -= tab.width + gap;\n }\n return hidden;\n }, [contained, available, measurements, gap, frameReserve, tabs?.value]);\n const hiddenTabs = measurements.filter(tab => hiddenValues.has(tab.value));\n const overflowX = measurements\n .filter(tab => !hiddenValues.has(tab.value))\n .reduce((sum, tab) => sum + tab.width + gap, tabs?.frame === 'inset' ? 4 : 0);\n const visibleClosableTabs = measurements.filter(tab => !hiddenValues.has(tab.value) && tab.onClose);\n const listContext = useMemo(\n () => ({ variant: resolvedVariant, size, hiddenValues, register, unregister }),\n [resolvedVariant, size, hiddenValues, register, unregister],\n );\n useLayoutEffect(() => {\n const nextPositions = new Map(tabPositions.current);\n const reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n for (const tab of measurements) {\n if (hiddenValues.has(tab.value)) continue;\n const left = tab.element.offsetLeft;\n const previousLeft = tabPositions.current.get(tab.value);\n const close = closeRefs.current.get(tab.value);\n if (close) {\n close.style.left = `${left}px`;\n close.style.top = `${tab.element.offsetTop}px`;\n close.style.width = `${tab.element.offsetWidth}px`;\n close.style.height = `${tab.element.offsetHeight}px`;\n }\n const delta = previousLeft === undefined ? 0 : previousLeft - left;\n const shouldAnimate = tab.value !== tabs?.value && Math.abs(delta) <= 32;\n if (!reduceMotion && shouldAnimate && delta !== 0 && 'animate' in tab.element) {\n tab.element.animate([{ transform: `translateX(${delta}px)` }, { transform: 'translateX(0)' }], {\n duration: 180,\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n });\n }\n nextPositions.set(tab.value, left);\n }\n for (const value of nextPositions.keys()) {\n if (!measurements.some(tab => tab.value === value)) nextPositions.delete(value);\n }\n tabPositions.current = nextPositions;\n }, [hiddenValues, measurements, tabs?.value]);\n useLayoutEffect(() => {\n const previousValue = selectedValue.current;\n selectedValue.current = tabs?.value;\n const reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n if (!contained || tabs?.frame !== 'inset' || previousValue === tabs?.value || reduceMotion) return;\n const indicator = scrollRef.current?.querySelector<HTMLElement>('[data-slot=\"tabs-indicator\"]');\n if (!indicator || !('animate' in indicator)) return;\n indicator.animate(\n [\n { opacity: 0.72, scale: '0.97' },\n { opacity: 1, scale: '1' },\n ],\n {\n duration: 140,\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n },\n );\n }, [contained, tabs?.frame, tabs?.value]);\n\n return (\n <TabListContext.Provider value={listContext}>\n <TooltipProvider delay={200}>\n <div\n ref={scrollRef}\n data-slot=\"tabs-list-scroll\"\n className={cn('relative w-full overflow-x-auto', sticky && 'sticky top-0 z-10 bg-background')}\n >\n <BaseTabs.List\n data-slot=\"tabs-list\"\n data-overflow={hiddenTabs.length > 0 || undefined}\n data-variant={resolvedVariant}\n data-size={size}\n className={cn('group/tabs-list', tabListVariants({ variant: resolvedVariant }), className)}\n style={style}\n >\n {children}\n <BaseTabs.Indicator\n className={cn(\n 'absolute top-1/2 left-0 z-0 rounded-full bg-[var(--tab-indicator-color,var(--fill-hover))]',\n resolvedVariant === 'pill' ? 'h-[calc(100%-0.5rem)]' : 'h-full',\n 'w-[var(--active-tab-width)]',\n 'transition-[width,transform] duration-200 ease-in-out motion-reduce:transition-none',\n )}\n data-slot=\"tabs-indicator\"\n style={{ transform: 'translateY(var(--tabs-indicator-y, -50%)) translateX(var(--active-tab-left))' }}\n />\n </BaseTabs.List>\n <div data-slot=\"tabs-close-actions\">\n {visibleClosableTabs.map(tab => (\n <div\n key={tab.value}\n ref={element => {\n if (element) closeRefs.current.set(tab.value, element);\n else closeRefs.current.delete(tab.value);\n }}\n data-slot=\"tab-close-item\"\n data-visible={tabs?.value === tab.value || undefined}\n >\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n type=\"button\"\n tabIndex={tabs?.value === tab.value ? 0 : -1}\n data-slot=\"tab-close\"\n onClick={tab.onClose}\n className={cn('rounded p-0.5 hover:bg-fill-hover hover:text-accent2', transitions.colors)}\n />\n }\n >\n <span className=\"sr-only\">Close {tab.label}</span>\n <X aria-hidden=\"true\" className=\"size-3\" />\n </TooltipTrigger>\n <TooltipContent>Close {tab.label}</TooltipContent>\n </Tooltip>\n </div>\n ))}\n </div>\n {hiddenTabs.length > 0 && (\n <div\n data-slot=\"tabs-overflow\"\n style={{ transform: `translateX(${overflowX}px)` }}\n className=\"tabs-overflow\"\n >\n <DropdownMenu>\n <DropdownMenu.Trigger\n aria-label={`${hiddenTabs.length} more tabs`}\n variant=\"ghost\"\n size=\"sm\"\n className=\"tabular-nums\"\n >\n +{hiddenTabs.length}\n <ChevronDown aria-hidden=\"true\" className=\"size-3\" />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content className=\"grid\">\n {hiddenTabs.map((tab, index) => (\n <Fragment key={tab.value}>\n <DropdownMenu.Item\n data-slot=\"tabs-overflow-tab\"\n disabled={tab.disabled}\n className={tab.onClose ? 'pr-9' : undefined}\n style={{ gridArea: `${index + 1} / 1` }}\n onClick={() => {\n tabs?.select(tab.value);\n tab.onClick?.();\n }}\n >\n {tab.label}\n </DropdownMenu.Item>\n {tab.onClose ? (\n <Tooltip>\n <TooltipTrigger\n render={\n <DropdownMenu.Item\n data-slot=\"tabs-overflow-close\"\n className=\"pointer-events-none z-10 m-1 size-6 self-center justify-self-end p-0 opacity-0 hover:text-accent2 data-[highlighted]:text-accent2\"\n style={{ gridArea: `${index + 1} / 1` }}\n onClick={tab.onClose}\n />\n }\n >\n <span className=\"sr-only\">Close {tab.label}</span>\n <X aria-hidden=\"true\" className=\"size-3\" />\n </TooltipTrigger>\n <TooltipContent side=\"right\">Close {tab.label}</TooltipContent>\n </Tooltip>\n ) : null}\n </Fragment>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </div>\n )}\n </div>\n </TooltipProvider>\n </TabListContext.Provider>\n );\n};\n","import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { TabsContext } from './tabs-context';\nimport './tabs.css';\nimport { cn } from '@/lib/utils';\n\nexport type TabsRootProps<T extends string> = Omit<\n ComponentProps<'div'>,\n 'children' | 'defaultValue' | 'value' | 'onChange'\n> & {\n children: ReactNode;\n defaultTab: T;\n value?: T;\n onValueChange?: (value: T) => void;\n appearance?: 'default' | 'contained';\n frame?: 'stroke' | 'inset';\n className?: string;\n};\n\nexport const Tabs = <T extends string>({\n children,\n defaultTab,\n value,\n onValueChange,\n appearance = 'default',\n frame = 'stroke',\n className,\n ...props\n}: TabsRootProps<T>) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultTab);\n const selectedValue = value ?? uncontrolledValue;\n const select = (next: T) => {\n setUncontrolledValue(next);\n onValueChange?.(next);\n };\n return (\n <TabsContext.Provider value={{ appearance, frame, value: selectedValue, select }}>\n <BaseTabs.Root\n defaultValue={defaultTab}\n value={selectedValue}\n onValueChange={select}\n data-slot=\"tabs\"\n data-appearance={appearance}\n data-frame={frame}\n className={cn('group/tabs', appearance === 'default' ? 'overflow-y-auto' : 'w-full min-w-0', className)}\n {...props}\n >\n {children}\n </BaseTabs.Root>\n </TabsContext.Provider>\n );\n};\n"],"names":["cva","tabs","useContext","TabsContext","useRef","useState","useCallback","useLayoutEffect","useMemo","jsx","TabListContext","TooltipProvider","jsxs","cn","BaseTabs","Tooltip","TooltipTrigger","transitions","X","TooltipContent","DropdownMenu","ChevronDown","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"tabs-root-COCL6jcx.cjs","sources":["../src/ds/components/Tabs/tabs-list.tsx","../src/ds/components/Tabs/tabs-root.tsx"],"sourcesContent":["import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { ChevronDown, X } from 'lucide-react';\nimport { Fragment, useCallback, useContext, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { DropdownMenu } from '../DropdownMenu/dropdown-menu';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../Tooltip/tooltip';\nimport { TabListContext, TabsContext } from './tabs-context';\nimport type { TabMeasurement } from './tabs-context';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nconst tabListVariants = cva('relative flex items-center text-body', {\n variants: {\n variant: {\n pill: 'w-fit gap-1 rounded-full bg-fill-subtle p-1',\n 'pill-ghost': 'w-fit gap-0.5 rounded-full',\n },\n },\n defaultVariants: {\n variant: 'pill',\n },\n});\n\ntype TabListVariantsProps = VariantProps<typeof tabListVariants>;\n\nexport type TabListVariant = NonNullable<TabListVariantsProps['variant']>;\n\nexport type TabListSize = 'sm' | 'md';\n\nexport type TabListProps = Omit<TabListVariantsProps, 'variant'> & {\n children: React.ReactNode;\n className?: string;\n sticky?: boolean;\n /** Control height of each tab; `sm` lines up with `size=\"sm\"` buttons (e.g. inside a `DataPanel.Header`). */\n size?: TabListSize;\n /** `pill` sits the selected tab on a track; `pill-ghost` drops the track. */\n variant?: TabListVariant | null;\n /**\n * Optional inline styles applied to the underlying tab list element.\n * To override the active tab indicator color, set the `--tab-indicator-color`\n * CSS variable, e.g. `style={{ '--tab-indicator-color': 'var(--accent5)' } as React.CSSProperties}`.\n */\n style?: React.CSSProperties;\n};\n\nexport const TabList = ({ children, className, variant, size = 'md', sticky, style }: TabListProps) => {\n const resolvedVariant = variant ?? 'pill';\n const tabs = useContext(TabsContext);\n const scrollRef = useRef<HTMLDivElement>(null);\n const closeRefs = useRef(new Map<string, HTMLDivElement>());\n const tabPositions = useRef(new Map<string, number>());\n const selectedValue = useRef(tabs?.value);\n const [available, setAvailable] = useState<number | null>(null);\n const [measurements, setMeasurements] = useState<TabMeasurement[]>([]);\n const register = useCallback((tab: TabMeasurement) => {\n setMeasurements(previous => {\n const existing = previous.find(item => item.value === tab.value);\n if (\n existing &&\n existing.element === tab.element &&\n existing.width === tab.width &&\n existing.label === tab.label &&\n existing.disabled === tab.disabled &&\n existing.onClick === tab.onClick &&\n existing.onClose === tab.onClose\n )\n return previous;\n const next = existing ? previous.map(item => (item.value === tab.value ? tab : item)) : [...previous, tab];\n return next.sort((a, b) => {\n if (a.element === b.element) return 0;\n return a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n });\n });\n }, []);\n const unregister = useCallback(\n (value: string) => setMeasurements(previous => previous.filter(tab => tab.value !== value)),\n [],\n );\n const contained = tabs?.appearance === 'contained';\n useLayoutEffect(() => {\n const viewport = scrollRef.current;\n if (!viewport || !contained) return;\n const measure = () => setAvailable(viewport.clientWidth);\n measure();\n if (!('ResizeObserver' in globalThis)) return;\n const observer = new ResizeObserver(measure);\n observer.observe(viewport);\n return () => observer.disconnect();\n }, [contained]);\n const gap = tabs?.frame === 'inset' ? 4 : 0;\n const frameReserve = tabs?.frame === 'inset' ? 30 : 0;\n const hiddenValues = useMemo(() => {\n const hidden = new Set<string>();\n if (!contained || available === null) return hidden;\n const tabTotal = measurements.reduce((sum, tab) => sum + tab.width, 0) + gap * Math.max(measurements.length - 1, 0);\n if (tabTotal + frameReserve <= available) return hidden;\n let remaining = available - frameReserve - 48;\n const active = measurements.find(tab => tab.value === tabs?.value);\n if (active) remaining -= active.width + gap;\n let full = false;\n for (const tab of measurements) {\n if (tab === active) continue;\n if (full || tab.width + gap > remaining) {\n full = true;\n hidden.add(tab.value);\n } else remaining -= tab.width + gap;\n }\n return hidden;\n }, [contained, available, measurements, gap, frameReserve, tabs?.value]);\n const hiddenTabs = measurements.filter(tab => hiddenValues.has(tab.value));\n const overflowX = measurements\n .filter(tab => !hiddenValues.has(tab.value))\n .reduce((sum, tab) => sum + tab.width + gap, tabs?.frame === 'inset' ? 4 : 0);\n const visibleClosableTabs = measurements.filter(tab => !hiddenValues.has(tab.value) && tab.onClose);\n const listContext = useMemo(\n () => ({ variant: resolvedVariant, size, hiddenValues, register, unregister }),\n [resolvedVariant, size, hiddenValues, register, unregister],\n );\n useLayoutEffect(() => {\n const nextPositions = new Map(tabPositions.current);\n const reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n for (const tab of measurements) {\n if (hiddenValues.has(tab.value)) continue;\n const left = tab.element.offsetLeft;\n const previousLeft = tabPositions.current.get(tab.value);\n const close = closeRefs.current.get(tab.value);\n if (close) {\n close.style.left = `${left}px`;\n close.style.top = `${tab.element.offsetTop}px`;\n close.style.width = `${tab.element.offsetWidth}px`;\n close.style.height = `${tab.element.offsetHeight}px`;\n }\n const delta = previousLeft === undefined ? 0 : previousLeft - left;\n const shouldAnimate = tab.value !== tabs?.value && Math.abs(delta) <= 32;\n if (!reduceMotion && shouldAnimate && delta !== 0 && 'animate' in tab.element) {\n tab.element.animate([{ transform: `translateX(${delta}px)` }, { transform: 'translateX(0)' }], {\n duration: 180,\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n });\n }\n nextPositions.set(tab.value, left);\n }\n for (const value of nextPositions.keys()) {\n if (!measurements.some(tab => tab.value === value)) nextPositions.delete(value);\n }\n tabPositions.current = nextPositions;\n }, [hiddenValues, measurements, tabs?.value]);\n useLayoutEffect(() => {\n const previousValue = selectedValue.current;\n selectedValue.current = tabs?.value;\n const reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n if (!contained || tabs?.frame !== 'inset' || previousValue === tabs?.value || reduceMotion) return;\n const indicator = scrollRef.current?.querySelector<HTMLElement>('[data-slot=\"tabs-indicator\"]');\n if (!indicator || !('animate' in indicator)) return;\n indicator.animate(\n [\n { opacity: 0.72, scale: '0.97' },\n { opacity: 1, scale: '1' },\n ],\n {\n duration: 140,\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n },\n );\n }, [contained, tabs?.frame, tabs?.value]);\n\n return (\n <TabListContext.Provider value={listContext}>\n <TooltipProvider delay={200}>\n <div\n ref={scrollRef}\n data-slot=\"tabs-list-scroll\"\n className={cn('relative w-full overflow-x-auto', sticky && 'sticky top-0 z-10 bg-background')}\n >\n <BaseTabs.List\n data-slot=\"tabs-list\"\n data-overflow={hiddenTabs.length > 0 || undefined}\n data-variant={resolvedVariant}\n data-size={size}\n className={cn('group/tabs-list', tabListVariants({ variant: resolvedVariant }), className)}\n style={style}\n >\n {children}\n <BaseTabs.Indicator\n className={cn(\n 'absolute top-1/2 left-0 z-0 rounded-full bg-[var(--tab-indicator-color,var(--fill-hover))]',\n resolvedVariant === 'pill' ? 'h-[calc(100%-0.5rem)]' : 'h-full',\n 'w-[var(--active-tab-width)]',\n 'transition-[width,transform] duration-200 ease-in-out motion-reduce:transition-none',\n )}\n data-slot=\"tabs-indicator\"\n style={{ transform: 'translateY(var(--tabs-indicator-y, -50%)) translateX(var(--active-tab-left))' }}\n />\n </BaseTabs.List>\n <div data-slot=\"tabs-close-actions\">\n {visibleClosableTabs.map(tab => (\n <div\n key={tab.value}\n ref={element => {\n if (element) closeRefs.current.set(tab.value, element);\n else closeRefs.current.delete(tab.value);\n }}\n data-slot=\"tab-close-item\"\n data-visible={tabs?.value === tab.value || undefined}\n >\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n type=\"button\"\n tabIndex={tabs?.value === tab.value ? 0 : -1}\n data-slot=\"tab-close\"\n onClick={tab.onClose}\n className={cn('rounded p-0.5 hover:bg-fill-hover hover:text-accent2', transitions.colors)}\n />\n }\n >\n <span className=\"sr-only\">Close {tab.label}</span>\n <X aria-hidden=\"true\" className=\"size-3\" />\n </TooltipTrigger>\n <TooltipContent>Close {tab.label}</TooltipContent>\n </Tooltip>\n </div>\n ))}\n </div>\n {hiddenTabs.length > 0 && (\n <div\n data-slot=\"tabs-overflow\"\n style={{ transform: `translateX(${overflowX}px)` }}\n className=\"tabs-overflow\"\n >\n <DropdownMenu>\n <DropdownMenu.Trigger\n aria-label={`${hiddenTabs.length} more tabs`}\n variant=\"ghost\"\n size=\"sm\"\n className=\"tabular-nums\"\n >\n +{hiddenTabs.length}\n <ChevronDown aria-hidden=\"true\" className=\"size-3\" />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content className=\"grid\">\n {hiddenTabs.map((tab, index) => (\n <Fragment key={tab.value}>\n <DropdownMenu.Item\n data-slot=\"tabs-overflow-tab\"\n disabled={tab.disabled}\n className={tab.onClose ? 'pr-9' : undefined}\n style={{ gridArea: `${index + 1} / 1` }}\n onClick={() => {\n tabs?.select(tab.value);\n tab.onClick?.();\n }}\n >\n {tab.label}\n </DropdownMenu.Item>\n {tab.onClose ? (\n <Tooltip>\n <TooltipTrigger\n render={\n <DropdownMenu.Item\n data-slot=\"tabs-overflow-close\"\n className=\"pointer-events-none z-10 m-1 size-6 self-center justify-self-end p-0 opacity-0 hover:text-accent2 data-[highlighted]:text-accent2\"\n style={{ gridArea: `${index + 1} / 1` }}\n onClick={tab.onClose}\n />\n }\n >\n <span className=\"sr-only\">Close {tab.label}</span>\n <X aria-hidden=\"true\" className=\"size-3\" />\n </TooltipTrigger>\n <TooltipContent side=\"right\">Close {tab.label}</TooltipContent>\n </Tooltip>\n ) : null}\n </Fragment>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </div>\n )}\n </div>\n </TooltipProvider>\n </TabListContext.Provider>\n );\n};\n","import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { TabsContext } from './tabs-context';\nimport './tabs.css';\nimport { cn } from '@/lib/utils';\n\nexport type TabsRootProps<T extends string> = Omit<\n ComponentProps<'div'>,\n 'children' | 'defaultValue' | 'value' | 'onChange'\n> & {\n children: ReactNode;\n defaultTab: T;\n value?: T;\n onValueChange?: (value: T) => void;\n appearance?: 'default' | 'contained';\n frame?: 'stroke' | 'inset';\n className?: string;\n};\n\nexport const Tabs = <T extends string>({\n children,\n defaultTab,\n value,\n onValueChange,\n appearance = 'default',\n frame = 'stroke',\n className,\n ...props\n}: TabsRootProps<T>) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultTab);\n const selectedValue = value ?? uncontrolledValue;\n const select = (next: T) => {\n setUncontrolledValue(next);\n onValueChange?.(next);\n };\n return (\n <TabsContext.Provider value={{ appearance, frame, value: selectedValue, select }}>\n <BaseTabs.Root\n defaultValue={defaultTab}\n value={selectedValue}\n onValueChange={select}\n data-slot=\"tabs\"\n data-appearance={appearance}\n data-frame={frame}\n className={cn('group/tabs', appearance === 'default' ? 'overflow-y-auto' : 'w-full min-w-0', className)}\n {...props}\n >\n {children}\n </BaseTabs.Root>\n </TabsContext.Provider>\n );\n};\n"],"names":["cva","tabs","useContext","TabsContext","useRef","useState","useCallback","useLayoutEffect","useMemo","jsx","TabListContext","TooltipProvider","jsxs","cn","BaseTabs","Tooltip","TooltipTrigger","transitions","X","TooltipContent","DropdownMenu","ChevronDown","Fragment"],"mappings":"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"}
@@ -5,7 +5,7 @@ import { X, ChevronDown } from 'lucide-react';
5
5
  import { useContext, useRef, useState, useCallback, useLayoutEffect, useMemo, Fragment } from 'react';
6
6
  import { D as DropdownMenu } from './dropdown-menu-DpEn6HwK.js';
7
7
  import { b as TooltipProvider, T as Tooltip, c as TooltipTrigger, a as TooltipContent } from './tooltip-BrDiP0RI.js';
8
- import { a as TabsContext, b as TabListContext } from './tabs-tab-u6LS5twu.js';
8
+ import { a as TabsContext, b as TabListContext } from './tabs-tab-DluwCnDF.js';
9
9
  import { transitions } from './primitives/transitions.es.js';
10
10
  import { c as cn } from './cn-65Adrsfj.js';
11
11
 
@@ -309,4 +309,4 @@ const Tabs = ({
309
309
  };
310
310
 
311
311
  export { TabList as T, Tabs as a };
312
- //# sourceMappingURL=tabs-root-B2sdkQ3A.js.map
312
+ //# sourceMappingURL=tabs-root-UNPxoGhW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs-root-B2sdkQ3A.js","sources":["../src/ds/components/Tabs/tabs-list.tsx","../src/ds/components/Tabs/tabs-root.tsx"],"sourcesContent":["import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { ChevronDown, X } from 'lucide-react';\nimport { Fragment, useCallback, useContext, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { DropdownMenu } from '../DropdownMenu/dropdown-menu';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../Tooltip/tooltip';\nimport { TabListContext, TabsContext } from './tabs-context';\nimport type { TabMeasurement } from './tabs-context';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nconst tabListVariants = cva('relative flex items-center text-body', {\n variants: {\n variant: {\n pill: 'w-fit gap-1 rounded-full bg-fill-subtle p-1',\n 'pill-ghost': 'w-fit gap-0.5 rounded-full',\n },\n },\n defaultVariants: {\n variant: 'pill',\n },\n});\n\ntype TabListVariantsProps = VariantProps<typeof tabListVariants>;\n\nexport type TabListVariant = NonNullable<TabListVariantsProps['variant']>;\n\nexport type TabListSize = 'sm' | 'md';\n\nexport type TabListProps = Omit<TabListVariantsProps, 'variant'> & {\n children: React.ReactNode;\n className?: string;\n sticky?: boolean;\n /** Control height of each tab; `sm` lines up with `size=\"sm\"` buttons (e.g. inside a `DataPanel.Header`). */\n size?: TabListSize;\n /** `pill` sits the selected tab on a track; `pill-ghost` drops the track. */\n variant?: TabListVariant | null;\n /**\n * Optional inline styles applied to the underlying tab list element.\n * To override the active tab indicator color, set the `--tab-indicator-color`\n * CSS variable, e.g. `style={{ '--tab-indicator-color': 'var(--accent5)' } as React.CSSProperties}`.\n */\n style?: React.CSSProperties;\n};\n\nexport const TabList = ({ children, className, variant, size = 'md', sticky, style }: TabListProps) => {\n const resolvedVariant = variant ?? 'pill';\n const tabs = useContext(TabsContext);\n const scrollRef = useRef<HTMLDivElement>(null);\n const closeRefs = useRef(new Map<string, HTMLDivElement>());\n const tabPositions = useRef(new Map<string, number>());\n const selectedValue = useRef(tabs?.value);\n const [available, setAvailable] = useState<number | null>(null);\n const [measurements, setMeasurements] = useState<TabMeasurement[]>([]);\n const register = useCallback((tab: TabMeasurement) => {\n setMeasurements(previous => {\n const existing = previous.find(item => item.value === tab.value);\n if (\n existing &&\n existing.element === tab.element &&\n existing.width === tab.width &&\n existing.label === tab.label &&\n existing.disabled === tab.disabled &&\n existing.onClick === tab.onClick &&\n existing.onClose === tab.onClose\n )\n return previous;\n const next = existing ? previous.map(item => (item.value === tab.value ? tab : item)) : [...previous, tab];\n return next.sort((a, b) => {\n if (a.element === b.element) return 0;\n return a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n });\n });\n }, []);\n const unregister = useCallback(\n (value: string) => setMeasurements(previous => previous.filter(tab => tab.value !== value)),\n [],\n );\n const contained = tabs?.appearance === 'contained';\n useLayoutEffect(() => {\n const viewport = scrollRef.current;\n if (!viewport || !contained) return;\n const measure = () => setAvailable(viewport.clientWidth);\n measure();\n if (!('ResizeObserver' in globalThis)) return;\n const observer = new ResizeObserver(measure);\n observer.observe(viewport);\n return () => observer.disconnect();\n }, [contained]);\n const gap = tabs?.frame === 'inset' ? 4 : 0;\n const frameReserve = tabs?.frame === 'inset' ? 30 : 0;\n const hiddenValues = useMemo(() => {\n const hidden = new Set<string>();\n if (!contained || available === null) return hidden;\n const tabTotal = measurements.reduce((sum, tab) => sum + tab.width, 0) + gap * Math.max(measurements.length - 1, 0);\n if (tabTotal + frameReserve <= available) return hidden;\n let remaining = available - frameReserve - 48;\n const active = measurements.find(tab => tab.value === tabs?.value);\n if (active) remaining -= active.width + gap;\n let full = false;\n for (const tab of measurements) {\n if (tab === active) continue;\n if (full || tab.width + gap > remaining) {\n full = true;\n hidden.add(tab.value);\n } else remaining -= tab.width + gap;\n }\n return hidden;\n }, [contained, available, measurements, gap, frameReserve, tabs?.value]);\n const hiddenTabs = measurements.filter(tab => hiddenValues.has(tab.value));\n const overflowX = measurements\n .filter(tab => !hiddenValues.has(tab.value))\n .reduce((sum, tab) => sum + tab.width + gap, tabs?.frame === 'inset' ? 4 : 0);\n const visibleClosableTabs = measurements.filter(tab => !hiddenValues.has(tab.value) && tab.onClose);\n const listContext = useMemo(\n () => ({ variant: resolvedVariant, size, hiddenValues, register, unregister }),\n [resolvedVariant, size, hiddenValues, register, unregister],\n );\n useLayoutEffect(() => {\n const nextPositions = new Map(tabPositions.current);\n const reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n for (const tab of measurements) {\n if (hiddenValues.has(tab.value)) continue;\n const left = tab.element.offsetLeft;\n const previousLeft = tabPositions.current.get(tab.value);\n const close = closeRefs.current.get(tab.value);\n if (close) {\n close.style.left = `${left}px`;\n close.style.top = `${tab.element.offsetTop}px`;\n close.style.width = `${tab.element.offsetWidth}px`;\n close.style.height = `${tab.element.offsetHeight}px`;\n }\n const delta = previousLeft === undefined ? 0 : previousLeft - left;\n const shouldAnimate = tab.value !== tabs?.value && Math.abs(delta) <= 32;\n if (!reduceMotion && shouldAnimate && delta !== 0 && 'animate' in tab.element) {\n tab.element.animate([{ transform: `translateX(${delta}px)` }, { transform: 'translateX(0)' }], {\n duration: 180,\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n });\n }\n nextPositions.set(tab.value, left);\n }\n for (const value of nextPositions.keys()) {\n if (!measurements.some(tab => tab.value === value)) nextPositions.delete(value);\n }\n tabPositions.current = nextPositions;\n }, [hiddenValues, measurements, tabs?.value]);\n useLayoutEffect(() => {\n const previousValue = selectedValue.current;\n selectedValue.current = tabs?.value;\n const reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n if (!contained || tabs?.frame !== 'inset' || previousValue === tabs?.value || reduceMotion) return;\n const indicator = scrollRef.current?.querySelector<HTMLElement>('[data-slot=\"tabs-indicator\"]');\n if (!indicator || !('animate' in indicator)) return;\n indicator.animate(\n [\n { opacity: 0.72, scale: '0.97' },\n { opacity: 1, scale: '1' },\n ],\n {\n duration: 140,\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n },\n );\n }, [contained, tabs?.frame, tabs?.value]);\n\n return (\n <TabListContext.Provider value={listContext}>\n <TooltipProvider delay={200}>\n <div\n ref={scrollRef}\n data-slot=\"tabs-list-scroll\"\n className={cn('relative w-full overflow-x-auto', sticky && 'sticky top-0 z-10 bg-background')}\n >\n <BaseTabs.List\n data-slot=\"tabs-list\"\n data-overflow={hiddenTabs.length > 0 || undefined}\n data-variant={resolvedVariant}\n data-size={size}\n className={cn('group/tabs-list', tabListVariants({ variant: resolvedVariant }), className)}\n style={style}\n >\n {children}\n <BaseTabs.Indicator\n className={cn(\n 'absolute top-1/2 left-0 z-0 rounded-full bg-[var(--tab-indicator-color,var(--fill-hover))]',\n resolvedVariant === 'pill' ? 'h-[calc(100%-0.5rem)]' : 'h-full',\n 'w-[var(--active-tab-width)]',\n 'transition-[width,transform] duration-200 ease-in-out motion-reduce:transition-none',\n )}\n data-slot=\"tabs-indicator\"\n style={{ transform: 'translateY(var(--tabs-indicator-y, -50%)) translateX(var(--active-tab-left))' }}\n />\n </BaseTabs.List>\n <div data-slot=\"tabs-close-actions\">\n {visibleClosableTabs.map(tab => (\n <div\n key={tab.value}\n ref={element => {\n if (element) closeRefs.current.set(tab.value, element);\n else closeRefs.current.delete(tab.value);\n }}\n data-slot=\"tab-close-item\"\n data-visible={tabs?.value === tab.value || undefined}\n >\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n type=\"button\"\n tabIndex={tabs?.value === tab.value ? 0 : -1}\n data-slot=\"tab-close\"\n onClick={tab.onClose}\n className={cn('rounded p-0.5 hover:bg-fill-hover hover:text-accent2', transitions.colors)}\n />\n }\n >\n <span className=\"sr-only\">Close {tab.label}</span>\n <X aria-hidden=\"true\" className=\"size-3\" />\n </TooltipTrigger>\n <TooltipContent>Close {tab.label}</TooltipContent>\n </Tooltip>\n </div>\n ))}\n </div>\n {hiddenTabs.length > 0 && (\n <div\n data-slot=\"tabs-overflow\"\n style={{ transform: `translateX(${overflowX}px)` }}\n className=\"tabs-overflow\"\n >\n <DropdownMenu>\n <DropdownMenu.Trigger\n aria-label={`${hiddenTabs.length} more tabs`}\n variant=\"ghost\"\n size=\"sm\"\n className=\"tabular-nums\"\n >\n +{hiddenTabs.length}\n <ChevronDown aria-hidden=\"true\" className=\"size-3\" />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content className=\"grid\">\n {hiddenTabs.map((tab, index) => (\n <Fragment key={tab.value}>\n <DropdownMenu.Item\n data-slot=\"tabs-overflow-tab\"\n disabled={tab.disabled}\n className={tab.onClose ? 'pr-9' : undefined}\n style={{ gridArea: `${index + 1} / 1` }}\n onClick={() => {\n tabs?.select(tab.value);\n tab.onClick?.();\n }}\n >\n {tab.label}\n </DropdownMenu.Item>\n {tab.onClose ? (\n <Tooltip>\n <TooltipTrigger\n render={\n <DropdownMenu.Item\n data-slot=\"tabs-overflow-close\"\n className=\"pointer-events-none z-10 m-1 size-6 self-center justify-self-end p-0 opacity-0 hover:text-accent2 data-[highlighted]:text-accent2\"\n style={{ gridArea: `${index + 1} / 1` }}\n onClick={tab.onClose}\n />\n }\n >\n <span className=\"sr-only\">Close {tab.label}</span>\n <X aria-hidden=\"true\" className=\"size-3\" />\n </TooltipTrigger>\n <TooltipContent side=\"right\">Close {tab.label}</TooltipContent>\n </Tooltip>\n ) : null}\n </Fragment>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </div>\n )}\n </div>\n </TooltipProvider>\n </TabListContext.Provider>\n );\n};\n","import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { TabsContext } from './tabs-context';\nimport './tabs.css';\nimport { cn } from '@/lib/utils';\n\nexport type TabsRootProps<T extends string> = Omit<\n ComponentProps<'div'>,\n 'children' | 'defaultValue' | 'value' | 'onChange'\n> & {\n children: ReactNode;\n defaultTab: T;\n value?: T;\n onValueChange?: (value: T) => void;\n appearance?: 'default' | 'contained';\n frame?: 'stroke' | 'inset';\n className?: string;\n};\n\nexport const Tabs = <T extends string>({\n children,\n defaultTab,\n value,\n onValueChange,\n appearance = 'default',\n frame = 'stroke',\n className,\n ...props\n}: TabsRootProps<T>) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultTab);\n const selectedValue = value ?? uncontrolledValue;\n const select = (next: T) => {\n setUncontrolledValue(next);\n onValueChange?.(next);\n };\n return (\n <TabsContext.Provider value={{ appearance, frame, value: selectedValue, select }}>\n <BaseTabs.Root\n defaultValue={defaultTab}\n value={selectedValue}\n onValueChange={select}\n data-slot=\"tabs\"\n data-appearance={appearance}\n data-frame={frame}\n className={cn('group/tabs', appearance === 'default' ? 'overflow-y-auto' : 'w-full min-w-0', className)}\n {...props}\n >\n {children}\n </BaseTabs.Root>\n </TabsContext.Provider>\n );\n};\n"],"names":["BaseTabs"],"mappings":"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"}
1
+ {"version":3,"file":"tabs-root-UNPxoGhW.js","sources":["../src/ds/components/Tabs/tabs-list.tsx","../src/ds/components/Tabs/tabs-root.tsx"],"sourcesContent":["import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { ChevronDown, X } from 'lucide-react';\nimport { Fragment, useCallback, useContext, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { DropdownMenu } from '../DropdownMenu/dropdown-menu';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../Tooltip/tooltip';\nimport { TabListContext, TabsContext } from './tabs-context';\nimport type { TabMeasurement } from './tabs-context';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nconst tabListVariants = cva('relative flex items-center text-body', {\n variants: {\n variant: {\n pill: 'w-fit gap-1 rounded-full bg-fill-subtle p-1',\n 'pill-ghost': 'w-fit gap-0.5 rounded-full',\n },\n },\n defaultVariants: {\n variant: 'pill',\n },\n});\n\ntype TabListVariantsProps = VariantProps<typeof tabListVariants>;\n\nexport type TabListVariant = NonNullable<TabListVariantsProps['variant']>;\n\nexport type TabListSize = 'sm' | 'md';\n\nexport type TabListProps = Omit<TabListVariantsProps, 'variant'> & {\n children: React.ReactNode;\n className?: string;\n sticky?: boolean;\n /** Control height of each tab; `sm` lines up with `size=\"sm\"` buttons (e.g. inside a `DataPanel.Header`). */\n size?: TabListSize;\n /** `pill` sits the selected tab on a track; `pill-ghost` drops the track. */\n variant?: TabListVariant | null;\n /**\n * Optional inline styles applied to the underlying tab list element.\n * To override the active tab indicator color, set the `--tab-indicator-color`\n * CSS variable, e.g. `style={{ '--tab-indicator-color': 'var(--accent5)' } as React.CSSProperties}`.\n */\n style?: React.CSSProperties;\n};\n\nexport const TabList = ({ children, className, variant, size = 'md', sticky, style }: TabListProps) => {\n const resolvedVariant = variant ?? 'pill';\n const tabs = useContext(TabsContext);\n const scrollRef = useRef<HTMLDivElement>(null);\n const closeRefs = useRef(new Map<string, HTMLDivElement>());\n const tabPositions = useRef(new Map<string, number>());\n const selectedValue = useRef(tabs?.value);\n const [available, setAvailable] = useState<number | null>(null);\n const [measurements, setMeasurements] = useState<TabMeasurement[]>([]);\n const register = useCallback((tab: TabMeasurement) => {\n setMeasurements(previous => {\n const existing = previous.find(item => item.value === tab.value);\n if (\n existing &&\n existing.element === tab.element &&\n existing.width === tab.width &&\n existing.label === tab.label &&\n existing.disabled === tab.disabled &&\n existing.onClick === tab.onClick &&\n existing.onClose === tab.onClose\n )\n return previous;\n const next = existing ? previous.map(item => (item.value === tab.value ? tab : item)) : [...previous, tab];\n return next.sort((a, b) => {\n if (a.element === b.element) return 0;\n return a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n });\n });\n }, []);\n const unregister = useCallback(\n (value: string) => setMeasurements(previous => previous.filter(tab => tab.value !== value)),\n [],\n );\n const contained = tabs?.appearance === 'contained';\n useLayoutEffect(() => {\n const viewport = scrollRef.current;\n if (!viewport || !contained) return;\n const measure = () => setAvailable(viewport.clientWidth);\n measure();\n if (!('ResizeObserver' in globalThis)) return;\n const observer = new ResizeObserver(measure);\n observer.observe(viewport);\n return () => observer.disconnect();\n }, [contained]);\n const gap = tabs?.frame === 'inset' ? 4 : 0;\n const frameReserve = tabs?.frame === 'inset' ? 30 : 0;\n const hiddenValues = useMemo(() => {\n const hidden = new Set<string>();\n if (!contained || available === null) return hidden;\n const tabTotal = measurements.reduce((sum, tab) => sum + tab.width, 0) + gap * Math.max(measurements.length - 1, 0);\n if (tabTotal + frameReserve <= available) return hidden;\n let remaining = available - frameReserve - 48;\n const active = measurements.find(tab => tab.value === tabs?.value);\n if (active) remaining -= active.width + gap;\n let full = false;\n for (const tab of measurements) {\n if (tab === active) continue;\n if (full || tab.width + gap > remaining) {\n full = true;\n hidden.add(tab.value);\n } else remaining -= tab.width + gap;\n }\n return hidden;\n }, [contained, available, measurements, gap, frameReserve, tabs?.value]);\n const hiddenTabs = measurements.filter(tab => hiddenValues.has(tab.value));\n const overflowX = measurements\n .filter(tab => !hiddenValues.has(tab.value))\n .reduce((sum, tab) => sum + tab.width + gap, tabs?.frame === 'inset' ? 4 : 0);\n const visibleClosableTabs = measurements.filter(tab => !hiddenValues.has(tab.value) && tab.onClose);\n const listContext = useMemo(\n () => ({ variant: resolvedVariant, size, hiddenValues, register, unregister }),\n [resolvedVariant, size, hiddenValues, register, unregister],\n );\n useLayoutEffect(() => {\n const nextPositions = new Map(tabPositions.current);\n const reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n for (const tab of measurements) {\n if (hiddenValues.has(tab.value)) continue;\n const left = tab.element.offsetLeft;\n const previousLeft = tabPositions.current.get(tab.value);\n const close = closeRefs.current.get(tab.value);\n if (close) {\n close.style.left = `${left}px`;\n close.style.top = `${tab.element.offsetTop}px`;\n close.style.width = `${tab.element.offsetWidth}px`;\n close.style.height = `${tab.element.offsetHeight}px`;\n }\n const delta = previousLeft === undefined ? 0 : previousLeft - left;\n const shouldAnimate = tab.value !== tabs?.value && Math.abs(delta) <= 32;\n if (!reduceMotion && shouldAnimate && delta !== 0 && 'animate' in tab.element) {\n tab.element.animate([{ transform: `translateX(${delta}px)` }, { transform: 'translateX(0)' }], {\n duration: 180,\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n });\n }\n nextPositions.set(tab.value, left);\n }\n for (const value of nextPositions.keys()) {\n if (!measurements.some(tab => tab.value === value)) nextPositions.delete(value);\n }\n tabPositions.current = nextPositions;\n }, [hiddenValues, measurements, tabs?.value]);\n useLayoutEffect(() => {\n const previousValue = selectedValue.current;\n selectedValue.current = tabs?.value;\n const reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n if (!contained || tabs?.frame !== 'inset' || previousValue === tabs?.value || reduceMotion) return;\n const indicator = scrollRef.current?.querySelector<HTMLElement>('[data-slot=\"tabs-indicator\"]');\n if (!indicator || !('animate' in indicator)) return;\n indicator.animate(\n [\n { opacity: 0.72, scale: '0.97' },\n { opacity: 1, scale: '1' },\n ],\n {\n duration: 140,\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n },\n );\n }, [contained, tabs?.frame, tabs?.value]);\n\n return (\n <TabListContext.Provider value={listContext}>\n <TooltipProvider delay={200}>\n <div\n ref={scrollRef}\n data-slot=\"tabs-list-scroll\"\n className={cn('relative w-full overflow-x-auto', sticky && 'sticky top-0 z-10 bg-background')}\n >\n <BaseTabs.List\n data-slot=\"tabs-list\"\n data-overflow={hiddenTabs.length > 0 || undefined}\n data-variant={resolvedVariant}\n data-size={size}\n className={cn('group/tabs-list', tabListVariants({ variant: resolvedVariant }), className)}\n style={style}\n >\n {children}\n <BaseTabs.Indicator\n className={cn(\n 'absolute top-1/2 left-0 z-0 rounded-full bg-[var(--tab-indicator-color,var(--fill-hover))]',\n resolvedVariant === 'pill' ? 'h-[calc(100%-0.5rem)]' : 'h-full',\n 'w-[var(--active-tab-width)]',\n 'transition-[width,transform] duration-200 ease-in-out motion-reduce:transition-none',\n )}\n data-slot=\"tabs-indicator\"\n style={{ transform: 'translateY(var(--tabs-indicator-y, -50%)) translateX(var(--active-tab-left))' }}\n />\n </BaseTabs.List>\n <div data-slot=\"tabs-close-actions\">\n {visibleClosableTabs.map(tab => (\n <div\n key={tab.value}\n ref={element => {\n if (element) closeRefs.current.set(tab.value, element);\n else closeRefs.current.delete(tab.value);\n }}\n data-slot=\"tab-close-item\"\n data-visible={tabs?.value === tab.value || undefined}\n >\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n type=\"button\"\n tabIndex={tabs?.value === tab.value ? 0 : -1}\n data-slot=\"tab-close\"\n onClick={tab.onClose}\n className={cn('rounded p-0.5 hover:bg-fill-hover hover:text-accent2', transitions.colors)}\n />\n }\n >\n <span className=\"sr-only\">Close {tab.label}</span>\n <X aria-hidden=\"true\" className=\"size-3\" />\n </TooltipTrigger>\n <TooltipContent>Close {tab.label}</TooltipContent>\n </Tooltip>\n </div>\n ))}\n </div>\n {hiddenTabs.length > 0 && (\n <div\n data-slot=\"tabs-overflow\"\n style={{ transform: `translateX(${overflowX}px)` }}\n className=\"tabs-overflow\"\n >\n <DropdownMenu>\n <DropdownMenu.Trigger\n aria-label={`${hiddenTabs.length} more tabs`}\n variant=\"ghost\"\n size=\"sm\"\n className=\"tabular-nums\"\n >\n +{hiddenTabs.length}\n <ChevronDown aria-hidden=\"true\" className=\"size-3\" />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content className=\"grid\">\n {hiddenTabs.map((tab, index) => (\n <Fragment key={tab.value}>\n <DropdownMenu.Item\n data-slot=\"tabs-overflow-tab\"\n disabled={tab.disabled}\n className={tab.onClose ? 'pr-9' : undefined}\n style={{ gridArea: `${index + 1} / 1` }}\n onClick={() => {\n tabs?.select(tab.value);\n tab.onClick?.();\n }}\n >\n {tab.label}\n </DropdownMenu.Item>\n {tab.onClose ? (\n <Tooltip>\n <TooltipTrigger\n render={\n <DropdownMenu.Item\n data-slot=\"tabs-overflow-close\"\n className=\"pointer-events-none z-10 m-1 size-6 self-center justify-self-end p-0 opacity-0 hover:text-accent2 data-[highlighted]:text-accent2\"\n style={{ gridArea: `${index + 1} / 1` }}\n onClick={tab.onClose}\n />\n }\n >\n <span className=\"sr-only\">Close {tab.label}</span>\n <X aria-hidden=\"true\" className=\"size-3\" />\n </TooltipTrigger>\n <TooltipContent side=\"right\">Close {tab.label}</TooltipContent>\n </Tooltip>\n ) : null}\n </Fragment>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </div>\n )}\n </div>\n </TooltipProvider>\n </TabListContext.Provider>\n );\n};\n","import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { TabsContext } from './tabs-context';\nimport './tabs.css';\nimport { cn } from '@/lib/utils';\n\nexport type TabsRootProps<T extends string> = Omit<\n ComponentProps<'div'>,\n 'children' | 'defaultValue' | 'value' | 'onChange'\n> & {\n children: ReactNode;\n defaultTab: T;\n value?: T;\n onValueChange?: (value: T) => void;\n appearance?: 'default' | 'contained';\n frame?: 'stroke' | 'inset';\n className?: string;\n};\n\nexport const Tabs = <T extends string>({\n children,\n defaultTab,\n value,\n onValueChange,\n appearance = 'default',\n frame = 'stroke',\n className,\n ...props\n}: TabsRootProps<T>) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultTab);\n const selectedValue = value ?? uncontrolledValue;\n const select = (next: T) => {\n setUncontrolledValue(next);\n onValueChange?.(next);\n };\n return (\n <TabsContext.Provider value={{ appearance, frame, value: selectedValue, select }}>\n <BaseTabs.Root\n defaultValue={defaultTab}\n value={selectedValue}\n onValueChange={select}\n data-slot=\"tabs\"\n data-appearance={appearance}\n data-frame={frame}\n className={cn('group/tabs', appearance === 'default' ? 'overflow-y-auto' : 'w-full min-w-0', className)}\n {...props}\n >\n {children}\n </BaseTabs.Root>\n </TabsContext.Provider>\n );\n};\n"],"names":["BaseTabs"],"mappings":"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"}