@mastra/playground-ui 63.0.1-alpha.0 → 63.1.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/dist/{alert-dialog-DVAC9zdj.js → alert-dialog-Cpx4g1sS.js} +2 -2
  2. package/dist/{alert-dialog-DVAC9zdj.js.map → alert-dialog-Cpx4g1sS.js.map} +1 -1
  3. package/dist/{alert-dialog-C-ODvRWT.cjs → alert-dialog-Djojjgjo.cjs} +2 -2
  4. package/dist/{alert-dialog-C-ODvRWT.cjs.map → alert-dialog-Djojjgjo.cjs.map} +1 -1
  5. package/dist/{code-block-vvYFcnqm.js → code-block-BzUcNWrb.js} +2 -2
  6. package/dist/{code-block-vvYFcnqm.js.map → code-block-BzUcNWrb.js.map} +1 -1
  7. package/dist/{code-block-BuGosknt.cjs → code-block-CKLCdWtP.cjs} +2 -2
  8. package/dist/{code-block-BuGosknt.cjs.map → code-block-CKLCdWtP.cjs.map} +1 -1
  9. package/dist/{combobox-fEMKH9nJ.cjs → combobox-CdTP_FZ0.cjs} +9 -2
  10. package/dist/combobox-CdTP_FZ0.cjs.map +1 -0
  11. package/dist/{combobox-so2V71F7.js → combobox-CeYDCkXk.js} +9 -2
  12. package/dist/combobox-CeYDCkXk.js.map +1 -0
  13. package/dist/{command-B_C36ppQ.cjs → command-CSl9Mfrp.cjs} +3 -3
  14. package/dist/{command-B_C36ppQ.cjs.map → command-CSl9Mfrp.cjs.map} +1 -1
  15. package/dist/{command-DMqzDhzs.js → command-DQAGSkdK.js} +3 -3
  16. package/dist/{command-DMqzDhzs.js.map → command-DQAGSkdK.js.map} +1 -1
  17. package/dist/components/AlertDialog.cjs.js +1 -1
  18. package/dist/components/AlertDialog.es.js +1 -1
  19. package/dist/components/CodeBlock.cjs.js +1 -1
  20. package/dist/components/CodeBlock.es.js +1 -1
  21. package/dist/components/Combobox.cjs.js +1 -1
  22. package/dist/components/Combobox.es.js +1 -1
  23. package/dist/components/Command.cjs.js +1 -1
  24. package/dist/components/Command.es.js +1 -1
  25. package/dist/components/CommandPalette.cjs.js +2 -2
  26. package/dist/components/CommandPalette.es.js +2 -2
  27. package/dist/components/Comment.cjs.js +1 -1
  28. package/dist/components/Comment.es.js +1 -1
  29. package/dist/components/Composer.cjs.js +2 -2
  30. package/dist/components/Composer.es.js +2 -2
  31. package/dist/components/DataCodeSection.cjs.js +1 -1
  32. package/dist/components/DataCodeSection.es.js +1 -1
  33. package/dist/components/DataList.cjs.js +3 -3
  34. package/dist/components/DataList.es.js +4 -4
  35. package/dist/components/DataPanel.cjs.js +1 -1
  36. package/dist/components/DataPanel.es.js +1 -1
  37. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  38. package/dist/components/DateTimeRangePicker.es.js +1 -1
  39. package/dist/components/Dialog.cjs.js +2 -2
  40. package/dist/components/Dialog.es.js +2 -2
  41. package/dist/components/DropdownMenu.cjs.js +1 -1
  42. package/dist/components/DropdownMenu.es.js +1 -1
  43. package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -2
  44. package/dist/components/EnvironmentVariablesEditor.es.js +2 -2
  45. package/dist/components/InputGroup.cjs.js +1 -1
  46. package/dist/components/InputGroup.es.js +1 -1
  47. package/dist/components/InputNumber.cjs.js +1 -1
  48. package/dist/components/InputNumber.es.js +1 -1
  49. package/dist/components/ListSearch.cjs.js +1 -1
  50. package/dist/components/ListSearch.es.js +1 -1
  51. package/dist/components/LogsDataList.cjs.js +3 -3
  52. package/dist/components/LogsDataList.es.js +3 -3
  53. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  54. package/dist/components/MarkdownRenderer.es.js +1 -1
  55. package/dist/components/MetricsCard.cjs.js +1 -1
  56. package/dist/components/MetricsCard.es.js +1 -1
  57. package/dist/components/PageLayout.cjs.js +11 -8
  58. package/dist/components/PageLayout.cjs.js.map +1 -1
  59. package/dist/components/PageLayout.es.js +11 -8
  60. package/dist/components/PageLayout.es.js.map +1 -1
  61. package/dist/components/PropertyFilter.cjs.js +2 -2
  62. package/dist/components/PropertyFilter.es.js +3 -3
  63. package/dist/components/SavedViews.cjs.js +1 -1
  64. package/dist/components/SavedViews.es.js +1 -1
  65. package/dist/components/ScrollArea.cjs.js +1 -1
  66. package/dist/components/ScrollArea.es.js +1 -1
  67. package/dist/components/SearchInput.cjs.js +1 -1
  68. package/dist/components/SearchInput.es.js +1 -1
  69. package/dist/components/Sidebar.cjs.js +3 -3
  70. package/dist/components/Sidebar.es.js +3 -3
  71. package/dist/components/Tabs.cjs.js +1 -1
  72. package/dist/components/Tabs.es.js +1 -1
  73. package/dist/components/ThreadRail.cjs.js +1 -1
  74. package/dist/components/ThreadRail.es.js +1 -1
  75. package/dist/components/Workflow.cjs.js +3 -3
  76. package/dist/components/Workflow.es.js +3 -3
  77. package/dist/components/ai/activity.cjs.js +1 -1
  78. package/dist/components/ai/activity.es.js +1 -1
  79. package/dist/components/ai/plan.cjs.js +1 -1
  80. package/dist/components/ai/plan.es.js +1 -1
  81. package/dist/components/ai/task-list.cjs.js +1 -1
  82. package/dist/components/ai/task-list.es.js +1 -1
  83. package/dist/components/ai/tool-approval.cjs.js +1 -1
  84. package/dist/components/ai/tool-approval.es.js +1 -1
  85. package/dist/components/ai/tool-call.cjs.js +2 -2
  86. package/dist/components/ai/tool-call.es.js +2 -2
  87. package/dist/{composer-CxmOOUX8.js → composer-B0i1WZgt.js} +2 -2
  88. package/dist/{composer-CxmOOUX8.js.map → composer-B0i1WZgt.js.map} +1 -1
  89. package/dist/{composer-Cg5bXN1r.cjs → composer-DJsfHivH.cjs} +2 -2
  90. package/dist/{composer-Cg5bXN1r.cjs.map → composer-DJsfHivH.cjs.map} +1 -1
  91. package/dist/{data-code-section-Bs8sHDux.cjs → data-code-section-BB2RWius.cjs} +3 -3
  92. package/dist/{data-code-section-Bs8sHDux.cjs.map → data-code-section-BB2RWius.cjs.map} +1 -1
  93. package/dist/{data-code-section-CqdjmClK.js → data-code-section-DsU-ubVW.js} +3 -3
  94. package/dist/{data-code-section-CqdjmClK.js.map → data-code-section-DsU-ubVW.js.map} +1 -1
  95. package/dist/{data-list-BLfHObw8.cjs → data-list-2svaWtkq.cjs} +2 -2
  96. package/dist/{data-list-BLfHObw8.cjs.map → data-list-2svaWtkq.cjs.map} +1 -1
  97. package/dist/{data-list-B2ArWwsJ.js → data-list-BbOYiz4B.js} +2 -2
  98. package/dist/{data-list-B2ArWwsJ.js.map → data-list-BbOYiz4B.js.map} +1 -1
  99. package/dist/{data-list-skeleton-BGJD4qMF.cjs → data-list-skeleton-C-j6Sf0F.cjs} +2 -2
  100. package/dist/{data-list-skeleton-BGJD4qMF.cjs.map → data-list-skeleton-C-j6Sf0F.cjs.map} +1 -1
  101. package/dist/{data-list-skeleton-BNsWWamC.js → data-list-skeleton-C9Zm5XMX.js} +2 -2
  102. package/dist/{data-list-skeleton-BNsWWamC.js.map → data-list-skeleton-C9Zm5XMX.js.map} +1 -1
  103. package/dist/{data-panel-Wjgbl6zx.cjs → data-panel-CtFwwsPs.cjs} +2 -2
  104. package/dist/{data-panel-Wjgbl6zx.cjs.map → data-panel-CtFwwsPs.cjs.map} +1 -1
  105. package/dist/{data-panel-BdCw3F_h.js → data-panel-CwIdwpov.js} +2 -2
  106. package/dist/{data-panel-BdCw3F_h.js.map → data-panel-CwIdwpov.js.map} +1 -1
  107. package/dist/{date-time-range-picker-SU1Q1h1h.js → date-time-range-picker-BT9qan60.js} +2 -2
  108. package/dist/{date-time-range-picker-SU1Q1h1h.js.map → date-time-range-picker-BT9qan60.js.map} +1 -1
  109. package/dist/{date-time-range-picker-ByNvjYuV.cjs → date-time-range-picker-DQa5XLST.cjs} +2 -2
  110. package/dist/{date-time-range-picker-ByNvjYuV.cjs.map → date-time-range-picker-DQa5XLST.cjs.map} +1 -1
  111. package/dist/{dialog-B5nLi0ER.cjs → dialog-BAlSUqcF.cjs} +2 -2
  112. package/dist/{dialog-B5nLi0ER.cjs.map → dialog-BAlSUqcF.cjs.map} +1 -1
  113. package/dist/{dialog-Jz2ZfO-z.js → dialog-CboDo8Pj.js} +2 -2
  114. package/dist/{dialog-Jz2ZfO-z.js.map → dialog-CboDo8Pj.js.map} +1 -1
  115. package/dist/{dialog-action-DdkbsKfP.cjs → dialog-action-DWE9XalB.cjs} +2 -2
  116. package/dist/{dialog-action-DdkbsKfP.cjs.map → dialog-action-DWE9XalB.cjs.map} +1 -1
  117. package/dist/{dialog-action-BxXhAz-P.js → dialog-action-DpctEQ9l.js} +2 -2
  118. package/dist/{dialog-action-BxXhAz-P.js.map → dialog-action-DpctEQ9l.js.map} +1 -1
  119. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +1 -1
  120. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +1 -1
  121. package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +2 -2
  122. package/dist/domains/chat/attachments/composer-attachment-list.es.js +2 -2
  123. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
  124. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
  125. package/dist/domains/chat/messages/dataset-save-action.cjs.js +2 -2
  126. package/dist/domains/chat/messages/dataset-save-action.es.js +2 -2
  127. package/dist/domains/chat/messages/message-row.cjs.js +1 -1
  128. package/dist/domains/chat/messages/message-row.es.js +1 -1
  129. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  130. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  131. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  132. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  133. package/dist/domains/chat/messages/skill-message.cjs.js +2 -2
  134. package/dist/domains/chat/messages/skill-message.es.js +2 -2
  135. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +1 -1
  136. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
  137. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +1 -1
  138. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +1 -1
  139. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +1 -1
  140. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
  141. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +1 -1
  142. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
  143. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  144. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  145. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  146. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  147. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +1 -1
  148. package/dist/domains/chat/tools/badges/tool-badge.es.js +1 -1
  149. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -2
  150. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  151. package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -2
  152. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  153. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +1 -1
  154. package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
  155. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  156. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  157. package/dist/domains/logs/components/logs-list-view.cjs.js +3 -3
  158. package/dist/domains/logs/components/logs-list-view.es.js +3 -3
  159. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  160. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  161. package/dist/domains/metrics/components/agent-runs-card.cjs.js +1 -1
  162. package/dist/domains/metrics/components/agent-runs-card.es.js +1 -1
  163. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  164. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  165. package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
  166. package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
  167. package/dist/domains/metrics/components/chart-card.cjs.js +1 -1
  168. package/dist/domains/metrics/components/chart-card.es.js +1 -1
  169. package/dist/domains/metrics/components/date-range-selector.cjs.js +5 -44
  170. package/dist/domains/metrics/components/date-range-selector.cjs.js.map +1 -1
  171. package/dist/domains/metrics/components/date-range-selector.es.js +3 -42
  172. package/dist/domains/metrics/components/date-range-selector.es.js.map +1 -1
  173. package/dist/domains/metrics/components/failure-rate-card.cjs.js +1 -1
  174. package/dist/domains/metrics/components/failure-rate-card.es.js +1 -1
  175. package/dist/domains/metrics/components/latency-card.cjs.js +1 -1
  176. package/dist/domains/metrics/components/latency-card.es.js +1 -1
  177. package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js +26 -0
  178. package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js.map +1 -0
  179. package/dist/domains/metrics/components/metrics-time-range-chip.d.ts +2 -0
  180. package/dist/domains/metrics/components/metrics-time-range-chip.es.js +22 -0
  181. package/dist/domains/metrics/components/metrics-time-range-chip.es.js.map +1 -0
  182. package/dist/domains/metrics/components/scores-card.cjs.js +1 -1
  183. package/dist/domains/metrics/components/scores-card.es.js +1 -1
  184. package/dist/domains/metrics/components/token-usage-card.cjs.js +1 -1
  185. package/dist/domains/metrics/components/token-usage-card.es.js +1 -1
  186. package/dist/domains/metrics/components/trace-volume-card.cjs.js +1 -1
  187. package/dist/domains/metrics/components/trace-volume-card.es.js +1 -1
  188. package/dist/domains/metrics/components/usage-card.cjs.js +1 -1
  189. package/dist/domains/metrics/components/usage-card.es.js +1 -1
  190. package/dist/domains/metrics/components.cjs.js +2 -0
  191. package/dist/domains/metrics/components.cjs.js.map +1 -1
  192. package/dist/domains/metrics/components.es.js +1 -0
  193. package/dist/domains/metrics/components.es.js.map +1 -1
  194. package/dist/domains/metrics/hooks.cjs.js +4 -0
  195. package/dist/domains/metrics/hooks.cjs.js.map +1 -1
  196. package/dist/domains/metrics/hooks.es.js +1 -1
  197. package/dist/domains/metrics/metrics-date-presets.cjs.js +49 -0
  198. package/dist/domains/metrics/metrics-date-presets.cjs.js.map +1 -0
  199. package/dist/domains/metrics/metrics-date-presets.d.ts +2 -0
  200. package/dist/domains/metrics/metrics-date-presets.es.js +43 -0
  201. package/dist/domains/metrics/metrics-date-presets.es.js.map +1 -0
  202. package/dist/domains/metrics/metrics-filters.cjs.js +94 -0
  203. package/dist/domains/metrics/metrics-filters.cjs.js.map +1 -1
  204. package/dist/domains/metrics/metrics-filters.es.js +91 -1
  205. package/dist/domains/metrics/metrics-filters.es.js.map +1 -1
  206. package/dist/domains/metrics.cjs.js +6 -0
  207. package/dist/domains/metrics.cjs.js.map +1 -1
  208. package/dist/domains/metrics.es.js +2 -1
  209. package/dist/domains/metrics.es.js.map +1 -1
  210. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  211. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  212. package/dist/domains/scores/components/span-scoring.cjs.js +3 -3
  213. package/dist/domains/scores/components/span-scoring.es.js +3 -3
  214. package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
  215. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
  216. package/dist/domains/traces/components/feedback-thread.cjs.js +3 -3
  217. package/dist/domains/traces/components/feedback-thread.es.js +3 -3
  218. package/dist/domains/traces/components/span-data-panel-view.cjs.js +2 -2
  219. package/dist/domains/traces/components/span-data-panel-view.es.js +2 -2
  220. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  221. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  222. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  223. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  224. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  225. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  226. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  227. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  228. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  229. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  230. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  231. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  232. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  233. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  234. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
  235. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
  236. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  237. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  238. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  239. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  240. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
  241. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
  242. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +0 -1
  243. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  244. package/dist/domains/traces/components/thread-view-by-trace.es.js +0 -1
  245. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  246. package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
  247. package/dist/domains/traces/components/trace-columns-menu.es.js +4 -4
  248. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +4 -4
  249. package/dist/domains/traces/components/trace-data-panel-view.es.js +4 -4
  250. package/dist/domains/traces/components/trace-data-panel.cjs.js +2 -3
  251. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  252. package/dist/domains/traces/components/trace-data-panel.es.js +2 -3
  253. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  254. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  255. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  256. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  257. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  258. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  259. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  260. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +1 -1
  261. package/dist/domains/traces/components/trace-time-range-chip.es.js +1 -1
  262. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
  263. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
  264. package/dist/domains/traces/components/traces-list-view.cjs.js +4 -4
  265. package/dist/domains/traces/components/traces-list-view.es.js +4 -4
  266. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -2
  267. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
  268. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  269. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  270. package/dist/domains/workflows/components/workflow-information.cjs.js +1 -1
  271. package/dist/domains/workflows/components/workflow-information.es.js +1 -1
  272. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  273. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  274. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +2 -2
  275. package/dist/domains/workflows/runs/workflow-run-list.es.js +2 -2
  276. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  277. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  278. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  279. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  280. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +1 -1
  281. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +1 -1
  282. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +1 -1
  283. package/dist/domains/workflows/workflow/workflow-run-data.es.js +1 -1
  284. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +2 -2
  285. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +2 -2
  286. package/dist/domains/workflows/workflow/workflow-trigger.cjs.js +1 -1
  287. package/dist/domains/workflows/workflow/workflow-trigger.es.js +1 -1
  288. package/dist/domains/workspace/components/workspace-active-file.cjs.js +1 -1
  289. package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
  290. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +5 -5
  291. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +5 -5
  292. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +1 -1
  293. package/dist/domains/workspace/components/workspace-create-directory.es.js +1 -1
  294. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
  295. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  296. package/dist/domains/workspace/components/workspace-parts.cjs.js +1 -1
  297. package/dist/domains/workspace/components/workspace-parts.es.js +1 -1
  298. package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
  299. package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
  300. package/dist/{dropdown-menu-D8GR_NhL.js → dropdown-menu-C6VtAiYJ.js} +43 -4
  301. package/dist/dropdown-menu-C6VtAiYJ.js.map +1 -0
  302. package/dist/{dropdown-menu-Bg96BCnK.cjs → dropdown-menu-dHvHFLji.cjs} +42 -3
  303. package/dist/dropdown-menu-dHvHFLji.cjs.map +1 -0
  304. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +1 -1
  305. package/dist/ee/signals/components/entity-index-compact-grid.es.js +1 -1
  306. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
  307. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  308. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +3 -3
  309. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +3 -3
  310. package/dist/ee/signals/sankey-signals.cjs.js +1 -1
  311. package/dist/ee/signals/sankey-signals.es.js +1 -1
  312. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -2
  313. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
  314. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
  315. package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
  316. package/dist/{input-group-DQuyC9Pz.cjs → input-group-Bj2RbkNg.cjs} +20 -3
  317. package/dist/input-group-Bj2RbkNg.cjs.map +1 -0
  318. package/dist/{input-group-CIIwoggO.js → input-group-CrumkDCF.js} +20 -3
  319. package/dist/input-group-CrumkDCF.js.map +1 -0
  320. package/dist/layout/tabbed-container.cjs.js +4 -4
  321. package/dist/layout/tabbed-container.es.js +4 -4
  322. package/dist/{list-search-Cwp-OPvC.js → list-search-C7ro2_qL.js} +2 -2
  323. package/dist/{list-search-Cwp-OPvC.js.map → list-search-C7ro2_qL.js.map} +1 -1
  324. package/dist/{list-search-C5j3HYkb.cjs → list-search-Y3z6P6IO.cjs} +2 -2
  325. package/dist/{list-search-C5j3HYkb.cjs.map → list-search-Y3z6P6IO.cjs.map} +1 -1
  326. package/dist/{logs-data-list-B-gmgU74.js → logs-data-list-0_z4s0Sj.js} +2 -2
  327. package/dist/{logs-data-list-B-gmgU74.js.map → logs-data-list-0_z4s0Sj.js.map} +1 -1
  328. package/dist/{logs-data-list-CaXnNnC5.cjs → logs-data-list-D4sVbF23.cjs} +2 -2
  329. package/dist/{logs-data-list-CaXnNnC5.cjs.map → logs-data-list-D4sVbF23.cjs.map} +1 -1
  330. package/dist/{markdown-renderer-BXTNiZbz.cjs → markdown-renderer-BRu3RpQD.cjs} +3 -3
  331. package/dist/{markdown-renderer-BXTNiZbz.cjs.map → markdown-renderer-BRu3RpQD.cjs.map} +1 -1
  332. package/dist/{markdown-renderer-Ct-q_KTF.js → markdown-renderer-WesDzhMr.js} +3 -3
  333. package/dist/{markdown-renderer-Ct-q_KTF.js.map → markdown-renderer-WesDzhMr.js.map} +1 -1
  334. package/dist/{metrics-card-C33VsuXf.js → metrics-card-BI5okAsj.js} +2 -2
  335. package/dist/{metrics-card-C33VsuXf.js.map → metrics-card-BI5okAsj.js.map} +1 -1
  336. package/dist/{metrics-card-CxOVpP1t.cjs → metrics-card-CcesVPLN.cjs} +2 -2
  337. package/dist/{metrics-card-CxOVpP1t.cjs.map → metrics-card-CcesVPLN.cjs.map} +1 -1
  338. package/dist/{plan-TXWANP1R.js → plan-CBiLa54G.js} +2 -2
  339. package/dist/{plan-TXWANP1R.js.map → plan-CBiLa54G.js.map} +1 -1
  340. package/dist/{plan-CL-lbDuy.cjs → plan-ColU7p3H.cjs} +2 -2
  341. package/dist/{plan-CL-lbDuy.cjs.map → plan-ColU7p3H.cjs.map} +1 -1
  342. package/dist/primitives/menu-item.cjs.js +2 -0
  343. package/dist/primitives/menu-item.cjs.js.map +1 -1
  344. package/dist/primitives/menu-item.es.js +2 -1
  345. package/dist/primitives/menu-item.es.js.map +1 -1
  346. package/dist/{property-filter-applied-Ru3OQoGo.js → property-filter-applied-BCeGn2zQ.js} +2 -2
  347. package/dist/{property-filter-applied-Ru3OQoGo.js.map → property-filter-applied-BCeGn2zQ.js.map} +1 -1
  348. package/dist/{property-filter-applied-BBvaTC4B.cjs → property-filter-applied-CpelyBH9.cjs} +2 -2
  349. package/dist/{property-filter-applied-BBvaTC4B.cjs.map → property-filter-applied-CpelyBH9.cjs.map} +1 -1
  350. package/dist/{reasoning-activity-CFEaSv4J.cjs → reasoning-activity-B8bR8ib_.cjs} +2 -2
  351. package/dist/{reasoning-activity-CFEaSv4J.cjs.map → reasoning-activity-B8bR8ib_.cjs.map} +1 -1
  352. package/dist/{reasoning-activity-CHlEe011.js → reasoning-activity-DLrXgE9k.js} +2 -2
  353. package/dist/{reasoning-activity-CHlEe011.js.map → reasoning-activity-DLrXgE9k.js.map} +1 -1
  354. package/dist/{scroll-area-CVgjRzTS.cjs → scroll-area-BakRKj2k.cjs} +3 -3
  355. package/dist/scroll-area-BakRKj2k.cjs.map +1 -0
  356. package/dist/{scroll-area-BywIlj3F.js → scroll-area-D6gKFavi.js} +3 -3
  357. package/dist/scroll-area-D6gKFavi.js.map +1 -0
  358. package/dist/{search-input-RybUdqzg.js → search-input-BEAKPGH8.js} +2 -2
  359. package/dist/{search-input-RybUdqzg.js.map → search-input-BEAKPGH8.js.map} +1 -1
  360. package/dist/{search-input-2DhcUIvn.cjs → search-input-DdRhkYqy.cjs} +2 -2
  361. package/dist/{search-input-2DhcUIvn.cjs.map → search-input-DdRhkYqy.cjs.map} +1 -1
  362. package/dist/{span-payload-primitives-DIxmotnO.cjs → span-payload-primitives-BymKsUAo.cjs} +2 -2
  363. package/dist/{span-payload-primitives-DIxmotnO.cjs.map → span-payload-primitives-BymKsUAo.cjs.map} +1 -1
  364. package/dist/{span-payload-primitives-dTs5UrjA.js → span-payload-primitives-DBNNkmHo.js} +2 -2
  365. package/dist/{span-payload-primitives-dTs5UrjA.js.map → span-payload-primitives-DBNNkmHo.js.map} +1 -1
  366. package/dist/src/domains/metrics/components/date-range-selector.d.ts +1 -0
  367. package/dist/src/domains/metrics/components/index.d.ts +1 -0
  368. package/dist/src/domains/metrics/components/metrics-time-range-chip.d.ts +5 -0
  369. package/dist/src/domains/metrics/hooks/index.d.ts +1 -1
  370. package/dist/src/domains/metrics/metrics-date-presets.d.ts +6 -0
  371. package/dist/src/domains/metrics/metrics-filters.d.ts +23 -1
  372. package/dist/src/ds/components/Combobox/combobox.d.ts +2 -0
  373. package/dist/src/ds/components/DropdownMenu/dropdown-menu.d.ts +19 -6
  374. package/dist/src/ds/components/InputGroup/input-group.d.ts +6 -2
  375. package/dist/src/ds/components/PageLayout/page-layout.d.ts +8 -1
  376. package/dist/src/ds/components/ScrollArea/scroll-area.d.ts +2 -1
  377. package/dist/src/ds/primitives/menu-item.d.ts +1 -0
  378. package/dist/style.css +16 -4
  379. package/dist/{tabs-list-DY_hziv7.js → tabs-list-CDep3C2w.js} +2 -2
  380. package/dist/{tabs-list-DY_hziv7.js.map → tabs-list-CDep3C2w.js.map} +1 -1
  381. package/dist/{tabs-list-xikY_dug.cjs → tabs-list-DwQsMVKI.cjs} +2 -2
  382. package/dist/{tabs-list-xikY_dug.cjs.map → tabs-list-DwQsMVKI.cjs.map} +1 -1
  383. package/dist/{tool-approval-TB8r2U_c.js → tool-approval-BK2j7aj_.js} +2 -2
  384. package/dist/{tool-approval-TB8r2U_c.js.map → tool-approval-BK2j7aj_.js.map} +1 -1
  385. package/dist/{tool-approval-S6ml_xyU.cjs → tool-approval-Bza_sgxa.cjs} +2 -2
  386. package/dist/{tool-approval-S6ml_xyU.cjs.map → tool-approval-Bza_sgxa.cjs.map} +1 -1
  387. package/dist/{tool-call-arguments-CCkJ1btR.js → tool-call-arguments-BLCAiFYg.js} +2 -2
  388. package/dist/{tool-call-arguments-CCkJ1btR.js.map → tool-call-arguments-BLCAiFYg.js.map} +1 -1
  389. package/dist/{tool-call-arguments-DyukJmhY.cjs → tool-call-arguments-CK3kQ_FX.cjs} +2 -2
  390. package/dist/{tool-call-arguments-DyukJmhY.cjs.map → tool-call-arguments-CK3kQ_FX.cjs.map} +1 -1
  391. package/dist/{tool-call-group-CZBqGjMh.js → tool-call-group-C_zxf6OA.js} +2 -2
  392. package/dist/{tool-call-group-CZBqGjMh.js.map → tool-call-group-C_zxf6OA.js.map} +1 -1
  393. package/dist/{tool-call-group-CFpdexuw.cjs → tool-call-group-Cdgv7red.cjs} +2 -2
  394. package/dist/{tool-call-group-CFpdexuw.cjs.map → tool-call-group-Cdgv7red.cjs.map} +1 -1
  395. package/dist/{traces-data-list-1X6UBM6Y.js → traces-data-list-C05UwTiE.js} +2 -2
  396. package/dist/{traces-data-list-1X6UBM6Y.js.map → traces-data-list-C05UwTiE.js.map} +1 -1
  397. package/dist/{traces-data-list-BXSXW3E6.cjs → traces-data-list-DPA5T14k.cjs} +2 -2
  398. package/dist/{traces-data-list-BXSXW3E6.cjs.map → traces-data-list-DPA5T14k.cjs.map} +1 -1
  399. package/dist/{workflow-data-edge-view-De0xCrVu.js → workflow-data-edge-view-BWyUa9am.js} +2 -2
  400. package/dist/{workflow-data-edge-view-De0xCrVu.js.map → workflow-data-edge-view-BWyUa9am.js.map} +1 -1
  401. package/dist/{workflow-data-edge-view-kmB6j-ui.cjs → workflow-data-edge-view-BpnN4W_5.cjs} +2 -2
  402. package/dist/{workflow-data-edge-view-kmB6j-ui.cjs.map → workflow-data-edge-view-BpnN4W_5.cjs.map} +1 -1
  403. package/dist/{workflow-edge-data-button-av1zCMfP.cjs → workflow-edge-data-button-Du5ZDm72.cjs} +2 -2
  404. package/dist/{workflow-edge-data-button-av1zCMfP.cjs.map → workflow-edge-data-button-Du5ZDm72.cjs.map} +1 -1
  405. package/dist/{workflow-edge-data-button-CXbj67U9.js → workflow-edge-data-button-DvGFB2L6.js} +2 -2
  406. package/dist/{workflow-edge-data-button-CXbj67U9.js.map → workflow-edge-data-button-DvGFB2L6.js.map} +1 -1
  407. package/dist/{workflow-step-action-BsBZk7j6.cjs → workflow-step-action-DNrU8on1.cjs} +2 -2
  408. package/dist/{workflow-step-action-BsBZk7j6.cjs.map → workflow-step-action-DNrU8on1.cjs.map} +1 -1
  409. package/dist/{workflow-step-action-AG05Ly8P.js → workflow-step-action-ac1gNDdn.js} +2 -2
  410. package/dist/{workflow-step-action-AG05Ly8P.js.map → workflow-step-action-ac1gNDdn.js.map} +1 -1
  411. package/package.json +8 -8
  412. package/dist/combobox-fEMKH9nJ.cjs.map +0 -1
  413. package/dist/combobox-so2V71F7.js.map +0 -1
  414. package/dist/dropdown-menu-Bg96BCnK.cjs.map +0 -1
  415. package/dist/dropdown-menu-D8GR_NhL.js.map +0 -1
  416. package/dist/input-group-CIIwoggO.js.map +0 -1
  417. package/dist/input-group-DQuyC9Pz.cjs.map +0 -1
  418. package/dist/scroll-area-BywIlj3F.js.map +0 -1
  419. package/dist/scroll-area-CVgjRzTS.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-B5nLi0ER.cjs","sources":["../src/ds/components/Dialog/dialog-context.ts","../src/ds/components/Dialog/dialog-shell.ts","../src/ds/components/Dialog/dialog.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type DialogIntent = 'default' | 'destructive';\n\nexport type DialogContextValue = {\n intent: DialogIntent;\n pending: boolean;\n};\n\nexport const DialogContext = createContext<DialogContextValue>({\n intent: 'default',\n pending: false,\n});\n\nexport function useDialogContext() {\n return useContext(DialogContext);\n}\n\nexport const dialogActionSizeClasses = {\n sm: 'min-h-control-sm',\n md: 'min-h-control-md',\n lg: 'min-h-control-lg',\n} as const;\n\nexport const dialogActionLayoutClasses = 'h-auto min-w-0 max-w-full whitespace-normal wrap-anywhere max-[22rem]:w-full';\n","import { dialogSurfaceStyle } from '@/ds/primitives/raised-surface';\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nexport const DIALOG_DRAWER_BREAKPOINT_PX = 640;\n\nconst formFillsShellClassName = '[&>form]:flex [&>form]:min-h-0 [&>form]:flex-1 [&>form]:flex-col [&>form]:gap-0';\n\nexport const dialogPopupClassName = [\n 'dialog-popup-motion fixed top-1/2 left-1/2 z-50 flex w-[calc(100%-2rem)] -translate-1/2 flex-col rounded-xl py-3 outline-hidden',\n formFillsShellClassName,\n dialogSurfaceStyle,\n].join(' ');\n\nexport const dialogContentSizeClasses: Record<DialogSize, string> = {\n sm: 'max-h-[calc(100dvh-4rem)] max-w-sm',\n md: 'max-h-[calc(100dvh-4rem)] max-w-lg',\n lg: 'max-h-[calc(100dvh-4rem)] max-w-2xl',\n xl: 'max-h-[calc(100dvh-4rem)] max-w-4xl',\n full: 'h-[calc(100dvh-2rem)]',\n};\n","import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { DialogAction } from './dialog-action';\nimport { DialogContext, dialogActionLayoutClasses, dialogActionSizeClasses, useDialogContext } from './dialog-context';\nimport type { DialogIntent } from './dialog-context';\nimport { DIALOG_DRAWER_BREAKPOINT_PX, dialogContentSizeClasses, dialogPopupClassName } from './dialog-shell';\nimport type { DialogSize } from './dialog-shell';\nimport { Button } from '@/ds/components/Button';\nimport type { TextButtonSize } from '@/ds/components/Button';\nimport { Drawer, DrawerContent } from '@/ds/components/Drawer';\nimport type { DrawerProps } from '@/ds/components/Drawer';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport { useIsMobile } from '@/hooks/use-is-mobile';\nimport { cn } from '@/lib/utils';\n\nimport './dialog.css';\n\ntype DialogOpenChangeDetails = Parameters<NonNullable<DialogPrimitive.Root.Props['onOpenChange']>>[1];\ntype DrawerOpenChangeDetails = Parameters<NonNullable<DrawerProps['onOpenChange']>>[1];\n\nexport type DialogProps = Omit<DialogPrimitive.Root.Props, 'handle' | 'onOpenChange'> & {\n intent?: DialogIntent;\n pending?: boolean;\n /** `details` comes from the bottom drawer on phones, where a swipe can also close it. */\n onOpenChange?: (open: boolean, details: DialogOpenChangeDetails | DrawerOpenChangeDetails) => void;\n};\n\nconst useIsDrawer = () => useIsMobile(DIALOG_DRAWER_BREAKPOINT_PX);\n\n// Below 640px every dialog is a bottom drawer. Open state lives here so crossing the breakpoint keeps it open.\nfunction Dialog({\n intent = 'default',\n pending = false,\n open,\n defaultOpen = false,\n onOpenChange,\n disablePointerDismissal,\n ...props\n}: DialogProps) {\n const isDrawer = useIsDrawer();\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const rootProps = {\n ...props,\n open: open ?? uncontrolledOpen,\n disablePointerDismissal: disablePointerDismissal ?? intent === 'destructive',\n };\n\n function handleOpenChange(nextOpen: boolean, details: DialogOpenChangeDetails | DrawerOpenChangeDetails) {\n if (!nextOpen && pending) {\n details.cancel();\n return;\n }\n setUncontrolledOpen(nextOpen);\n onOpenChange?.(nextOpen, details);\n }\n\n return (\n <DialogContext.Provider value={{ intent, pending }}>\n {isDrawer ? (\n <Drawer {...rootProps} onOpenChange={handleOpenChange} />\n ) : (\n <DialogPrimitive.Root {...rootProps} onOpenChange={handleOpenChange} />\n )}\n </DialogContext.Provider>\n );\n}\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\ntype DialogOverlayProps = Omit<DialogPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n};\n\nfunction DialogOverlay({ className, ...props }: DialogOverlayProps) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn('dialog-backdrop-motion fixed inset-0 z-50 bg-scrim backdrop-blur-xs', className)}\n {...props}\n />\n );\n}\n\nexport type { DialogSize };\n\n// No `render` or function `style`: the popup is a Dialog or a Drawer, and their state callbacks differ.\ntype DialogContentProps = Omit<DialogPrimitive.Popup.Props, 'className' | 'render' | 'style'> & {\n className?: string;\n style?: React.CSSProperties;\n size?: DialogSize;\n showOverlay?: boolean;\n showCloseButton?: boolean;\n overlayClassName?: string;\n};\n\nfunction DialogContent({\n className,\n children,\n size = 'md',\n showOverlay = true,\n showCloseButton = true,\n overlayClassName,\n initialFocus,\n ...props\n}: DialogContentProps) {\n const { intent, pending } = useDialogContext();\n const isDrawer = useIsDrawer();\n const closeRef = React.useRef<HTMLButtonElement>(null);\n const isDestructive = intent === 'destructive';\n const popupProps = {\n 'data-slot': 'dialog-content',\n 'data-size': size,\n 'data-intent': intent,\n role: isDestructive ? 'alertdialog' : 'dialog',\n initialFocus: initialFocus ?? (isDestructive && showCloseButton ? closeRef : true),\n 'aria-busy': pending || undefined,\n ...props,\n };\n const closeButton = showCloseButton && (\n <DialogPrimitive.Close\n ref={closeRef}\n disabled={pending}\n data-slot=\"dialog-close\"\n className={cn('absolute right-4', isDrawer ? 'top-1.5' : 'top-4')}\n render={\n <Button variant=\"ghost\" size=\"icon-sm\" aria-label=\"Close\">\n <X />\n </Button>\n }\n />\n );\n\n if (isDrawer) {\n return (\n <DrawerContent\n {...popupProps}\n showCloseButton={false}\n className={cn(\n 'pb-3',\n size === 'full' && 'h-[calc(85vh+3rem)]',\n showCloseButton && '[&_[data-slot=dialog-header]]:pr-12',\n className,\n )}\n >\n {children}\n {closeButton}\n {/* Fills the drawer's 3rem swipe bleed below the screen edge; an element so call-site padding can't shrink it. */}\n <div aria-hidden className=\"h-12 shrink-0\" />\n </DrawerContent>\n );\n }\n\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n {...popupProps}\n className={cn(\n dialogPopupClassName,\n dialogContentSizeClasses[size],\n showCloseButton && '[&_[data-slot=dialog-header]]:pr-12',\n className,\n )}\n >\n {children}\n {closeButton}\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex min-w-0 shrink-0 flex-col gap-1 px-5 py-2', className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('flex shrink-0 flex-wrap items-center justify-end gap-2 px-5 py-2', className)}\n {...props}\n />\n );\n}\n\nexport type DialogBodyProps = React.ComponentProps<'div'> & {\n /** `scroll` fades and scrolls long content; `fill` takes the remaining height and leaves scrolling to its children. */\n layout?: 'scroll' | 'fill';\n /** Drops the inset so content such as split panes or code reaches the dialog's edges. */\n flush?: boolean;\n};\n\nfunction DialogBody({ className, layout = 'scroll', flush = false, children, ...props }: DialogBodyProps) {\n const bodyClassName = cn(\n 'flex min-w-0 flex-col gap-4 text-body wrap-break-word text-muted-foreground',\n !flush && 'px-5 py-2',\n className,\n );\n if (layout === 'fill') {\n return (\n <div data-slot=\"dialog-body\" className={cn('min-h-0 flex-1', bodyClassName)} {...props}>\n {children}\n </div>\n );\n }\n return (\n <ScrollArea className=\"flex min-h-0 min-w-0 flex-1 flex-col\" mask>\n <ScrollAreaViewport className=\"h-auto min-h-0\">\n <div data-slot=\"dialog-body\" className={bodyClassName} {...props}>\n {children}\n </div>\n </ScrollAreaViewport>\n </ScrollArea>\n );\n}\n\ntype DialogTitleProps = Omit<DialogPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nfunction DialogTitle({ className, ...props }: DialogTitleProps) {\n return <DialogPrimitive.Title className={cn('text-heading wrap-break-word text-foreground', className)} {...props} />;\n}\n\ntype DialogDescriptionProps = Omit<DialogPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nfunction DialogDescription({ className, ...props }: DialogDescriptionProps) {\n return (\n <DialogPrimitive.Description\n className={cn('text-body wrap-break-word text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\ntype DialogCancelProps = DialogPrimitive.Close.Props & { size?: TextButtonSize };\n\nfunction DialogCancel({ disabled, size = 'md', ...props }: DialogCancelProps) {\n const { pending } = useDialogContext();\n return (\n <DialogPrimitive.Close\n render={\n <Button\n size={size}\n variant=\"ghost\"\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses[size])}\n children={props.children}\n />\n }\n {...props}\n disabled={disabled || pending}\n />\n );\n}\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogBody,\n DialogTitle,\n DialogDescription,\n DialogCancel,\n DialogAction,\n};\n"],"names":["createContext","useContext","dialogSurfaceStyle","useIsMobile","React","jsx","Drawer","DialogPrimitive","cn","Button","X","jsxs","DrawerContent","ScrollArea","ScrollAreaViewport"],"mappings":"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"}
