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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) hide show
  1. package/CHANGELOG.md +338 -0
  2. package/dist/{Button-Bm94fEF2.cjs → Button-B4Ixj2aW.cjs} +4 -3
  3. package/dist/Button-B4Ixj2aW.cjs.map +1 -0
  4. package/dist/{Button-Bx2lFdqb.js → Button-C-9Pzy-Z.js} +4 -3
  5. package/dist/Button-C-9Pzy-Z.js.map +1 -0
  6. package/dist/{Notice-B9cdEg8R.cjs → Notice-DSfh1Ap5.cjs} +2 -2
  7. package/dist/{Notice-B9cdEg8R.cjs.map → Notice-DSfh1Ap5.cjs.map} +1 -1
  8. package/dist/{Notice-DIK9IZsq.js → Notice-DWHQgxkA.js} +2 -2
  9. package/dist/{Notice-DIK9IZsq.js.map → Notice-DWHQgxkA.js.map} +1 -1
  10. package/dist/{SessionExpired-C5ADs4NL.cjs → SessionExpired-CL4bppLl.cjs} +2 -2
  11. package/dist/{SessionExpired-C5ADs4NL.cjs.map → SessionExpired-CL4bppLl.cjs.map} +1 -1
  12. package/dist/{SessionExpired-CHF__hq9.js → SessionExpired-qvMB5AP_.js} +2 -2
  13. package/dist/{SessionExpired-CHF__hq9.js.map → SessionExpired-qvMB5AP_.js.map} +1 -1
  14. package/dist/Shimmer.css +37 -0
  15. package/dist/{combobox-sa_Pxyl4.js → combobox-CH9vBToX.js} +2 -2
  16. package/dist/{combobox-sa_Pxyl4.js.map → combobox-CH9vBToX.js.map} +1 -1
  17. package/dist/{combobox-DXwbHjvQ.cjs → combobox-Z3NehlIY.cjs} +2 -2
  18. package/dist/{combobox-DXwbHjvQ.cjs.map → combobox-Z3NehlIY.cjs.map} +1 -1
  19. package/dist/{command-Duq1xsiS.js → command-BZ7S7MR-.js} +2 -2
  20. package/dist/{command-Duq1xsiS.js.map → command-BZ7S7MR-.js.map} +1 -1
  21. package/dist/{command-qsEykgml.cjs → command-DJwcGKv_.cjs} +2 -2
  22. package/dist/{command-qsEykgml.cjs.map → command-DJwcGKv_.cjs.map} +1 -1
  23. package/dist/components/AlertDialog.cjs.js +1 -1
  24. package/dist/components/AlertDialog.es.js +1 -1
  25. package/dist/components/Button.cjs.js +1 -1
  26. package/dist/components/Button.es.js +1 -1
  27. package/dist/components/ChatShell.cjs.js +10 -6
  28. package/dist/components/ChatShell.cjs.js.map +1 -1
  29. package/dist/components/ChatShell.es.js +10 -6
  30. package/dist/components/ChatShell.es.js.map +1 -1
  31. package/dist/components/ClampedText.cjs.js +1 -1
  32. package/dist/components/ClampedText.es.js +1 -1
  33. package/dist/components/CodeBlock.cjs.js +6 -5
  34. package/dist/components/CodeBlock.cjs.js.map +1 -1
  35. package/dist/components/CodeBlock.es.js +4 -3
  36. package/dist/components/CodeBlock.es.js.map +1 -1
  37. package/dist/components/CodeEditor.cjs.js +1 -1
  38. package/dist/components/CodeEditor.es.js +1 -1
  39. package/dist/components/Columns.cjs.js +1 -1
  40. package/dist/components/Columns.es.js +1 -1
  41. package/dist/components/Combobox.cjs.js +1 -1
  42. package/dist/components/Combobox.es.js +1 -1
  43. package/dist/components/Command.cjs.js +1 -1
  44. package/dist/components/Command.es.js +1 -1
  45. package/dist/components/CommandPalette.cjs.js +1 -1
  46. package/dist/components/CommandPalette.es.js +1 -1
  47. package/dist/components/CopyButton.cjs.js +1 -1
  48. package/dist/components/CopyButton.es.js +1 -1
  49. package/dist/components/DataCodeSection.cjs.js +1 -1
  50. package/dist/components/DataCodeSection.es.js +1 -1
  51. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  52. package/dist/components/DataDetailsPanel.es.js +2 -2
  53. package/dist/components/DataFilter.cjs.js +2 -2
  54. package/dist/components/DataFilter.es.js +2 -2
  55. package/dist/components/DataList.cjs.js +2 -2
  56. package/dist/components/DataList.es.js +2 -2
  57. package/dist/components/DataPanel.cjs.js +1 -1
  58. package/dist/components/DataPanel.es.js +1 -1
  59. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  60. package/dist/components/DateRangeTimeline.es.js +1 -1
  61. package/dist/components/DateTimePicker.cjs.js +2 -2
  62. package/dist/components/DateTimePicker.es.js +2 -2
  63. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  64. package/dist/components/DateTimeRangePicker.es.js +1 -1
  65. package/dist/components/Dialog.cjs.js +1 -1
  66. package/dist/components/Dialog.es.js +1 -1
  67. package/dist/components/Drawer.cjs.js +1 -1
  68. package/dist/components/Drawer.es.js +1 -1
  69. package/dist/components/DropdownMenu.cjs.js +1 -1
  70. package/dist/components/DropdownMenu.es.js +1 -1
  71. package/dist/components/EnvironmentVariablesEditor.cjs.js +4 -4
  72. package/dist/components/EnvironmentVariablesEditor.es.js +4 -4
  73. package/dist/components/ErrorBoundary.cjs.js +1 -1
  74. package/dist/components/ErrorBoundary.es.js +1 -1
  75. package/dist/components/FormFieldBlocks.cjs.js +2 -2
  76. package/dist/components/FormFieldBlocks.es.js +2 -2
  77. package/dist/components/HoverCard.cjs.js +1 -1
  78. package/dist/components/HoverCard.es.js +1 -1
  79. package/dist/components/InputGroup.cjs.js +1 -1
  80. package/dist/components/InputGroup.es.js +1 -1
  81. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  82. package/dist/components/JSONSchemaForm.es.js +2 -2
  83. package/dist/components/KeyValueList.cjs.js +1 -1
  84. package/dist/components/KeyValueList.es.js +1 -1
  85. package/dist/components/ListSearch.cjs.js +1 -1
  86. package/dist/components/ListSearch.es.js +1 -1
  87. package/dist/components/MainSidebar.cjs.js +73 -50
  88. package/dist/components/MainSidebar.cjs.js.map +1 -1
  89. package/dist/components/MainSidebar.es.js +73 -50
  90. package/dist/components/MainSidebar.es.js.map +1 -1
  91. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  92. package/dist/components/MarkdownRenderer.es.js +1 -1
  93. package/dist/components/MessageScroller.cjs.js +1 -1
  94. package/dist/components/MessageScroller.es.js +1 -1
  95. package/dist/components/Notice.cjs.js +1 -1
  96. package/dist/components/Notice.es.js +1 -1
  97. package/dist/components/PrevNextNav.cjs.js +1 -1
  98. package/dist/components/PrevNextNav.es.js +1 -1
  99. package/dist/components/PropertyFilter.cjs.js +3 -3
  100. package/dist/components/PropertyFilter.es.js +4 -4
  101. package/dist/components/RuleBuilder.cjs.js +2 -2
  102. package/dist/components/RuleBuilder.es.js +2 -2
  103. package/dist/components/SankeyChart.cjs.js +10 -709
  104. package/dist/components/SankeyChart.cjs.js.map +1 -1
  105. package/dist/components/SankeyChart.es.js +2 -706
  106. package/dist/components/SankeyChart.es.js.map +1 -1
  107. package/dist/components/Select.cjs.js +1 -1
  108. package/dist/components/Select.es.js +1 -1
  109. package/dist/components/SessionExpired.cjs.js +1 -1
  110. package/dist/components/SessionExpired.es.js +1 -1
  111. package/dist/components/Shimmer.cjs.js +2 -15
  112. package/dist/components/Shimmer.cjs.js.map +1 -1
  113. package/dist/components/Shimmer.es.js +2 -15
  114. package/dist/components/Shimmer.es.js.map +1 -1
  115. package/dist/components/SideDialog.cjs.js +3 -3
  116. package/dist/components/SideDialog.es.js +3 -3
  117. package/dist/components/Tabs.cjs.js +4 -3
  118. package/dist/components/Tabs.cjs.js.map +1 -1
  119. package/dist/components/Tabs.es.js +2 -1
  120. package/dist/components/Tabs.es.js.map +1 -1
  121. package/dist/components/ThreadList.cjs.js +1 -1
  122. package/dist/components/ThreadList.es.js +1 -1
  123. package/dist/components/ThreadRail.cjs.js +6 -5
  124. package/dist/components/ThreadRail.cjs.js.map +1 -1
  125. package/dist/components/ThreadRail.es.js +6 -6
  126. package/dist/components/ThreadRail.es.js.map +1 -1
  127. package/dist/components/Truncate.cjs.js +1 -1
  128. package/dist/components/Truncate.es.js +1 -1
  129. package/dist/components/ai/ask-user.cjs.js +1 -1
  130. package/dist/components/ai/ask-user.es.js +1 -1
  131. package/dist/components/ai/plan.cjs.js +2 -2
  132. package/dist/components/ai/plan.es.js +2 -2
  133. package/dist/{copy-button-H2iaKMng.js → copy-button-B1GWIQ-x.js} +2 -2
  134. package/dist/{copy-button-H2iaKMng.js.map → copy-button-B1GWIQ-x.js.map} +1 -1
  135. package/dist/{copy-button-BKFcsNE1.cjs → copy-button-DwZ3c7D4.cjs} +2 -2
  136. package/dist/{copy-button-BKFcsNE1.cjs.map → copy-button-DwZ3c7D4.cjs.map} +1 -1
  137. package/dist/{data-code-section-D2zjah_b.cjs → data-code-section-BjmFgJpC.cjs} +5 -5
  138. package/dist/{data-code-section-D2zjah_b.cjs.map → data-code-section-BjmFgJpC.cjs.map} +1 -1
  139. package/dist/{data-code-section-MHMkC6q9.js → data-code-section-PJM5l3aS.js} +5 -5
  140. package/dist/{data-code-section-MHMkC6q9.js.map → data-code-section-PJM5l3aS.js.map} +1 -1
  141. package/dist/{data-list-CnQRIUyN.js → data-list-CnQWE0QP.js} +2 -2
  142. package/dist/{data-list-CnQRIUyN.js.map → data-list-CnQWE0QP.js.map} +1 -1
  143. package/dist/{data-list-Cb-piK4z.cjs → data-list-Cnnnx_vD.cjs} +2 -2
  144. package/dist/{data-list-Cb-piK4z.cjs.map → data-list-Cnnnx_vD.cjs.map} +1 -1
  145. package/dist/{data-panel-BEvHk4wg.js → data-panel-BQqPr6ew.js} +3 -3
  146. package/dist/{data-panel-BEvHk4wg.js.map → data-panel-BQqPr6ew.js.map} +1 -1
  147. package/dist/{data-panel-BumsjXVz.cjs → data-panel-C85h9XvH.cjs} +3 -3
  148. package/dist/{data-panel-BumsjXVz.cjs.map → data-panel-C85h9XvH.cjs.map} +1 -1
  149. package/dist/{date-time-range-picker-yJBIm34J.js → date-time-range-picker-BQpZVrH7.js} +4 -4
  150. package/dist/{date-time-range-picker-yJBIm34J.js.map → date-time-range-picker-BQpZVrH7.js.map} +1 -1
  151. package/dist/{date-time-range-picker-ue0m5G27.cjs → date-time-range-picker-sT6pHDmU.cjs} +4 -4
  152. package/dist/{date-time-range-picker-ue0m5G27.cjs.map → date-time-range-picker-sT6pHDmU.cjs.map} +1 -1
  153. package/dist/{dialog-ClItuCFY.cjs → dialog-5ZYCeKf-.cjs} +2 -2
  154. package/dist/{dialog-ClItuCFY.cjs.map → dialog-5ZYCeKf-.cjs.map} +1 -1
  155. package/dist/{dialog-bnt6epW2.js → dialog-DDXW5M21.js} +2 -2
  156. package/dist/{dialog-bnt6epW2.js.map → dialog-DDXW5M21.js.map} +1 -1
  157. package/dist/domains/logs/components/log-details-view.cjs.js +2 -2
  158. package/dist/domains/logs/components/log-details-view.es.js +2 -2
  159. package/dist/domains/logs/components/logs-error-content.cjs.js +1 -1
  160. package/dist/domains/logs/components/logs-error-content.es.js +1 -1
  161. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  162. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  163. package/dist/domains/logs/components/no-logs-info.cjs.js +1 -1
  164. package/dist/domains/logs/components/no-logs-info.es.js +1 -1
  165. package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
  166. package/dist/domains/memory/components/flame-graph.es.js +1 -1
  167. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  168. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  169. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  170. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  171. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  172. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  173. package/dist/domains/metrics/components/latency-card-view.cjs.js +4 -3
  174. package/dist/domains/metrics/components/latency-card-view.cjs.js.map +1 -1
  175. package/dist/domains/metrics/components/latency-card-view.es.js +2 -1
  176. package/dist/domains/metrics/components/latency-card-view.es.js.map +1 -1
  177. package/dist/domains/metrics/components/memory-card-view.cjs.js +5 -4
  178. package/dist/domains/metrics/components/memory-card-view.cjs.js.map +1 -1
  179. package/dist/domains/metrics/components/memory-card-view.es.js +3 -2
  180. package/dist/domains/metrics/components/memory-card-view.es.js.map +1 -1
  181. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
  182. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
  183. package/dist/domains/metrics/components/scores-card-view.cjs.js +5 -4
  184. package/dist/domains/metrics/components/scores-card-view.cjs.js.map +1 -1
  185. package/dist/domains/metrics/components/scores-card-view.es.js +3 -2
  186. package/dist/domains/metrics/components/scores-card-view.es.js.map +1 -1
  187. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +4 -3
  188. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js.map +1 -1
  189. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +2 -1
  190. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js.map +1 -1
  191. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +4 -3
  192. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js.map +1 -1
  193. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +2 -1
  194. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js.map +1 -1
  195. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +4 -3
  196. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js.map +1 -1
  197. package/dist/domains/metrics/components/traces-volume-card-view.es.js +2 -1
  198. package/dist/domains/metrics/components/traces-volume-card-view.es.js.map +1 -1
  199. package/dist/domains/traces/components/no-traces-info.cjs.js +1 -1
  200. package/dist/domains/traces/components/no-traces-info.es.js +1 -1
  201. package/dist/domains/traces/components/shared.cjs.js +8 -0
  202. package/dist/domains/traces/components/shared.cjs.js.map +1 -1
  203. package/dist/domains/traces/components/shared.es.js +8 -0
  204. package/dist/domains/traces/components/shared.es.js.map +1 -1
  205. package/dist/domains/traces/components/span-data-panel-view.cjs.js +6 -5
  206. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  207. package/dist/domains/traces/components/span-data-panel-view.es.js +4 -3
  208. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  209. package/dist/domains/traces/components/timeline-name-col.cjs.js +6 -2
  210. package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
  211. package/dist/domains/traces/components/timeline-name-col.es.js +6 -2
  212. package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
  213. package/dist/domains/traces/components/timeline-timing-col.cjs.js +1 -1
  214. package/dist/domains/traces/components/timeline-timing-col.es.js +1 -1
  215. package/dist/domains/traces/components/trace-columns-menu.cjs.js +3 -3
  216. package/dist/domains/traces/components/trace-columns-menu.es.js +3 -3
  217. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +4 -10
  218. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  219. package/dist/domains/traces/components/trace-data-panel-view.es.js +5 -11
  220. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  221. package/dist/domains/traces/components/traces-error-content.cjs.js +1 -1
  222. package/dist/domains/traces/components/traces-error-content.es.js +1 -1
  223. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +2 -2
  224. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +2 -2
  225. package/dist/domains/traces/components/traces-list-view.cjs.js +2 -2
  226. package/dist/domains/traces/components/traces-list-view.es.js +2 -2
  227. package/dist/domains/traces/components/traces-toolbar.cjs.js +1 -1
  228. package/dist/domains/traces/components/traces-toolbar.es.js +1 -1
  229. package/dist/domains/traces/hooks/use-entity-names.cjs.js +12 -4
  230. package/dist/domains/traces/hooks/use-entity-names.cjs.js.map +1 -1
  231. package/dist/domains/traces/hooks/use-entity-names.es.js +12 -4
  232. package/dist/domains/traces/hooks/use-entity-names.es.js.map +1 -1
  233. package/dist/{drawer-DZ9amYo_.js → drawer-C8jNXutE.js} +2 -2
  234. package/dist/{drawer-DZ9amYo_.js.map → drawer-C8jNXutE.js.map} +1 -1
  235. package/dist/{drawer-CdsTitFp.cjs → drawer-CNnvBMfD.cjs} +2 -2
  236. package/dist/{drawer-CdsTitFp.cjs.map → drawer-CNnvBMfD.cjs.map} +1 -1
  237. package/dist/{dropdown-menu-ppWztidX.cjs → dropdown-menu-BZGlERgf.cjs} +4 -3
  238. package/dist/dropdown-menu-BZGlERgf.cjs.map +1 -0
  239. package/dist/{dropdown-menu-DEFygDZI.js → dropdown-menu-DCMh8P4w.js} +4 -3
  240. package/dist/dropdown-menu-DCMh8P4w.js.map +1 -0
  241. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  242. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  243. package/dist/ee/signals/entity-learning-api.cjs.js +113 -0
  244. package/dist/ee/signals/entity-learning-api.cjs.js.map +1 -0
  245. package/dist/ee/signals/entity-learning-api.d.ts +2 -0
  246. package/dist/ee/signals/entity-learning-api.es.js +99 -0
  247. package/dist/ee/signals/entity-learning-api.es.js.map +1 -0
  248. package/dist/ee/signals/examples-pager.cjs.js +49 -0
  249. package/dist/ee/signals/examples-pager.cjs.js.map +1 -0
  250. package/dist/ee/signals/examples-pager.d.ts +2 -0
  251. package/dist/ee/signals/examples-pager.es.js +44 -0
  252. package/dist/ee/signals/examples-pager.es.js.map +1 -0
  253. package/dist/ee/signals/flow-card.cjs.js +105 -0
  254. package/dist/ee/signals/flow-card.cjs.js.map +1 -0
  255. package/dist/ee/signals/flow-card.d.ts +2 -0
  256. package/dist/ee/signals/flow-card.es.js +101 -0
  257. package/dist/ee/signals/flow-card.es.js.map +1 -0
  258. package/dist/ee/signals/hooks/theme-query-guards.cjs.js +20 -0
  259. package/dist/ee/signals/hooks/theme-query-guards.cjs.js.map +1 -0
  260. package/dist/ee/signals/hooks/theme-query-guards.d.ts +2 -0
  261. package/dist/ee/signals/hooks/theme-query-guards.es.js +14 -0
  262. package/dist/ee/signals/hooks/theme-query-guards.es.js.map +1 -0
  263. package/dist/ee/signals/hooks/use-entity-learning-progress.cjs.js +19 -0
  264. package/dist/ee/signals/hooks/use-entity-learning-progress.cjs.js.map +1 -0
  265. package/dist/ee/signals/hooks/use-entity-learning-progress.d.ts +2 -0
  266. package/dist/ee/signals/hooks/use-entity-learning-progress.es.js +15 -0
  267. package/dist/ee/signals/hooks/use-entity-learning-progress.es.js.map +1 -0
  268. package/dist/ee/signals/hooks/use-noise-examples.cjs.js +32 -0
  269. package/dist/ee/signals/hooks/use-noise-examples.cjs.js.map +1 -0
  270. package/dist/ee/signals/hooks/use-noise-examples.d.ts +2 -0
  271. package/dist/ee/signals/hooks/use-noise-examples.es.js +28 -0
  272. package/dist/ee/signals/hooks/use-noise-examples.es.js.map +1 -0
  273. package/dist/ee/signals/hooks/use-noise.cjs.js +22 -0
  274. package/dist/ee/signals/hooks/use-noise.cjs.js.map +1 -0
  275. package/dist/ee/signals/hooks/use-noise.d.ts +2 -0
  276. package/dist/ee/signals/hooks/use-noise.es.js +18 -0
  277. package/dist/ee/signals/hooks/use-noise.es.js.map +1 -0
  278. package/dist/ee/signals/hooks/use-snapshot-playback.cjs.js +22 -0
  279. package/dist/ee/signals/hooks/use-snapshot-playback.cjs.js.map +1 -0
  280. package/dist/ee/signals/hooks/use-snapshot-playback.d.ts +2 -0
  281. package/dist/ee/signals/hooks/use-snapshot-playback.es.js +18 -0
  282. package/dist/ee/signals/hooks/use-snapshot-playback.es.js.map +1 -0
  283. package/dist/ee/signals/hooks/use-theme-detail.cjs.js +27 -0
  284. package/dist/ee/signals/hooks/use-theme-detail.cjs.js.map +1 -0
  285. package/dist/ee/signals/hooks/use-theme-detail.d.ts +2 -0
  286. package/dist/ee/signals/hooks/use-theme-detail.es.js +23 -0
  287. package/dist/ee/signals/hooks/use-theme-detail.es.js.map +1 -0
  288. package/dist/ee/signals/hooks/use-theme-entities.cjs.js +18 -0
  289. package/dist/ee/signals/hooks/use-theme-entities.cjs.js.map +1 -0
  290. package/dist/ee/signals/hooks/use-theme-entities.d.ts +2 -0
  291. package/dist/ee/signals/hooks/use-theme-entities.es.js +14 -0
  292. package/dist/ee/signals/hooks/use-theme-entities.es.js.map +1 -0
  293. package/dist/ee/signals/hooks/use-theme-examples.cjs.js +40 -0
  294. package/dist/ee/signals/hooks/use-theme-examples.cjs.js.map +1 -0
  295. package/dist/ee/signals/hooks/use-theme-examples.d.ts +2 -0
  296. package/dist/ee/signals/hooks/use-theme-examples.es.js +36 -0
  297. package/dist/ee/signals/hooks/use-theme-examples.es.js.map +1 -0
  298. package/dist/ee/signals/hooks/use-theme-flow.cjs.js +23 -0
  299. package/dist/ee/signals/hooks/use-theme-flow.cjs.js.map +1 -0
  300. package/dist/ee/signals/hooks/use-theme-flow.d.ts +2 -0
  301. package/dist/ee/signals/hooks/use-theme-flow.es.js +19 -0
  302. package/dist/ee/signals/hooks/use-theme-flow.es.js.map +1 -0
  303. package/dist/ee/signals/hooks/use-theme-flows.cjs.js +22 -0
  304. package/dist/ee/signals/hooks/use-theme-flows.cjs.js.map +1 -0
  305. package/dist/ee/signals/hooks/use-theme-flows.d.ts +2 -0
  306. package/dist/ee/signals/hooks/use-theme-flows.es.js +18 -0
  307. package/dist/ee/signals/hooks/use-theme-flows.es.js.map +1 -0
  308. package/dist/ee/signals/hooks/use-theme-history.cjs.js +20 -0
  309. package/dist/ee/signals/hooks/use-theme-history.cjs.js.map +1 -0
  310. package/dist/ee/signals/hooks/use-theme-history.d.ts +2 -0
  311. package/dist/ee/signals/hooks/use-theme-history.es.js +16 -0
  312. package/dist/ee/signals/hooks/use-theme-history.es.js.map +1 -0
  313. package/dist/ee/signals/hooks/use-theme-paths.cjs.js +21 -0
  314. package/dist/ee/signals/hooks/use-theme-paths.cjs.js.map +1 -0
  315. package/dist/ee/signals/hooks/use-theme-paths.d.ts +2 -0
  316. package/dist/ee/signals/hooks/use-theme-paths.es.js +17 -0
  317. package/dist/ee/signals/hooks/use-theme-paths.es.js.map +1 -0
  318. package/dist/ee/signals/hooks/use-theme-snapshots.cjs.js +22 -0
  319. package/dist/ee/signals/hooks/use-theme-snapshots.cjs.js.map +1 -0
  320. package/dist/ee/signals/hooks/use-theme-snapshots.d.ts +2 -0
  321. package/dist/ee/signals/hooks/use-theme-snapshots.es.js +18 -0
  322. package/dist/ee/signals/hooks/use-theme-snapshots.es.js.map +1 -0
  323. package/dist/ee/signals/hooks/use-trace-insight.cjs.js +21 -0
  324. package/dist/ee/signals/hooks/use-trace-insight.cjs.js.map +1 -0
  325. package/dist/ee/signals/hooks/use-trace-insight.d.ts +2 -0
  326. package/dist/ee/signals/hooks/use-trace-insight.es.js +17 -0
  327. package/dist/ee/signals/hooks/use-trace-insight.es.js.map +1 -0
  328. package/dist/ee/signals/hooks.cjs.js +30 -0
  329. package/dist/ee/signals/hooks.cjs.js.map +1 -0
  330. package/dist/ee/signals/hooks.d.ts +2 -0
  331. package/dist/ee/signals/hooks.es.js +12 -0
  332. package/dist/ee/signals/hooks.es.js.map +1 -0
  333. package/dist/ee/signals/lifeline-point.cjs.js +73 -0
  334. package/dist/ee/signals/lifeline-point.cjs.js.map +1 -0
  335. package/dist/ee/signals/lifeline-point.d.ts +2 -0
  336. package/dist/ee/signals/lifeline-point.es.js +69 -0
  337. package/dist/ee/signals/lifeline-point.es.js.map +1 -0
  338. package/dist/ee/signals/lifeline-row.cjs.js +118 -0
  339. package/dist/ee/signals/lifeline-row.cjs.js.map +1 -0
  340. package/dist/ee/signals/lifeline-row.d.ts +2 -0
  341. package/dist/ee/signals/lifeline-row.es.js +114 -0
  342. package/dist/ee/signals/lifeline-row.es.js.map +1 -0
  343. package/dist/ee/signals/noise-detail-panel.cjs.js +96 -0
  344. package/dist/ee/signals/noise-detail-panel.cjs.js.map +1 -0
  345. package/dist/ee/signals/noise-detail-panel.d.ts +2 -0
  346. package/dist/ee/signals/noise-detail-panel.es.js +92 -0
  347. package/dist/ee/signals/noise-detail-panel.es.js.map +1 -0
  348. package/dist/ee/signals/sankey-signals-data.cjs.js +138 -0
  349. package/dist/ee/signals/sankey-signals-data.cjs.js.map +1 -0
  350. package/dist/ee/signals/sankey-signals-data.d.ts +2 -0
  351. package/dist/ee/signals/sankey-signals-data.es.js +127 -0
  352. package/dist/ee/signals/sankey-signals-data.es.js.map +1 -0
  353. package/dist/ee/signals/sankey-signals.cjs.js +367 -0
  354. package/dist/ee/signals/sankey-signals.cjs.js.map +1 -0
  355. package/dist/ee/signals/sankey-signals.d.ts +2 -0
  356. package/dist/ee/signals/sankey-signals.es.js +363 -0
  357. package/dist/ee/signals/sankey-signals.es.js.map +1 -0
  358. package/dist/ee/signals/signal-delta-column.cjs.js +90 -0
  359. package/dist/ee/signals/signal-delta-column.cjs.js.map +1 -0
  360. package/dist/ee/signals/signal-delta-column.d.ts +2 -0
  361. package/dist/ee/signals/signal-delta-column.es.js +86 -0
  362. package/dist/ee/signals/signal-delta-column.es.js.map +1 -0
  363. package/dist/ee/signals/signal-formatting.cjs.js +83 -0
  364. package/dist/ee/signals/signal-formatting.cjs.js.map +1 -0
  365. package/dist/ee/signals/signal-formatting.d.ts +2 -0
  366. package/dist/ee/signals/signal-formatting.es.js +70 -0
  367. package/dist/ee/signals/signal-formatting.es.js.map +1 -0
  368. package/dist/ee/signals/signal-lifelines.cjs.js +69 -0
  369. package/dist/ee/signals/signal-lifelines.cjs.js.map +1 -0
  370. package/dist/ee/signals/signal-lifelines.d.ts +2 -0
  371. package/dist/ee/signals/signal-lifelines.es.js +65 -0
  372. package/dist/ee/signals/signal-lifelines.es.js.map +1 -0
  373. package/dist/ee/signals/signals-error-state.cjs.js +28 -0
  374. package/dist/ee/signals/signals-error-state.cjs.js.map +1 -0
  375. package/dist/ee/signals/signals-error-state.d.ts +2 -0
  376. package/dist/ee/signals/signals-error-state.es.js +24 -0
  377. package/dist/ee/signals/signals-error-state.es.js.map +1 -0
  378. package/dist/ee/signals/signals-loading-skeleton.cjs.js +57 -0
  379. package/dist/ee/signals/signals-loading-skeleton.cjs.js.map +1 -0
  380. package/dist/ee/signals/signals-loading-skeleton.d.ts +2 -0
  381. package/dist/ee/signals/signals-loading-skeleton.es.js +52 -0
  382. package/dist/ee/signals/signals-loading-skeleton.es.js.map +1 -0
  383. package/dist/ee/signals/snapshot-timeline-data.cjs.js +40 -0
  384. package/dist/ee/signals/snapshot-timeline-data.cjs.js.map +1 -0
  385. package/dist/ee/signals/snapshot-timeline-data.d.ts +2 -0
  386. package/dist/ee/signals/snapshot-timeline-data.es.js +34 -0
  387. package/dist/ee/signals/snapshot-timeline-data.es.js.map +1 -0
  388. package/dist/ee/signals/snapshot-timeline.cjs.js +109 -0
  389. package/dist/ee/signals/snapshot-timeline.cjs.js.map +1 -0
  390. package/dist/ee/signals/snapshot-timeline.d.ts +2 -0
  391. package/dist/ee/signals/snapshot-timeline.es.js +104 -0
  392. package/dist/ee/signals/snapshot-timeline.es.js.map +1 -0
  393. package/dist/ee/signals/sortable-signal-headers.cjs.js +145 -0
  394. package/dist/ee/signals/sortable-signal-headers.cjs.js.map +1 -0
  395. package/dist/ee/signals/sortable-signal-headers.d.ts +2 -0
  396. package/dist/ee/signals/sortable-signal-headers.es.js +141 -0
  397. package/dist/ee/signals/sortable-signal-headers.es.js.map +1 -0
  398. package/dist/ee/signals/theme-compare-data.cjs.js +46 -0
  399. package/dist/ee/signals/theme-compare-data.cjs.js.map +1 -0
  400. package/dist/ee/signals/theme-compare-data.d.ts +2 -0
  401. package/dist/ee/signals/theme-compare-data.es.js +41 -0
  402. package/dist/ee/signals/theme-compare-data.es.js.map +1 -0
  403. package/dist/ee/signals/theme-compare-sparkline.cjs.js +67 -0
  404. package/dist/ee/signals/theme-compare-sparkline.cjs.js.map +1 -0
  405. package/dist/ee/signals/theme-compare-sparkline.d.ts +2 -0
  406. package/dist/ee/signals/theme-compare-sparkline.es.js +63 -0
  407. package/dist/ee/signals/theme-compare-sparkline.es.js.map +1 -0
  408. package/dist/ee/signals/theme-compare.cjs.js +103 -0
  409. package/dist/ee/signals/theme-compare.cjs.js.map +1 -0
  410. package/dist/ee/signals/theme-compare.d.ts +2 -0
  411. package/dist/ee/signals/theme-compare.es.js +99 -0
  412. package/dist/ee/signals/theme-compare.es.js.map +1 -0
  413. package/dist/ee/signals/theme-detail-panel.cjs.js +171 -0
  414. package/dist/ee/signals/theme-detail-panel.cjs.js.map +1 -0
  415. package/dist/ee/signals/theme-detail-panel.d.ts +2 -0
  416. package/dist/ee/signals/theme-detail-panel.es.js +167 -0
  417. package/dist/ee/signals/theme-detail-panel.es.js.map +1 -0
  418. package/dist/ee/signals/theme-drilldown-data.cjs.js +115 -0
  419. package/dist/ee/signals/theme-drilldown-data.cjs.js.map +1 -0
  420. package/dist/ee/signals/theme-drilldown-data.d.ts +2 -0
  421. package/dist/ee/signals/theme-drilldown-data.es.js +109 -0
  422. package/dist/ee/signals/theme-drilldown-data.es.js.map +1 -0
  423. package/dist/ee/signals/theme-filter-banner.cjs.js +64 -0
  424. package/dist/ee/signals/theme-filter-banner.cjs.js.map +1 -0
  425. package/dist/ee/signals/theme-filter-banner.d.ts +2 -0
  426. package/dist/ee/signals/theme-filter-banner.es.js +60 -0
  427. package/dist/ee/signals/theme-filter-banner.es.js.map +1 -0
  428. package/dist/ee/signals/theme-lifelines-data.cjs.js +62 -0
  429. package/dist/ee/signals/theme-lifelines-data.cjs.js.map +1 -0
  430. package/dist/ee/signals/theme-lifelines-data.d.ts +2 -0
  431. package/dist/ee/signals/theme-lifelines-data.es.js +56 -0
  432. package/dist/ee/signals/theme-lifelines-data.es.js.map +1 -0
  433. package/dist/ee/signals/theme-lifelines.cjs.js +75 -0
  434. package/dist/ee/signals/theme-lifelines.cjs.js.map +1 -0
  435. package/dist/ee/signals/theme-lifelines.d.ts +2 -0
  436. package/dist/ee/signals/theme-lifelines.es.js +71 -0
  437. package/dist/ee/signals/theme-lifelines.es.js.map +1 -0
  438. package/dist/ee/signals/theme-trend-chart.cjs.js +83 -0
  439. package/dist/ee/signals/theme-trend-chart.cjs.js.map +1 -0
  440. package/dist/ee/signals/theme-trend-chart.d.ts +2 -0
  441. package/dist/ee/signals/theme-trend-chart.es.js +79 -0
  442. package/dist/ee/signals/theme-trend-chart.es.js.map +1 -0
  443. package/dist/ee/signals/theme-trend.cjs.js +27 -0
  444. package/dist/ee/signals/theme-trend.cjs.js.map +1 -0
  445. package/dist/ee/signals/theme-trend.d.ts +2 -0
  446. package/dist/ee/signals/theme-trend.es.js +22 -0
  447. package/dist/ee/signals/theme-trend.es.js.map +1 -0
  448. package/dist/ee/signals/trace-insight-view.cjs.js +89 -0
  449. package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -0
  450. package/dist/ee/signals/trace-insight-view.d.ts +2 -0
  451. package/dist/ee/signals/trace-insight-view.es.js +85 -0
  452. package/dist/ee/signals/trace-insight-view.es.js.map +1 -0
  453. package/dist/ee/signals/trace-intelligence-context.cjs.js +24 -0
  454. package/dist/ee/signals/trace-intelligence-context.cjs.js.map +1 -0
  455. package/dist/ee/signals/trace-intelligence-context.d.ts +2 -0
  456. package/dist/ee/signals/trace-intelligence-context.es.js +19 -0
  457. package/dist/ee/signals/trace-intelligence-context.es.js.map +1 -0
  458. package/dist/ee/signals/trace-intelligence-explainer.cjs.js +45 -0
  459. package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -0
  460. package/dist/ee/signals/trace-intelligence-explainer.d.ts +2 -0
  461. package/dist/ee/signals/trace-intelligence-explainer.es.js +41 -0
  462. package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -0
  463. package/dist/ee/signals/trace-intelligence-provider.cjs.js +19 -0
  464. package/dist/ee/signals/trace-intelligence-provider.cjs.js.map +1 -0
  465. package/dist/ee/signals/trace-intelligence-provider.d.ts +2 -0
  466. package/dist/ee/signals/trace-intelligence-provider.es.js +15 -0
  467. package/dist/ee/signals/trace-intelligence-provider.es.js.map +1 -0
  468. package/dist/ee/signals/types.cjs.js +3 -0
  469. package/dist/ee/signals/types.cjs.js.map +1 -0
  470. package/dist/ee/signals/types.d.ts +2 -0
  471. package/dist/ee/signals/types.es.js +2 -0
  472. package/dist/ee/signals/types.es.js.map +1 -0
  473. package/dist/ee/signals/use-trace-intelligence.cjs.js +13 -0
  474. package/dist/ee/signals/use-trace-intelligence.cjs.js.map +1 -0
  475. package/dist/ee/signals/use-trace-intelligence.d.ts +2 -0
  476. package/dist/ee/signals/use-trace-intelligence.es.js +9 -0
  477. package/dist/ee/signals/use-trace-intelligence.es.js.map +1 -0
  478. package/dist/ee/signals/view-mode-tab.cjs.js +18 -0
  479. package/dist/ee/signals/view-mode-tab.cjs.js.map +1 -0
  480. package/dist/ee/signals/view-mode-tab.d.ts +2 -0
  481. package/dist/ee/signals/view-mode-tab.es.js +14 -0
  482. package/dist/ee/signals/view-mode-tab.es.js.map +1 -0
  483. package/dist/ee/signals.cjs.js +38 -0
  484. package/dist/ee/signals.cjs.js.map +1 -1
  485. package/dist/ee/signals.es.js +18 -0
  486. package/dist/ee/signals.es.js.map +1 -1
  487. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +3 -3
  488. package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
  489. package/dist/{hover-card-crVofiZO.js → hover-card-Bs845QbV.js} +2 -2
  490. package/dist/{hover-card-crVofiZO.js.map → hover-card-Bs845QbV.js.map} +1 -1
  491. package/dist/{hover-card-Bx258om1.cjs → hover-card-Cd9QK50X.cjs} +2 -2
  492. package/dist/{hover-card-Bx258om1.cjs.map → hover-card-Cd9QK50X.cjs.map} +1 -1
  493. package/dist/{input-group-CH72YUVL.cjs → input-group-BTaw3Ycd.cjs} +2 -2
  494. package/dist/{input-group-CH72YUVL.cjs.map → input-group-BTaw3Ycd.cjs.map} +1 -1
  495. package/dist/{input-group-Dzs-ai0n.js → input-group-CWT_IwX0.js} +2 -2
  496. package/dist/{input-group-Dzs-ai0n.js.map → input-group-CWT_IwX0.js.map} +1 -1
  497. package/dist/{markdown-renderer-Bi2fWeoF.js → markdown-renderer-DszxuuNM.js} +36 -18
  498. package/dist/markdown-renderer-DszxuuNM.js.map +1 -0
  499. package/dist/{markdown-renderer-DwfNrhEH.cjs → markdown-renderer-g8xNLOc0.cjs} +36 -18
  500. package/dist/markdown-renderer-g8xNLOc0.cjs.map +1 -0
  501. package/dist/{message-scroller-BmzjZZNs.cjs → message-scroller-BssU0EKT.cjs} +89 -16
  502. package/dist/message-scroller-BssU0EKT.cjs.map +1 -0
  503. package/dist/{message-scroller-D5O7sUS5.js → message-scroller-DlVS0FW7.js} +89 -16
  504. package/dist/message-scroller-DlVS0FW7.js.map +1 -0
  505. package/dist/{property-filter-applied-DI4w1ACS.js → property-filter-applied-C2teL4uw.js} +3 -3
  506. package/dist/{property-filter-applied-DI4w1ACS.js.map → property-filter-applied-C2teL4uw.js.map} +1 -1
  507. package/dist/{property-filter-applied-BhxbHAN8.cjs → property-filter-applied-ChK5XtsC.cjs} +3 -3
  508. package/dist/{property-filter-applied-BhxbHAN8.cjs.map → property-filter-applied-ChK5XtsC.cjs.map} +1 -1
  509. package/dist/resize/panel-drawer.cjs.js +1 -1
  510. package/dist/resize/panel-drawer.es.js +1 -1
  511. package/dist/sankey-chart-Bp-DrL1q.cjs +925 -0
  512. package/dist/sankey-chart-Bp-DrL1q.cjs.map +1 -0
  513. package/dist/sankey-chart-zhW_F0Rm.js +915 -0
  514. package/dist/sankey-chart-zhW_F0Rm.js.map +1 -0
  515. package/dist/{search-field-block-DCnFZzRK.js → search-field-block-D0PBxCxK.js} +2 -2
  516. package/dist/{search-field-block-DCnFZzRK.js.map → search-field-block-D0PBxCxK.js.map} +1 -1
  517. package/dist/{search-field-block-D6TdrHZX.cjs → search-field-block-D4vuLoZI.cjs} +2 -2
  518. package/dist/{search-field-block-D6TdrHZX.cjs.map → search-field-block-D4vuLoZI.cjs.map} +1 -1
  519. package/dist/{select-Beo8qQ0e.js → select-B_E0ADD5.js} +2 -2
  520. package/dist/{select-Beo8qQ0e.js.map → select-B_E0ADD5.js.map} +1 -1
  521. package/dist/{select-B6ce20XX.cjs → select-OAXqZLkC.cjs} +2 -2
  522. package/dist/{select-B6ce20XX.cjs.map → select-OAXqZLkC.cjs.map} +1 -1
  523. package/dist/{select-field-block-svlHplxW.cjs → select-field-block-BN9oU5B5.cjs} +2 -2
  524. package/dist/{select-field-block-svlHplxW.cjs.map → select-field-block-BN9oU5B5.cjs.map} +1 -1
  525. package/dist/{select-field-block-DXw3tD0y.js → select-field-block-D1Na8gZW.js} +2 -2
  526. package/dist/{select-field-block-DXw3tD0y.js.map → select-field-block-D1Na8gZW.js.map} +1 -1
  527. package/dist/src/domains/traces/hooks/use-entity-names.d.ts +2 -1
  528. package/dist/src/ds/components/ChatShell/chat-shell.d.ts +9 -6
  529. package/dist/src/ds/components/MainSidebar/main-sidebar-nav-item-classes.d.ts +13 -2
  530. package/dist/src/ds/components/MainSidebar/main-sidebar-nav-link.d.ts +2 -2
  531. package/dist/src/ds/components/MarkdownRenderer/markdown-renderer.d.ts +3 -1
  532. package/dist/src/ds/components/SankeyChart/sankey-chart.d.ts +7 -2
  533. package/dist/src/ds/components/SankeyChart/sankey-portal-tooltip.d.ts +8 -0
  534. package/dist/src/ds/components/SankeyChart/use-sankey-geometry-transition.d.ts +11 -0
  535. package/dist/src/ds/components/SankeyChart/use-sankey-hover-tooltip.d.ts +15 -0
  536. package/dist/src/ds/components/ThreadRail/thread-rail-turns.d.ts +2 -0
  537. package/dist/src/ee/signals/entity-learning-api.d.ts +13 -0
  538. package/dist/src/ee/signals/examples-pager.d.ts +7 -0
  539. package/dist/src/ee/signals/flow-card.d.ts +14 -0
  540. package/dist/src/ee/signals/hooks/index.d.ts +11 -0
  541. package/dist/src/ee/signals/hooks/theme-query-guards.d.ts +3 -0
  542. package/dist/src/ee/signals/hooks/use-entity-learning-progress.d.ts +1 -0
  543. package/dist/src/ee/signals/hooks/use-noise-examples.d.ts +2 -0
  544. package/dist/src/ee/signals/hooks/use-noise.d.ts +2 -0
  545. package/dist/src/ee/signals/hooks/use-snapshot-playback.d.ts +9 -0
  546. package/dist/src/ee/signals/hooks/use-theme-detail.d.ts +2 -0
  547. package/dist/src/ee/signals/hooks/use-theme-entities.d.ts +1 -0
  548. package/dist/src/ee/signals/hooks/use-theme-examples.d.ts +2 -0
  549. package/dist/src/ee/signals/hooks/use-theme-flow.d.ts +2 -0
  550. package/dist/src/ee/signals/hooks/use-theme-flows.d.ts +2 -0
  551. package/dist/src/ee/signals/hooks/use-theme-history.d.ts +2 -0
  552. package/dist/src/ee/signals/hooks/use-theme-paths.d.ts +2 -0
  553. package/dist/src/ee/signals/hooks/use-theme-snapshots.d.ts +2 -0
  554. package/dist/src/ee/signals/hooks/use-trace-insight.d.ts +1 -0
  555. package/dist/src/ee/signals/index.d.ts +9 -0
  556. package/dist/src/ee/signals/lifeline-point.d.ts +8 -0
  557. package/dist/src/ee/signals/lifeline-row.d.ts +11 -0
  558. package/dist/src/ee/signals/noise-detail-panel.d.ts +10 -0
  559. package/dist/src/ee/signals/sankey-signals-data.d.ts +41 -0
  560. package/dist/src/ee/signals/sankey-signals.d.ts +12 -0
  561. package/dist/src/ee/signals/signal-delta-column.d.ts +12 -0
  562. package/dist/src/ee/signals/signal-formatting.d.ts +15 -0
  563. package/dist/src/ee/signals/signal-lifelines.d.ts +9 -0
  564. package/dist/src/ee/signals/signals-error-state.d.ts +5 -0
  565. package/dist/src/ee/signals/signals-loading-skeleton.d.ts +2 -0
  566. package/dist/src/ee/signals/snapshot-timeline-data.d.ts +12 -0
  567. package/dist/src/ee/signals/snapshot-timeline.d.ts +25 -0
  568. package/dist/src/ee/signals/sortable-signal-headers.d.ts +6 -0
  569. package/dist/src/ee/signals/theme-compare-data.d.ts +24 -0
  570. package/dist/src/ee/signals/theme-compare-sparkline.d.ts +5 -0
  571. package/dist/src/ee/signals/theme-compare.d.ts +17 -0
  572. package/dist/src/ee/signals/theme-detail-panel.d.ts +11 -0
  573. package/dist/src/ee/signals/theme-drilldown-data.d.ts +10 -0
  574. package/dist/src/ee/signals/theme-filter-banner.d.ts +8 -0
  575. package/dist/src/ee/signals/theme-lifelines-data.d.ts +35 -0
  576. package/dist/src/ee/signals/theme-lifelines.d.ts +17 -0
  577. package/dist/src/ee/signals/theme-trend-chart.d.ts +6 -0
  578. package/dist/src/ee/signals/theme-trend.d.ts +17 -0
  579. package/dist/src/ee/signals/trace-insight-view.d.ts +6 -0
  580. package/dist/src/ee/signals/trace-intelligence-context.d.ts +10 -0
  581. package/dist/src/ee/signals/trace-intelligence-explainer.d.ts +2 -0
  582. package/dist/src/ee/signals/trace-intelligence-provider.d.ts +11 -0
  583. package/dist/src/ee/signals/types.d.ts +1 -0
  584. package/dist/src/ee/signals/use-trace-intelligence.d.ts +1 -0
  585. package/dist/src/ee/signals/view-mode-tab.d.ts +6 -0
  586. package/dist/src/test/msw-server.d.ts +1 -0
  587. package/dist/src/test/vitest-setup.d.ts +1 -0
  588. package/dist/style.css +306 -18
  589. package/dist/tabs-root-BBPou4QC.js +69 -0
  590. package/dist/tabs-root-BBPou4QC.js.map +1 -0
  591. package/dist/tabs-root-VtBc6K2q.cjs +72 -0
  592. package/dist/tabs-root-VtBc6K2q.cjs.map +1 -0
  593. package/dist/{tabs-tab-BkUCE-4E.cjs → tabs-tab-Cq4YR31P.cjs} +2 -67
  594. package/dist/tabs-tab-Cq4YR31P.cjs.map +1 -0
  595. package/dist/{tabs-tab-DDGltcUc.js → tabs-tab-D5JTAehi.js} +6 -69
  596. package/dist/tabs-tab-D5JTAehi.js.map +1 -0
  597. package/dist/{time-picker-mLzcoQMO.js → time-picker-CkqREdQB.js} +2 -2
  598. package/dist/{time-picker-mLzcoQMO.js.map → time-picker-CkqREdQB.js.map} +1 -1
  599. package/dist/{time-picker-BOQtPoyD.cjs → time-picker-Dy2oyq8P.cjs} +2 -2
  600. package/dist/{time-picker-BOQtPoyD.cjs.map → time-picker-Dy2oyq8P.cjs.map} +1 -1
  601. package/dist/{traces-data-list-DtuaCDES.js → traces-data-list-B3wMvCfk.js} +2 -2
  602. package/dist/{traces-data-list-DtuaCDES.js.map → traces-data-list-B3wMvCfk.js.map} +1 -1
  603. package/dist/{traces-data-list-vsvvvEiP.cjs → traces-data-list-pTNo_zbS.cjs} +2 -2
  604. package/dist/{traces-data-list-vsvvvEiP.cjs.map → traces-data-list-pTNo_zbS.cjs.map} +1 -1
  605. package/package.json +8 -8
  606. package/theme.css +6 -8
  607. package/dist/Button-Bm94fEF2.cjs.map +0 -1
  608. package/dist/Button-Bx2lFdqb.js.map +0 -1
  609. package/dist/dropdown-menu-DEFygDZI.js.map +0 -1
  610. package/dist/dropdown-menu-ppWztidX.cjs.map +0 -1
  611. package/dist/markdown-renderer-Bi2fWeoF.js.map +0 -1
  612. package/dist/markdown-renderer-DwfNrhEH.cjs.map +0 -1
  613. package/dist/message-scroller-BmzjZZNs.cjs.map +0 -1
  614. package/dist/message-scroller-D5O7sUS5.js.map +0 -1
  615. package/dist/tabs-tab-BkUCE-4E.cjs.map +0 -1
  616. package/dist/tabs-tab-DDGltcUc.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"hover-card-crVofiZO.js","sources":["../src/ds/components/HoverCard/hover-card.tsx"],"sourcesContent":["import { PreviewCard as PreviewCardPrimitive } from '@base-ui/react/preview-card';\nimport type { PreviewCardPopupProps, PreviewCardPositionerProps } from '@base-ui/react/preview-card';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/**\n * HoverCard — a floating card that reveals extra content when its trigger is\n * hovered or focused. Built on Base UI's `PreviewCard`\n * (`@base-ui/react/preview-card`); the `HoverCard` name matches the Radix\n * component this replaced and the common term for the pattern.\n *\n * Compose it as `HoverCard` > (`HoverCardTrigger` + `HoverCardContent`).\n */\nconst HoverCard = PreviewCardPrimitive.Root;\n\nexport type HoverCardTriggerProps = Omit<PreviewCardPrimitive.Trigger.Props, 'className'> & {\n className?: string;\n};\n\n/**\n * The element that opens the card on hover/focus. Renders an `<a>` by default;\n * pass `render` to project the behavior onto an existing element.\n *\n * `delay` defaults to 250ms to preserve the previous Radix `openDelay`\n * behavior — Base UI's own default is 600ms.\n */\nconst HoverCardTrigger = React.forwardRef<HTMLAnchorElement, HoverCardTriggerProps>(\n ({ className, delay = 250, ...props }, ref) => (\n <PreviewCardPrimitive.Trigger ref={ref} delay={delay} className={className} {...props} />\n ),\n);\nHoverCardTrigger.displayName = 'HoverCardTrigger';\n\ntype HoverCardContentPositionerProps = Omit<PreviewCardPositionerProps, keyof PreviewCardPopupProps>;\n\nexport type HoverCardContentProps = Omit<PreviewCardPopupProps, 'className'> &\n HoverCardContentPositionerProps & {\n className?: string;\n /** Optional portal container, forwarded to `PreviewCard.Portal`. */\n container?: HTMLElement | null;\n /** Whether to render the small arrow pointing at the trigger. */\n showArrow?: boolean;\n };\n\n/**\n * The floating card body. Wraps Base UI's `Portal` / `Positioner` / `Popup`\n * (and an optional `Arrow`) so consumers only deal with a single element.\n */\nconst HoverCardContent = React.forwardRef<HTMLDivElement, HoverCardContentProps>(\n (\n {\n className,\n children,\n side = 'top',\n align,\n sideOffset = 5,\n container,\n showArrow = true,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n },\n ref,\n ) => {\n const positionerProps: HoverCardContentPositionerProps = {\n side,\n align,\n sideOffset,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n };\n\n return (\n <PreviewCardPrimitive.Portal container={container ?? undefined}>\n <PreviewCardPrimitive.Positioner className=\"z-50\" {...positionerProps}>\n <PreviewCardPrimitive.Popup\n ref={ref}\n className={cn(\n 'max-w-100 w-auto origin-[var(--transform-origin)] rounded-xl border border-border1 bg-surface3 px-3 py-2.5 text-ui-sm text-neutral5 shadow-dialog',\n 'data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95 data-[open]:animate-in data-[open]:fade-in-0 data-[open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1',\n className,\n )}\n {...props}\n >\n {children}\n {showArrow && <PreviewCardPrimitive.Arrow className=\"fill-surface3\" />}\n </PreviewCardPrimitive.Popup>\n </PreviewCardPrimitive.Positioner>\n </PreviewCardPrimitive.Portal>\n );\n },\n);\nHoverCardContent.displayName = 'HoverCardContent';\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n"],"names":["PreviewCardPrimitive"],"mappings":";;;;;AAcA,MAAM,YAAYA,WAAA,CAAqB;AAavC,MAAM,mBAAmB,KAAA,CAAM,UAAA;AAAA,EAC7B,CAAC,EAAE,SAAA,EAAW,KAAA,GAAQ,GAAA,EAAK,GAAG,KAAA,EAAM,EAAG,GAAA,qBACrC,GAAA,CAACA,YAAqB,OAAA,EAArB,EAA6B,KAAU,KAAA,EAAc,SAAA,EAAuB,GAAG,KAAA,EAAO;AAE3F;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAiB/B,MAAM,mBAAmB,KAAA,CAAM,UAAA;AAAA,EAC7B,CACE;AAAA,IACE,SAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA,GAAO,KAAA;AAAA,IACP,KAAA;AAAA,IACA,UAAA,GAAa,CAAA;AAAA,IACb,SAAA;AAAA,IACA,SAAA,GAAY,IAAA;AAAA,IACZ,MAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,qBAAA;AAAA,IACA,kBAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,eAAA,GAAmD;AAAA,MACvD,IAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,uBACE,GAAA,CAACA,WAAA,CAAqB,MAAA,EAArB,EAA4B,WAAW,SAAA,IAAa,MAAA,EACnD,QAAA,kBAAA,GAAA,CAACA,WAAA,CAAqB,UAAA,EAArB,EAAgC,SAAA,EAAU,MAAA,EAAQ,GAAG,eAAA,EACpD,QAAA,kBAAA,IAAA;AAAA,MAACA,WAAA,CAAqB,KAAA;AAAA,MAArB;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,mJAAA;AAAA,UACA,kJAAA;AAAA,UACA,6JAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,6BAAa,GAAA,CAACA,WAAA,CAAqB,KAAA,EAArB,EAA2B,WAAU,eAAA,EAAgB;AAAA;AAAA;AAAA,OAExE,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;;;"}