1
+ {"version":3,"file":"dialog-BAlSUqcF.cjs","sources":["../src/ds/components/Dialog/dialog-context.ts","../src/ds/components/Dialog/dialog-shell.ts","../src/ds/components/Dialog/dialog.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type DialogIntent = 'default' | 'destructive';\n\nexport type DialogContextValue = {\n intent: DialogIntent;\n pending: boolean;\n};\n\nexport const DialogContext = createContext<DialogContextValue>({\n intent: 'default',\n pending: false,\n});\n\nexport function useDialogContext() {\n return useContext(DialogContext);\n}\n\nexport const dialogActionSizeClasses = {\n sm: 'min-h-control-sm',\n md: 'min-h-control-md',\n lg: 'min-h-control-lg',\n} as const;\n\nexport const dialogActionLayoutClasses = 'h-auto min-w-0 max-w-full whitespace-normal wrap-anywhere max-[22rem]:w-full';\n","import { dialogSurfaceStyle } from '@/ds/primitives/raised-surface';\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nexport const DIALOG_DRAWER_BREAKPOINT_PX = 640;\n\nconst formFillsShellClassName = '[&>form]:flex [&>form]:min-h-0 [&>form]:flex-1 [&>form]:flex-col [&>form]:gap-0';\n\nexport const dialogPopupClassName = [\n 'dialog-popup-motion fixed top-1/2 left-1/2 z-50 flex w-[calc(100%-2rem)] -translate-1/2 flex-col rounded-xl py-3 outline-hidden',\n formFillsShellClassName,\n dialogSurfaceStyle,\n].join(' ');\n\nexport const dialogContentSizeClasses: Record<DialogSize, string> = {\n sm: 'max-h-[calc(100dvh-4rem)] max-w-sm',\n md: 'max-h-[calc(100dvh-4rem)] max-w-lg',\n lg: 'max-h-[calc(100dvh-4rem)] max-w-2xl',\n xl: 'max-h-[calc(100dvh-4rem)] max-w-4xl',\n full: 'h-[calc(100dvh-2rem)]',\n};\n","import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { DialogAction } from './dialog-action';\nimport { DialogContext, dialogActionLayoutClasses, dialogActionSizeClasses, useDialogContext } from './dialog-context';\nimport type { DialogIntent } from './dialog-context';\nimport { DIALOG_DRAWER_BREAKPOINT_PX, dialogContentSizeClasses, dialogPopupClassName } from './dialog-shell';\nimport type { DialogSize } from './dialog-shell';\nimport { Button } from '@/ds/components/Button';\nimport type { TextButtonSize } from '@/ds/components/Button';\nimport { Drawer, DrawerContent } from '@/ds/components/Drawer';\nimport type { DrawerProps } from '@/ds/components/Drawer';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport { useIsMobile } from '@/hooks/use-is-mobile';\nimport { cn } from '@/lib/utils';\n\nimport './dialog.css';\n\ntype DialogOpenChangeDetails = Parameters<NonNullable<DialogPrimitive.Root.Props['onOpenChange']>>[1];\ntype DrawerOpenChangeDetails = Parameters<NonNullable<DrawerProps['onOpenChange']>>[1];\n\nexport type DialogProps = Omit<DialogPrimitive.Root.Props, 'handle' | 'onOpenChange'> & {\n intent?: DialogIntent;\n pending?: boolean;\n /** `details` comes from the bottom drawer on phones, where a swipe can also close it. */\n onOpenChange?: (open: boolean, details: DialogOpenChangeDetails | DrawerOpenChangeDetails) => void;\n};\n\nconst useIsDrawer = () => useIsMobile(DIALOG_DRAWER_BREAKPOINT_PX);\n\n// Below 640px every dialog is a bottom drawer. Open state lives here so crossing the breakpoint keeps it open.\nfunction Dialog({\n intent = 'default',\n pending = false,\n open,\n defaultOpen = false,\n onOpenChange,\n disablePointerDismissal,\n ...props\n}: DialogProps) {\n const isDrawer = useIsDrawer();\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const rootProps = {\n ...props,\n open: open ?? uncontrolledOpen,\n disablePointerDismissal: disablePointerDismissal ?? intent === 'destructive',\n };\n\n function handleOpenChange(nextOpen: boolean, details: DialogOpenChangeDetails | DrawerOpenChangeDetails) {\n if (!nextOpen && pending) {\n details.cancel();\n return;\n }\n setUncontrolledOpen(nextOpen);\n onOpenChange?.(nextOpen, details);\n }\n\n return (\n <DialogContext.Provider value={{ intent, pending }}>\n {isDrawer ? (\n <Drawer {...rootProps} onOpenChange={handleOpenChange} />\n ) : (\n <DialogPrimitive.Root {...rootProps} onOpenChange={handleOpenChange} />\n )}\n </DialogContext.Provider>\n );\n}\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\ntype DialogOverlayProps = Omit<DialogPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n};\n\nfunction DialogOverlay({ className, ...props }: DialogOverlayProps) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn('dialog-backdrop-motion fixed inset-0 z-50 bg-scrim backdrop-blur-xs', className)}\n {...props}\n />\n );\n}\n\nexport type { DialogSize };\n\n// No `render` or function `style`: the popup is a Dialog or a Drawer, and their state callbacks differ.\ntype DialogContentProps = Omit<DialogPrimitive.Popup.Props, 'className' | 'render' | 'style'> & {\n className?: string;\n style?: React.CSSProperties;\n size?: DialogSize;\n showOverlay?: boolean;\n showCloseButton?: boolean;\n overlayClassName?: string;\n};\n\nfunction DialogContent({\n className,\n children,\n size = 'md',\n showOverlay = true,\n showCloseButton = true,\n overlayClassName,\n initialFocus,\n ...props\n}: DialogContentProps) {\n const { intent, pending } = useDialogContext();\n const isDrawer = useIsDrawer();\n const closeRef = React.useRef<HTMLButtonElement>(null);\n const isDestructive = intent === 'destructive';\n const popupProps = {\n 'data-slot': 'dialog-content',\n 'data-size': size,\n 'data-intent': intent,\n role: isDestructive ? 'alertdialog' : 'dialog',\n initialFocus: initialFocus ?? (isDestructive && showCloseButton ? closeRef : true),\n 'aria-busy': pending || undefined,\n ...props,\n };\n const closeButton = showCloseButton && (\n <DialogPrimitive.Close\n ref={closeRef}\n disabled={pending}\n data-slot=\"dialog-close\"\n className={cn('absolute right-4', isDrawer ? 'top-1.5' : 'top-4')}\n render={\n <Button variant=\"ghost\" size=\"icon-sm\" aria-label=\"Close\">\n <X />\n </Button>\n }\n />\n );\n\n if (isDrawer) {\n return (\n <DrawerContent\n {...popupProps}\n showCloseButton={false}\n className={cn(\n 'pb-3',\n size === 'full' && 'h-[calc(85vh+3rem)]',\n showCloseButton && '[&_[data-slot=dialog-header]]:pr-12',\n className,\n )}\n >\n {children}\n {closeButton}\n {/* Fills the drawer's 3rem swipe bleed below the screen edge; an element so call-site padding can't shrink it. */}\n <div aria-hidden className=\"h-12 shrink-0\" />\n </DrawerContent>\n );\n }\n\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n {...popupProps}\n className={cn(\n dialogPopupClassName,\n dialogContentSizeClasses[size],\n showCloseButton && '[&_[data-slot=dialog-header]]:pr-12',\n className,\n )}\n >\n {children}\n {closeButton}\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex min-w-0 shrink-0 flex-col gap-1 px-5 py-2', className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('flex shrink-0 flex-wrap items-center justify-end gap-2 px-5 py-2', className)}\n {...props}\n />\n );\n}\n\nexport type DialogBodyProps = React.ComponentProps<'div'> & {\n /** `scroll` fades and scrolls long content; `fill` takes the remaining height and leaves scrolling to its children. */\n layout?: 'scroll' | 'fill';\n /** Drops the inset so content such as split panes or code reaches the dialog's edges. */\n flush?: boolean;\n};\n\nfunction DialogBody({ className, layout = 'scroll', flush = false, children, ...props }: DialogBodyProps) {\n const bodyClassName = cn(\n 'flex min-w-0 flex-col gap-4 text-body wrap-break-word text-muted-foreground',\n !flush && 'px-5 py-2',\n className,\n );\n if (layout === 'fill') {\n return (\n <div data-slot=\"dialog-body\" className={cn('min-h-0 flex-1', bodyClassName)} {...props}>\n {children}\n </div>\n );\n }\n return (\n <ScrollArea className=\"flex min-h-0 min-w-0 flex-1 flex-col\" mask>\n <ScrollAreaViewport className=\"h-auto min-h-0\">\n <div data-slot=\"dialog-body\" className={bodyClassName} {...props}>\n {children}\n </div>\n </ScrollAreaViewport>\n </ScrollArea>\n );\n}\n\ntype DialogTitleProps = Omit<DialogPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nfunction DialogTitle({ className, ...props }: DialogTitleProps) {\n return <DialogPrimitive.Title className={cn('text-heading wrap-break-word text-foreground', className)} {...props} />;\n}\n\ntype DialogDescriptionProps = Omit<DialogPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nfunction DialogDescription({ className, ...props }: DialogDescriptionProps) {\n return (\n <DialogPrimitive.Description\n className={cn('text-body wrap-break-word text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\ntype DialogCancelProps = DialogPrimitive.Close.Props & { size?: TextButtonSize };\n\nfunction DialogCancel({ disabled, size = 'md', ...props }: DialogCancelProps) {\n const { pending } = useDialogContext();\n return (\n <DialogPrimitive.Close\n render={\n <Button\n size={size}\n variant=\"ghost\"\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses[size])}\n children={props.children}\n />\n }\n {...props}\n disabled={disabled || pending}\n />\n );\n}\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogBody,\n DialogTitle,\n DialogDescription,\n DialogCancel,\n DialogAction,\n};\n"],"names":["createContext","useContext","dialogSurfaceStyle","useIsMobile","React","jsx","Drawer","DialogPrimitive","cn","Button","X","jsxs","DrawerContent","ScrollArea","ScrollAreaViewport"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { createContext, useContext } from 'react';
6
6
  import { dialogSurfaceStyle } from './primitives/raised-surface.es.js';
7
7
  import { B as Button } from './Button-60jVnaHt.js';
8
8
  import { D as Drawer, d as DrawerContent } from './drawer-CwVDeB8H.js';
9
- import { S as ScrollArea, a as ScrollAreaViewport } from './scroll-area-BywIlj3F.js';
9
+ import { S as ScrollArea, a as ScrollAreaViewport } from './scroll-area-D6gKFavi.js';
10
10
  import { useIsMobile } from './hooks/use-is-mobile.es.js';
11
11
  import { c as cn } from './cn-coERSHz5.js';
12
12
 
@@ -216,4 +216,4 @@ function DialogCancel({ disabled, size = "md", ...props }) {
216
216
  }
217
217
 
218
218
  export { Dialog as D, DialogBody as a, DialogCancel as b, DialogClose as c, DialogContent as d, DialogDescription as e, DialogFooter as f, DialogHeader as g, DialogOverlay as h, DialogPortal as i, DialogTitle as j, DialogTrigger as k, dialogActionSizeClasses as l, dialogActionLayoutClasses as m, useDialogContext as u };
219
- //# sourceMappingURL=dialog-Jz2ZfO-z.js.map
219
+ //# sourceMappingURL=dialog-CboDo8Pj.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-Jz2ZfO-z.js","sources":["../src/ds/components/Dialog/dialog-context.ts","../src/ds/components/Dialog/dialog-shell.ts","../src/ds/components/Dialog/dialog.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type DialogIntent = 'default' | 'destructive';\n\nexport type DialogContextValue = {\n intent: DialogIntent;\n pending: boolean;\n};\n\nexport const DialogContext = createContext<DialogContextValue>({\n intent: 'default',\n pending: false,\n});\n\nexport function useDialogContext() {\n return useContext(DialogContext);\n}\n\nexport const dialogActionSizeClasses = {\n sm: 'min-h-control-sm',\n md: 'min-h-control-md',\n lg: 'min-h-control-lg',\n} as const;\n\nexport const dialogActionLayoutClasses = 'h-auto min-w-0 max-w-full whitespace-normal wrap-anywhere max-[22rem]:w-full';\n","import { dialogSurfaceStyle } from '@/ds/primitives/raised-surface';\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nexport const DIALOG_DRAWER_BREAKPOINT_PX = 640;\n\nconst formFillsShellClassName = '[&>form]:flex [&>form]:min-h-0 [&>form]:flex-1 [&>form]:flex-col [&>form]:gap-0';\n\nexport const dialogPopupClassName = [\n 'dialog-popup-motion fixed top-1/2 left-1/2 z-50 flex w-[calc(100%-2rem)] -translate-1/2 flex-col rounded-xl py-3 outline-hidden',\n formFillsShellClassName,\n dialogSurfaceStyle,\n].join(' ');\n\nexport const dialogContentSizeClasses: Record<DialogSize, string> = {\n sm: 'max-h-[calc(100dvh-4rem)] max-w-sm',\n md: 'max-h-[calc(100dvh-4rem)] max-w-lg',\n lg: 'max-h-[calc(100dvh-4rem)] max-w-2xl',\n xl: 'max-h-[calc(100dvh-4rem)] max-w-4xl',\n full: 'h-[calc(100dvh-2rem)]',\n};\n","import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { DialogAction } from './dialog-action';\nimport { DialogContext, dialogActionLayoutClasses, dialogActionSizeClasses, useDialogContext } from './dialog-context';\nimport type { DialogIntent } from './dialog-context';\nimport { DIALOG_DRAWER_BREAKPOINT_PX, dialogContentSizeClasses, dialogPopupClassName } from './dialog-shell';\nimport type { DialogSize } from './dialog-shell';\nimport { Button } from '@/ds/components/Button';\nimport type { TextButtonSize } from '@/ds/components/Button';\nimport { Drawer, DrawerContent } from '@/ds/components/Drawer';\nimport type { DrawerProps } from '@/ds/components/Drawer';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport { useIsMobile } from '@/hooks/use-is-mobile';\nimport { cn } from '@/lib/utils';\n\nimport './dialog.css';\n\ntype DialogOpenChangeDetails = Parameters<NonNullable<DialogPrimitive.Root.Props['onOpenChange']>>[1];\ntype DrawerOpenChangeDetails = Parameters<NonNullable<DrawerProps['onOpenChange']>>[1];\n\nexport type DialogProps = Omit<DialogPrimitive.Root.Props, 'handle' | 'onOpenChange'> & {\n intent?: DialogIntent;\n pending?: boolean;\n /** `details` comes from the bottom drawer on phones, where a swipe can also close it. */\n onOpenChange?: (open: boolean, details: DialogOpenChangeDetails | DrawerOpenChangeDetails) => void;\n};\n\nconst useIsDrawer = () => useIsMobile(DIALOG_DRAWER_BREAKPOINT_PX);\n\n// Below 640px every dialog is a bottom drawer. Open state lives here so crossing the breakpoint keeps it open.\nfunction Dialog({\n intent = 'default',\n pending = false,\n open,\n defaultOpen = false,\n onOpenChange,\n disablePointerDismissal,\n ...props\n}: DialogProps) {\n const isDrawer = useIsDrawer();\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const rootProps = {\n ...props,\n open: open ?? uncontrolledOpen,\n disablePointerDismissal: disablePointerDismissal ?? intent === 'destructive',\n };\n\n function handleOpenChange(nextOpen: boolean, details: DialogOpenChangeDetails | DrawerOpenChangeDetails) {\n if (!nextOpen && pending) {\n details.cancel();\n return;\n }\n setUncontrolledOpen(nextOpen);\n onOpenChange?.(nextOpen, details);\n }\n\n return (\n <DialogContext.Provider value={{ intent, pending }}>\n {isDrawer ? (\n <Drawer {...rootProps} onOpenChange={handleOpenChange} />\n ) : (\n <DialogPrimitive.Root {...rootProps} onOpenChange={handleOpenChange} />\n )}\n </DialogContext.Provider>\n );\n}\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\ntype DialogOverlayProps = Omit<DialogPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n};\n\nfunction DialogOverlay({ className, ...props }: DialogOverlayProps) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn('dialog-backdrop-motion fixed inset-0 z-50 bg-scrim backdrop-blur-xs', className)}\n {...props}\n />\n );\n}\n\nexport type { DialogSize };\n\n// No `render` or function `style`: the popup is a Dialog or a Drawer, and their state callbacks differ.\ntype DialogContentProps = Omit<DialogPrimitive.Popup.Props, 'className' | 'render' | 'style'> & {\n className?: string;\n style?: React.CSSProperties;\n size?: DialogSize;\n showOverlay?: boolean;\n showCloseButton?: boolean;\n overlayClassName?: string;\n};\n\nfunction DialogContent({\n className,\n children,\n size = 'md',\n showOverlay = true,\n showCloseButton = true,\n overlayClassName,\n initialFocus,\n ...props\n}: DialogContentProps) {\n const { intent, pending } = useDialogContext();\n const isDrawer = useIsDrawer();\n const closeRef = React.useRef<HTMLButtonElement>(null);\n const isDestructive = intent === 'destructive';\n const popupProps = {\n 'data-slot': 'dialog-content',\n 'data-size': size,\n 'data-intent': intent,\n role: isDestructive ? 'alertdialog' : 'dialog',\n initialFocus: initialFocus ?? (isDestructive && showCloseButton ? closeRef : true),\n 'aria-busy': pending || undefined,\n ...props,\n };\n const closeButton = showCloseButton && (\n <DialogPrimitive.Close\n ref={closeRef}\n disabled={pending}\n data-slot=\"dialog-close\"\n className={cn('absolute right-4', isDrawer ? 'top-1.5' : 'top-4')}\n render={\n <Button variant=\"ghost\" size=\"icon-sm\" aria-label=\"Close\">\n <X />\n </Button>\n }\n />\n );\n\n if (isDrawer) {\n return (\n <DrawerContent\n {...popupProps}\n showCloseButton={false}\n className={cn(\n 'pb-3',\n size === 'full' && 'h-[calc(85vh+3rem)]',\n showCloseButton && '[&_[data-slot=dialog-header]]:pr-12',\n className,\n )}\n >\n {children}\n {closeButton}\n {/* Fills the drawer's 3rem swipe bleed below the screen edge; an element so call-site padding can't shrink it. */}\n <div aria-hidden className=\"h-12 shrink-0\" />\n </DrawerContent>\n );\n }\n\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n {...popupProps}\n className={cn(\n dialogPopupClassName,\n dialogContentSizeClasses[size],\n showCloseButton && '[&_[data-slot=dialog-header]]:pr-12',\n className,\n )}\n >\n {children}\n {closeButton}\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex min-w-0 shrink-0 flex-col gap-1 px-5 py-2', className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('flex shrink-0 flex-wrap items-center justify-end gap-2 px-5 py-2', className)}\n {...props}\n />\n );\n}\n\nexport type DialogBodyProps = React.ComponentProps<'div'> & {\n /** `scroll` fades and scrolls long content; `fill` takes the remaining height and leaves scrolling to its children. */\n layout?: 'scroll' | 'fill';\n /** Drops the inset so content such as split panes or code reaches the dialog's edges. */\n flush?: boolean;\n};\n\nfunction DialogBody({ className, layout = 'scroll', flush = false, children, ...props }: DialogBodyProps) {\n const bodyClassName = cn(\n 'flex min-w-0 flex-col gap-4 text-body wrap-break-word text-muted-foreground',\n !flush && 'px-5 py-2',\n className,\n );\n if (layout === 'fill') {\n return (\n <div data-slot=\"dialog-body\" className={cn('min-h-0 flex-1', bodyClassName)} {...props}>\n {children}\n </div>\n );\n }\n return (\n <ScrollArea className=\"flex min-h-0 min-w-0 flex-1 flex-col\" mask>\n <ScrollAreaViewport className=\"h-auto min-h-0\">\n <div data-slot=\"dialog-body\" className={bodyClassName} {...props}>\n {children}\n </div>\n </ScrollAreaViewport>\n </ScrollArea>\n );\n}\n\ntype DialogTitleProps = Omit<DialogPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nfunction DialogTitle({ className, ...props }: DialogTitleProps) {\n return <DialogPrimitive.Title className={cn('text-heading wrap-break-word text-foreground', className)} {...props} />;\n}\n\ntype DialogDescriptionProps = Omit<DialogPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nfunction DialogDescription({ className, ...props }: DialogDescriptionProps) {\n return (\n <DialogPrimitive.Description\n className={cn('text-body wrap-break-word text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\ntype DialogCancelProps = DialogPrimitive.Close.Props & { size?: TextButtonSize };\n\nfunction DialogCancel({ disabled, size = 'md', ...props }: DialogCancelProps) {\n const { pending } = useDialogContext();\n return (\n <DialogPrimitive.Close\n render={\n <Button\n size={size}\n variant=\"ghost\"\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses[size])}\n children={props.children}\n />\n }\n {...props}\n disabled={disabled || pending}\n />\n );\n}\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogBody,\n DialogTitle,\n DialogDescription,\n DialogCancel,\n DialogAction,\n};\n"],"names":["DialogPrimitive"],"mappings":"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"}
1
+ {"version":3,"file":"dialog-CboDo8Pj.js","sources":["../src/ds/components/Dialog/dialog-context.ts","../src/ds/components/Dialog/dialog-shell.ts","../src/ds/components/Dialog/dialog.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type DialogIntent = 'default' | 'destructive';\n\nexport type DialogContextValue = {\n intent: DialogIntent;\n pending: boolean;\n};\n\nexport const DialogContext = createContext<DialogContextValue>({\n intent: 'default',\n pending: false,\n});\n\nexport function useDialogContext() {\n return useContext(DialogContext);\n}\n\nexport const dialogActionSizeClasses = {\n sm: 'min-h-control-sm',\n md: 'min-h-control-md',\n lg: 'min-h-control-lg',\n} as const;\n\nexport const dialogActionLayoutClasses = 'h-auto min-w-0 max-w-full whitespace-normal wrap-anywhere max-[22rem]:w-full';\n","import { dialogSurfaceStyle } from '@/ds/primitives/raised-surface';\n\nexport type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nexport const DIALOG_DRAWER_BREAKPOINT_PX = 640;\n\nconst formFillsShellClassName = '[&>form]:flex [&>form]:min-h-0 [&>form]:flex-1 [&>form]:flex-col [&>form]:gap-0';\n\nexport const dialogPopupClassName = [\n 'dialog-popup-motion fixed top-1/2 left-1/2 z-50 flex w-[calc(100%-2rem)] -translate-1/2 flex-col rounded-xl py-3 outline-hidden',\n formFillsShellClassName,\n dialogSurfaceStyle,\n].join(' ');\n\nexport const dialogContentSizeClasses: Record<DialogSize, string> = {\n sm: 'max-h-[calc(100dvh-4rem)] max-w-sm',\n md: 'max-h-[calc(100dvh-4rem)] max-w-lg',\n lg: 'max-h-[calc(100dvh-4rem)] max-w-2xl',\n xl: 'max-h-[calc(100dvh-4rem)] max-w-4xl',\n full: 'h-[calc(100dvh-2rem)]',\n};\n","import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { DialogAction } from './dialog-action';\nimport { DialogContext, dialogActionLayoutClasses, dialogActionSizeClasses, useDialogContext } from './dialog-context';\nimport type { DialogIntent } from './dialog-context';\nimport { DIALOG_DRAWER_BREAKPOINT_PX, dialogContentSizeClasses, dialogPopupClassName } from './dialog-shell';\nimport type { DialogSize } from './dialog-shell';\nimport { Button } from '@/ds/components/Button';\nimport type { TextButtonSize } from '@/ds/components/Button';\nimport { Drawer, DrawerContent } from '@/ds/components/Drawer';\nimport type { DrawerProps } from '@/ds/components/Drawer';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport { useIsMobile } from '@/hooks/use-is-mobile';\nimport { cn } from '@/lib/utils';\n\nimport './dialog.css';\n\ntype DialogOpenChangeDetails = Parameters<NonNullable<DialogPrimitive.Root.Props['onOpenChange']>>[1];\ntype DrawerOpenChangeDetails = Parameters<NonNullable<DrawerProps['onOpenChange']>>[1];\n\nexport type DialogProps = Omit<DialogPrimitive.Root.Props, 'handle' | 'onOpenChange'> & {\n intent?: DialogIntent;\n pending?: boolean;\n /** `details` comes from the bottom drawer on phones, where a swipe can also close it. */\n onOpenChange?: (open: boolean, details: DialogOpenChangeDetails | DrawerOpenChangeDetails) => void;\n};\n\nconst useIsDrawer = () => useIsMobile(DIALOG_DRAWER_BREAKPOINT_PX);\n\n// Below 640px every dialog is a bottom drawer. Open state lives here so crossing the breakpoint keeps it open.\nfunction Dialog({\n intent = 'default',\n pending = false,\n open,\n defaultOpen = false,\n onOpenChange,\n disablePointerDismissal,\n ...props\n}: DialogProps) {\n const isDrawer = useIsDrawer();\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const rootProps = {\n ...props,\n open: open ?? uncontrolledOpen,\n disablePointerDismissal: disablePointerDismissal ?? intent === 'destructive',\n };\n\n function handleOpenChange(nextOpen: boolean, details: DialogOpenChangeDetails | DrawerOpenChangeDetails) {\n if (!nextOpen && pending) {\n details.cancel();\n return;\n }\n setUncontrolledOpen(nextOpen);\n onOpenChange?.(nextOpen, details);\n }\n\n return (\n <DialogContext.Provider value={{ intent, pending }}>\n {isDrawer ? (\n <Drawer {...rootProps} onOpenChange={handleOpenChange} />\n ) : (\n <DialogPrimitive.Root {...rootProps} onOpenChange={handleOpenChange} />\n )}\n </DialogContext.Provider>\n );\n}\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\ntype DialogOverlayProps = Omit<DialogPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n};\n\nfunction DialogOverlay({ className, ...props }: DialogOverlayProps) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn('dialog-backdrop-motion fixed inset-0 z-50 bg-scrim backdrop-blur-xs', className)}\n {...props}\n />\n );\n}\n\nexport type { DialogSize };\n\n// No `render` or function `style`: the popup is a Dialog or a Drawer, and their state callbacks differ.\ntype DialogContentProps = Omit<DialogPrimitive.Popup.Props, 'className' | 'render' | 'style'> & {\n className?: string;\n style?: React.CSSProperties;\n size?: DialogSize;\n showOverlay?: boolean;\n showCloseButton?: boolean;\n overlayClassName?: string;\n};\n\nfunction DialogContent({\n className,\n children,\n size = 'md',\n showOverlay = true,\n showCloseButton = true,\n overlayClassName,\n initialFocus,\n ...props\n}: DialogContentProps) {\n const { intent, pending } = useDialogContext();\n const isDrawer = useIsDrawer();\n const closeRef = React.useRef<HTMLButtonElement>(null);\n const isDestructive = intent === 'destructive';\n const popupProps = {\n 'data-slot': 'dialog-content',\n 'data-size': size,\n 'data-intent': intent,\n role: isDestructive ? 'alertdialog' : 'dialog',\n initialFocus: initialFocus ?? (isDestructive && showCloseButton ? closeRef : true),\n 'aria-busy': pending || undefined,\n ...props,\n };\n const closeButton = showCloseButton && (\n <DialogPrimitive.Close\n ref={closeRef}\n disabled={pending}\n data-slot=\"dialog-close\"\n className={cn('absolute right-4', isDrawer ? 'top-1.5' : 'top-4')}\n render={\n <Button variant=\"ghost\" size=\"icon-sm\" aria-label=\"Close\">\n <X />\n </Button>\n }\n />\n );\n\n if (isDrawer) {\n return (\n <DrawerContent\n {...popupProps}\n showCloseButton={false}\n className={cn(\n 'pb-3',\n size === 'full' && 'h-[calc(85vh+3rem)]',\n showCloseButton && '[&_[data-slot=dialog-header]]:pr-12',\n className,\n )}\n >\n {children}\n {closeButton}\n {/* Fills the drawer's 3rem swipe bleed below the screen edge; an element so call-site padding can't shrink it. */}\n <div aria-hidden className=\"h-12 shrink-0\" />\n </DrawerContent>\n );\n }\n\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n {...popupProps}\n className={cn(\n dialogPopupClassName,\n dialogContentSizeClasses[size],\n showCloseButton && '[&_[data-slot=dialog-header]]:pr-12',\n className,\n )}\n >\n {children}\n {closeButton}\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn('flex min-w-0 shrink-0 flex-col gap-1 px-5 py-2', className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn('flex shrink-0 flex-wrap items-center justify-end gap-2 px-5 py-2', className)}\n {...props}\n />\n );\n}\n\nexport type DialogBodyProps = React.ComponentProps<'div'> & {\n /** `scroll` fades and scrolls long content; `fill` takes the remaining height and leaves scrolling to its children. */\n layout?: 'scroll' | 'fill';\n /** Drops the inset so content such as split panes or code reaches the dialog's edges. */\n flush?: boolean;\n};\n\nfunction DialogBody({ className, layout = 'scroll', flush = false, children, ...props }: DialogBodyProps) {\n const bodyClassName = cn(\n 'flex min-w-0 flex-col gap-4 text-body wrap-break-word text-muted-foreground',\n !flush && 'px-5 py-2',\n className,\n );\n if (layout === 'fill') {\n return (\n <div data-slot=\"dialog-body\" className={cn('min-h-0 flex-1', bodyClassName)} {...props}>\n {children}\n </div>\n );\n }\n return (\n <ScrollArea className=\"flex min-h-0 min-w-0 flex-1 flex-col\" mask>\n <ScrollAreaViewport className=\"h-auto min-h-0\">\n <div data-slot=\"dialog-body\" className={bodyClassName} {...props}>\n {children}\n </div>\n </ScrollAreaViewport>\n </ScrollArea>\n );\n}\n\ntype DialogTitleProps = Omit<DialogPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nfunction DialogTitle({ className, ...props }: DialogTitleProps) {\n return <DialogPrimitive.Title className={cn('text-heading wrap-break-word text-foreground', className)} {...props} />;\n}\n\ntype DialogDescriptionProps = Omit<DialogPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nfunction DialogDescription({ className, ...props }: DialogDescriptionProps) {\n return (\n <DialogPrimitive.Description\n className={cn('text-body wrap-break-word text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\ntype DialogCancelProps = DialogPrimitive.Close.Props & { size?: TextButtonSize };\n\nfunction DialogCancel({ disabled, size = 'md', ...props }: DialogCancelProps) {\n const { pending } = useDialogContext();\n return (\n <DialogPrimitive.Close\n render={\n <Button\n size={size}\n variant=\"ghost\"\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses[size])}\n children={props.children}\n />\n }\n {...props}\n disabled={disabled || pending}\n />\n );\n}\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogBody,\n DialogTitle,\n DialogDescription,\n DialogCancel,\n DialogAction,\n};\n"],"names":["DialogPrimitive"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
4
  const React = require('react');
5
- const dialog = require('./dialog-B5nLi0ER.cjs');
5
+ const dialog = require('./dialog-BAlSUqcF.cjs');
6
6
  const Button = require('./Button-CAVPKK09.cjs');
7
7
  const utils_cn = require('./cn-TqD01zH-.cjs');
8
8
 
@@ -186,4 +186,4 @@ function DialogAction({
186
186
  }
187
187
 
188
188
  exports.DialogAction = DialogAction;
189
- //# sourceMappingURL=dialog-action-DdkbsKfP.cjs.map
189
+ //# sourceMappingURL=dialog-action-DWE9XalB.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-action-DdkbsKfP.cjs","sources":["../src/ds/components/Dialog/dialog-action.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState } from 'react';\nimport type { ComponentProps, KeyboardEvent, MouseEvent, PointerEvent } from 'react';\nimport { dialogActionLayoutClasses, dialogActionSizeClasses, useDialogContext } from './dialog-context';\nimport { Button } from '@/ds/components/Button';\nimport type { TextButtonSize } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\ntype DialogActionButtonProps = Omit<ComponentProps<typeof Button>, 'onClick' | 'variant' | 'as' | 'type' | 'size'> & {\n size?: TextButtonSize;\n};\n\ntype DialogConfirmActionProps = DialogActionButtonProps & {\n type?: 'button';\n onConfirm: () => void;\n confirmation?: 'click' | 'hold';\n holdSeconds?: number;\n};\n\ntype DialogSubmitActionProps = DialogActionButtonProps & {\n type: 'submit';\n onConfirm?: never;\n confirmation?: never;\n holdSeconds?: never;\n};\n\nexport type DialogActionProps = DialogConfirmActionProps | DialogSubmitActionProps;\n\nconst ARM_WINDOW_MS = 4000;\n\nfunction HoldAction({\n onConfirm,\n children,\n disabled,\n holdSeconds = 1.5,\n ...props\n}: Omit<DialogConfirmActionProps, 'confirmation' | 'type'>) {\n const { intent, pending } = useDialogContext();\n const [holding, setHolding] = useState(false);\n const [completed, setCompleted] = useState(false);\n const [armed, setArmed] = useState(false);\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const armTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const active = useRef(false);\n const hintId = useId();\n\n function cancel() {\n clearTimeout(timer.current);\n active.current = false;\n setHolding(false);\n }\n\n function disarm() {\n clearTimeout(armTimer.current);\n setArmed(false);\n }\n\n function complete() {\n setHolding(false);\n setCompleted(true);\n disarm();\n onConfirm();\n }\n\n function start() {\n if (disabled || active.current) return;\n active.current = true;\n setHolding(true);\n timer.current = setTimeout(complete, holdSeconds * 1000);\n }\n\n function onClick(event: MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n if (event.detail !== 0 || disabled) return;\n if (armed) {\n complete();\n return;\n }\n setArmed(true);\n armTimer.current = setTimeout(() => setArmed(false), ARM_WINDOW_MS);\n }\n\n useEffect(() => {\n function onVisibilityChange() {\n if (document.hidden) cancel();\n }\n window.addEventListener('blur', cancel);\n document.addEventListener('visibilitychange', onVisibilityChange);\n return () => {\n clearTimeout(timer.current);\n clearTimeout(armTimer.current);\n window.removeEventListener('blur', cancel);\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n }, []);\n\n function onPointerDown(event: PointerEvent<HTMLButtonElement>) {\n props.onPointerDown?.(event);\n if (event.defaultPrevented || event.button !== 0 || !event.isPrimary) return;\n start();\n }\n\n function onKeyDown(event: KeyboardEvent<HTMLButtonElement>) {\n props.onKeyDown?.(event);\n if (event.defaultPrevented || (event.key !== ' ' && event.key !== 'Enter')) return;\n event.preventDefault();\n if (!event.repeat) start();\n }\n\n return (\n <>\n <Button\n size=\"md\"\n {...props}\n className={cn(\n 'group/hold relative isolate touch-none overflow-hidden select-none',\n dialogActionLayoutClasses,\n dialogActionSizeClasses[props.size ?? 'md'],\n props.className,\n )}\n type=\"button\"\n variant={intent === 'destructive' ? 'destructive-ghost' : 'ghost'}\n disabled={disabled}\n aria-describedby={[props['aria-describedby'], hintId].filter(Boolean).join(' ')}\n data-holding={holding || undefined}\n data-completed={completed || pending || undefined}\n onClick={onClick}\n onPointerDown={onPointerDown}\n onPointerUp={event => {\n cancel();\n props.onPointerUp?.(event);\n }}\n onPointerLeave={event => {\n cancel();\n props.onPointerLeave?.(event);\n }}\n onPointerCancel={event => {\n cancel();\n props.onPointerCancel?.(event);\n }}\n onKeyDown={onKeyDown}\n onKeyUp={event => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n cancel();\n }\n props.onKeyUp?.(event);\n }}\n onBlur={event => {\n cancel();\n props.onBlur?.(event);\n }}\n >\n <span>{children}</span>\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none absolute inset-0 flex items-center justify-center px-[inherit] [clip-path:inset(0_100%_0_0)]',\n 'transition-[clip-path] ease-linear motion-reduce:transition-none',\n 'group-data-[holding]/hold:[clip-path:inset(0)] motion-reduce:group-data-[holding]/hold:[clip-path:inset(0_50%_0_0)]',\n 'group-data-[completed]/hold:[clip-path:inset(0)]',\n intent === 'destructive'\n ? 'bg-fill-destructive text-fill-destructive-foreground'\n : 'bg-foreground text-sidebar',\n )}\n style={{ transitionDuration: holding ? `${holdSeconds}s` : '0s' }}\n >\n {children}\n </span>\n </Button>\n <span id={hintId} className=\"sr-only\">\n Hold Space or Enter for {holdSeconds} seconds to confirm. Release to cancel. Screen reader users can activate\n twice.\n </span>\n <span role=\"status\" className=\"sr-only\">\n {armed ? 'Activate again to confirm.' : ''}\n </span>\n </>\n );\n}\n\nexport function DialogAction({\n confirmation = 'click',\n holdSeconds = 1.5,\n onConfirm,\n disabled,\n type = 'button',\n ...props\n}: DialogActionProps) {\n const { intent, pending } = useDialogContext();\n const isDisabled = disabled || pending;\n if (onConfirm && confirmation === 'hold') {\n return (\n <HoldAction\n key={`${isDisabled}-${holdSeconds}`}\n holdSeconds={holdSeconds}\n {...props}\n disabled={isDisabled}\n onConfirm={onConfirm}\n />\n );\n }\n return (\n <Button\n size=\"md\"\n {...props}\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses[props.size ?? 'md'], props.className)}\n type={type}\n variant={intent === 'destructive' ? 'destructive' : 'primary'}\n disabled={isDisabled}\n onClick={onConfirm}\n />\n );\n}\n"],"names":["useDialogContext","useState","useRef","useId","useEffect","jsxs","Fragment","Button","cn","dialogActionLayoutClasses","dialogActionSizeClasses","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"dialog-action-DWE9XalB.cjs","sources":["../src/ds/components/Dialog/dialog-action.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState } from 'react';\nimport type { ComponentProps, KeyboardEvent, MouseEvent, PointerEvent } from 'react';\nimport { dialogActionLayoutClasses, dialogActionSizeClasses, useDialogContext } from './dialog-context';\nimport { Button } from '@/ds/components/Button';\nimport type { TextButtonSize } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\ntype DialogActionButtonProps = Omit<ComponentProps<typeof Button>, 'onClick' | 'variant' | 'as' | 'type' | 'size'> & {\n size?: TextButtonSize;\n};\n\ntype DialogConfirmActionProps = DialogActionButtonProps & {\n type?: 'button';\n onConfirm: () => void;\n confirmation?: 'click' | 'hold';\n holdSeconds?: number;\n};\n\ntype DialogSubmitActionProps = DialogActionButtonProps & {\n type: 'submit';\n onConfirm?: never;\n confirmation?: never;\n holdSeconds?: never;\n};\n\nexport type DialogActionProps = DialogConfirmActionProps | DialogSubmitActionProps;\n\nconst ARM_WINDOW_MS = 4000;\n\nfunction HoldAction({\n onConfirm,\n children,\n disabled,\n holdSeconds = 1.5,\n ...props\n}: Omit<DialogConfirmActionProps, 'confirmation' | 'type'>) {\n const { intent, pending } = useDialogContext();\n const [holding, setHolding] = useState(false);\n const [completed, setCompleted] = useState(false);\n const [armed, setArmed] = useState(false);\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const armTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const active = useRef(false);\n const hintId = useId();\n\n function cancel() {\n clearTimeout(timer.current);\n active.current = false;\n setHolding(false);\n }\n\n function disarm() {\n clearTimeout(armTimer.current);\n setArmed(false);\n }\n\n function complete() {\n setHolding(false);\n setCompleted(true);\n disarm();\n onConfirm();\n }\n\n function start() {\n if (disabled || active.current) return;\n active.current = true;\n setHolding(true);\n timer.current = setTimeout(complete, holdSeconds * 1000);\n }\n\n function onClick(event: MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n if (event.detail !== 0 || disabled) return;\n if (armed) {\n complete();\n return;\n }\n setArmed(true);\n armTimer.current = setTimeout(() => setArmed(false), ARM_WINDOW_MS);\n }\n\n useEffect(() => {\n function onVisibilityChange() {\n if (document.hidden) cancel();\n }\n window.addEventListener('blur', cancel);\n document.addEventListener('visibilitychange', onVisibilityChange);\n return () => {\n clearTimeout(timer.current);\n clearTimeout(armTimer.current);\n window.removeEventListener('blur', cancel);\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n }, []);\n\n function onPointerDown(event: PointerEvent<HTMLButtonElement>) {\n props.onPointerDown?.(event);\n if (event.defaultPrevented || event.button !== 0 || !event.isPrimary) return;\n start();\n }\n\n function onKeyDown(event: KeyboardEvent<HTMLButtonElement>) {\n props.onKeyDown?.(event);\n if (event.defaultPrevented || (event.key !== ' ' && event.key !== 'Enter')) return;\n event.preventDefault();\n if (!event.repeat) start();\n }\n\n return (\n <>\n <Button\n size=\"md\"\n {...props}\n className={cn(\n 'group/hold relative isolate touch-none overflow-hidden select-none',\n dialogActionLayoutClasses,\n dialogActionSizeClasses[props.size ?? 'md'],\n props.className,\n )}\n type=\"button\"\n variant={intent === 'destructive' ? 'destructive-ghost' : 'ghost'}\n disabled={disabled}\n aria-describedby={[props['aria-describedby'], hintId].filter(Boolean).join(' ')}\n data-holding={holding || undefined}\n data-completed={completed || pending || undefined}\n onClick={onClick}\n onPointerDown={onPointerDown}\n onPointerUp={event => {\n cancel();\n props.onPointerUp?.(event);\n }}\n onPointerLeave={event => {\n cancel();\n props.onPointerLeave?.(event);\n }}\n onPointerCancel={event => {\n cancel();\n props.onPointerCancel?.(event);\n }}\n onKeyDown={onKeyDown}\n onKeyUp={event => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n cancel();\n }\n props.onKeyUp?.(event);\n }}\n onBlur={event => {\n cancel();\n props.onBlur?.(event);\n }}\n >\n <span>{children}</span>\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none absolute inset-0 flex items-center justify-center px-[inherit] [clip-path:inset(0_100%_0_0)]',\n 'transition-[clip-path] ease-linear motion-reduce:transition-none',\n 'group-data-[holding]/hold:[clip-path:inset(0)] motion-reduce:group-data-[holding]/hold:[clip-path:inset(0_50%_0_0)]',\n 'group-data-[completed]/hold:[clip-path:inset(0)]',\n intent === 'destructive'\n ? 'bg-fill-destructive text-fill-destructive-foreground'\n : 'bg-foreground text-sidebar',\n )}\n style={{ transitionDuration: holding ? `${holdSeconds}s` : '0s' }}\n >\n {children}\n </span>\n </Button>\n <span id={hintId} className=\"sr-only\">\n Hold Space or Enter for {holdSeconds} seconds to confirm. Release to cancel. Screen reader users can activate\n twice.\n </span>\n <span role=\"status\" className=\"sr-only\">\n {armed ? 'Activate again to confirm.' : ''}\n </span>\n </>\n );\n}\n\nexport function DialogAction({\n confirmation = 'click',\n holdSeconds = 1.5,\n onConfirm,\n disabled,\n type = 'button',\n ...props\n}: DialogActionProps) {\n const { intent, pending } = useDialogContext();\n const isDisabled = disabled || pending;\n if (onConfirm && confirmation === 'hold') {\n return (\n <HoldAction\n key={`${isDisabled}-${holdSeconds}`}\n holdSeconds={holdSeconds}\n {...props}\n disabled={isDisabled}\n onConfirm={onConfirm}\n />\n );\n }\n return (\n <Button\n size=\"md\"\n {...props}\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses[props.size ?? 'md'], props.className)}\n type={type}\n variant={intent === 'destructive' ? 'destructive' : 'primary'}\n disabled={isDisabled}\n onClick={onConfirm}\n />\n );\n}\n"],"names":["useDialogContext","useState","useRef","useId","useEffect","jsxs","Fragment","Button","cn","dialogActionLayoutClasses","dialogActionSizeClasses","jsx"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useState, useRef, useId, useEffect } from 'react';
3
- import { u as useDialogContext, l as dialogActionSizeClasses, m as dialogActionLayoutClasses } from './dialog-Jz2ZfO-z.js';
3
+ import { u as useDialogContext, l as dialogActionSizeClasses, m as dialogActionLayoutClasses } from './dialog-CboDo8Pj.js';
4
4
  import { B as Button } from './Button-60jVnaHt.js';
5
5
  import { c as cn } from './cn-coERSHz5.js';
6
6
 
@@ -184,4 +184,4 @@ function DialogAction({
184
184
  }
185
185
 
186
186
  export { DialogAction as D };
187
- //# sourceMappingURL=dialog-action-BxXhAz-P.js.map
187
+ //# sourceMappingURL=dialog-action-DpctEQ9l.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-action-BxXhAz-P.js","sources":["../src/ds/components/Dialog/dialog-action.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState } from 'react';\nimport type { ComponentProps, KeyboardEvent, MouseEvent, PointerEvent } from 'react';\nimport { dialogActionLayoutClasses, dialogActionSizeClasses, useDialogContext } from './dialog-context';\nimport { Button } from '@/ds/components/Button';\nimport type { TextButtonSize } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\ntype DialogActionButtonProps = Omit<ComponentProps<typeof Button>, 'onClick' | 'variant' | 'as' | 'type' | 'size'> & {\n size?: TextButtonSize;\n};\n\ntype DialogConfirmActionProps = DialogActionButtonProps & {\n type?: 'button';\n onConfirm: () => void;\n confirmation?: 'click' | 'hold';\n holdSeconds?: number;\n};\n\ntype DialogSubmitActionProps = DialogActionButtonProps & {\n type: 'submit';\n onConfirm?: never;\n confirmation?: never;\n holdSeconds?: never;\n};\n\nexport type DialogActionProps = DialogConfirmActionProps | DialogSubmitActionProps;\n\nconst ARM_WINDOW_MS = 4000;\n\nfunction HoldAction({\n onConfirm,\n children,\n disabled,\n holdSeconds = 1.5,\n ...props\n}: Omit<DialogConfirmActionProps, 'confirmation' | 'type'>) {\n const { intent, pending } = useDialogContext();\n const [holding, setHolding] = useState(false);\n const [completed, setCompleted] = useState(false);\n const [armed, setArmed] = useState(false);\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const armTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const active = useRef(false);\n const hintId = useId();\n\n function cancel() {\n clearTimeout(timer.current);\n active.current = false;\n setHolding(false);\n }\n\n function disarm() {\n clearTimeout(armTimer.current);\n setArmed(false);\n }\n\n function complete() {\n setHolding(false);\n setCompleted(true);\n disarm();\n onConfirm();\n }\n\n function start() {\n if (disabled || active.current) return;\n active.current = true;\n setHolding(true);\n timer.current = setTimeout(complete, holdSeconds * 1000);\n }\n\n function onClick(event: MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n if (event.detail !== 0 || disabled) return;\n if (armed) {\n complete();\n return;\n }\n setArmed(true);\n armTimer.current = setTimeout(() => setArmed(false), ARM_WINDOW_MS);\n }\n\n useEffect(() => {\n function onVisibilityChange() {\n if (document.hidden) cancel();\n }\n window.addEventListener('blur', cancel);\n document.addEventListener('visibilitychange', onVisibilityChange);\n return () => {\n clearTimeout(timer.current);\n clearTimeout(armTimer.current);\n window.removeEventListener('blur', cancel);\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n }, []);\n\n function onPointerDown(event: PointerEvent<HTMLButtonElement>) {\n props.onPointerDown?.(event);\n if (event.defaultPrevented || event.button !== 0 || !event.isPrimary) return;\n start();\n }\n\n function onKeyDown(event: KeyboardEvent<HTMLButtonElement>) {\n props.onKeyDown?.(event);\n if (event.defaultPrevented || (event.key !== ' ' && event.key !== 'Enter')) return;\n event.preventDefault();\n if (!event.repeat) start();\n }\n\n return (\n <>\n <Button\n size=\"md\"\n {...props}\n className={cn(\n 'group/hold relative isolate touch-none overflow-hidden select-none',\n dialogActionLayoutClasses,\n dialogActionSizeClasses[props.size ?? 'md'],\n props.className,\n )}\n type=\"button\"\n variant={intent === 'destructive' ? 'destructive-ghost' : 'ghost'}\n disabled={disabled}\n aria-describedby={[props['aria-describedby'], hintId].filter(Boolean).join(' ')}\n data-holding={holding || undefined}\n data-completed={completed || pending || undefined}\n onClick={onClick}\n onPointerDown={onPointerDown}\n onPointerUp={event => {\n cancel();\n props.onPointerUp?.(event);\n }}\n onPointerLeave={event => {\n cancel();\n props.onPointerLeave?.(event);\n }}\n onPointerCancel={event => {\n cancel();\n props.onPointerCancel?.(event);\n }}\n onKeyDown={onKeyDown}\n onKeyUp={event => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n cancel();\n }\n props.onKeyUp?.(event);\n }}\n onBlur={event => {\n cancel();\n props.onBlur?.(event);\n }}\n >\n <span>{children}</span>\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none absolute inset-0 flex items-center justify-center px-[inherit] [clip-path:inset(0_100%_0_0)]',\n 'transition-[clip-path] ease-linear motion-reduce:transition-none',\n 'group-data-[holding]/hold:[clip-path:inset(0)] motion-reduce:group-data-[holding]/hold:[clip-path:inset(0_50%_0_0)]',\n 'group-data-[completed]/hold:[clip-path:inset(0)]',\n intent === 'destructive'\n ? 'bg-fill-destructive text-fill-destructive-foreground'\n : 'bg-foreground text-sidebar',\n )}\n style={{ transitionDuration: holding ? `${holdSeconds}s` : '0s' }}\n >\n {children}\n </span>\n </Button>\n <span id={hintId} className=\"sr-only\">\n Hold Space or Enter for {holdSeconds} seconds to confirm. Release to cancel. Screen reader users can activate\n twice.\n </span>\n <span role=\"status\" className=\"sr-only\">\n {armed ? 'Activate again to confirm.' : ''}\n </span>\n </>\n );\n}\n\nexport function DialogAction({\n confirmation = 'click',\n holdSeconds = 1.5,\n onConfirm,\n disabled,\n type = 'button',\n ...props\n}: DialogActionProps) {\n const { intent, pending } = useDialogContext();\n const isDisabled = disabled || pending;\n if (onConfirm && confirmation === 'hold') {\n return (\n <HoldAction\n key={`${isDisabled}-${holdSeconds}`}\n holdSeconds={holdSeconds}\n {...props}\n disabled={isDisabled}\n onConfirm={onConfirm}\n />\n );\n }\n return (\n <Button\n size=\"md\"\n {...props}\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses[props.size ?? 'md'], props.className)}\n type={type}\n variant={intent === 'destructive' ? 'destructive' : 'primary'}\n disabled={isDisabled}\n onClick={onConfirm}\n />\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dialog-action-DpctEQ9l.js","sources":["../src/ds/components/Dialog/dialog-action.tsx"],"sourcesContent":["import { useEffect, useId, useRef, useState } from 'react';\nimport type { ComponentProps, KeyboardEvent, MouseEvent, PointerEvent } from 'react';\nimport { dialogActionLayoutClasses, dialogActionSizeClasses, useDialogContext } from './dialog-context';\nimport { Button } from '@/ds/components/Button';\nimport type { TextButtonSize } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\ntype DialogActionButtonProps = Omit<ComponentProps<typeof Button>, 'onClick' | 'variant' | 'as' | 'type' | 'size'> & {\n size?: TextButtonSize;\n};\n\ntype DialogConfirmActionProps = DialogActionButtonProps & {\n type?: 'button';\n onConfirm: () => void;\n confirmation?: 'click' | 'hold';\n holdSeconds?: number;\n};\n\ntype DialogSubmitActionProps = DialogActionButtonProps & {\n type: 'submit';\n onConfirm?: never;\n confirmation?: never;\n holdSeconds?: never;\n};\n\nexport type DialogActionProps = DialogConfirmActionProps | DialogSubmitActionProps;\n\nconst ARM_WINDOW_MS = 4000;\n\nfunction HoldAction({\n onConfirm,\n children,\n disabled,\n holdSeconds = 1.5,\n ...props\n}: Omit<DialogConfirmActionProps, 'confirmation' | 'type'>) {\n const { intent, pending } = useDialogContext();\n const [holding, setHolding] = useState(false);\n const [completed, setCompleted] = useState(false);\n const [armed, setArmed] = useState(false);\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const armTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const active = useRef(false);\n const hintId = useId();\n\n function cancel() {\n clearTimeout(timer.current);\n active.current = false;\n setHolding(false);\n }\n\n function disarm() {\n clearTimeout(armTimer.current);\n setArmed(false);\n }\n\n function complete() {\n setHolding(false);\n setCompleted(true);\n disarm();\n onConfirm();\n }\n\n function start() {\n if (disabled || active.current) return;\n active.current = true;\n setHolding(true);\n timer.current = setTimeout(complete, holdSeconds * 1000);\n }\n\n function onClick(event: MouseEvent<HTMLButtonElement>) {\n event.preventDefault();\n if (event.detail !== 0 || disabled) return;\n if (armed) {\n complete();\n return;\n }\n setArmed(true);\n armTimer.current = setTimeout(() => setArmed(false), ARM_WINDOW_MS);\n }\n\n useEffect(() => {\n function onVisibilityChange() {\n if (document.hidden) cancel();\n }\n window.addEventListener('blur', cancel);\n document.addEventListener('visibilitychange', onVisibilityChange);\n return () => {\n clearTimeout(timer.current);\n clearTimeout(armTimer.current);\n window.removeEventListener('blur', cancel);\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n }, []);\n\n function onPointerDown(event: PointerEvent<HTMLButtonElement>) {\n props.onPointerDown?.(event);\n if (event.defaultPrevented || event.button !== 0 || !event.isPrimary) return;\n start();\n }\n\n function onKeyDown(event: KeyboardEvent<HTMLButtonElement>) {\n props.onKeyDown?.(event);\n if (event.defaultPrevented || (event.key !== ' ' && event.key !== 'Enter')) return;\n event.preventDefault();\n if (!event.repeat) start();\n }\n\n return (\n <>\n <Button\n size=\"md\"\n {...props}\n className={cn(\n 'group/hold relative isolate touch-none overflow-hidden select-none',\n dialogActionLayoutClasses,\n dialogActionSizeClasses[props.size ?? 'md'],\n props.className,\n )}\n type=\"button\"\n variant={intent === 'destructive' ? 'destructive-ghost' : 'ghost'}\n disabled={disabled}\n aria-describedby={[props['aria-describedby'], hintId].filter(Boolean).join(' ')}\n data-holding={holding || undefined}\n data-completed={completed || pending || undefined}\n onClick={onClick}\n onPointerDown={onPointerDown}\n onPointerUp={event => {\n cancel();\n props.onPointerUp?.(event);\n }}\n onPointerLeave={event => {\n cancel();\n props.onPointerLeave?.(event);\n }}\n onPointerCancel={event => {\n cancel();\n props.onPointerCancel?.(event);\n }}\n onKeyDown={onKeyDown}\n onKeyUp={event => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n cancel();\n }\n props.onKeyUp?.(event);\n }}\n onBlur={event => {\n cancel();\n props.onBlur?.(event);\n }}\n >\n <span>{children}</span>\n <span\n aria-hidden=\"true\"\n className={cn(\n 'pointer-events-none absolute inset-0 flex items-center justify-center px-[inherit] [clip-path:inset(0_100%_0_0)]',\n 'transition-[clip-path] ease-linear motion-reduce:transition-none',\n 'group-data-[holding]/hold:[clip-path:inset(0)] motion-reduce:group-data-[holding]/hold:[clip-path:inset(0_50%_0_0)]',\n 'group-data-[completed]/hold:[clip-path:inset(0)]',\n intent === 'destructive'\n ? 'bg-fill-destructive text-fill-destructive-foreground'\n : 'bg-foreground text-sidebar',\n )}\n style={{ transitionDuration: holding ? `${holdSeconds}s` : '0s' }}\n >\n {children}\n </span>\n </Button>\n <span id={hintId} className=\"sr-only\">\n Hold Space or Enter for {holdSeconds} seconds to confirm. Release to cancel. Screen reader users can activate\n twice.\n </span>\n <span role=\"status\" className=\"sr-only\">\n {armed ? 'Activate again to confirm.' : ''}\n </span>\n </>\n );\n}\n\nexport function DialogAction({\n confirmation = 'click',\n holdSeconds = 1.5,\n onConfirm,\n disabled,\n type = 'button',\n ...props\n}: DialogActionProps) {\n const { intent, pending } = useDialogContext();\n const isDisabled = disabled || pending;\n if (onConfirm && confirmation === 'hold') {\n return (\n <HoldAction\n key={`${isDisabled}-${holdSeconds}`}\n holdSeconds={holdSeconds}\n {...props}\n disabled={isDisabled}\n onConfirm={onConfirm}\n />\n );\n }\n return (\n <Button\n size=\"md\"\n {...props}\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses[props.size ?? 'md'], props.className)}\n type={type}\n variant={intent === 'destructive' ? 'destructive' : 'primary'}\n disabled={isDisabled}\n onClick={onConfirm}\n />\n );\n}\n"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ const lucideReact = require('lucide-react');
7
7
  const domains_chat_attachments_composerAttachmentEntry = require('./composer-attachment-entry.cjs.js');
8
8
  const domains_chat_attachments_useAttachmentPreview = require('./use-attachment-preview.cjs.js');
9
9
  const Button = require('../../../Button-CAVPKK09.cjs');
10
- const dialog = require('../../../dialog-B5nLi0ER.cjs');
10
+ const dialog = require('../../../dialog-BAlSUqcF.cjs');
11
11
  const utils_cn = require('../../../cn-TqD01zH-.cjs');
12
12
 
13
13
  const ctaClassName = "h-full w-full flex items-center justify-center rounded-[inherit] focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-border-focus [&:is(button,a)]:cursor-pointer";
@@ -3,7 +3,7 @@ import { FileText, FileVideo, FileAudio, File } from 'lucide-react';
3
3
  import { ComposerAttachmentEntry } from './composer-attachment-entry.es.js';
4
4
  import { useAttachmentPreview } from './use-attachment-preview.es.js';
5
5
  import { B as Button } from '../../../Button-60jVnaHt.js';
6
- import { D as Dialog, d as DialogContent, g as DialogHeader, j as DialogTitle, a as DialogBody } from '../../../dialog-Jz2ZfO-z.js';
6
+ import { D as Dialog, d as DialogContent, g as DialogHeader, j as DialogTitle, a as DialogBody } from '../../../dialog-CboDo8Pj.js';
7
7
  import { c as cn } from '../../../cn-coERSHz5.js';
8
8
 
9
9
  const ctaClassName = "h-full w-full flex items-center justify-center rounded-[inherit] focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-border-focus [&:is(button,a)]:cursor-pointer";
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
- const composer = require('../../../composer-Cg5bXN1r.cjs');
7
- const scrollArea = require('../../../scroll-area-CVgjRzTS.cjs');
6
+ const composer = require('../../../composer-DJsfHivH.cjs');
7
+ const scrollArea = require('../../../scroll-area-BakRKj2k.cjs');
8
8
  const utils_cn = require('../../../cn-TqD01zH-.cjs');
9
9
 
10
10
  function ComposerAttachmentList({ className, ...props }) {
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { C as ComposerAttachments } from '../../../composer-CxmOOUX8.js';
3
- import { S as ScrollArea } from '../../../scroll-area-BywIlj3F.js';
2
+ import { C as ComposerAttachments } from '../../../composer-B0i1WZgt.js';
3
+ import { S as ScrollArea } from '../../../scroll-area-D6gKFavi.js';
4
4
  import { c as cn } from '../../../cn-coERSHz5.js';
5
5
 
6
6
  function ComposerAttachmentList({ className, ...props }) {
@@ -7,7 +7,7 @@ const lucideReact = require('lucide-react');
7
7
  const React = require('react');
8
8
  const Button = require('../../../Button-CAVPKK09.cjs');
9
9
  const codeEditor = require('../../../code-editor-CH8c-KF1.cjs');
10
- const dialog = require('../../../dialog-B5nLi0ER.cjs');
10
+ const dialog = require('../../../dialog-BAlSUqcF.cjs');
11
11
  const Txt = require('../../../Txt-DXjXpX9r.cjs');
12
12
 
13
13
  const NetworkChoiceMetadata = ({ selectionReason, open, onOpenChange, input }) => {
@@ -3,7 +3,7 @@ import { Share2 } from 'lucide-react';
3
3
  import { useState } from 'react';
4
4
  import { B as Button } from '../../../Button-60jVnaHt.js';
5
5
  import { C as CodeEditor } from '../../../code-editor-B_v1EfzX.js';
6
- import { D as Dialog, d as DialogContent, g as DialogHeader, j as DialogTitle, e as DialogDescription, a as DialogBody } from '../../../dialog-Jz2ZfO-z.js';
6
+ import { D as Dialog, d as DialogContent, g as DialogHeader, j as DialogTitle, e as DialogDescription, a as DialogBody } from '../../../dialog-CboDo8Pj.js';
7
7
  import { T as Txt } from '../../../Txt-BuzYj7Vy.js';
8
8
 
9
9
  const NetworkChoiceMetadata = ({ selectionReason, open, onOpenChange, input }) => {
@@ -16,12 +16,12 @@ const select = require('../../../select-D5cu0K7R.cjs');
16
16
  const Txt = require('../../../Txt-DXjXpX9r.cjs');
17
17
  require('../../../lib/framework.cjs.js');
18
18
  const toast = require('../../../toast-C8a7bWV8.cjs');
19
- const dialog = require('../../../dialog-B5nLi0ER.cjs');
19
+ const dialog = require('../../../dialog-BAlSUqcF.cjs');
20
20
  const spinner = require('../../../spinner-BW4nHg_A.cjs');
21
21
  const primitives_transitions = require('../../../primitives/transitions.cjs.js');
22
22
  const primitives_typography = require('../../../primitives/typography.cjs.js');
23
23
  const utils_cn = require('../../../cn-TqD01zH-.cjs');
24
- const dialogAction = require('../../../dialog-action-DdkbsKfP.cjs');
24
+ const dialogAction = require('../../../dialog-action-DWE9XalB.cjs');
25
25
 
26
26
  function DatasetSaveDialog({
27
27
  open,
@@ -12,12 +12,12 @@ import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent,
12
12
  import { T as Txt } from '../../../Txt-BuzYj7Vy.js';
13
13
  import '../../../lib/framework.es.js';
14
14
  import { t as toast } from '../../../toast-WCmYXnuT.js';
15
- import { D as Dialog, d as DialogContent, g as DialogHeader, j as DialogTitle, e as DialogDescription, a as DialogBody, f as DialogFooter, b as DialogCancel } from '../../../dialog-Jz2ZfO-z.js';
15
+ import { D as Dialog, d as DialogContent, g as DialogHeader, j as DialogTitle, e as DialogDescription, a as DialogBody, f as DialogFooter, b as DialogCancel } from '../../../dialog-CboDo8Pj.js';
16
16
  import { S as Spinner } from '../../../spinner-CFtgt3oI.js';
17
17
  import { controlStateColorTransition } from '../../../primitives/transitions.es.js';
18
18
  import { quietTextHover } from '../../../primitives/typography.es.js';
19
19
  import { c as cn } from '../../../cn-coERSHz5.js';
20
- import { D as DialogAction } from '../../../dialog-action-BxXhAz-P.js';
20
+ import { D as DialogAction } from '../../../dialog-action-DpctEQ9l.js';
21
21
 
22
22
  function DatasetSaveDialog({
23
23
  open,
@@ -32,7 +32,7 @@ const domains_chat_tools_badges_agentBadge = require('../../../tool-card-NFkMpCh
32
32
  const domains_chat_tools_toolCardKind = require('../tools/tool-card-kind.cjs.js');
33
33
  const domains_chat_tools_toolGroups = require('../tools/tool-groups.cjs.js');
34
34
  const messageReveal = require('../../../message-reveal-Dbej4LJz.cjs');
35
- const toolCallGroup = require('../../../tool-call-group-CFpdexuw.cjs');
35
+ const toolCallGroup = require('../../../tool-call-group-Cdgv7red.cjs');
36
36
  const arrival = require('../../../arrival-BmAXOcoO.cjs');
37
37
  const message = require('../../../message-DqrJ3fNR.cjs');
38
38
  const messageCopyButton = require('../../../message-copy-button-Cni-zv0j.cjs');
@@ -28,7 +28,7 @@ import { T as ToolCard } from '../../../tool-card-BftktBoV.js';
28
28
  import { isSettledState, badgeStatus } from '../tools/tool-card-kind.es.js';
29
29
  import { collectToolGroups } from '../tools/tool-groups.es.js';
30
30
  import { u as useRevealedParts } from '../../../message-reveal-B3LLhUvk.js';
31
- import { T as ToolCallGroup } from '../../../tool-call-group-CZBqGjMh.js';
31
+ import { T as ToolCallGroup } from '../../../tool-call-group-C_zxf6OA.js';
32
32
  import { a as Arriving } from '../../../arrival-613EpNtY.js';
33
33
  import { a as Message, b as MessageActions } from '../../../message-C2s3YTLa.js';
34
34
  import { M as MessageCopyButton } from '../../../message-copy-button-DDgqbtbv.js';
@@ -9,7 +9,7 @@ const domains_chat_messages_tripwireNotice = require('../tripwire-notice.cjs.js'
9
9
  const domains_chat_messages_renderers_messageTextKind = require('./message-text-kind.cjs.js');
10
10
  const Badge = require('../../../../Badge-BF6FbLH_.cjs');
11
11
  const disclosureChevron = require('../../../../disclosure-chevron-B_gmYFR5.cjs');
12
- const markdownRenderer = require('../../../../markdown-renderer-BXTNiZbz.cjs');
12
+ const markdownRenderer = require('../../../../markdown-renderer-BRu3RpQD.cjs');
13
13
  const Notice = require('../../../../Notice-c8dMiAtZ.cjs');
14
14
  const icons_Icon = require('../../../../icons/Icon.cjs.js');
15
15
 
@@ -5,7 +5,7 @@ import { TripwireNotice } from '../tripwire-notice.es.js';
5
5
  import { messageTextKind, errorMessage } from './message-text-kind.es.js';
6
6
  import { B as Badge } from '../../../../Badge-3-G2I_cx.js';
7
7
  import { D as DisclosureChevron } from '../../../../disclosure-chevron-BWZ8Alz1.js';
8
- import { M as MarkdownRenderer } from '../../../../markdown-renderer-Ct-q_KTF.js';
8
+ import { M as MarkdownRenderer } from '../../../../markdown-renderer-WesDzhMr.js';
9
9
  import { N as Notice } from '../../../../Notice-Wy1grdLu.js';
10
10
  import { Icon } from '../../../../icons/Icon.es.js';
11
11
 
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const domains_chat_messages_reasoningContent = require('../reasoning-content.cjs.js');
7
- const reasoningActivity = require('../../../../reasoning-activity-CFEaSv4J.cjs');
7
+ const reasoningActivity = require('../../../../reasoning-activity-B8bR8ib_.cjs');
8
8
 
9
9
  const ReasoningPartRenderer = ({ part, defaultOpen }) => {
10
10
  const content = domains_chat_messages_reasoningContent.getReasoningContent(part);
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { getReasoningContent } from '../reasoning-content.es.js';
3
- import { R as ReasoningActivity } from '../../../../reasoning-activity-CHlEe011.js';
3
+ import { R as ReasoningActivity } from '../../../../reasoning-activity-DLrXgE9k.js';
4
4
 
5
5
  const ReasoningPartRenderer = ({ part, defaultOpen }) => {
6
6
  const content = getReasoningContent(part);
@@ -6,8 +6,8 @@ const jsxRuntime = require('react/jsx-runtime');
6
6
  const lucideReact = require('lucide-react');
7
7
  const activity = require('../../../activity-CaFdLiPz.cjs');
8
8
  const signalActivity = require('../../../signal-activity-aXcUgxDg.cjs');
9
- const markdownRenderer = require('../../../markdown-renderer-BXTNiZbz.cjs');
10
- const scrollArea = require('../../../scroll-area-CVgjRzTS.cjs');
9
+ const markdownRenderer = require('../../../markdown-renderer-BRu3RpQD.cjs');
10
+ const scrollArea = require('../../../scroll-area-BakRKj2k.cjs');
11
11
 
12
12
  function SkillMessage({ activation }) {
13
13
  const { name, arguments: args, instructions, feed } = activation;
@@ -2,8 +2,8 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { BookOpen } from 'lucide-react';
3
3
  import { g as ActivityItem } from '../../../activity-BsrB5ADa.js';
4
4
  import { S as SignalActivity } from '../../../signal-activity-BiWlOFhu.js';
5
- import { M as MarkdownRenderer } from '../../../markdown-renderer-Ct-q_KTF.js';
6
- import { S as ScrollArea } from '../../../scroll-area-BywIlj3F.js';
5
+ import { M as MarkdownRenderer } from '../../../markdown-renderer-WesDzhMr.js';
6
+ import { S as ScrollArea } from '../../../scroll-area-D6gKFavi.js';
7
7
 
8
8
  function SkillMessage({ activation }) {
9
9
  const { name, arguments: args, instructions, feed } = activation;
@@ -8,7 +8,7 @@ const lucideReact = require('lucide-react');
8
8
  const React = require('react');
9
9
  const Button = require('../../../../Button-CAVPKK09.cjs');
10
10
  const codeEditor = require('../../../../code-editor-CH8c-KF1.cjs');
11
- const dialog = require('../../../../dialog-B5nLi0ER.cjs');
11
+ const dialog = require('../../../../dialog-BAlSUqcF.cjs');
12
12
  const Txt = require('../../../../Txt-DXjXpX9r.cjs');
13
13
  const hooks_useTimeDiff = require('../../../../hooks/use-time-diff.cjs.js');
14
14
  const utils_number = require('../../../../utils/number.cjs.js');
@@ -4,7 +4,7 @@ import { Share2, Loader2Icon } from 'lucide-react';
4
4
  import { useState } from 'react';
5
5
  import { B as Button } from '../../../../Button-60jVnaHt.js';
6
6
  import { C as CodeEditor } from '../../../../code-editor-B_v1EfzX.js';
7
- import { D as Dialog, d as DialogContent, g as DialogHeader, j as DialogTitle, e as DialogDescription, a as DialogBody } from '../../../../dialog-Jz2ZfO-z.js';
7
+ import { D as Dialog, d as DialogContent, g as DialogHeader, j as DialogTitle, e as DialogDescription, a as DialogBody } from '../../../../dialog-CboDo8Pj.js';
8
8
  import { T as Txt } from '../../../../Txt-BuzYj7Vy.js';
9
9
  import { useTimeDiff } from '../../../../hooks/use-time-diff.es.js';
10
10
  import { toSigFigs } from '../../../../utils/number.es.js';
@@ -7,7 +7,7 @@ const React = require('react');
7
7
  const domains_chat_components_sectionLabel = require('../../components/section-label.cjs.js');
8
8
  const domains_chat_tools_badges_toolApprovalBadge = require('./tool-approval-badge.cjs.js');
9
9
  const code = require('../../../../code-Dcah35Gp.cjs');
10
- const codeBlock = require('../../../../code-block-BuGosknt.cjs');
10
+ const codeBlock = require('../../../../code-block-CKLCdWtP.cjs');
11
11
  const codeEditor = require('../../../../code-editor-CH8c-KF1.cjs');
12
12
  const icons_ToolCoinIcon = require('../../../../icons/ToolCoinIcon.cjs.js');
13
13
  const utils_formatting = require('../../../../utils/formatting.cjs.js');
@@ -3,7 +3,7 @@ import { useState, useEffect } from 'react';
3
3
  import { SectionLabel } from '../../components/section-label.es.js';
4
4
  import { ToolApprovalBadge } from './tool-approval-badge.es.js';
5
5
  import { C as Code } from '../../../../code-DAXWNzvf.js';
6
- import { C as CodeBlock } from '../../../../code-block-vvYFcnqm.js';
6
+ import { C as CodeBlock } from '../../../../code-block-BzUcNWrb.js';
7
7
  import { C as CodeEditor } from '../../../../code-editor-B_v1EfzX.js';
8
8
  import { ToolCoinIcon } from '../../../../icons/ToolCoinIcon.es.js';
9
9
  import { formatTypeScript } from '../../../../utils/formatting.es.js';
@@ -8,7 +8,7 @@ const domains_chat_tools_badges_workspaceDataParts = require('./workspace-data-p
8
8
  const domains_chat_tools_badges_workspaceLink = require('./workspace-link.cjs.js');
9
9
  const domains_chat_tools_badges_awaitsToolApproval = require('./awaits-tool-approval.cjs.js');
10
10
  const domains_chat_tools_badges_toolApprovalBadge = require('./tool-approval-badge.cjs.js');
11
- const toolCallArguments = require('../../../../tool-call-arguments-DyukJmhY.cjs');
11
+ const toolCallArguments = require('../../../../tool-call-arguments-CK3kQ_FX.cjs');
12
12
  const toolCallOutput = require('../../../../tool-call-output-xx1drXqO.cjs');
13
13
  const toolPresentation = require('../../../../tool-presentation-WLS6d1ws.cjs');
14
14
  const Txt = require('../../../../Txt-DXjXpX9r.cjs');