1
+ {"version":3,"file":"hover-card-Bs845QbV.js","sources":["../src/ds/components/HoverCard/hover-card.tsx"],"sourcesContent":["import { PreviewCard as PreviewCardPrimitive } from '@base-ui/react/preview-card';\nimport type { PreviewCardPopupProps, PreviewCardPositionerProps } from '@base-ui/react/preview-card';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/**\n * HoverCard — a floating card that reveals extra content when its trigger is\n * hovered or focused. Built on Base UI's `PreviewCard`\n * (`@base-ui/react/preview-card`); the `HoverCard` name matches the Radix\n * component this replaced and the common term for the pattern.\n *\n * Compose it as `HoverCard` > (`HoverCardTrigger` + `HoverCardContent`).\n */\nconst HoverCard = PreviewCardPrimitive.Root;\n\nexport type HoverCardTriggerProps = Omit<PreviewCardPrimitive.Trigger.Props, 'className'> & {\n className?: string;\n};\n\n/**\n * The element that opens the card on hover/focus. Renders an `<a>` by default;\n * pass `render` to project the behavior onto an existing element.\n *\n * `delay` defaults to 250ms to preserve the previous Radix `openDelay`\n * behavior — Base UI's own default is 600ms.\n */\nconst HoverCardTrigger = React.forwardRef<HTMLAnchorElement, HoverCardTriggerProps>(\n ({ className, delay = 250, ...props }, ref) => (\n <PreviewCardPrimitive.Trigger ref={ref} delay={delay} className={className} {...props} />\n ),\n);\nHoverCardTrigger.displayName = 'HoverCardTrigger';\n\ntype HoverCardContentPositionerProps = Omit<PreviewCardPositionerProps, keyof PreviewCardPopupProps>;\n\nexport type HoverCardContentProps = Omit<PreviewCardPopupProps, 'className'> &\n HoverCardContentPositionerProps & {\n className?: string;\n /** Optional portal container, forwarded to `PreviewCard.Portal`. */\n container?: HTMLElement | null;\n /** Whether to render the small arrow pointing at the trigger. */\n showArrow?: boolean;\n };\n\n/**\n * The floating card body. Wraps Base UI's `Portal` / `Positioner` / `Popup`\n * (and an optional `Arrow`) so consumers only deal with a single element.\n */\nconst HoverCardContent = React.forwardRef<HTMLDivElement, HoverCardContentProps>(\n (\n {\n className,\n children,\n side = 'top',\n align,\n sideOffset = 5,\n container,\n showArrow = true,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n },\n ref,\n ) => {\n const positionerProps: HoverCardContentPositionerProps = {\n side,\n align,\n sideOffset,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n };\n\n return (\n <PreviewCardPrimitive.Portal container={container ?? undefined}>\n <PreviewCardPrimitive.Positioner className=\"z-50 data-[anchor-hidden]:hidden\" {...positionerProps}>\n <PreviewCardPrimitive.Popup\n ref={ref}\n className={cn(\n 'max-w-100 w-auto origin-[var(--transform-origin)] rounded-xl border border-border1 bg-surface3 px-3 py-2.5 text-ui-sm text-neutral5 shadow-dialog',\n 'data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95 data-[open]:animate-in data-[open]:fade-in-0 data-[open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1',\n className,\n )}\n {...props}\n >\n {children}\n {showArrow && <PreviewCardPrimitive.Arrow className=\"fill-surface3\" />}\n </PreviewCardPrimitive.Popup>\n </PreviewCardPrimitive.Positioner>\n </PreviewCardPrimitive.Portal>\n );\n },\n);\nHoverCardContent.displayName = 'HoverCardContent';\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n"],"names":["PreviewCardPrimitive"],"mappings":";;;;;AAcA,MAAM,YAAYA,WAAA,CAAqB;AAavC,MAAM,mBAAmB,KAAA,CAAM,UAAA;AAAA,EAC7B,CAAC,EAAE,SAAA,EAAW,KAAA,GAAQ,GAAA,EAAK,GAAG,KAAA,EAAM,EAAG,GAAA,qBACrC,GAAA,CAACA,YAAqB,OAAA,EAArB,EAA6B,KAAU,KAAA,EAAc,SAAA,EAAuB,GAAG,KAAA,EAAO;AAE3F;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAiB/B,MAAM,mBAAmB,KAAA,CAAM,UAAA;AAAA,EAC7B,CACE;AAAA,IACE,SAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA,GAAO,KAAA;AAAA,IACP,KAAA;AAAA,IACA,UAAA,GAAa,CAAA;AAAA,IACb,SAAA;AAAA,IACA,SAAA,GAAY,IAAA;AAAA,IACZ,MAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,qBAAA;AAAA,IACA,kBAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,eAAA,GAAmD;AAAA,MACvD,IAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,uBACE,GAAA,CAACA,WAAA,CAAqB,MAAA,EAArB,EAA4B,WAAW,SAAA,IAAa,MAAA,EACnD,QAAA,kBAAA,GAAA,CAACA,WAAA,CAAqB,UAAA,EAArB,EAAgC,SAAA,EAAU,kCAAA,EAAoC,GAAG,eAAA,EAChF,QAAA,kBAAA,IAAA;AAAA,MAACA,WAAA,CAAqB,KAAA;AAAA,MAArB;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,mJAAA;AAAA,UACA,kJAAA;AAAA,UACA,6JAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,6BAAa,GAAA,CAACA,WAAA,CAAqB,KAAA,EAArB,EAA2B,WAAU,eAAA,EAAgB;AAAA;AAAA;AAAA,OAExE,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;;;"}
@@ -63,7 +63,7 @@ const HoverCardContent = React__namespace.forwardRef(
63
63
  disableAnchorTracking,
64
64
  collisionAvoidance
65
65
  };
66
- return /* @__PURE__ */ jsxRuntime.jsx(previewCard.PreviewCard.Portal, { container: container ?? void 0, children: /* @__PURE__ */ jsxRuntime.jsx(previewCard.PreviewCard.Positioner, { className: "z-50", ...positionerProps, children: /* @__PURE__ */ jsxRuntime.jsxs(
66
+ return /* @__PURE__ */ jsxRuntime.jsx(previewCard.PreviewCard.Portal, { container: container ?? void 0, children: /* @__PURE__ */ jsxRuntime.jsx(previewCard.PreviewCard.Positioner, { className: "z-50 data-[anchor-hidden]:hidden", ...positionerProps, children: /* @__PURE__ */ jsxRuntime.jsxs(
67
67
  previewCard.PreviewCard.Popup,
68
68
  {
69
69
  ref,
@@ -87,4 +87,4 @@ HoverCardContent.displayName = "HoverCardContent";
87
87
  exports.HoverCard = HoverCard;
88
88
  exports.HoverCardContent = HoverCardContent;
89
89
  exports.HoverCardTrigger = HoverCardTrigger;
90
- //# sourceMappingURL=hover-card-Bx258om1.cjs.map
90
+ //# sourceMappingURL=hover-card-Cd9QK50X.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"hover-card-Bx258om1.cjs","sources":["../src/ds/components/HoverCard/hover-card.tsx"],"sourcesContent":["import { PreviewCard as PreviewCardPrimitive } from '@base-ui/react/preview-card';\nimport type { PreviewCardPopupProps, PreviewCardPositionerProps } from '@base-ui/react/preview-card';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/**\n * HoverCard — a floating card that reveals extra content when its trigger is\n * hovered or focused. Built on Base UI's `PreviewCard`\n * (`@base-ui/react/preview-card`); the `HoverCard` name matches the Radix\n * component this replaced and the common term for the pattern.\n *\n * Compose it as `HoverCard` > (`HoverCardTrigger` + `HoverCardContent`).\n */\nconst HoverCard = PreviewCardPrimitive.Root;\n\nexport type HoverCardTriggerProps = Omit<PreviewCardPrimitive.Trigger.Props, 'className'> & {\n className?: string;\n};\n\n/**\n * The element that opens the card on hover/focus. Renders an `<a>` by default;\n * pass `render` to project the behavior onto an existing element.\n *\n * `delay` defaults to 250ms to preserve the previous Radix `openDelay`\n * behavior — Base UI's own default is 600ms.\n */\nconst HoverCardTrigger = React.forwardRef<HTMLAnchorElement, HoverCardTriggerProps>(\n ({ className, delay = 250, ...props }, ref) => (\n <PreviewCardPrimitive.Trigger ref={ref} delay={delay} className={className} {...props} />\n ),\n);\nHoverCardTrigger.displayName = 'HoverCardTrigger';\n\ntype HoverCardContentPositionerProps = Omit<PreviewCardPositionerProps, keyof PreviewCardPopupProps>;\n\nexport type HoverCardContentProps = Omit<PreviewCardPopupProps, 'className'> &\n HoverCardContentPositionerProps & {\n className?: string;\n /** Optional portal container, forwarded to `PreviewCard.Portal`. */\n container?: HTMLElement | null;\n /** Whether to render the small arrow pointing at the trigger. */\n showArrow?: boolean;\n };\n\n/**\n * The floating card body. Wraps Base UI's `Portal` / `Positioner` / `Popup`\n * (and an optional `Arrow`) so consumers only deal with a single element.\n */\nconst HoverCardContent = React.forwardRef<HTMLDivElement, HoverCardContentProps>(\n (\n {\n className,\n children,\n side = 'top',\n align,\n sideOffset = 5,\n container,\n showArrow = true,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n },\n ref,\n ) => {\n const positionerProps: HoverCardContentPositionerProps = {\n side,\n align,\n sideOffset,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n };\n\n return (\n <PreviewCardPrimitive.Portal container={container ?? undefined}>\n <PreviewCardPrimitive.Positioner className=\"z-50\" {...positionerProps}>\n <PreviewCardPrimitive.Popup\n ref={ref}\n className={cn(\n 'max-w-100 w-auto origin-[var(--transform-origin)] rounded-xl border border-border1 bg-surface3 px-3 py-2.5 text-ui-sm text-neutral5 shadow-dialog',\n 'data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95 data-[open]:animate-in data-[open]:fade-in-0 data-[open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1',\n className,\n )}\n {...props}\n >\n {children}\n {showArrow && <PreviewCardPrimitive.Arrow className=\"fill-surface3\" />}\n </PreviewCardPrimitive.Popup>\n </PreviewCardPrimitive.Positioner>\n </PreviewCardPrimitive.Portal>\n );\n },\n);\nHoverCardContent.displayName = 'HoverCardContent';\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n"],"names":["PreviewCardPrimitive","React","jsx","jsxs","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAM,YAAYA,uBAAA,CAAqB;AAavC,MAAM,mBAAmBC,gBAAA,CAAM,UAAA;AAAA,EAC7B,CAAC,EAAE,SAAA,EAAW,KAAA,GAAQ,GAAA,EAAK,GAAG,KAAA,EAAM,EAAG,GAAA,qBACrCC,cAAA,CAACF,wBAAqB,OAAA,EAArB,EAA6B,KAAU,KAAA,EAAc,SAAA,EAAuB,GAAG,KAAA,EAAO;AAE3F;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAiB/B,MAAM,mBAAmBC,gBAAA,CAAM,UAAA;AAAA,EAC7B,CACE;AAAA,IACE,SAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA,GAAO,KAAA;AAAA,IACP,KAAA;AAAA,IACA,UAAA,GAAa,CAAA;AAAA,IACb,SAAA;AAAA,IACA,SAAA,GAAY,IAAA;AAAA,IACZ,MAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,qBAAA;AAAA,IACA,kBAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,eAAA,GAAmD;AAAA,MACvD,IAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,uBACEC,cAAA,CAACF,uBAAA,CAAqB,MAAA,EAArB,EAA4B,WAAW,SAAA,IAAa,MAAA,EACnD,QAAA,kBAAAE,cAAA,CAACF,uBAAA,CAAqB,UAAA,EAArB,EAAgC,SAAA,EAAU,MAAA,EAAQ,GAAG,eAAA,EACpD,QAAA,kBAAAG,eAAA;AAAA,MAACH,uBAAA,CAAqB,KAAA;AAAA,MAArB;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAWI,WAAA;AAAA,UACT,mJAAA;AAAA,UACA,kJAAA;AAAA,UACA,6JAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,6BAAaF,cAAA,CAACF,uBAAA,CAAqB,KAAA,EAArB,EAA2B,WAAU,eAAA,EAAgB;AAAA;AAAA;AAAA,OAExE,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;;;;;"}
1
+ {"version":3,"file":"hover-card-Cd9QK50X.cjs","sources":["../src/ds/components/HoverCard/hover-card.tsx"],"sourcesContent":["import { PreviewCard as PreviewCardPrimitive } from '@base-ui/react/preview-card';\nimport type { PreviewCardPopupProps, PreviewCardPositionerProps } from '@base-ui/react/preview-card';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\n/**\n * HoverCard — a floating card that reveals extra content when its trigger is\n * hovered or focused. Built on Base UI's `PreviewCard`\n * (`@base-ui/react/preview-card`); the `HoverCard` name matches the Radix\n * component this replaced and the common term for the pattern.\n *\n * Compose it as `HoverCard` > (`HoverCardTrigger` + `HoverCardContent`).\n */\nconst HoverCard = PreviewCardPrimitive.Root;\n\nexport type HoverCardTriggerProps = Omit<PreviewCardPrimitive.Trigger.Props, 'className'> & {\n className?: string;\n};\n\n/**\n * The element that opens the card on hover/focus. Renders an `<a>` by default;\n * pass `render` to project the behavior onto an existing element.\n *\n * `delay` defaults to 250ms to preserve the previous Radix `openDelay`\n * behavior — Base UI's own default is 600ms.\n */\nconst HoverCardTrigger = React.forwardRef<HTMLAnchorElement, HoverCardTriggerProps>(\n ({ className, delay = 250, ...props }, ref) => (\n <PreviewCardPrimitive.Trigger ref={ref} delay={delay} className={className} {...props} />\n ),\n);\nHoverCardTrigger.displayName = 'HoverCardTrigger';\n\ntype HoverCardContentPositionerProps = Omit<PreviewCardPositionerProps, keyof PreviewCardPopupProps>;\n\nexport type HoverCardContentProps = Omit<PreviewCardPopupProps, 'className'> &\n HoverCardContentPositionerProps & {\n className?: string;\n /** Optional portal container, forwarded to `PreviewCard.Portal`. */\n container?: HTMLElement | null;\n /** Whether to render the small arrow pointing at the trigger. */\n showArrow?: boolean;\n };\n\n/**\n * The floating card body. Wraps Base UI's `Portal` / `Positioner` / `Popup`\n * (and an optional `Arrow`) so consumers only deal with a single element.\n */\nconst HoverCardContent = React.forwardRef<HTMLDivElement, HoverCardContentProps>(\n (\n {\n className,\n children,\n side = 'top',\n align,\n sideOffset = 5,\n container,\n showArrow = true,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n },\n ref,\n ) => {\n const positionerProps: HoverCardContentPositionerProps = {\n side,\n align,\n sideOffset,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n };\n\n return (\n <PreviewCardPrimitive.Portal container={container ?? undefined}>\n <PreviewCardPrimitive.Positioner className=\"z-50 data-[anchor-hidden]:hidden\" {...positionerProps}>\n <PreviewCardPrimitive.Popup\n ref={ref}\n className={cn(\n 'max-w-100 w-auto origin-[var(--transform-origin)] rounded-xl border border-border1 bg-surface3 px-3 py-2.5 text-ui-sm text-neutral5 shadow-dialog',\n 'data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95 data-[open]:animate-in data-[open]:fade-in-0 data-[open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1',\n className,\n )}\n {...props}\n >\n {children}\n {showArrow && <PreviewCardPrimitive.Arrow className=\"fill-surface3\" />}\n </PreviewCardPrimitive.Popup>\n </PreviewCardPrimitive.Positioner>\n </PreviewCardPrimitive.Portal>\n );\n },\n);\nHoverCardContent.displayName = 'HoverCardContent';\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent };\n"],"names":["PreviewCardPrimitive","React","jsx","jsxs","cn"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAM,YAAYA,uBAAA,CAAqB;AAavC,MAAM,mBAAmBC,gBAAA,CAAM,UAAA;AAAA,EAC7B,CAAC,EAAE,SAAA,EAAW,KAAA,GAAQ,GAAA,EAAK,GAAG,KAAA,EAAM,EAAG,GAAA,qBACrCC,cAAA,CAACF,wBAAqB,OAAA,EAArB,EAA6B,KAAU,KAAA,EAAc,SAAA,EAAuB,GAAG,KAAA,EAAO;AAE3F;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;AAiB/B,MAAM,mBAAmBC,gBAAA,CAAM,UAAA;AAAA,EAC7B,CACE;AAAA,IACE,SAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA,GAAO,KAAA;AAAA,IACP,KAAA;AAAA,IACA,UAAA,GAAa,CAAA;AAAA,IACb,SAAA;AAAA,IACA,SAAA,GAAY,IAAA;AAAA,IACZ,MAAA;AAAA,IACA,cAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,qBAAA;AAAA,IACA,kBAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AACH,IAAA,MAAM,eAAA,GAAmD;AAAA,MACvD,IAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,uBACEC,cAAA,CAACF,uBAAA,CAAqB,MAAA,EAArB,EAA4B,WAAW,SAAA,IAAa,MAAA,EACnD,QAAA,kBAAAE,cAAA,CAACF,uBAAA,CAAqB,UAAA,EAArB,EAAgC,SAAA,EAAU,kCAAA,EAAoC,GAAG,eAAA,EAChF,QAAA,kBAAAG,eAAA;AAAA,MAACH,uBAAA,CAAqB,KAAA;AAAA,MAArB;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAWI,WAAA;AAAA,UACT,mJAAA;AAAA,UACA,kJAAA;AAAA,UACA,6JAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,6BAAaF,cAAA,CAACF,uBAAA,CAAqB,KAAA,EAArB,EAA2B,WAAU,eAAA,EAAgB;AAAA;AAAA;AAAA,OAExE,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AACA,gBAAA,CAAiB,WAAA,GAAc,kBAAA;;;;;;"}
@@ -3,7 +3,7 @@
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
4
  const index = require('./index-C-Lt4Bx_.cjs');
5
5
  const React = require('react');
6
- const Button = require('./Button-Bm94fEF2.cjs');
6
+ const Button = require('./Button-B4Ixj2aW.cjs');
7
7
  const primitives_controlSize = require('./primitives/control-size.cjs.js');
8
8
  const primitives_formElement = require('./primitives/form-element.cjs.js');
9
9
  const primitives_transitions = require('./primitives/transitions.cjs.js');
@@ -242,4 +242,4 @@ exports.InputGroupButton = InputGroupButton;
242
242
  exports.InputGroupInput = InputGroupInput;
243
243
  exports.InputGroupText = InputGroupText;
244
244
  exports.InputGroupTextarea = InputGroupTextarea;
245
- //# sourceMappingURL=input-group-CH72YUVL.cjs.map
245
+ //# sourceMappingURL=input-group-BTaw3Ycd.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-group-CH72YUVL.cjs","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { inputFocusBorderWithin, inputHoverBorderWithin } from '@/ds/primitives/form-element';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n// No React context: size flows via `data-size` on the named group root\n// (`group/input-group`) and is read by the control through `group-data-[size=…]`\n// variants — mirrors shadcn's data-slot/data-* convention and removes prop drilling.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n 'border border-border1 text-neutral6',\n transitions.all,\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50',\n 'has-[[aria-invalid=true]]:border-error',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// `default` and `filled` are the same filled surface on purpose (the default look IS\n// the filled treatment; `filled` is an explicit alias). Share the string so they can't\n// drift. Focus brightens the border (inputFocusBorderWithin) for WCAG-visible focus.\nconst inputGroupFilledVariant = cn(\n 'rounded-full bg-surface-overlay-soft',\n 'hover:bg-surface-overlay-strong',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:bg-surface-overlay-strong focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nconst inputGroupVariants = cva(inputGroupBaseClassName, {\n variants: {\n variant: {\n default: inputGroupFilledVariant,\n filled: inputGroupFilledVariant,\n outline: cn(\n 'rounded-full bg-transparent',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n ),\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport type InputGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n size?: ControlSize;\n} & VariantProps<typeof inputGroupVariants>;\n\nconst InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\n ({ className, size = 'md', variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group\"\n data-size={size}\n className={cn(inputGroupVariants({ variant }), controlHeight[size], className)}\n {...props}\n />\n );\n },\n);\nInputGroup.displayName = 'InputGroup';\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-neutral3 select-none',\n 'group-has-[:disabled]/input-group:opacity-50',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border1 px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border1 px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentPropsWithoutRef<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nconst InputGroupAddon = React.forwardRef<HTMLDivElement, InputGroupAddonProps>(\n ({ className, align = 'inline-start', onClick, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n },\n);\nInputGroupAddon.displayName = 'InputGroupAddon';\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control mirrors the root height so it\n// doesn't collapse to the line-height in block mode (flex-col + flex-none); the root's\n// explicit border-box height means this never makes the group grow.\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=xs]/input-group:h-form-xs',\n 'group-data-[size=sm]/input-group:h-form-sm',\n 'group-data-[size=md]/input-group:h-form-md',\n 'group-data-[size=default]/input-group:h-form-default',\n 'group-data-[size=lg]/input-group:h-form-lg',\n);\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=xs]/input-group:text-ui-xs',\n 'group-data-[size=sm]/input-group:text-ui-sm',\n 'group-data-[size=md]/input-group:text-ui-md',\n 'group-data-[size=default]/input-group:text-ui-md',\n 'group-data-[size=lg]/input-group:text-ui-lg',\n);\n\nexport type InputGroupInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupInput = React.forwardRef<HTMLInputElement, InputGroupInputProps>(\n ({ className, testId, error, type = 'text', ...props }, ref) => {\n return (\n <input\n ref={ref}\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n // Height matches the root box (which is fixed/border-box, so it doesn't grow);\n // this also keeps the control from collapsing in block mode (flex-col).\n 'min-w-0 flex-1 bg-transparent px-3 text-neutral6 outline-hidden',\n inputGroupControlHeightBySize,\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n // Hide native number-spinner arrows so consumers can compose their own\n // stepper (see the NumberWithStepper story). WebKit uses the spin-button\n // pseudo-elements; Firefox needs `appearance: textfield` on the input.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupInput.displayName = 'InputGroupInput';\n\nexport type InputGroupTextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupTextarea = React.forwardRef<HTMLTextAreaElement, InputGroupTextareaProps>(\n ({ className, testId, error, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-neutral6 outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupTextarea.displayName = 'InputGroupTextarea';\n\nexport type InputGroupTextProps = React.ComponentPropsWithoutRef<'span'>;\n\nconst InputGroupText = React.forwardRef<HTMLSpanElement, InputGroupTextProps>(({ className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(\n 'flex items-center gap-2 text-ui-sm text-neutral3 [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n});\nInputGroupText.displayName = 'InputGroupText';\n\nexport type InputGroupButtonProps = Omit<ButtonProps, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nconst InputGroupButton = React.forwardRef<HTMLButtonElement, InputGroupButtonProps>(\n ({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }, ref) => {\n return <Button ref={ref} type={type} size={size} variant={variant} {...props} />;\n },\n);\nInputGroupButton.displayName = 'InputGroupButton';\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":["cn","transitions","inputHoverBorderWithin","inputFocusBorderWithin","cva","React","jsx","controlHeight","Button"],"mappings":"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"}
1
+ {"version":3,"file":"input-group-BTaw3Ycd.cjs","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { inputFocusBorderWithin, inputHoverBorderWithin } from '@/ds/primitives/form-element';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n// No React context: size flows via `data-size` on the named group root\n// (`group/input-group`) and is read by the control through `group-data-[size=…]`\n// variants — mirrors shadcn's data-slot/data-* convention and removes prop drilling.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n 'border border-border1 text-neutral6',\n transitions.all,\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50',\n 'has-[[aria-invalid=true]]:border-error',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// `default` and `filled` are the same filled surface on purpose (the default look IS\n// the filled treatment; `filled` is an explicit alias). Share the string so they can't\n// drift. Focus brightens the border (inputFocusBorderWithin) for WCAG-visible focus.\nconst inputGroupFilledVariant = cn(\n 'rounded-full bg-surface-overlay-soft',\n 'hover:bg-surface-overlay-strong',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:bg-surface-overlay-strong focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nconst inputGroupVariants = cva(inputGroupBaseClassName, {\n variants: {\n variant: {\n default: inputGroupFilledVariant,\n filled: inputGroupFilledVariant,\n outline: cn(\n 'rounded-full bg-transparent',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n ),\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport type InputGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n size?: ControlSize;\n} & VariantProps<typeof inputGroupVariants>;\n\nconst InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\n ({ className, size = 'md', variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group\"\n data-size={size}\n className={cn(inputGroupVariants({ variant }), controlHeight[size], className)}\n {...props}\n />\n );\n },\n);\nInputGroup.displayName = 'InputGroup';\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-neutral3 select-none',\n 'group-has-[:disabled]/input-group:opacity-50',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border1 px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border1 px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentPropsWithoutRef<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nconst InputGroupAddon = React.forwardRef<HTMLDivElement, InputGroupAddonProps>(\n ({ className, align = 'inline-start', onClick, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n },\n);\nInputGroupAddon.displayName = 'InputGroupAddon';\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control mirrors the root height so it\n// doesn't collapse to the line-height in block mode (flex-col + flex-none); the root's\n// explicit border-box height means this never makes the group grow.\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=xs]/input-group:h-form-xs',\n 'group-data-[size=sm]/input-group:h-form-sm',\n 'group-data-[size=md]/input-group:h-form-md',\n 'group-data-[size=default]/input-group:h-form-default',\n 'group-data-[size=lg]/input-group:h-form-lg',\n);\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=xs]/input-group:text-ui-xs',\n 'group-data-[size=sm]/input-group:text-ui-sm',\n 'group-data-[size=md]/input-group:text-ui-md',\n 'group-data-[size=default]/input-group:text-ui-md',\n 'group-data-[size=lg]/input-group:text-ui-lg',\n);\n\nexport type InputGroupInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupInput = React.forwardRef<HTMLInputElement, InputGroupInputProps>(\n ({ className, testId, error, type = 'text', ...props }, ref) => {\n return (\n <input\n ref={ref}\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n // Height matches the root box (which is fixed/border-box, so it doesn't grow);\n // this also keeps the control from collapsing in block mode (flex-col).\n 'min-w-0 flex-1 bg-transparent px-3 text-neutral6 outline-hidden',\n inputGroupControlHeightBySize,\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n // Hide native number-spinner arrows so consumers can compose their own\n // stepper (see the NumberWithStepper story). WebKit uses the spin-button\n // pseudo-elements; Firefox needs `appearance: textfield` on the input.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupInput.displayName = 'InputGroupInput';\n\nexport type InputGroupTextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupTextarea = React.forwardRef<HTMLTextAreaElement, InputGroupTextareaProps>(\n ({ className, testId, error, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-neutral6 outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupTextarea.displayName = 'InputGroupTextarea';\n\nexport type InputGroupTextProps = React.ComponentPropsWithoutRef<'span'>;\n\nconst InputGroupText = React.forwardRef<HTMLSpanElement, InputGroupTextProps>(({ className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(\n 'flex items-center gap-2 text-ui-sm text-neutral3 [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n});\nInputGroupText.displayName = 'InputGroupText';\n\nexport type InputGroupButtonProps = Omit<ButtonProps, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nconst InputGroupButton = React.forwardRef<HTMLButtonElement, InputGroupButtonProps>(\n ({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }, ref) => {\n return <Button ref={ref} type={type} size={size} variant={variant} {...props} />;\n },\n);\nInputGroupButton.displayName = 'InputGroupButton';\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":["cn","transitions","inputHoverBorderWithin","inputFocusBorderWithin","cva","React","jsx","controlHeight","Button"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { c as cva } from './index-CSm06eOE.js';
3
3
  import * as React from 'react';
4
- import { B as Button } from './Button-Bx2lFdqb.js';
4
+ import { B as Button } from './Button-C-9Pzy-Z.js';
5
5
  import { controlHeight } from './primitives/control-size.es.js';
6
6
  import { inputFocusBorderWithin, inputHoverBorderWithin } from './primitives/form-element.es.js';
7
7
  import { transitions } from './primitives/transitions.es.js';
@@ -216,4 +216,4 @@ const InputGroupButton = React.forwardRef(
216
216
  InputGroupButton.displayName = "InputGroupButton";
217
217
 
218
218
  export { InputGroup as I, InputGroupAddon as a, InputGroupButton as b, InputGroupInput as c, InputGroupText as d, InputGroupTextarea as e };
219
- //# sourceMappingURL=input-group-Dzs-ai0n.js.map
219
+ //# sourceMappingURL=input-group-CWT_IwX0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-group-Dzs-ai0n.js","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { inputFocusBorderWithin, inputHoverBorderWithin } from '@/ds/primitives/form-element';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n// No React context: size flows via `data-size` on the named group root\n// (`group/input-group`) and is read by the control through `group-data-[size=…]`\n// variants — mirrors shadcn's data-slot/data-* convention and removes prop drilling.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n 'border border-border1 text-neutral6',\n transitions.all,\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50',\n 'has-[[aria-invalid=true]]:border-error',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// `default` and `filled` are the same filled surface on purpose (the default look IS\n// the filled treatment; `filled` is an explicit alias). Share the string so they can't\n// drift. Focus brightens the border (inputFocusBorderWithin) for WCAG-visible focus.\nconst inputGroupFilledVariant = cn(\n 'rounded-full bg-surface-overlay-soft',\n 'hover:bg-surface-overlay-strong',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:bg-surface-overlay-strong focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nconst inputGroupVariants = cva(inputGroupBaseClassName, {\n variants: {\n variant: {\n default: inputGroupFilledVariant,\n filled: inputGroupFilledVariant,\n outline: cn(\n 'rounded-full bg-transparent',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n ),\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport type InputGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n size?: ControlSize;\n} & VariantProps<typeof inputGroupVariants>;\n\nconst InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\n ({ className, size = 'md', variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group\"\n data-size={size}\n className={cn(inputGroupVariants({ variant }), controlHeight[size], className)}\n {...props}\n />\n );\n },\n);\nInputGroup.displayName = 'InputGroup';\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-neutral3 select-none',\n 'group-has-[:disabled]/input-group:opacity-50',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border1 px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border1 px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentPropsWithoutRef<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nconst InputGroupAddon = React.forwardRef<HTMLDivElement, InputGroupAddonProps>(\n ({ className, align = 'inline-start', onClick, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n },\n);\nInputGroupAddon.displayName = 'InputGroupAddon';\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control mirrors the root height so it\n// doesn't collapse to the line-height in block mode (flex-col + flex-none); the root's\n// explicit border-box height means this never makes the group grow.\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=xs]/input-group:h-form-xs',\n 'group-data-[size=sm]/input-group:h-form-sm',\n 'group-data-[size=md]/input-group:h-form-md',\n 'group-data-[size=default]/input-group:h-form-default',\n 'group-data-[size=lg]/input-group:h-form-lg',\n);\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=xs]/input-group:text-ui-xs',\n 'group-data-[size=sm]/input-group:text-ui-sm',\n 'group-data-[size=md]/input-group:text-ui-md',\n 'group-data-[size=default]/input-group:text-ui-md',\n 'group-data-[size=lg]/input-group:text-ui-lg',\n);\n\nexport type InputGroupInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupInput = React.forwardRef<HTMLInputElement, InputGroupInputProps>(\n ({ className, testId, error, type = 'text', ...props }, ref) => {\n return (\n <input\n ref={ref}\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n // Height matches the root box (which is fixed/border-box, so it doesn't grow);\n // this also keeps the control from collapsing in block mode (flex-col).\n 'min-w-0 flex-1 bg-transparent px-3 text-neutral6 outline-hidden',\n inputGroupControlHeightBySize,\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n // Hide native number-spinner arrows so consumers can compose their own\n // stepper (see the NumberWithStepper story). WebKit uses the spin-button\n // pseudo-elements; Firefox needs `appearance: textfield` on the input.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupInput.displayName = 'InputGroupInput';\n\nexport type InputGroupTextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupTextarea = React.forwardRef<HTMLTextAreaElement, InputGroupTextareaProps>(\n ({ className, testId, error, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-neutral6 outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupTextarea.displayName = 'InputGroupTextarea';\n\nexport type InputGroupTextProps = React.ComponentPropsWithoutRef<'span'>;\n\nconst InputGroupText = React.forwardRef<HTMLSpanElement, InputGroupTextProps>(({ className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(\n 'flex items-center gap-2 text-ui-sm text-neutral3 [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n});\nInputGroupText.displayName = 'InputGroupText';\n\nexport type InputGroupButtonProps = Omit<ButtonProps, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nconst InputGroupButton = React.forwardRef<HTMLButtonElement, InputGroupButtonProps>(\n ({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }, ref) => {\n return <Button ref={ref} type={type} size={size} variant={variant} {...props} />;\n },\n);\nInputGroupButton.displayName = 'InputGroupButton';\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-group-CWT_IwX0.js","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { inputFocusBorderWithin, inputHoverBorderWithin } from '@/ds/primitives/form-element';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n// No React context: size flows via `data-size` on the named group root\n// (`group/input-group`) and is read by the control through `group-data-[size=…]`\n// variants — mirrors shadcn's data-slot/data-* convention and removes prop drilling.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n 'border border-border1 text-neutral6',\n transitions.all,\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50',\n 'has-[[aria-invalid=true]]:border-error',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// `default` and `filled` are the same filled surface on purpose (the default look IS\n// the filled treatment; `filled` is an explicit alias). Share the string so they can't\n// drift. Focus brightens the border (inputFocusBorderWithin) for WCAG-visible focus.\nconst inputGroupFilledVariant = cn(\n 'rounded-full bg-surface-overlay-soft',\n 'hover:bg-surface-overlay-strong',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:bg-surface-overlay-strong focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nconst inputGroupVariants = cva(inputGroupBaseClassName, {\n variants: {\n variant: {\n default: inputGroupFilledVariant,\n filled: inputGroupFilledVariant,\n outline: cn(\n 'rounded-full bg-transparent',\n inputHoverBorderWithin,\n 'outline-hidden focus-within:outline-hidden',\n inputFocusBorderWithin,\n inputGroupRoundedTextareaClassName,\n ),\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport type InputGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n size?: ControlSize;\n} & VariantProps<typeof inputGroupVariants>;\n\nconst InputGroup = React.forwardRef<HTMLDivElement, InputGroupProps>(\n ({ className, size = 'md', variant, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group\"\n data-size={size}\n className={cn(inputGroupVariants({ variant }), controlHeight[size], className)}\n {...props}\n />\n );\n },\n);\nInputGroup.displayName = 'InputGroup';\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-neutral3 select-none',\n 'group-has-[:disabled]/input-group:opacity-50',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border1 px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border1 px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentPropsWithoutRef<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nconst InputGroupAddon = React.forwardRef<HTMLDivElement, InputGroupAddonProps>(\n ({ className, align = 'inline-start', onClick, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n },\n);\nInputGroupAddon.displayName = 'InputGroupAddon';\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control mirrors the root height so it\n// doesn't collapse to the line-height in block mode (flex-col + flex-none); the root's\n// explicit border-box height means this never makes the group grow.\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=xs]/input-group:h-form-xs',\n 'group-data-[size=sm]/input-group:h-form-sm',\n 'group-data-[size=md]/input-group:h-form-md',\n 'group-data-[size=default]/input-group:h-form-default',\n 'group-data-[size=lg]/input-group:h-form-lg',\n);\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=xs]/input-group:text-ui-xs',\n 'group-data-[size=sm]/input-group:text-ui-sm',\n 'group-data-[size=md]/input-group:text-ui-md',\n 'group-data-[size=default]/input-group:text-ui-md',\n 'group-data-[size=lg]/input-group:text-ui-lg',\n);\n\nexport type InputGroupInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupInput = React.forwardRef<HTMLInputElement, InputGroupInputProps>(\n ({ className, testId, error, type = 'text', ...props }, ref) => {\n return (\n <input\n ref={ref}\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n // Height matches the root box (which is fixed/border-box, so it doesn't grow);\n // this also keeps the control from collapsing in block mode (flex-col).\n 'min-w-0 flex-1 bg-transparent px-3 text-neutral6 outline-hidden',\n inputGroupControlHeightBySize,\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n // Hide native number-spinner arrows so consumers can compose their own\n // stepper (see the NumberWithStepper story). WebKit uses the spin-button\n // pseudo-elements; Firefox needs `appearance: textfield` on the input.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupInput.displayName = 'InputGroupInput';\n\nexport type InputGroupTextareaProps = React.TextareaHTMLAttributes<HTMLTextAreaElement> & {\n testId?: string;\n error?: boolean;\n};\n\nconst InputGroupTextarea = React.forwardRef<HTMLTextAreaElement, InputGroupTextareaProps>(\n ({ className, testId, error, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n data-slot=\"input-group-control\"\n data-testid={testId}\n aria-invalid={error}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-neutral6 outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:duration-normal placeholder:text-neutral2 placeholder:transition-opacity',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...props}\n />\n );\n },\n);\nInputGroupTextarea.displayName = 'InputGroupTextarea';\n\nexport type InputGroupTextProps = React.ComponentPropsWithoutRef<'span'>;\n\nconst InputGroupText = React.forwardRef<HTMLSpanElement, InputGroupTextProps>(({ className, ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(\n 'flex items-center gap-2 text-ui-sm text-neutral3 [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n});\nInputGroupText.displayName = 'InputGroupText';\n\nexport type InputGroupButtonProps = Omit<ButtonProps, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nconst InputGroupButton = React.forwardRef<HTMLButtonElement, InputGroupButtonProps>(\n ({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }, ref) => {\n return <Button ref={ref} type={type} size={size} variant={variant} {...props} />;\n },\n);\nInputGroupButton.displayName = 'InputGroupButton';\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":[],"mappings":"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"}
@@ -2,12 +2,13 @@ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import Markdown from 'react-markdown';
3
3
  import remarkGfm from 'remark-gfm';
4
4
  import { C as Code } from './code-C5KVVzOZ.js';
5
- import { C as CopyButton } from './copy-button-H2iaKMng.js';
5
+ import { C as CopyButton } from './copy-button-B1GWIQ-x.js';
6
6
  import { c as cn } from './cn-BakJzhuv.js';
7
7
 
8
- function MarkdownRenderer({ children }) {
8
+ function MarkdownRenderer({ children, externalLinkTarget = "tab" }) {
9
9
  const processedText = children.replace(/\\n/g, "\n");
10
- return /* @__PURE__ */ jsx(Markdown, { remarkPlugins: [remarkGfm], components: COMPONENTS, className: "space-y-3", children: processedText });
10
+ const components = externalLinkTarget === "window" ? WINDOW_COMPONENTS : COMPONENTS;
11
+ return /* @__PURE__ */ jsx(Markdown, { remarkPlugins: [remarkGfm], components, className: "space-y-3", children: processedText });
11
12
  }
12
13
  const CodeBlock = ({ children, className, language, ...restProps }) => {
13
14
  const code = typeof children === "string" ? children : childrenTakeAllStringContents(children);
@@ -34,6 +35,32 @@ function childrenTakeAllStringContents(element) {
34
35
  }
35
36
  return "";
36
37
  }
38
+ const POPUP_WINDOW_FEATURES = "popup=yes,width=720,height=800,resizable=yes,scrollbars=yes";
39
+ const createMarkdownLink = (externalLinkTarget) => ({ children, href, onClick, ...props }) => {
40
+ const isExternal = /^https?:\/\//i.test(href ?? "");
41
+ const handleClick = (event) => {
42
+ onClick?.(event);
43
+ if (event.defaultPrevented || !isExternal || externalLinkTarget !== "window" || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) {
44
+ return;
45
+ }
46
+ const popup = window.open(href, "_blank", POPUP_WINDOW_FEATURES);
47
+ if (!popup) return;
48
+ popup.opener = null;
49
+ event.preventDefault();
50
+ };
51
+ return /* @__PURE__ */ jsx(
52
+ "a",
53
+ {
54
+ className: "underline underline-offset-2",
55
+ href,
56
+ ...props,
57
+ target: isExternal ? "_blank" : void 0,
58
+ rel: isExternal ? "noopener noreferrer" : void 0,
59
+ onClick: handleClick,
60
+ children
61
+ }
62
+ );
63
+ };
37
64
  const COMPONENTS = {
38
65
  h1: ({ children, ...props }) => /* @__PURE__ */ jsx("h1", { className: "text-2xl font-semibold", ...props, children }),
39
66
  h2: ({ children, ...props }) => /* @__PURE__ */ jsx("h2", { className: "text-xl font-semibold", ...props, children }),
@@ -41,20 +68,7 @@ const COMPONENTS = {
41
68
  h4: ({ children, ...props }) => /* @__PURE__ */ jsx("h4", { className: "text-base font-semibold", ...props, children }),
42
69
  h5: ({ children, ...props }) => /* @__PURE__ */ jsx("h5", { className: "font-medium", ...props, children }),
43
70
  strong: ({ children, ...props }) => /* @__PURE__ */ jsx("strong", { className: "font-semibold", ...props, children }),
44
- a: ({ children, href, ...props }) => {
45
- const isExternal = /^https?:\/\//i.test(href ?? "");
46
- return /* @__PURE__ */ jsx(
47
- "a",
48
- {
49
- className: "underline underline-offset-2",
50
- href,
51
- ...props,
52
- target: isExternal ? "_blank" : void 0,
53
- rel: isExternal ? "noopener noreferrer" : void 0,
54
- children
55
- }
56
- );
57
- },
71
+ a: createMarkdownLink("tab"),
58
72
  blockquote: ({ children, ...props }) => /* @__PURE__ */ jsx("blockquote", { className: "border-neutral6 border-l-2 pl-4", ...props, children }),
59
73
  code: ({ children, className, ...rest }) => {
60
74
  const match = /language-(\w+)/.exec(className || "");
@@ -94,6 +108,10 @@ const COMPONENTS = {
94
108
  p: ({ children, ...props }) => /* @__PURE__ */ jsx("p", { className: "leading-relaxed whitespace-pre-wrap", ...props, children }),
95
109
  hr: ({ ...props }) => /* @__PURE__ */ jsx("hr", { className: "border-neutral6/20", ...props })
96
110
  };
111
+ const WINDOW_COMPONENTS = {
112
+ ...COMPONENTS,
113
+ a: createMarkdownLink("window")
114
+ };
97
115
 
98
116
  export { MarkdownRenderer as M };
99
- //# sourceMappingURL=markdown-renderer-Bi2fWeoF.js.map
117
+ //# sourceMappingURL=markdown-renderer-DszxuuNM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-renderer-DszxuuNM.js","sources":["../src/ds/components/MarkdownRenderer/markdown-renderer.tsx"],"sourcesContent":["import React from 'react';\nimport Markdown from 'react-markdown';\nimport type { Components } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\n\nimport { Code } from '@/ds/components/Code';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { cn } from '@/lib/utils';\n\nexport type MarkdownExternalLinkTarget = 'tab' | 'window';\n\nexport type MarkdownRendererProps = {\n children: string;\n externalLinkTarget?: MarkdownExternalLinkTarget;\n};\n\nexport function MarkdownRenderer({ children, externalLinkTarget = 'tab' }: MarkdownRendererProps) {\n const processedText = children.replace(/\\\\n/g, '\\n');\n const components = externalLinkTarget === 'window' ? WINDOW_COMPONENTS : COMPONENTS;\n\n return (\n <Markdown remarkPlugins={[remarkGfm]} components={components} className=\"space-y-3\">\n {processedText}\n </Markdown>\n );\n}\n\ninterface CodeBlockProps extends React.HTMLAttributes<HTMLPreElement> {\n children: React.ReactNode;\n className?: string;\n language: string;\n}\n\nconst CodeBlock = ({ children, className, language, ...restProps }: CodeBlockProps) => {\n const code = typeof children === 'string' ? children : childrenTakeAllStringContents(children);\n\n const preClass = cn(\n '[scrollbar-width:none] overflow-x-scroll rounded-md border bg-surface1/50 p-4 font-mono text-sm',\n className,\n );\n\n return (\n <div className=\"group/code relative mb-4\">\n <Code code={code} lang={language} className={preClass} {...restProps} />\n\n <div className=\"invisible absolute top-2 right-2 flex gap-1 rounded-lg p-1 opacity-0 transition-all duration-200 group-hover/code:visible group-hover/code:opacity-100\">\n <CopyButton content={code} copyMessage=\"Copied code to clipboard\" />\n </div>\n </div>\n );\n};\n\nfunction childrenTakeAllStringContents(element: any): string {\n if (typeof element === 'string') {\n return element;\n }\n\n if (element?.props?.children) {\n let children = element.props.children;\n\n if (Array.isArray(children)) {\n return children.map(child => childrenTakeAllStringContents(child)).join('');\n } else {\n return childrenTakeAllStringContents(children);\n }\n }\n\n return '';\n}\n\nconst POPUP_WINDOW_FEATURES = 'popup=yes,width=720,height=800,resizable=yes,scrollbars=yes';\n\nconst createMarkdownLink =\n (externalLinkTarget: MarkdownExternalLinkTarget): NonNullable<Components['a']> =>\n ({ children, href, onClick, ...props }) => {\n const isExternal = /^https?:\\/\\//i.test(href ?? '');\n const handleClick: React.MouseEventHandler<HTMLAnchorElement> = event => {\n onClick?.(event);\n if (\n event.defaultPrevented ||\n !isExternal ||\n externalLinkTarget !== 'window' ||\n event.button !== 0 ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey\n ) {\n return;\n }\n\n const popup = window.open(href, '_blank', POPUP_WINDOW_FEATURES);\n if (!popup) return;\n\n popup.opener = null;\n event.preventDefault();\n };\n\n return (\n <a\n className=\"underline underline-offset-2\"\n href={href}\n {...props}\n target={isExternal ? '_blank' : undefined}\n rel={isExternal ? 'noopener noreferrer' : undefined}\n onClick={handleClick}\n >\n {children}\n </a>\n );\n };\n\n// Create component wrappers with className\nconst COMPONENTS: Components = {\n h1: ({ children, ...props }) => (\n <h1 className=\"text-2xl font-semibold\" {...props}>\n {children}\n </h1>\n ),\n h2: ({ children, ...props }) => (\n <h2 className=\"text-xl font-semibold\" {...props}>\n {children}\n </h2>\n ),\n h3: ({ children, ...props }) => (\n <h3 className=\"text-lg font-semibold\" {...props}>\n {children}\n </h3>\n ),\n h4: ({ children, ...props }) => (\n <h4 className=\"text-base font-semibold\" {...props}>\n {children}\n </h4>\n ),\n h5: ({ children, ...props }) => (\n <h5 className=\"font-medium\" {...props}>\n {children}\n </h5>\n ),\n strong: ({ children, ...props }) => (\n <strong className=\"font-semibold\" {...props}>\n {children}\n </strong>\n ),\n a: createMarkdownLink('tab'),\n blockquote: ({ children, ...props }) => (\n <blockquote className=\"border-neutral6 border-l-2 pl-4\" {...props}>\n {children}\n </blockquote>\n ),\n code: ({ children, className, ...rest }: any) => {\n const match = /language-(\\w+)/.exec(className || '');\n return match ? (\n <CodeBlock className={className} language={match[1]} {...rest}>\n {children}\n </CodeBlock>\n ) : (\n <code\n className={cn(\n 'font-mono [:not(pre)>&]:rounded-md [:not(pre)>&]:bg-surface1/50 [:not(pre)>&]:px-1 [:not(pre)>&]:py-0.5',\n )}\n {...rest}\n >\n {children}\n </code>\n );\n },\n pre: ({ children }: any) => children,\n ol: ({ children, ...props }) => (\n <ol className=\"list-decimal space-y-2 pl-6\" {...props}>\n {children}\n </ol>\n ),\n ul: ({ children, ...props }) => (\n <ul className=\"list-disc space-y-2 pl-6\" {...props}>\n {children}\n </ul>\n ),\n li: ({ children, ...props }) => (\n <li className=\"my-1.5\" {...props}>\n {children}\n </li>\n ),\n table: ({ children, ...props }) => (\n <table className=\"border-neutral6/20 w-full border-collapse overflow-y-auto rounded-md border\" {...props}>\n {children}\n </table>\n ),\n th: ({ children, ...props }) => (\n <th\n className=\"border-neutral6/20 border px-4 py-2 text-left font-bold [[align=center]]:text-center [[align=right]]:text-right\"\n {...props}\n >\n {children}\n </th>\n ),\n td: ({ children, ...props }) => (\n <td\n className=\"border-neutral6/20 border px-4 py-2 text-left [[align=center]]:text-center [[align=right]]:text-right\"\n {...props}\n >\n {children}\n </td>\n ),\n tr: ({ children, ...props }) => (\n <tr className=\"even:bg-surface4 m-0 border-t p-0\" {...props}>\n {children}\n </tr>\n ),\n p: ({ children, ...props }) => (\n <p className=\"leading-relaxed whitespace-pre-wrap\" {...props}>\n {children}\n </p>\n ),\n hr: ({ ...props }) => <hr className=\"border-neutral6/20\" {...props} />,\n};\n\nconst WINDOW_COMPONENTS: Components = {\n ...COMPONENTS,\n a: createMarkdownLink('window'),\n};\n\nexport default MarkdownRenderer;\n"],"names":[],"mappings":"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"}
@@ -4,12 +4,13 @@ const jsxRuntime = require('react/jsx-runtime');
4
4
  const Markdown = require('react-markdown');
5
5
  const remarkGfm = require('remark-gfm');
6
6
  const code = require('./code-B3WONxnA.cjs');
7
- const copyButton = require('./copy-button-BKFcsNE1.cjs');
7
+ const copyButton = require('./copy-button-DwZ3c7D4.cjs');
8
8
  const utils_cn = require('./cn-vA5sWo9W.cjs');
9
9
 
10
- function MarkdownRenderer({ children }) {
10
+ function MarkdownRenderer({ children, externalLinkTarget = "tab" }) {
11
11
  const processedText = children.replace(/\\n/g, "\n");
12
- return /* @__PURE__ */ jsxRuntime.jsx(Markdown, { remarkPlugins: [remarkGfm], components: COMPONENTS, className: "space-y-3", children: processedText });
12
+ const components = externalLinkTarget === "window" ? WINDOW_COMPONENTS : COMPONENTS;
13
+ return /* @__PURE__ */ jsxRuntime.jsx(Markdown, { remarkPlugins: [remarkGfm], components, className: "space-y-3", children: processedText });
13
14
  }
14
15
  const CodeBlock = ({ children, className, language, ...restProps }) => {
15
16
  const code$1 = typeof children === "string" ? children : childrenTakeAllStringContents(children);
@@ -36,6 +37,32 @@ function childrenTakeAllStringContents(element) {
36
37
  }
37
38
  return "";
38
39
  }
40
+ const POPUP_WINDOW_FEATURES = "popup=yes,width=720,height=800,resizable=yes,scrollbars=yes";
41
+ const createMarkdownLink = (externalLinkTarget) => ({ children, href, onClick, ...props }) => {
42
+ const isExternal = /^https?:\/\//i.test(href ?? "");
43
+ const handleClick = (event) => {
44
+ onClick?.(event);
45
+ if (event.defaultPrevented || !isExternal || externalLinkTarget !== "window" || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) {
46
+ return;
47
+ }
48
+ const popup = window.open(href, "_blank", POPUP_WINDOW_FEATURES);
49
+ if (!popup) return;
50
+ popup.opener = null;
51
+ event.preventDefault();
52
+ };
53
+ return /* @__PURE__ */ jsxRuntime.jsx(
54
+ "a",
55
+ {
56
+ className: "underline underline-offset-2",
57
+ href,
58
+ ...props,
59
+ target: isExternal ? "_blank" : void 0,
60
+ rel: isExternal ? "noopener noreferrer" : void 0,
61
+ onClick: handleClick,
62
+ children
63
+ }
64
+ );
65
+ };
39
66
  const COMPONENTS = {
40
67
  h1: ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-2xl font-semibold", ...props, children }),
41
68
  h2: ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xl font-semibold", ...props, children }),
@@ -43,20 +70,7 @@ const COMPONENTS = {
43
70
  h4: ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-base font-semibold", ...props, children }),
44
71
  h5: ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("h5", { className: "font-medium", ...props, children }),
45
72
  strong: ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("strong", { className: "font-semibold", ...props, children }),
46
- a: ({ children, href, ...props }) => {
47
- const isExternal = /^https?:\/\//i.test(href ?? "");
48
- return /* @__PURE__ */ jsxRuntime.jsx(
49
- "a",
50
- {
51
- className: "underline underline-offset-2",
52
- href,
53
- ...props,
54
- target: isExternal ? "_blank" : void 0,
55
- rel: isExternal ? "noopener noreferrer" : void 0,
56
- children
57
- }
58
- );
59
- },
73
+ a: createMarkdownLink("tab"),
60
74
  blockquote: ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("blockquote", { className: "border-neutral6 border-l-2 pl-4", ...props, children }),
61
75
  code: ({ children, className, ...rest }) => {
62
76
  const match = /language-(\w+)/.exec(className || "");
@@ -96,6 +110,10 @@ const COMPONENTS = {
96
110
  p: ({ children, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("p", { className: "leading-relaxed whitespace-pre-wrap", ...props, children }),
97
111
  hr: ({ ...props }) => /* @__PURE__ */ jsxRuntime.jsx("hr", { className: "border-neutral6/20", ...props })
98
112
  };
113
+ const WINDOW_COMPONENTS = {
114
+ ...COMPONENTS,
115
+ a: createMarkdownLink("window")
116
+ };
99
117
 
100
118
  exports.MarkdownRenderer = MarkdownRenderer;
101
- //# sourceMappingURL=markdown-renderer-DwfNrhEH.cjs.map
119
+ //# sourceMappingURL=markdown-renderer-g8xNLOc0.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-renderer-g8xNLOc0.cjs","sources":["../src/ds/components/MarkdownRenderer/markdown-renderer.tsx"],"sourcesContent":["import React from 'react';\nimport Markdown from 'react-markdown';\nimport type { Components } from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\n\nimport { Code } from '@/ds/components/Code';\nimport { CopyButton } from '@/ds/components/CopyButton';\nimport { cn } from '@/lib/utils';\n\nexport type MarkdownExternalLinkTarget = 'tab' | 'window';\n\nexport type MarkdownRendererProps = {\n children: string;\n externalLinkTarget?: MarkdownExternalLinkTarget;\n};\n\nexport function MarkdownRenderer({ children, externalLinkTarget = 'tab' }: MarkdownRendererProps) {\n const processedText = children.replace(/\\\\n/g, '\\n');\n const components = externalLinkTarget === 'window' ? WINDOW_COMPONENTS : COMPONENTS;\n\n return (\n <Markdown remarkPlugins={[remarkGfm]} components={components} className=\"space-y-3\">\n {processedText}\n </Markdown>\n );\n}\n\ninterface CodeBlockProps extends React.HTMLAttributes<HTMLPreElement> {\n children: React.ReactNode;\n className?: string;\n language: string;\n}\n\nconst CodeBlock = ({ children, className, language, ...restProps }: CodeBlockProps) => {\n const code = typeof children === 'string' ? children : childrenTakeAllStringContents(children);\n\n const preClass = cn(\n '[scrollbar-width:none] overflow-x-scroll rounded-md border bg-surface1/50 p-4 font-mono text-sm',\n className,\n );\n\n return (\n <div className=\"group/code relative mb-4\">\n <Code code={code} lang={language} className={preClass} {...restProps} />\n\n <div className=\"invisible absolute top-2 right-2 flex gap-1 rounded-lg p-1 opacity-0 transition-all duration-200 group-hover/code:visible group-hover/code:opacity-100\">\n <CopyButton content={code} copyMessage=\"Copied code to clipboard\" />\n </div>\n </div>\n );\n};\n\nfunction childrenTakeAllStringContents(element: any): string {\n if (typeof element === 'string') {\n return element;\n }\n\n if (element?.props?.children) {\n let children = element.props.children;\n\n if (Array.isArray(children)) {\n return children.map(child => childrenTakeAllStringContents(child)).join('');\n } else {\n return childrenTakeAllStringContents(children);\n }\n }\n\n return '';\n}\n\nconst POPUP_WINDOW_FEATURES = 'popup=yes,width=720,height=800,resizable=yes,scrollbars=yes';\n\nconst createMarkdownLink =\n (externalLinkTarget: MarkdownExternalLinkTarget): NonNullable<Components['a']> =>\n ({ children, href, onClick, ...props }) => {\n const isExternal = /^https?:\\/\\//i.test(href ?? '');\n const handleClick: React.MouseEventHandler<HTMLAnchorElement> = event => {\n onClick?.(event);\n if (\n event.defaultPrevented ||\n !isExternal ||\n externalLinkTarget !== 'window' ||\n event.button !== 0 ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey\n ) {\n return;\n }\n\n const popup = window.open(href, '_blank', POPUP_WINDOW_FEATURES);\n if (!popup) return;\n\n popup.opener = null;\n event.preventDefault();\n };\n\n return (\n <a\n className=\"underline underline-offset-2\"\n href={href}\n {...props}\n target={isExternal ? '_blank' : undefined}\n rel={isExternal ? 'noopener noreferrer' : undefined}\n onClick={handleClick}\n >\n {children}\n </a>\n );\n };\n\n// Create component wrappers with className\nconst COMPONENTS: Components = {\n h1: ({ children, ...props }) => (\n <h1 className=\"text-2xl font-semibold\" {...props}>\n {children}\n </h1>\n ),\n h2: ({ children, ...props }) => (\n <h2 className=\"text-xl font-semibold\" {...props}>\n {children}\n </h2>\n ),\n h3: ({ children, ...props }) => (\n <h3 className=\"text-lg font-semibold\" {...props}>\n {children}\n </h3>\n ),\n h4: ({ children, ...props }) => (\n <h4 className=\"text-base font-semibold\" {...props}>\n {children}\n </h4>\n ),\n h5: ({ children, ...props }) => (\n <h5 className=\"font-medium\" {...props}>\n {children}\n </h5>\n ),\n strong: ({ children, ...props }) => (\n <strong className=\"font-semibold\" {...props}>\n {children}\n </strong>\n ),\n a: createMarkdownLink('tab'),\n blockquote: ({ children, ...props }) => (\n <blockquote className=\"border-neutral6 border-l-2 pl-4\" {...props}>\n {children}\n </blockquote>\n ),\n code: ({ children, className, ...rest }: any) => {\n const match = /language-(\\w+)/.exec(className || '');\n return match ? (\n <CodeBlock className={className} language={match[1]} {...rest}>\n {children}\n </CodeBlock>\n ) : (\n <code\n className={cn(\n 'font-mono [:not(pre)>&]:rounded-md [:not(pre)>&]:bg-surface1/50 [:not(pre)>&]:px-1 [:not(pre)>&]:py-0.5',\n )}\n {...rest}\n >\n {children}\n </code>\n );\n },\n pre: ({ children }: any) => children,\n ol: ({ children, ...props }) => (\n <ol className=\"list-decimal space-y-2 pl-6\" {...props}>\n {children}\n </ol>\n ),\n ul: ({ children, ...props }) => (\n <ul className=\"list-disc space-y-2 pl-6\" {...props}>\n {children}\n </ul>\n ),\n li: ({ children, ...props }) => (\n <li className=\"my-1.5\" {...props}>\n {children}\n </li>\n ),\n table: ({ children, ...props }) => (\n <table className=\"border-neutral6/20 w-full border-collapse overflow-y-auto rounded-md border\" {...props}>\n {children}\n </table>\n ),\n th: ({ children, ...props }) => (\n <th\n className=\"border-neutral6/20 border px-4 py-2 text-left font-bold [[align=center]]:text-center [[align=right]]:text-right\"\n {...props}\n >\n {children}\n </th>\n ),\n td: ({ children, ...props }) => (\n <td\n className=\"border-neutral6/20 border px-4 py-2 text-left [[align=center]]:text-center [[align=right]]:text-right\"\n {...props}\n >\n {children}\n </td>\n ),\n tr: ({ children, ...props }) => (\n <tr className=\"even:bg-surface4 m-0 border-t p-0\" {...props}>\n {children}\n </tr>\n ),\n p: ({ children, ...props }) => (\n <p className=\"leading-relaxed whitespace-pre-wrap\" {...props}>\n {children}\n </p>\n ),\n hr: ({ ...props }) => <hr className=\"border-neutral6/20\" {...props} />,\n};\n\nconst WINDOW_COMPONENTS: Components = {\n ...COMPONENTS,\n a: createMarkdownLink('window'),\n};\n\nexport default MarkdownRenderer;\n"],"names":["jsx","code","cn","jsxs","Code","CopyButton"],"mappings":"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"}