@mastra/playground-ui 62.0.0 → 63.0.0-alpha.1

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 (473) hide show
  1. package/dist/alert-dialog-R9z2SJLl.js +40 -0
  2. package/dist/alert-dialog-R9z2SJLl.js.map +1 -0
  3. package/dist/alert-dialog-j626w-Qb.cjs +42 -0
  4. package/dist/alert-dialog-j626w-Qb.cjs.map +1 -0
  5. package/dist/{ask-user-card-xR8YiiQa.js → ask-user-card-CwKfl6M2.js} +5 -6
  6. package/dist/{ask-user-card-xR8YiiQa.js.map → ask-user-card-CwKfl6M2.js.map} +1 -1
  7. package/dist/{ask-user-card-40a18Qea.cjs → ask-user-card-g8cqh8KI.cjs} +1 -2
  8. package/dist/{ask-user-card-40a18Qea.cjs.map → ask-user-card-g8cqh8KI.cjs.map} +1 -1
  9. package/dist/{checkbox-mmR3rD2j.js → checkbox-B3tvJLCl.js} +2 -2
  10. package/dist/{checkbox-mmR3rD2j.js.map → checkbox-B3tvJLCl.js.map} +1 -1
  11. package/dist/{code-block-BQZUoOfS.js → code-block-9sT-CaoF.js} +2 -2
  12. package/dist/{code-block-BQZUoOfS.js.map → code-block-9sT-CaoF.js.map} +1 -1
  13. package/dist/{code-editor-D69saH4C.js → code-editor-DgfDaPAD.js} +2 -2
  14. package/dist/{code-editor-D69saH4C.js.map → code-editor-DgfDaPAD.js.map} +1 -1
  15. package/dist/{combobox-DDUIREaG.js → combobox-DJu0ggNa.js} +2 -2
  16. package/dist/{combobox-DDUIREaG.js.map → combobox-DJu0ggNa.js.map} +1 -1
  17. package/dist/{command-Cx5QAS4E.cjs → command-DbZ6CSAy.cjs} +3 -3
  18. package/dist/command-DbZ6CSAy.cjs.map +1 -0
  19. package/dist/{command-B141Sxts.js → command-DtIlcv-t.js} +3 -3
  20. package/dist/command-DtIlcv-t.js.map +1 -0
  21. package/dist/components/AlertDialog.cjs.js +1 -1
  22. package/dist/components/AlertDialog.es.js +1 -1
  23. package/dist/components/Checkbox.es.js +1 -1
  24. package/dist/components/CodeBlock.es.js +1 -1
  25. package/dist/components/CodeEditor.es.js +1 -1
  26. package/dist/components/Combobox.es.js +1 -1
  27. package/dist/components/Command.cjs.js +1 -1
  28. package/dist/components/Command.es.js +1 -1
  29. package/dist/components/CommandPalette.cjs.js +1 -1
  30. package/dist/components/CommandPalette.es.js +1 -1
  31. package/dist/components/Comment.cjs.js +0 -1
  32. package/dist/components/Comment.cjs.js.map +1 -1
  33. package/dist/components/Comment.es.js +2 -3
  34. package/dist/components/Comment.es.js.map +1 -1
  35. package/dist/components/DataCodeSection.cjs.js +1 -1
  36. package/dist/components/DataCodeSection.es.js +1 -1
  37. package/dist/components/DataList.cjs.js +15 -17
  38. package/dist/components/DataList.cjs.js.map +1 -1
  39. package/dist/components/DataList.es.js +4 -5
  40. package/dist/components/DataList.es.js.map +1 -1
  41. package/dist/components/DataPanel.cjs.js +1 -1
  42. package/dist/components/DataPanel.es.js +1 -1
  43. package/dist/components/DateTimePicker.cjs.js +0 -1
  44. package/dist/components/DateTimePicker.cjs.js.map +1 -1
  45. package/dist/components/DateTimePicker.es.js +3 -4
  46. package/dist/components/DateTimePicker.es.js.map +1 -1
  47. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  48. package/dist/components/DateTimeRangePicker.es.js +1 -1
  49. package/dist/components/Dialog.cjs.js +2 -2
  50. package/dist/components/Dialog.es.js +2 -2
  51. package/dist/components/Drawer.cjs.js +1 -1
  52. package/dist/components/Drawer.es.js +1 -1
  53. package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -2
  54. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  55. package/dist/components/EnvironmentVariablesEditor.es.js +3 -4
  56. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  57. package/dist/components/Field.es.js +2 -2
  58. package/dist/components/FilterBar.cjs.js +2 -2
  59. package/dist/components/FilterBar.cjs.js.map +1 -1
  60. package/dist/components/FilterBar.es.js +3 -3
  61. package/dist/components/FilterBar.es.js.map +1 -1
  62. package/dist/components/FormFieldBlocks.es.js +2 -2
  63. package/dist/components/Input.es.js +1 -1
  64. package/dist/components/InputGroup.es.js +1 -1
  65. package/dist/components/InputNumber.es.js +1 -1
  66. package/dist/components/JSONSchemaForm.cjs.js +0 -1
  67. package/dist/components/JSONSchemaForm.cjs.js.map +1 -1
  68. package/dist/components/JSONSchemaForm.es.js +4 -5
  69. package/dist/components/JSONSchemaForm.es.js.map +1 -1
  70. package/dist/components/ListSearch.cjs.js +1 -1
  71. package/dist/components/ListSearch.es.js +1 -1
  72. package/dist/components/LogsDataList.cjs.js +5 -2
  73. package/dist/components/LogsDataList.cjs.js.map +1 -1
  74. package/dist/components/LogsDataList.es.js +5 -2
  75. package/dist/components/LogsDataList.es.js.map +1 -1
  76. package/dist/components/MarkdownRenderer.es.js +1 -1
  77. package/dist/components/PropertyFilter.cjs.js +0 -1
  78. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  79. package/dist/components/PropertyFilter.es.js +4 -5
  80. package/dist/components/PropertyFilter.es.js.map +1 -1
  81. package/dist/components/RadioGroup.es.js +1 -1
  82. package/dist/components/RuleBuilder.es.js +2 -2
  83. package/dist/components/SavedViews.cjs.js +1 -1
  84. package/dist/components/SavedViews.es.js +1 -1
  85. package/dist/components/SearchInput.cjs.js +1 -1
  86. package/dist/components/SearchInput.es.js +1 -1
  87. package/dist/components/Section.cjs.js +1 -1
  88. package/dist/components/Section.es.js +1 -1
  89. package/dist/components/SegmentedControl.es.js +1 -1
  90. package/dist/components/Select.es.js +1 -1
  91. package/dist/components/SideDialog.cjs.js +1 -1
  92. package/dist/components/SideDialog.es.js +1 -1
  93. package/dist/components/Sidebar.cjs.js +2 -2
  94. package/dist/components/Sidebar.es.js +3 -3
  95. package/dist/components/Switch.es.js +1 -1
  96. package/dist/components/ThemeToggle.es.js +1 -1
  97. package/dist/components/Workflow.cjs.js +2 -2
  98. package/dist/components/Workflow.es.js +3 -3
  99. package/dist/components/ai/activity.es.js +1 -1
  100. package/dist/components/ai/ask-user.cjs.js +1 -1
  101. package/dist/components/ai/ask-user.es.js +1 -1
  102. package/dist/components/ai/plan.es.js +1 -1
  103. package/dist/components/ai/tool-approval.es.js +1 -1
  104. package/dist/components/ai/tool-call.es.js +1 -1
  105. package/dist/{data-code-section-zG2S1MPX.js → data-code-section-BGLC-hxm.js} +3 -3
  106. package/dist/{data-code-section-zG2S1MPX.js.map → data-code-section-BGLC-hxm.js.map} +1 -1
  107. package/dist/{data-code-section-hVbIXLNC.cjs → data-code-section-BTRNa1SD.cjs} +3 -3
  108. package/dist/{data-code-section-hVbIXLNC.cjs.map → data-code-section-BTRNa1SD.cjs.map} +1 -1
  109. package/dist/{data-list-top-BJCC62oy.js → data-list-DDGpWucH.js} +333 -6
  110. package/dist/data-list-DDGpWucH.js.map +1 -0
  111. package/dist/{data-list-top-Ds-NWyPO.cjs → data-list-_yDPF5wR.cjs} +339 -13
  112. package/dist/data-list-_yDPF5wR.cjs.map +1 -0
  113. package/dist/{data-list-skeleton-BmsDYJrA.js → data-list-skeleton-CJFwZBlW.js} +2 -2
  114. package/dist/{data-list-skeleton-BmsDYJrA.js.map → data-list-skeleton-CJFwZBlW.js.map} +1 -1
  115. package/dist/{data-list-skeleton-CfVsXhx1.cjs → data-list-skeleton-maUWF7Ri.cjs} +6 -6
  116. package/dist/{data-list-skeleton-CfVsXhx1.cjs.map → data-list-skeleton-maUWF7Ri.cjs.map} +1 -1
  117. package/dist/{data-panel-BLqydW68.js → data-panel-DfVGx0Ea.js} +3 -3
  118. package/dist/{data-panel-BLqydW68.js.map → data-panel-DfVGx0Ea.js.map} +1 -1
  119. package/dist/{data-panel-BdeebdMA.cjs → data-panel-Dhg7s3fD.cjs} +4 -4
  120. package/dist/{data-panel-BdeebdMA.cjs.map → data-panel-Dhg7s3fD.cjs.map} +1 -1
  121. package/dist/{date-time-range-picker-BvRPfy1i.cjs → date-time-range-picker-BNaXCa7r.cjs} +1 -2
  122. package/dist/{date-time-range-picker-BvRPfy1i.cjs.map → date-time-range-picker-BNaXCa7r.cjs.map} +1 -1
  123. package/dist/{date-time-range-picker-CIfaXUuy.js → date-time-range-picker-C5x_33hB.js} +3 -4
  124. package/dist/{date-time-range-picker-CIfaXUuy.js.map → date-time-range-picker-C5x_33hB.js.map} +1 -1
  125. package/dist/{dialog-wL-fuFON.cjs → dialog-DQI9ChYf.cjs} +74 -37
  126. package/dist/dialog-DQI9ChYf.cjs.map +1 -0
  127. package/dist/{dialog-BYsQZGIj.js → dialog-DlZmNahd.js} +75 -35
  128. package/dist/dialog-DlZmNahd.js.map +1 -0
  129. package/dist/{dialog-action-B-pF99m0.js → dialog-action-c4nfPomF.js} +2 -2
  130. package/dist/{dialog-action-B-pF99m0.js.map → dialog-action-c4nfPomF.js.map} +1 -1
  131. package/dist/{dialog-action-CcMhvjM-.cjs → dialog-action-gdo9CwUv.cjs} +2 -2
  132. package/dist/{dialog-action-CcMhvjM-.cjs.map → dialog-action-gdo9CwUv.cjs.map} +1 -1
  133. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +1 -1
  134. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +1 -1
  135. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
  136. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +2 -2
  137. package/dist/domains/chat/messages/dataset-save-action.cjs.js +2 -3
  138. package/dist/domains/chat/messages/dataset-save-action.cjs.js.map +1 -1
  139. package/dist/domains/chat/messages/dataset-save-action.es.js +5 -6
  140. package/dist/domains/chat/messages/dataset-save-action.es.js.map +1 -1
  141. package/dist/domains/chat/messages/message-row.cjs.js +0 -1
  142. package/dist/domains/chat/messages/message-row.cjs.js.map +1 -1
  143. package/dist/domains/chat/messages/message-row.es.js +1 -2
  144. package/dist/domains/chat/messages/message-row.es.js.map +1 -1
  145. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  146. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  147. package/dist/domains/chat/messages/skill-message.es.js +1 -1
  148. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  149. package/dist/domains/chat/tools/badges/agent-badge.es.js +2 -2
  150. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  151. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  152. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +1 -1
  153. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +2 -2
  154. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  155. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
  156. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
  157. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  158. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  159. package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
  160. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -2
  161. package/dist/domains/chat/tools/badges/workflow-badge.es.js +3 -3
  162. package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
  163. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  164. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +1 -2
  165. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js.map +1 -1
  166. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -5
  167. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js.map +1 -1
  168. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  169. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  170. package/dist/domains/logs/components/logs-list-view.cjs.js +3 -2
  171. package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
  172. package/dist/domains/logs/components/logs-list-view.es.js +3 -2
  173. package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
  174. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  175. package/dist/domains/memory/components/observation-detail-view.cjs.js +0 -1
  176. package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
  177. package/dist/domains/memory/components/observation-detail-view.es.js +2 -3
  178. package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
  179. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  180. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  181. package/dist/domains/metrics/drilldown.cjs.js +1 -1
  182. package/dist/domains/metrics/drilldown.es.js +1 -1
  183. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +1 -2
  184. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +1 -1
  185. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -5
  186. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +1 -1
  187. package/dist/domains/request-context/components/request-context-label.cjs.js +0 -1
  188. package/dist/domains/request-context/components/request-context-label.cjs.js.map +1 -1
  189. package/dist/domains/request-context/components/request-context-label.es.js +1 -2
  190. package/dist/domains/request-context/components/request-context-label.es.js.map +1 -1
  191. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  192. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  193. package/dist/domains/scores/components/span-scoring.cjs.js +2 -2
  194. package/dist/domains/scores/components/span-scoring.es.js +3 -3
  195. package/dist/domains/scores/components/trace-scores-tab.cjs.js +2 -1
  196. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  197. package/dist/domains/scores/components/trace-scores-tab.es.js +2 -1
  198. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  199. package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
  200. package/dist/domains/traces/components/feedback-thread.es.js +2 -2
  201. package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -2
  202. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  203. package/dist/domains/traces/components/span-data-panel-view.es.js +1 -2
  204. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  205. package/dist/domains/traces/components/span-details-view.cjs.js +0 -1
  206. package/dist/domains/traces/components/span-details-view.cjs.js.map +1 -1
  207. package/dist/domains/traces/components/span-details-view.es.js +0 -1
  208. package/dist/domains/traces/components/span-details-view.es.js.map +1 -1
  209. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  210. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  211. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  212. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  213. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  214. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  215. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  216. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
  217. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  218. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  219. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  220. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  221. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +0 -2
  222. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  223. package/dist/domains/traces/components/thread-view-by-trace.es.js +0 -2
  224. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  225. package/dist/domains/traces/components/trace-columns-menu.cjs.js +2 -3
  226. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  227. package/dist/domains/traces/components/trace-columns-menu.es.js +4 -5
  228. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  229. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
  230. package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
  231. package/dist/domains/traces/components/trace-data-panel.cjs.js +3 -4
  232. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  233. package/dist/domains/traces/components/trace-data-panel.es.js +3 -4
  234. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  235. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  236. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  237. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  238. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  239. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  240. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  241. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +3 -3
  242. package/dist/domains/traces/components/trace-time-range-chip.es.js +3 -3
  243. package/dist/domains/traces/components/traces-list-view.cjs.js +4 -5
  244. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  245. package/dist/domains/traces/components/traces-list-view.es.js +3 -4
  246. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  247. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +4 -1
  248. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  249. package/dist/domains/traces/components/traces-page-skeleton.es.js +4 -1
  250. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  251. package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js +1 -1
  252. package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js +1 -1
  253. package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +1 -1
  254. package/dist/domains/traces/hooks/use-trace-url-state.es.js +1 -1
  255. package/dist/domains/traces/trace-filters.cjs.js +1 -1
  256. package/dist/domains/traces/trace-filters.es.js +1 -1
  257. package/dist/domains/traces/trace-query-filters.cjs.js +1 -1
  258. package/dist/domains/traces/trace-query-filters.es.js +1 -1
  259. package/dist/domains/traces.cjs.js +1 -1
  260. package/dist/domains/traces.es.js +1 -1
  261. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  262. package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
  263. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  264. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  265. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +1 -1
  266. package/dist/domains/workflows/runs/workflow-run-list.es.js +1 -1
  267. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  268. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  269. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +1 -1
  270. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +0 -1
  271. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js.map +1 -1
  272. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +2 -3
  273. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js.map +1 -1
  274. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +0 -1
  275. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js.map +1 -1
  276. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +2 -3
  277. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js.map +1 -1
  278. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
  279. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  280. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  281. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  282. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +0 -1
  283. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js.map +1 -1
  284. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +2 -3
  285. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js.map +1 -1
  286. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +1 -1
  287. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
  288. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +0 -2
  289. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
  290. package/dist/domains/workflows/workflow/workflow-input-data.es.js +0 -2
  291. package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
  292. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +1 -1
  293. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +2 -2
  294. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
  295. package/dist/domains/workflows/workflow/workflow-run-data.es.js +1 -1
  296. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  297. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +1 -1
  298. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +2 -2
  299. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
  300. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +0 -1
  301. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js.map +1 -1
  302. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +2 -3
  303. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js.map +1 -1
  304. package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
  305. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +3 -4
  306. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js.map +1 -1
  307. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +6 -7
  308. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js.map +1 -1
  309. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +1 -1
  310. package/dist/domains/workspace/components/workspace-create-directory.es.js +2 -2
  311. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  312. package/dist/domains/workspace/components/workspace-search.es.js +1 -1
  313. package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
  314. package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
  315. package/dist/{drawer-B-t4ydEh.js → drawer-CZlqOjd2.js} +17 -7
  316. package/dist/{drawer-B-t4ydEh.js.map → drawer-CZlqOjd2.js.map} +1 -1
  317. package/dist/{drawer-DE2b3eld.cjs → drawer-CeUYCG-S.cjs} +16 -6
  318. package/dist/{drawer-DE2b3eld.cjs.map → drawer-CeUYCG-S.cjs.map} +1 -1
  319. package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
  320. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  321. package/dist/ee/signals/components/entity-index-list.es.js +3 -1
  322. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  323. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +4 -2
  324. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  325. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +5 -3
  326. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  327. package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
  328. package/dist/ee/signals/noise-detail-panel.es.js +1 -1
  329. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -3
  330. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
  331. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +4 -5
  332. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
  333. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  334. package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
  335. package/dist/ee/signals/theme-detail-panel.es.js +1 -1
  336. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
  337. package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
  338. package/dist/{field-B89BEZg4.js → field-Bc8Ewf_M.js} +2 -2
  339. package/dist/{field-B89BEZg4.js.map → field-Bc8Ewf_M.js.map} +1 -1
  340. package/dist/{field-control-aria-DB6y41tQ.js → field-control-aria-CCJ4-mUe.js} +2 -2
  341. package/dist/{field-control-aria-DB6y41tQ.js.map → field-control-aria-CCJ4-mUe.js.map} +1 -1
  342. package/dist/{filter-bar-chip-uPmGVzPR.cjs → filter-bar-chip-C_371aon.cjs} +35 -6
  343. package/dist/filter-bar-chip-C_371aon.cjs.map +1 -0
  344. package/dist/{filter-bar-chip-Bu27EjSO.js → filter-bar-chip-Dc6phYqZ.js} +35 -6
  345. package/dist/filter-bar-chip-Dc6phYqZ.js.map +1 -0
  346. package/dist/hooks/use-is-mobile.cjs.js +14 -10
  347. package/dist/hooks/use-is-mobile.cjs.js.map +1 -1
  348. package/dist/hooks/use-is-mobile.es.js +15 -11
  349. package/dist/hooks/use-is-mobile.es.js.map +1 -1
  350. package/dist/{input-DQFUjtnh.js → input-Ds171RJ5.js} +2 -2
  351. package/dist/{input-DQFUjtnh.js.map → input-Ds171RJ5.js.map} +1 -1
  352. package/dist/{input-group-BWsGYnES.js → input-group-Cxv64rPB.js} +2 -2
  353. package/dist/{input-group-BWsGYnES.js.map → input-group-Cxv64rPB.js.map} +1 -1
  354. package/dist/layout/tabbed-container.cjs.js +2 -2
  355. package/dist/layout/tabbed-container.es.js +3 -3
  356. package/dist/lib/form/components/boolean-field.cjs.js +0 -1
  357. package/dist/lib/form/components/boolean-field.cjs.js.map +1 -1
  358. package/dist/lib/form/components/boolean-field.es.js +2 -3
  359. package/dist/lib/form/components/boolean-field.es.js.map +1 -1
  360. package/dist/lib/form/components/date-field.es.js +1 -1
  361. package/dist/lib/form/components/field-wrapper.cjs.js +0 -1
  362. package/dist/lib/form/components/field-wrapper.cjs.js.map +1 -1
  363. package/dist/lib/form/components/field-wrapper.es.js +1 -2
  364. package/dist/lib/form/components/field-wrapper.es.js.map +1 -1
  365. package/dist/lib/form/components/number-field.es.js +1 -1
  366. package/dist/lib/form/components/record-field.es.js +1 -1
  367. package/dist/lib/form/components/select-field.es.js +1 -1
  368. package/dist/{list-search-xHadeMHl.cjs → list-search-C3yXcTRO.cjs} +2 -2
  369. package/dist/{list-search-xHadeMHl.cjs.map → list-search-C3yXcTRO.cjs.map} +1 -1
  370. package/dist/{list-search-BNnMwbpv.js → list-search-CmPRFDsn.js} +2 -2
  371. package/dist/{list-search-BNnMwbpv.js.map → list-search-CmPRFDsn.js.map} +1 -1
  372. package/dist/{logs-data-list-DfuVMd6f.cjs → logs-data-list-Bf_vIsFb.cjs} +21 -22
  373. package/dist/{logs-data-list-DfuVMd6f.cjs.map → logs-data-list-Bf_vIsFb.cjs.map} +1 -1
  374. package/dist/{logs-data-list-C262Be3o.js → logs-data-list-Cudh6b-c.js} +2 -3
  375. package/dist/{logs-data-list-C262Be3o.js.map → logs-data-list-Cudh6b-c.js.map} +1 -1
  376. package/dist/{markdown-renderer-D5Wjk1Cs.js → markdown-renderer-Cly6VMDr.js} +2 -2
  377. package/dist/{markdown-renderer-D5Wjk1Cs.js.map → markdown-renderer-Cly6VMDr.js.map} +1 -1
  378. package/dist/new/settings.cjs.js +1 -1
  379. package/dist/new/settings.es.js +1 -1
  380. package/dist/{plan-Cl3-JgbI.js → plan-DIbhFPRL.js} +2 -2
  381. package/dist/{plan-Cl3-JgbI.js.map → plan-DIbhFPRL.js.map} +1 -1
  382. package/dist/primitives/textarea-control.es.js +1 -1
  383. package/dist/{property-filter-applied-CZLzY0OH.js → property-filter-applied-DXH81ffT.js} +2 -2
  384. package/dist/{property-filter-applied-CZLzY0OH.js.map → property-filter-applied-DXH81ffT.js.map} +1 -1
  385. package/dist/{radio-group-Bk52hNNb.js → radio-group-C2zsCipq.js} +2 -2
  386. package/dist/{radio-group-Bk52hNNb.js.map → radio-group-C2zsCipq.js.map} +1 -1
  387. package/dist/{reasoning-activity-CIuVSAGA.js → reasoning-activity-B1r4JQxm.js} +2 -2
  388. package/dist/{reasoning-activity-CIuVSAGA.js.map → reasoning-activity-B1r4JQxm.js.map} +1 -1
  389. package/dist/resize/panel-drawer.cjs.js +1 -1
  390. package/dist/resize/panel-drawer.es.js +1 -1
  391. package/dist/{search-input-fqSrRTLU.js → search-input-D23h16CB.js} +3 -4
  392. package/dist/{search-input-fqSrRTLU.js.map → search-input-D23h16CB.js.map} +1 -1
  393. package/dist/{search-input-UtTJMjJu.cjs → search-input-DbEE2zEz.cjs} +1 -2
  394. package/dist/{search-input-UtTJMjJu.cjs.map → search-input-DbEE2zEz.cjs.map} +1 -1
  395. package/dist/{section-DhZbtWhu.cjs → section-CdaSS9M7.cjs} +2 -2
  396. package/dist/{section-DhZbtWhu.cjs.map → section-CdaSS9M7.cjs.map} +1 -1
  397. package/dist/{section-Dq6aFxlH.js → section-DcjTdrqz.js} +2 -2
  398. package/dist/{section-Dq6aFxlH.js.map → section-DcjTdrqz.js.map} +1 -1
  399. package/dist/{segmented-control-CUnvFStD.js → segmented-control-BfY7F0NZ.js} +2 -2
  400. package/dist/{segmented-control-CUnvFStD.js.map → segmented-control-BfY7F0NZ.js.map} +1 -1
  401. package/dist/{select-N2lgBRsg.js → select-BGAiIHnS.js} +2 -2
  402. package/dist/{select-N2lgBRsg.js.map → select-BGAiIHnS.js.map} +1 -1
  403. package/dist/{settings-row-CwZ3JffC.cjs → settings-row-rOI4yGvi.cjs} +1 -2
  404. package/dist/{settings-row-CwZ3JffC.cjs.map → settings-row-rOI4yGvi.cjs.map} +1 -1
  405. package/dist/{settings-row-gpwIVAMN.js → settings-row-ylIw4rfC.js} +2 -3
  406. package/dist/{settings-row-gpwIVAMN.js.map → settings-row-ylIw4rfC.js.map} +1 -1
  407. package/dist/{side-dialog-BIyr498B.js → side-dialog-CB_wrLtE.js} +3 -3
  408. package/dist/{side-dialog-BIyr498B.js.map → side-dialog-CB_wrLtE.js.map} +1 -1
  409. package/dist/{side-dialog-BT2xywA8.cjs → side-dialog-OPXvmRDA.cjs} +3 -3
  410. package/dist/{side-dialog-BT2xywA8.cjs.map → side-dialog-OPXvmRDA.cjs.map} +1 -1
  411. package/dist/{span-payload-primitives-WqYTBiGx.js → span-payload-primitives-Cixom2Py.js} +2 -2
  412. package/dist/{span-payload-primitives-WqYTBiGx.js.map → span-payload-primitives-Cixom2Py.js.map} +1 -1
  413. package/dist/src/ds/components/AlertDialog/alert-dialog.d.ts +8 -11
  414. package/dist/src/ds/components/Dialog/dialog-shell.d.ts +1 -0
  415. package/dist/src/ds/components/Dialog/dialog.d.ts +9 -3
  416. package/dist/src/ds/components/FilterBar/filter-bar-tree.d.ts +9 -1
  417. package/dist/src/ds/components/FilterBar/types.d.ts +6 -0
  418. package/dist/style.css +17 -4
  419. package/dist/{switch-DiSlsWUt.js → switch-BBeMfeQ2.js} +2 -2
  420. package/dist/{switch-DiSlsWUt.js.map → switch-BBeMfeQ2.js.map} +1 -1
  421. package/dist/{time-picker-J7GaNaEd.js → time-picker-Bo6GJcmz.js} +2 -2
  422. package/dist/{time-picker-J7GaNaEd.js.map → time-picker-Bo6GJcmz.js.map} +1 -1
  423. package/dist/{tool-approval-nsbG8-qI.js → tool-approval-BQ6sDvyS.js} +2 -2
  424. package/dist/{tool-approval-nsbG8-qI.js.map → tool-approval-BQ6sDvyS.js.map} +1 -1
  425. package/dist/{tool-call-arguments-RKyYP3xh.js → tool-call-arguments-B86JP3Dy.js} +2 -2
  426. package/dist/{tool-call-arguments-RKyYP3xh.js.map → tool-call-arguments-B86JP3Dy.js.map} +1 -1
  427. package/dist/{tool-card-BtPh44u6.js → tool-card-C8IrtMuQ.js} +2 -2
  428. package/dist/{tool-card-BtPh44u6.js.map → tool-card-C8IrtMuQ.js.map} +1 -1
  429. package/dist/{trace-filters-B9myZP-l.cjs → trace-filters-Bh4dVNPX.cjs} +16 -20
  430. package/dist/trace-filters-Bh4dVNPX.cjs.map +1 -0
  431. package/dist/{trace-filters-Cvra0Aum.js → trace-filters-C71gmCq4.js} +16 -20
  432. package/dist/trace-filters-C71gmCq4.js.map +1 -0
  433. package/dist/{traces-data-list-Cf_PpmSN.cjs → traces-data-list-DaFA1Ccg.cjs} +17 -19
  434. package/dist/{traces-data-list-Cf_PpmSN.cjs.map → traces-data-list-DaFA1Ccg.cjs.map} +1 -1
  435. package/dist/{traces-data-list-_mFOMw0U.js → traces-data-list-L_r2GAtr.js} +2 -4
  436. package/dist/{traces-data-list-_mFOMw0U.js.map → traces-data-list-L_r2GAtr.js.map} +1 -1
  437. package/dist/types-CIPrYAzY.js.map +1 -1
  438. package/dist/types-Ns4ZNp-g.cjs.map +1 -1
  439. package/dist/{use-workflow-graph-runtime-CAyNWN_Z.js → use-workflow-graph-runtime-DS7eWso7.js} +2 -2
  440. package/dist/{use-workflow-graph-runtime-CAyNWN_Z.js.map → use-workflow-graph-runtime-DS7eWso7.js.map} +1 -1
  441. package/dist/{workflow-code-dialog-content-CNDoMFAV.js → workflow-code-dialog-content-BUCZZoKf.js} +2 -2
  442. package/dist/{workflow-code-dialog-content-CNDoMFAV.js.map → workflow-code-dialog-content-BUCZZoKf.js.map} +1 -1
  443. package/dist/{workflow-data-edge-view-CMdPlcQj.cjs → workflow-data-edge-view-BHvpuvmp.cjs} +2 -2
  444. package/dist/{workflow-data-edge-view-CMdPlcQj.cjs.map → workflow-data-edge-view-BHvpuvmp.cjs.map} +1 -1
  445. package/dist/{workflow-data-edge-view-DeX0gykV.js → workflow-data-edge-view-BIiMA9zg.js} +2 -2
  446. package/dist/{workflow-data-edge-view-DeX0gykV.js.map → workflow-data-edge-view-BIiMA9zg.js.map} +1 -1
  447. package/dist/{workflow-edge-data-button-CSeMH2Ky.cjs → workflow-edge-data-button-Cz2rcoDr.cjs} +2 -2
  448. package/dist/{workflow-edge-data-button-CSeMH2Ky.cjs.map → workflow-edge-data-button-Cz2rcoDr.cjs.map} +1 -1
  449. package/dist/{workflow-edge-data-button-DfyJCI6R.js → workflow-edge-data-button-D5oK4NS5.js} +3 -3
  450. package/dist/{workflow-edge-data-button-DfyJCI6R.js.map → workflow-edge-data-button-D5oK4NS5.js.map} +1 -1
  451. package/package.json +9 -9
  452. package/dist/alert-dialog-BJlS-v3z.cjs +0 -55
  453. package/dist/alert-dialog-BJlS-v3z.cjs.map +0 -1
  454. package/dist/alert-dialog-BvzVYar8.js +0 -53
  455. package/dist/alert-dialog-BvzVYar8.js.map +0 -1
  456. package/dist/command-B141Sxts.js.map +0 -1
  457. package/dist/command-Cx5QAS4E.cjs.map +0 -1
  458. package/dist/data-list-DkVOwk8l.cjs +0 -142
  459. package/dist/data-list-DkVOwk8l.cjs.map +0 -1
  460. package/dist/data-list-Dv2lP-dU.js +0 -138
  461. package/dist/data-list-Dv2lP-dU.js.map +0 -1
  462. package/dist/data-list-spacer-DEMquKp9.js +0 -209
  463. package/dist/data-list-spacer-DEMquKp9.js.map +0 -1
  464. package/dist/data-list-spacer-pXP8xDlg.cjs +0 -218
  465. package/dist/data-list-spacer-pXP8xDlg.cjs.map +0 -1
  466. package/dist/data-list-top-BJCC62oy.js.map +0 -1
  467. package/dist/data-list-top-Ds-NWyPO.cjs.map +0 -1
  468. package/dist/dialog-BYsQZGIj.js.map +0 -1
  469. package/dist/dialog-wL-fuFON.cjs.map +0 -1
  470. package/dist/filter-bar-chip-Bu27EjSO.js.map +0 -1
  471. package/dist/filter-bar-chip-uPmGVzPR.cjs.map +0 -1
  472. package/dist/trace-filters-B9myZP-l.cjs.map +0 -1
  473. package/dist/trace-filters-Cvra0Aum.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { a as CommandDialog, d as CommandInput, e as CommandItem, h as CommandShortcut, f as CommandList } from '../command-B141Sxts.js';
2
+ import { a as CommandDialog, d as CommandInput, e as CommandItem, h as CommandShortcut, f as CommandList } from '../command-DtIlcv-t.js';
3
3
  import { K as Kbd } from '../kbd-DECuVAC9.js';
4
4
  import { S as ScrollArea, a as ScrollAreaViewport } from '../scroll-area-BywIlj3F.js';
5
5
  import { T as Txt } from '../Txt-BuzYj7Vy.js';
@@ -12,7 +12,6 @@ const inputGroup = require('../input-group-Cy7k5JRg.cjs');
12
12
  const utils_cn = require('../cn-TqD01zH-.cjs');
13
13
  const Button = require('../Button-BfZzgZrA.cjs');
14
14
  const field = require('../field-D1SVMPMz.cjs');
15
- require('../field-control-aria-WzMGs0A4.cjs');
16
15
  const primitives_textareaControl = require('../primitives/textarea-control.cjs.js');
17
16
  const Txt = require('../Txt-DXjXpX9r.cjs');
18
17
 
@@ -1 +1 @@
1
- {"version":3,"file":"Comment.cjs.js","sources":["../../src/ds/components/Comment/comment-arrival.tsx","../../src/ds/components/Comment/comment-composer.tsx","../../src/ds/components/Comment/comment-editor.tsx","../../src/ds/components/Comment/comment-quote.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { ArrivalScope, useWatched } from '@/ds/components/Arrival';\n\nimport './comment-arrival.css';\n\n/** A comment the reader watched land rises into place; one that was already there just appears. */\nexport function CommentArrival({ children }: { children: ReactNode }) {\n const watched = useWatched();\n\n return (\n <div data-slot=\"comment-arrival\" className={watched ? 'mastra-comment-arriving' : undefined}>\n <ArrivalScope>{children}</ArrivalScope>\n </div>\n );\n}\n","import { ArrowUp } from 'lucide-react';\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nimport { useCommentVariant } from './comment-context';\nimport type { CommentVariant } from './comment-context';\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from '@/ds/components/InputGroup';\nimport type { InputGroupButtonProps, InputGroupInputProps } from '@/ds/components/InputGroup';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\nexport type CommentComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport const CommentComposer = forwardRef<HTMLFormElement, CommentComposerProps>(({ className, ...props }, ref) => (\n <form ref={ref} data-slot=\"comment-composer\" className={cn('flex w-full items-center gap-2', className)} {...props} />\n));\nCommentComposer.displayName = 'CommentComposer';\n\nconst composerSize: Record<CommentVariant, ControlSize> = {\n default: 'md',\n embed: 'sm',\n thread: 'md',\n};\n\nexport interface CommentComposerInputProps extends InputGroupInputProps {\n /** Layout classes for the surrounding InputGroup. */\n groupClassName?: string;\n children?: ReactNode;\n}\n\nexport const CommentComposerInput = forwardRef<HTMLInputElement, CommentComposerInputProps>(\n ({ groupClassName, children, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <InputGroup size={composerSize[variant]} className={groupClassName}>\n <InputGroupInput ref={ref} data-slot=\"comment-composer-input\" {...props} />\n {children}\n </InputGroup>\n );\n },\n);\nCommentComposerInput.displayName = 'CommentComposerInput';\n\nexport type CommentComposerSendProps = Omit<InputGroupButtonProps, 'children'>;\n\nexport const CommentComposerSend = forwardRef<HTMLButtonElement, CommentComposerSendProps>(\n ({ 'aria-label': ariaLabel = 'Send comment', type = 'submit', ...props }, ref) => (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton ref={ref} data-slot=\"comment-composer-send\" type={type} aria-label={ariaLabel} {...props}>\n <ArrowUp />\n </InputGroupButton>\n </InputGroupAddon>\n ),\n);\nCommentComposerSend.displayName = 'CommentComposerSend';\n","import { Check, X } from 'lucide-react';\nimport { useState } from 'react';\nimport type { KeyboardEvent } from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentEditorProps {\n initialBody: string;\n /** Handed the trimmed draft. Closing is the caller's call, so a save that failed keeps what was typed. */\n onSave: (body: string) => void;\n onClose: () => void;\n /** The caller's save in flight: the box locks until it settles. */\n isPending?: boolean;\n /** Why the caller's last save failed. */\n error?: string;\n 'aria-label'?: string;\n className?: string;\n}\n\n/** Owns the draft only; whether a save landed is the caller's mutation to report. */\nexport function CommentEditor({\n initialBody,\n onSave,\n onClose,\n isPending = false,\n error,\n 'aria-label': ariaLabel = 'Edit comment',\n className,\n}: CommentEditorProps) {\n const [draft, setDraft] = useState(initialBody);\n const body = draft.trim();\n const canSave = body.length > 0 && !isPending;\n\n const save = () => {\n if (!canSave) return;\n if (body === initialBody) {\n onClose();\n return;\n }\n onSave(body);\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n // An IME commit fires Enter mid-composition; acting on it would save half a word.\n if (event.nativeEvent.isComposing) return;\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n save();\n }\n };\n\n return (\n <Field invalid={Boolean(error)} data-slot=\"comment-editor\" className={cn('mt-1 flex flex-col gap-1.5', className)}>\n <div className=\"relative\">\n <TextareaControl\n value={draft}\n onChange={event => setDraft(event.target.value)}\n onKeyDown={onKeyDown}\n readOnly={isPending}\n aria-label={ariaLabel}\n rows={2}\n className=\"block field-sizing-content max-h-40 w-full resize-none overflow-y-auto rounded-lg border border-border bg-background px-2 pt-1.5 pb-9 text-caption text-foreground outline-none focus:border-border-strong\"\n />\n <div className=\"absolute inset-x-px bottom-px flex items-center justify-end gap-1 rounded-b-lg bg-background px-1.5 pt-1 pb-1.5\">\n <Button icon={<X />} type=\"button\" variant=\"ghost\" size=\"sm\" disabled={isPending} onClick={onClose}>\n Cancel\n </Button>\n <Button icon={<Check />} type=\"button\" size=\"sm\" disabled={!canSave} onClick={save}>\n {isPending ? 'Saving…' : 'Save'}\n </Button>\n </div>\n </div>\n <FieldError>{error}</FieldError>\n </Field>\n );\n}\n","import { X } from 'lucide-react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentQuoteProps {\n authorName?: string;\n quote: string;\n /** Given only while the quote is a draft the writer can still drop. */\n onDismiss?: () => void;\n className?: string;\n}\n\n/** The passage a reply answers, above the reply itself or inside the composer writing it. */\nexport function CommentQuote({ authorName, quote, onDismiss, className }: CommentQuoteProps) {\n return (\n <blockquote\n data-slot=\"comment-quote\"\n className={cn(\n 'm-0 flex min-w-0 gap-2 border-l-2 border-border-strong pl-2 text-caption text-muted-foreground',\n className,\n )}\n >\n <span className=\"min-w-0 flex-1\">\n {authorName ? (\n <Txt as=\"span\" variant=\"column\">\n {authorName}{' '}\n </Txt>\n ) : null}\n <span className=\"line-clamp-2 wrap-anywhere whitespace-pre-line\">{quote}</span>\n </span>\n {onDismiss ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Remove quote\"\n onClick={onDismiss}\n className=\"shrink-0\"\n >\n <X size={12} aria-hidden />\n </Button>\n ) : null}\n </blockquote>\n );\n}\n"],"names":["useWatched","jsx","ArrivalScope","forwardRef","cn","useCommentVariant","InputGroup","InputGroupInput","InputGroupAddon","InputGroupButton","ArrowUp","useState","jsxs","Field","TextareaControl","Button","X","Check","FieldError","Txt"],"mappings":"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"}
1
+ {"version":3,"file":"Comment.cjs.js","sources":["../../src/ds/components/Comment/comment-arrival.tsx","../../src/ds/components/Comment/comment-composer.tsx","../../src/ds/components/Comment/comment-editor.tsx","../../src/ds/components/Comment/comment-quote.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { ArrivalScope, useWatched } from '@/ds/components/Arrival';\n\nimport './comment-arrival.css';\n\n/** A comment the reader watched land rises into place; one that was already there just appears. */\nexport function CommentArrival({ children }: { children: ReactNode }) {\n const watched = useWatched();\n\n return (\n <div data-slot=\"comment-arrival\" className={watched ? 'mastra-comment-arriving' : undefined}>\n <ArrivalScope>{children}</ArrivalScope>\n </div>\n );\n}\n","import { ArrowUp } from 'lucide-react';\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nimport { useCommentVariant } from './comment-context';\nimport type { CommentVariant } from './comment-context';\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from '@/ds/components/InputGroup';\nimport type { InputGroupButtonProps, InputGroupInputProps } from '@/ds/components/InputGroup';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\nexport type CommentComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport const CommentComposer = forwardRef<HTMLFormElement, CommentComposerProps>(({ className, ...props }, ref) => (\n <form ref={ref} data-slot=\"comment-composer\" className={cn('flex w-full items-center gap-2', className)} {...props} />\n));\nCommentComposer.displayName = 'CommentComposer';\n\nconst composerSize: Record<CommentVariant, ControlSize> = {\n default: 'md',\n embed: 'sm',\n thread: 'md',\n};\n\nexport interface CommentComposerInputProps extends InputGroupInputProps {\n /** Layout classes for the surrounding InputGroup. */\n groupClassName?: string;\n children?: ReactNode;\n}\n\nexport const CommentComposerInput = forwardRef<HTMLInputElement, CommentComposerInputProps>(\n ({ groupClassName, children, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <InputGroup size={composerSize[variant]} className={groupClassName}>\n <InputGroupInput ref={ref} data-slot=\"comment-composer-input\" {...props} />\n {children}\n </InputGroup>\n );\n },\n);\nCommentComposerInput.displayName = 'CommentComposerInput';\n\nexport type CommentComposerSendProps = Omit<InputGroupButtonProps, 'children'>;\n\nexport const CommentComposerSend = forwardRef<HTMLButtonElement, CommentComposerSendProps>(\n ({ 'aria-label': ariaLabel = 'Send comment', type = 'submit', ...props }, ref) => (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton ref={ref} data-slot=\"comment-composer-send\" type={type} aria-label={ariaLabel} {...props}>\n <ArrowUp />\n </InputGroupButton>\n </InputGroupAddon>\n ),\n);\nCommentComposerSend.displayName = 'CommentComposerSend';\n","import { Check, X } from 'lucide-react';\nimport { useState } from 'react';\nimport type { KeyboardEvent } from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentEditorProps {\n initialBody: string;\n /** Handed the trimmed draft. Closing is the caller's call, so a save that failed keeps what was typed. */\n onSave: (body: string) => void;\n onClose: () => void;\n /** The caller's save in flight: the box locks until it settles. */\n isPending?: boolean;\n /** Why the caller's last save failed. */\n error?: string;\n 'aria-label'?: string;\n className?: string;\n}\n\n/** Owns the draft only; whether a save landed is the caller's mutation to report. */\nexport function CommentEditor({\n initialBody,\n onSave,\n onClose,\n isPending = false,\n error,\n 'aria-label': ariaLabel = 'Edit comment',\n className,\n}: CommentEditorProps) {\n const [draft, setDraft] = useState(initialBody);\n const body = draft.trim();\n const canSave = body.length > 0 && !isPending;\n\n const save = () => {\n if (!canSave) return;\n if (body === initialBody) {\n onClose();\n return;\n }\n onSave(body);\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n // An IME commit fires Enter mid-composition; acting on it would save half a word.\n if (event.nativeEvent.isComposing) return;\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n save();\n }\n };\n\n return (\n <Field invalid={Boolean(error)} data-slot=\"comment-editor\" className={cn('mt-1 flex flex-col gap-1.5', className)}>\n <div className=\"relative\">\n <TextareaControl\n value={draft}\n onChange={event => setDraft(event.target.value)}\n onKeyDown={onKeyDown}\n readOnly={isPending}\n aria-label={ariaLabel}\n rows={2}\n className=\"block field-sizing-content max-h-40 w-full resize-none overflow-y-auto rounded-lg border border-border bg-background px-2 pt-1.5 pb-9 text-caption text-foreground outline-none focus:border-border-strong\"\n />\n <div className=\"absolute inset-x-px bottom-px flex items-center justify-end gap-1 rounded-b-lg bg-background px-1.5 pt-1 pb-1.5\">\n <Button icon={<X />} type=\"button\" variant=\"ghost\" size=\"sm\" disabled={isPending} onClick={onClose}>\n Cancel\n </Button>\n <Button icon={<Check />} type=\"button\" size=\"sm\" disabled={!canSave} onClick={save}>\n {isPending ? 'Saving…' : 'Save'}\n </Button>\n </div>\n </div>\n <FieldError>{error}</FieldError>\n </Field>\n );\n}\n","import { X } from 'lucide-react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentQuoteProps {\n authorName?: string;\n quote: string;\n /** Given only while the quote is a draft the writer can still drop. */\n onDismiss?: () => void;\n className?: string;\n}\n\n/** The passage a reply answers, above the reply itself or inside the composer writing it. */\nexport function CommentQuote({ authorName, quote, onDismiss, className }: CommentQuoteProps) {\n return (\n <blockquote\n data-slot=\"comment-quote\"\n className={cn(\n 'm-0 flex min-w-0 gap-2 border-l-2 border-border-strong pl-2 text-caption text-muted-foreground',\n className,\n )}\n >\n <span className=\"min-w-0 flex-1\">\n {authorName ? (\n <Txt as=\"span\" variant=\"column\">\n {authorName}{' '}\n </Txt>\n ) : null}\n <span className=\"line-clamp-2 wrap-anywhere whitespace-pre-line\">{quote}</span>\n </span>\n {onDismiss ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Remove quote\"\n onClick={onDismiss}\n className=\"shrink-0\"\n >\n <X size={12} aria-hidden />\n </Button>\n ) : null}\n </blockquote>\n );\n}\n"],"names":["useWatched","jsx","ArrivalScope","forwardRef","cn","useCommentVariant","InputGroup","InputGroupInput","InputGroupAddon","InputGroupButton","ArrowUp","useState","jsxs","Field","TextareaControl","Button","X","Check","FieldError","Txt"],"mappings":"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"}
@@ -5,11 +5,10 @@ import { A as ArrivalScope } from '../arrival-613EpNtY.js';
5
5
  import { a as useWatched } from '../use-watched-CG9KoWl3.js';
6
6
  import { ArrowUp, X, Check } from 'lucide-react';
7
7
  import { forwardRef, useState } from 'react';
8
- import { I as InputGroup, c as InputGroupInput, a as InputGroupAddon, b as InputGroupButton } from '../input-group-BWsGYnES.js';
8
+ import { I as InputGroup, c as InputGroupInput, a as InputGroupAddon, b as InputGroupButton } from '../input-group-Cxv64rPB.js';
9
9
  import { c as cn } from '../cn-coERSHz5.js';
10
10
  import { B as Button } from '../Button-C8QDEN9j.js';
11
- import { F as Field, c as FieldError } from '../field-B89BEZg4.js';
12
- import '../field-control-aria-DB6y41tQ.js';
11
+ import { F as Field, c as FieldError } from '../field-Bc8Ewf_M.js';
13
12
  import { TextareaControl } from '../primitives/textarea-control.es.js';
14
13
  import { T as Txt } from '../Txt-BuzYj7Vy.js';
15
14
 
@@ -1 +1 @@
1
- {"version":3,"file":"Comment.es.js","sources":["../../src/ds/components/Comment/comment-arrival.tsx","../../src/ds/components/Comment/comment-composer.tsx","../../src/ds/components/Comment/comment-editor.tsx","../../src/ds/components/Comment/comment-quote.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { ArrivalScope, useWatched } from '@/ds/components/Arrival';\n\nimport './comment-arrival.css';\n\n/** A comment the reader watched land rises into place; one that was already there just appears. */\nexport function CommentArrival({ children }: { children: ReactNode }) {\n const watched = useWatched();\n\n return (\n <div data-slot=\"comment-arrival\" className={watched ? 'mastra-comment-arriving' : undefined}>\n <ArrivalScope>{children}</ArrivalScope>\n </div>\n );\n}\n","import { ArrowUp } from 'lucide-react';\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nimport { useCommentVariant } from './comment-context';\nimport type { CommentVariant } from './comment-context';\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from '@/ds/components/InputGroup';\nimport type { InputGroupButtonProps, InputGroupInputProps } from '@/ds/components/InputGroup';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\nexport type CommentComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport const CommentComposer = forwardRef<HTMLFormElement, CommentComposerProps>(({ className, ...props }, ref) => (\n <form ref={ref} data-slot=\"comment-composer\" className={cn('flex w-full items-center gap-2', className)} {...props} />\n));\nCommentComposer.displayName = 'CommentComposer';\n\nconst composerSize: Record<CommentVariant, ControlSize> = {\n default: 'md',\n embed: 'sm',\n thread: 'md',\n};\n\nexport interface CommentComposerInputProps extends InputGroupInputProps {\n /** Layout classes for the surrounding InputGroup. */\n groupClassName?: string;\n children?: ReactNode;\n}\n\nexport const CommentComposerInput = forwardRef<HTMLInputElement, CommentComposerInputProps>(\n ({ groupClassName, children, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <InputGroup size={composerSize[variant]} className={groupClassName}>\n <InputGroupInput ref={ref} data-slot=\"comment-composer-input\" {...props} />\n {children}\n </InputGroup>\n );\n },\n);\nCommentComposerInput.displayName = 'CommentComposerInput';\n\nexport type CommentComposerSendProps = Omit<InputGroupButtonProps, 'children'>;\n\nexport const CommentComposerSend = forwardRef<HTMLButtonElement, CommentComposerSendProps>(\n ({ 'aria-label': ariaLabel = 'Send comment', type = 'submit', ...props }, ref) => (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton ref={ref} data-slot=\"comment-composer-send\" type={type} aria-label={ariaLabel} {...props}>\n <ArrowUp />\n </InputGroupButton>\n </InputGroupAddon>\n ),\n);\nCommentComposerSend.displayName = 'CommentComposerSend';\n","import { Check, X } from 'lucide-react';\nimport { useState } from 'react';\nimport type { KeyboardEvent } from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentEditorProps {\n initialBody: string;\n /** Handed the trimmed draft. Closing is the caller's call, so a save that failed keeps what was typed. */\n onSave: (body: string) => void;\n onClose: () => void;\n /** The caller's save in flight: the box locks until it settles. */\n isPending?: boolean;\n /** Why the caller's last save failed. */\n error?: string;\n 'aria-label'?: string;\n className?: string;\n}\n\n/** Owns the draft only; whether a save landed is the caller's mutation to report. */\nexport function CommentEditor({\n initialBody,\n onSave,\n onClose,\n isPending = false,\n error,\n 'aria-label': ariaLabel = 'Edit comment',\n className,\n}: CommentEditorProps) {\n const [draft, setDraft] = useState(initialBody);\n const body = draft.trim();\n const canSave = body.length > 0 && !isPending;\n\n const save = () => {\n if (!canSave) return;\n if (body === initialBody) {\n onClose();\n return;\n }\n onSave(body);\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n // An IME commit fires Enter mid-composition; acting on it would save half a word.\n if (event.nativeEvent.isComposing) return;\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n save();\n }\n };\n\n return (\n <Field invalid={Boolean(error)} data-slot=\"comment-editor\" className={cn('mt-1 flex flex-col gap-1.5', className)}>\n <div className=\"relative\">\n <TextareaControl\n value={draft}\n onChange={event => setDraft(event.target.value)}\n onKeyDown={onKeyDown}\n readOnly={isPending}\n aria-label={ariaLabel}\n rows={2}\n className=\"block field-sizing-content max-h-40 w-full resize-none overflow-y-auto rounded-lg border border-border bg-background px-2 pt-1.5 pb-9 text-caption text-foreground outline-none focus:border-border-strong\"\n />\n <div className=\"absolute inset-x-px bottom-px flex items-center justify-end gap-1 rounded-b-lg bg-background px-1.5 pt-1 pb-1.5\">\n <Button icon={<X />} type=\"button\" variant=\"ghost\" size=\"sm\" disabled={isPending} onClick={onClose}>\n Cancel\n </Button>\n <Button icon={<Check />} type=\"button\" size=\"sm\" disabled={!canSave} onClick={save}>\n {isPending ? 'Saving…' : 'Save'}\n </Button>\n </div>\n </div>\n <FieldError>{error}</FieldError>\n </Field>\n );\n}\n","import { X } from 'lucide-react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentQuoteProps {\n authorName?: string;\n quote: string;\n /** Given only while the quote is a draft the writer can still drop. */\n onDismiss?: () => void;\n className?: string;\n}\n\n/** The passage a reply answers, above the reply itself or inside the composer writing it. */\nexport function CommentQuote({ authorName, quote, onDismiss, className }: CommentQuoteProps) {\n return (\n <blockquote\n data-slot=\"comment-quote\"\n className={cn(\n 'm-0 flex min-w-0 gap-2 border-l-2 border-border-strong pl-2 text-caption text-muted-foreground',\n className,\n )}\n >\n <span className=\"min-w-0 flex-1\">\n {authorName ? (\n <Txt as=\"span\" variant=\"column\">\n {authorName}{' '}\n </Txt>\n ) : null}\n <span className=\"line-clamp-2 wrap-anywhere whitespace-pre-line\">{quote}</span>\n </span>\n {onDismiss ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Remove quote\"\n onClick={onDismiss}\n className=\"shrink-0\"\n >\n <X size={12} aria-hidden />\n </Button>\n ) : null}\n </blockquote>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Comment.es.js","sources":["../../src/ds/components/Comment/comment-arrival.tsx","../../src/ds/components/Comment/comment-composer.tsx","../../src/ds/components/Comment/comment-editor.tsx","../../src/ds/components/Comment/comment-quote.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { ArrivalScope, useWatched } from '@/ds/components/Arrival';\n\nimport './comment-arrival.css';\n\n/** A comment the reader watched land rises into place; one that was already there just appears. */\nexport function CommentArrival({ children }: { children: ReactNode }) {\n const watched = useWatched();\n\n return (\n <div data-slot=\"comment-arrival\" className={watched ? 'mastra-comment-arriving' : undefined}>\n <ArrivalScope>{children}</ArrivalScope>\n </div>\n );\n}\n","import { ArrowUp } from 'lucide-react';\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nimport { useCommentVariant } from './comment-context';\nimport type { CommentVariant } from './comment-context';\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from '@/ds/components/InputGroup';\nimport type { InputGroupButtonProps, InputGroupInputProps } from '@/ds/components/InputGroup';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\nexport type CommentComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport const CommentComposer = forwardRef<HTMLFormElement, CommentComposerProps>(({ className, ...props }, ref) => (\n <form ref={ref} data-slot=\"comment-composer\" className={cn('flex w-full items-center gap-2', className)} {...props} />\n));\nCommentComposer.displayName = 'CommentComposer';\n\nconst composerSize: Record<CommentVariant, ControlSize> = {\n default: 'md',\n embed: 'sm',\n thread: 'md',\n};\n\nexport interface CommentComposerInputProps extends InputGroupInputProps {\n /** Layout classes for the surrounding InputGroup. */\n groupClassName?: string;\n children?: ReactNode;\n}\n\nexport const CommentComposerInput = forwardRef<HTMLInputElement, CommentComposerInputProps>(\n ({ groupClassName, children, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <InputGroup size={composerSize[variant]} className={groupClassName}>\n <InputGroupInput ref={ref} data-slot=\"comment-composer-input\" {...props} />\n {children}\n </InputGroup>\n );\n },\n);\nCommentComposerInput.displayName = 'CommentComposerInput';\n\nexport type CommentComposerSendProps = Omit<InputGroupButtonProps, 'children'>;\n\nexport const CommentComposerSend = forwardRef<HTMLButtonElement, CommentComposerSendProps>(\n ({ 'aria-label': ariaLabel = 'Send comment', type = 'submit', ...props }, ref) => (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton ref={ref} data-slot=\"comment-composer-send\" type={type} aria-label={ariaLabel} {...props}>\n <ArrowUp />\n </InputGroupButton>\n </InputGroupAddon>\n ),\n);\nCommentComposerSend.displayName = 'CommentComposerSend';\n","import { Check, X } from 'lucide-react';\nimport { useState } from 'react';\nimport type { KeyboardEvent } from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentEditorProps {\n initialBody: string;\n /** Handed the trimmed draft. Closing is the caller's call, so a save that failed keeps what was typed. */\n onSave: (body: string) => void;\n onClose: () => void;\n /** The caller's save in flight: the box locks until it settles. */\n isPending?: boolean;\n /** Why the caller's last save failed. */\n error?: string;\n 'aria-label'?: string;\n className?: string;\n}\n\n/** Owns the draft only; whether a save landed is the caller's mutation to report. */\nexport function CommentEditor({\n initialBody,\n onSave,\n onClose,\n isPending = false,\n error,\n 'aria-label': ariaLabel = 'Edit comment',\n className,\n}: CommentEditorProps) {\n const [draft, setDraft] = useState(initialBody);\n const body = draft.trim();\n const canSave = body.length > 0 && !isPending;\n\n const save = () => {\n if (!canSave) return;\n if (body === initialBody) {\n onClose();\n return;\n }\n onSave(body);\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n // An IME commit fires Enter mid-composition; acting on it would save half a word.\n if (event.nativeEvent.isComposing) return;\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n save();\n }\n };\n\n return (\n <Field invalid={Boolean(error)} data-slot=\"comment-editor\" className={cn('mt-1 flex flex-col gap-1.5', className)}>\n <div className=\"relative\">\n <TextareaControl\n value={draft}\n onChange={event => setDraft(event.target.value)}\n onKeyDown={onKeyDown}\n readOnly={isPending}\n aria-label={ariaLabel}\n rows={2}\n className=\"block field-sizing-content max-h-40 w-full resize-none overflow-y-auto rounded-lg border border-border bg-background px-2 pt-1.5 pb-9 text-caption text-foreground outline-none focus:border-border-strong\"\n />\n <div className=\"absolute inset-x-px bottom-px flex items-center justify-end gap-1 rounded-b-lg bg-background px-1.5 pt-1 pb-1.5\">\n <Button icon={<X />} type=\"button\" variant=\"ghost\" size=\"sm\" disabled={isPending} onClick={onClose}>\n Cancel\n </Button>\n <Button icon={<Check />} type=\"button\" size=\"sm\" disabled={!canSave} onClick={save}>\n {isPending ? 'Saving…' : 'Save'}\n </Button>\n </div>\n </div>\n <FieldError>{error}</FieldError>\n </Field>\n );\n}\n","import { X } from 'lucide-react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentQuoteProps {\n authorName?: string;\n quote: string;\n /** Given only while the quote is a draft the writer can still drop. */\n onDismiss?: () => void;\n className?: string;\n}\n\n/** The passage a reply answers, above the reply itself or inside the composer writing it. */\nexport function CommentQuote({ authorName, quote, onDismiss, className }: CommentQuoteProps) {\n return (\n <blockquote\n data-slot=\"comment-quote\"\n className={cn(\n 'm-0 flex min-w-0 gap-2 border-l-2 border-border-strong pl-2 text-caption text-muted-foreground',\n className,\n )}\n >\n <span className=\"min-w-0 flex-1\">\n {authorName ? (\n <Txt as=\"span\" variant=\"column\">\n {authorName}{' '}\n </Txt>\n ) : null}\n <span className=\"line-clamp-2 wrap-anywhere whitespace-pre-line\">{quote}</span>\n </span>\n {onDismiss ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Remove quote\"\n onClick={onDismiss}\n className=\"shrink-0\"\n >\n <X size={12} aria-hidden />\n </Button>\n ) : null}\n </blockquote>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const dataCodeSection = require('../data-code-section-hVbIXLNC.cjs');
5
+ const dataCodeSection = require('../data-code-section-BTRNa1SD.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { D as DataCodeSection } from '../data-code-section-zG2S1MPX.js';
1
+ export { D as DataCodeSection } from '../data-code-section-BGLC-hxm.js';
2
2
  //# sourceMappingURL=DataCodeSection.es.js.map
@@ -2,26 +2,24 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const dataList = require('../data-list-DkVOwk8l.cjs');
6
- const dataListSkeleton = require('../data-list-skeleton-CfVsXhx1.cjs');
5
+ const dataList = require('../data-list-_yDPF5wR.cjs');
6
+ const dataListSkeleton = require('../data-list-skeleton-maUWF7Ri.cjs');
7
7
  const jsxRuntime = require('react/jsx-runtime');
8
- const dataListSpacer = require('../data-list-spacer-pXP8xDlg.cjs');
9
- const dataListTop = require('../data-list-top-Ds-NWyPO.cjs');
10
8
  const Txt = require('../Txt-DXjXpX9r.cjs');
11
9
  const utils_dateFormat = require('../utils/date-format.cjs.js');
12
- const tracesDataList = require('../traces-data-list-Cf_PpmSN.cjs');
10
+ const tracesDataList = require('../traces-data-list-DaFA1Ccg.cjs');
13
11
  const useDataListKeyboard = require('../use-data-list-keyboard-DF3tLe10.cjs');
14
12
  const layout_tabbedContainer = require('../layout/tabbed-container.cjs.js');
15
13
 
16
14
  function ScoresDataListDateCell({ timestamp }) {
17
- return /* @__PURE__ */ jsxRuntime.jsx(dataListTop.DataListCell, { className: "text-muted-foreground", children: utils_dateFormat.formatDate(timestamp, "date") ?? "-" });
15
+ return /* @__PURE__ */ jsxRuntime.jsx(dataList.DataListCell, { className: "text-muted-foreground", children: utils_dateFormat.formatDate(timestamp, "date") ?? "-" });
18
16
  }
19
17
  function ScoresDataListTimeCell({ timestamp }) {
20
- return /* @__PURE__ */ jsxRuntime.jsx(dataListTop.DataListCell, { className: "text-body-sm text-muted-foreground", children: utils_dateFormat.formatDate(timestamp, "time") ?? "-" });
18
+ return /* @__PURE__ */ jsxRuntime.jsx(dataList.DataListCell, { className: "text-body-sm text-muted-foreground", children: utils_dateFormat.formatDate(timestamp, "time") ?? "-" });
21
19
  }
22
20
  function ScoresDataListInputCell({ input }) {
23
21
  const display = input != null ? JSON.stringify(input) : "-";
24
- return /* @__PURE__ */ jsxRuntime.jsx(dataListTop.DataListCell, { children: /* @__PURE__ */ jsxRuntime.jsx(
22
+ return /* @__PURE__ */ jsxRuntime.jsx(dataList.DataListCell, { children: /* @__PURE__ */ jsxRuntime.jsx(
25
23
  Txt.Txt,
26
24
  {
27
25
  as: "span",
@@ -36,11 +34,11 @@ function ScoresDataListInputCell({ input }) {
36
34
  }
37
35
  function ScoresDataListEntityCell({ entityId }) {
38
36
  const display = entityId || "-";
39
- return /* @__PURE__ */ jsxRuntime.jsx(dataListTop.DataListCell, { children: /* @__PURE__ */ jsxRuntime.jsx(Txt.Txt, { as: "span", variant: "body-sm", className: "block max-w-full min-w-0 truncate", title: display, children: display }) });
37
+ return /* @__PURE__ */ jsxRuntime.jsx(dataList.DataListCell, { children: /* @__PURE__ */ jsxRuntime.jsx(Txt.Txt, { as: "span", variant: "body-sm", className: "block max-w-full min-w-0 truncate", title: display, children: display }) });
40
38
  }
41
39
  function ScoresDataListScoreCell({ score }) {
42
40
  const display = score == null ? "-" : typeof score === "object" ? JSON.stringify(score) : String(score);
43
- return /* @__PURE__ */ jsxRuntime.jsx(dataListTop.DataListCell, { children: /* @__PURE__ */ jsxRuntime.jsx(
41
+ return /* @__PURE__ */ jsxRuntime.jsx(dataList.DataListCell, { children: /* @__PURE__ */ jsxRuntime.jsx(
44
42
  Txt.Txt,
45
43
  {
46
44
  as: "span",
@@ -55,15 +53,15 @@ function ScoresDataListScoreCell({ score }) {
55
53
  }
56
54
 
57
55
  function ScoresDataListRoot(props) {
58
- return /* @__PURE__ */ jsxRuntime.jsx(dataListTop.DataListRoot, { ...props });
56
+ return /* @__PURE__ */ jsxRuntime.jsx(dataList.DataListRoot, { ...props });
59
57
  }
60
58
  const ScoresDataList = Object.assign(ScoresDataListRoot, {
61
- Top: dataListTop.DataListTop,
62
- TopCell: dataListTop.DataListTopCell,
63
- SortableTopCell: dataListSpacer.DataListSortableTopCell,
64
- RowButton: dataListSpacer.DataListRowButton,
65
- NoMatch: dataListSpacer.DataListNoMatch,
66
- NextPageLoading: dataListSpacer.DataListNextPageLoading,
59
+ Top: dataList.DataListTop,
60
+ TopCell: dataList.DataListTopCell,
61
+ SortableTopCell: dataList.DataListSortableTopCell,
62
+ RowButton: dataList.DataListRowButton,
63
+ NoMatch: dataList.DataListNoMatch,
64
+ NextPageLoading: dataList.DataListNextPageLoading,
67
65
  DateCell: ScoresDataListDateCell,
68
66
  TimeCell: ScoresDataListTimeCell,
69
67
  InputCell: ScoresDataListInputCell,
@@ -1 +1 @@
1
- {"version":3,"file":"DataList.cjs.js","sources":["../../src/ds/components/DataList/ScoresDataList/scores-data-list-cells.tsx","../../src/ds/components/DataList/ScoresDataList/scores-data-list.tsx"],"sourcesContent":["import { DataListCell } from '../data-list-cells';\nimport { Txt } from '@/ds/components/Txt';\nimport { formatDate } from '@/utils/date-format';\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n// ---------------------------------------------------------------------------\n// DateCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListDateCellProps {\n timestamp: Date | string;\n}\n\nexport function ScoresDataListDateCell({ timestamp }: ScoresDataListDateCellProps) {\n return <DataListCell className=\"text-muted-foreground\">{formatDate(timestamp, 'date') ?? '-'}</DataListCell>;\n}\n\n// ---------------------------------------------------------------------------\n// TimeCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListTimeCellProps {\n timestamp: Date | string;\n}\n\nexport function ScoresDataListTimeCell({ timestamp }: ScoresDataListTimeCellProps) {\n return (\n <DataListCell className=\"text-body-sm text-muted-foreground\">{formatDate(timestamp, 'time') ?? '-'}</DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InputCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListInputCellProps {\n input?: unknown;\n}\n\nexport function ScoresDataListInputCell({ input }: ScoresDataListInputCellProps) {\n const display = input != null ? JSON.stringify(input) : '-';\n return (\n <DataListCell>\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n font=\"mono\"\n className=\"block max-w-full min-w-0 truncate\"\n title={display}\n >\n {display}\n </Txt>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListEntityCellProps {\n entityId?: string | null;\n}\n\nexport function ScoresDataListEntityCell({ entityId }: ScoresDataListEntityCellProps) {\n const display = entityId || '-';\n return (\n <DataListCell>\n <Txt as=\"span\" variant=\"body-sm\" className=\"block max-w-full min-w-0 truncate\" title={display}>\n {display}\n </Txt>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// ScoreCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListScoreCellProps {\n score?: unknown;\n}\n\nexport function ScoresDataListScoreCell({ score }: ScoresDataListScoreCellProps) {\n const display = score == null ? '-' : typeof score === 'object' ? JSON.stringify(score) : String(score);\n return (\n <DataListCell>\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n font=\"mono\"\n className=\"block max-w-full min-w-0 truncate\"\n title={display}\n >\n {display}\n </Txt>\n </DataListCell>\n );\n}\n","import type { ComponentProps } from 'react';\nimport { DataListNextPageLoading } from '../data-list-next-page-loading';\nimport { DataListNoMatch } from '../data-list-no-match';\nimport { DataListRoot } from '../data-list-root';\nimport { DataListRowButton } from '../data-list-row-button';\nimport { DataListSortableTopCell } from '../data-list-sortable-top-cell';\nimport { DataListTop } from '../data-list-top';\nimport { DataListTopCell } from '../data-list-top-cell';\nimport {\n ScoresDataListDateCell,\n ScoresDataListTimeCell,\n ScoresDataListInputCell,\n ScoresDataListEntityCell,\n ScoresDataListScoreCell,\n} from './scores-data-list-cells';\n\n// oxlint-disable-next-line react/only-export-components -- compound component root, same pattern as TracesDataList\n// eslint-disable-next-line react-refresh/only-export-components -- compound component root, same pattern as TracesDataList\nfunction ScoresDataListRoot(props: ComponentProps<typeof DataListRoot>) {\n return <DataListRoot {...props} />;\n}\n\nexport const ScoresDataList = Object.assign(ScoresDataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n RowButton: DataListRowButton,\n NoMatch: DataListNoMatch,\n NextPageLoading: DataListNextPageLoading,\n DateCell: ScoresDataListDateCell,\n TimeCell: ScoresDataListTimeCell,\n InputCell: ScoresDataListInputCell,\n EntityCell: ScoresDataListEntityCell,\n ScoreCell: ScoresDataListScoreCell,\n});\n"],"names":["jsx","DataListCell","Txt","DataListRoot","DataListTop","DataListTopCell","DataListSortableTopCell","DataListRowButton","DataListNoMatch","DataListNextPageLoading"],"mappings":";;;;;;;;;;;;;;;AAgBO,SAAS,sBAAA,CAAuB,EAAE,SAAA,EAAU,EAAgC;AACjF,EAAA,uBAAOA,cAAA,CAACC,4BAAa,SAAA,EAAU,uBAAA,EAAyB,sCAAW,SAAA,EAAW,MAAM,KAAK,GAAA,EAAI,CAAA;AAC/F;AAUO,SAAS,sBAAA,CAAuB,EAAE,SAAA,EAAU,EAAgC;AACjF,EAAA,uBACED,cAAA,CAACC,4BAAa,SAAA,EAAU,oCAAA,EAAsC,sCAAW,SAAA,EAAW,MAAM,KAAK,GAAA,EAAI,CAAA;AAEvG;AAUO,SAAS,uBAAA,CAAwB,EAAE,KAAA,EAAM,EAAiC;AAC/E,EAAA,MAAM,UAAU,KAAA,IAAS,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,GAAI,GAAA;AACxD,EAAA,sCACGA,wBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA;AAAA,IAACE,OAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAG,MAAA;AAAA,MACH,OAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAK,OAAA;AAAA,MACL,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAU,mCAAA;AAAA,MACV,KAAA,EAAO,OAAA;AAAA,MAEN,QAAA,EAAA;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAUO,SAAS,wBAAA,CAAyB,EAAE,QAAA,EAAS,EAAkC;AACpF,EAAA,MAAM,UAAU,QAAA,IAAY,GAAA;AAC5B,EAAA,uBACEF,cAAA,CAACC,wBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA,CAACE,OAAA,EAAA,EAAI,EAAA,EAAG,MAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,SAAA,EAAU,mCAAA,EAAoC,KAAA,EAAO,OAAA,EACnF,mBACH,CAAA,EACF,CAAA;AAEJ;AAUO,SAAS,uBAAA,CAAwB,EAAE,KAAA,EAAM,EAAiC;AAC/E,EAAA,MAAM,OAAA,GAAU,KAAA,IAAS,IAAA,GAAO,GAAA,GAAM,OAAO,KAAA,KAAU,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,GAAI,MAAA,CAAO,KAAK,CAAA;AACtG,EAAA,sCACGD,wBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA;AAAA,IAACE,OAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAG,MAAA;AAAA,MACH,OAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAK,OAAA;AAAA,MACL,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAU,mCAAA;AAAA,MACV,KAAA,EAAO,OAAA;AAAA,MAEN,QAAA,EAAA;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;;ACrFA,SAAS,mBAAmB,KAAA,EAA4C;AACtE,EAAA,uBAAOF,cAAA,CAACG,wBAAA,EAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AAClC;AAEO,MAAM,cAAA,GAAiB,MAAA,CAAO,MAAA,CAAO,kBAAA,EAAoB;AAAA,EAC9D,GAAA,EAAKC,uBAAA;AAAA,EACL,OAAA,EAASC,2BAAA;AAAA,EACT,eAAA,EAAiBC,sCAAA;AAAA,EACjB,SAAA,EAAWC,gCAAA;AAAA,EACX,OAAA,EAASC,8BAAA;AAAA,EACT,eAAA,EAAiBC,sCAAA;AAAA,EACjB,QAAA,EAAU,sBAAA;AAAA,EACV,QAAA,EAAU,sBAAA;AAAA,EACV,SAAA,EAAW,uBAAA;AAAA,EACX,UAAA,EAAY,wBAAA;AAAA,EACZ,SAAA,EAAW;AACb,CAAC;;;;;;;;;;"}
1
+ {"version":3,"file":"DataList.cjs.js","sources":["../../src/ds/components/DataList/ScoresDataList/scores-data-list-cells.tsx","../../src/ds/components/DataList/ScoresDataList/scores-data-list.tsx"],"sourcesContent":["import { DataListCell } from '../data-list-cells';\nimport { Txt } from '@/ds/components/Txt';\nimport { formatDate } from '@/utils/date-format';\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n// ---------------------------------------------------------------------------\n// DateCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListDateCellProps {\n timestamp: Date | string;\n}\n\nexport function ScoresDataListDateCell({ timestamp }: ScoresDataListDateCellProps) {\n return <DataListCell className=\"text-muted-foreground\">{formatDate(timestamp, 'date') ?? '-'}</DataListCell>;\n}\n\n// ---------------------------------------------------------------------------\n// TimeCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListTimeCellProps {\n timestamp: Date | string;\n}\n\nexport function ScoresDataListTimeCell({ timestamp }: ScoresDataListTimeCellProps) {\n return (\n <DataListCell className=\"text-body-sm text-muted-foreground\">{formatDate(timestamp, 'time') ?? '-'}</DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InputCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListInputCellProps {\n input?: unknown;\n}\n\nexport function ScoresDataListInputCell({ input }: ScoresDataListInputCellProps) {\n const display = input != null ? JSON.stringify(input) : '-';\n return (\n <DataListCell>\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n font=\"mono\"\n className=\"block max-w-full min-w-0 truncate\"\n title={display}\n >\n {display}\n </Txt>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListEntityCellProps {\n entityId?: string | null;\n}\n\nexport function ScoresDataListEntityCell({ entityId }: ScoresDataListEntityCellProps) {\n const display = entityId || '-';\n return (\n <DataListCell>\n <Txt as=\"span\" variant=\"body-sm\" className=\"block max-w-full min-w-0 truncate\" title={display}>\n {display}\n </Txt>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// ScoreCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListScoreCellProps {\n score?: unknown;\n}\n\nexport function ScoresDataListScoreCell({ score }: ScoresDataListScoreCellProps) {\n const display = score == null ? '-' : typeof score === 'object' ? JSON.stringify(score) : String(score);\n return (\n <DataListCell>\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n font=\"mono\"\n className=\"block max-w-full min-w-0 truncate\"\n title={display}\n >\n {display}\n </Txt>\n </DataListCell>\n );\n}\n","import type { ComponentProps } from 'react';\nimport { DataListNextPageLoading } from '../data-list-next-page-loading';\nimport { DataListNoMatch } from '../data-list-no-match';\nimport { DataListRoot } from '../data-list-root';\nimport { DataListRowButton } from '../data-list-row-button';\nimport { DataListSortableTopCell } from '../data-list-sortable-top-cell';\nimport { DataListTop } from '../data-list-top';\nimport { DataListTopCell } from '../data-list-top-cell';\nimport {\n ScoresDataListDateCell,\n ScoresDataListTimeCell,\n ScoresDataListInputCell,\n ScoresDataListEntityCell,\n ScoresDataListScoreCell,\n} from './scores-data-list-cells';\n\n// oxlint-disable-next-line react/only-export-components -- compound component root, same pattern as TracesDataList\n// eslint-disable-next-line react-refresh/only-export-components -- compound component root, same pattern as TracesDataList\nfunction ScoresDataListRoot(props: ComponentProps<typeof DataListRoot>) {\n return <DataListRoot {...props} />;\n}\n\nexport const ScoresDataList = Object.assign(ScoresDataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n RowButton: DataListRowButton,\n NoMatch: DataListNoMatch,\n NextPageLoading: DataListNextPageLoading,\n DateCell: ScoresDataListDateCell,\n TimeCell: ScoresDataListTimeCell,\n InputCell: ScoresDataListInputCell,\n EntityCell: ScoresDataListEntityCell,\n ScoreCell: ScoresDataListScoreCell,\n});\n"],"names":["jsx","DataListCell","Txt","DataListRoot","DataListTop","DataListTopCell","DataListSortableTopCell","DataListRowButton","DataListNoMatch","DataListNextPageLoading"],"mappings":";;;;;;;;;;;;;AAgBO,SAAS,sBAAA,CAAuB,EAAE,SAAA,EAAU,EAAgC;AACjF,EAAA,uBAAOA,cAAA,CAACC,yBAAa,SAAA,EAAU,uBAAA,EAAyB,sCAAW,SAAA,EAAW,MAAM,KAAK,GAAA,EAAI,CAAA;AAC/F;AAUO,SAAS,sBAAA,CAAuB,EAAE,SAAA,EAAU,EAAgC;AACjF,EAAA,uBACED,cAAA,CAACC,yBAAa,SAAA,EAAU,oCAAA,EAAsC,sCAAW,SAAA,EAAW,MAAM,KAAK,GAAA,EAAI,CAAA;AAEvG;AAUO,SAAS,uBAAA,CAAwB,EAAE,KAAA,EAAM,EAAiC;AAC/E,EAAA,MAAM,UAAU,KAAA,IAAS,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,GAAI,GAAA;AACxD,EAAA,sCACGA,qBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA;AAAA,IAACE,OAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAG,MAAA;AAAA,MACH,OAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAK,OAAA;AAAA,MACL,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAU,mCAAA;AAAA,MACV,KAAA,EAAO,OAAA;AAAA,MAEN,QAAA,EAAA;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAUO,SAAS,wBAAA,CAAyB,EAAE,QAAA,EAAS,EAAkC;AACpF,EAAA,MAAM,UAAU,QAAA,IAAY,GAAA;AAC5B,EAAA,uBACEF,cAAA,CAACC,qBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA,CAACE,OAAA,EAAA,EAAI,EAAA,EAAG,MAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,SAAA,EAAU,mCAAA,EAAoC,KAAA,EAAO,OAAA,EACnF,mBACH,CAAA,EACF,CAAA;AAEJ;AAUO,SAAS,uBAAA,CAAwB,EAAE,KAAA,EAAM,EAAiC;AAC/E,EAAA,MAAM,OAAA,GAAU,KAAA,IAAS,IAAA,GAAO,GAAA,GAAM,OAAO,KAAA,KAAU,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,GAAI,MAAA,CAAO,KAAK,CAAA;AACtG,EAAA,sCACGD,qBAAA,EAAA,EACC,QAAA,kBAAAD,cAAA;AAAA,IAACE,OAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAG,MAAA;AAAA,MACH,OAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAK,OAAA;AAAA,MACL,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAU,mCAAA;AAAA,MACV,KAAA,EAAO,OAAA;AAAA,MAEN,QAAA,EAAA;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;;ACrFA,SAAS,mBAAmB,KAAA,EAA4C;AACtE,EAAA,uBAAOF,cAAA,CAACG,qBAAA,EAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AAClC;AAEO,MAAM,cAAA,GAAiB,MAAA,CAAO,MAAA,CAAO,kBAAA,EAAoB;AAAA,EAC9D,GAAA,EAAKC,oBAAA;AAAA,EACL,OAAA,EAASC,wBAAA;AAAA,EACT,eAAA,EAAiBC,gCAAA;AAAA,EACjB,SAAA,EAAWC,0BAAA;AAAA,EACX,OAAA,EAASC,wBAAA;AAAA,EACT,eAAA,EAAiBC,gCAAA;AAAA,EACjB,QAAA,EAAU,sBAAA;AAAA,EACV,QAAA,EAAU,sBAAA;AAAA,EACV,SAAA,EAAW,uBAAA;AAAA,EACX,UAAA,EAAY,wBAAA;AAAA,EACZ,SAAA,EAAW;AACb,CAAC;;;;;;;;;;"}
@@ -1,11 +1,10 @@
1
- export { D as DataList } from '../data-list-Dv2lP-dU.js';
2
- export { D as DataListSkeleton, a as DataListSkeletonRows } from '../data-list-skeleton-BmsDYJrA.js';
1
+ import { c as DataListCell, g as DataListNextPageLoading, j as DataListNoMatch, m as DataListRowButton, q as DataListSortableTopCell, b as DataListTopCell, a as DataListTop, D as DataListRoot } from '../data-list-DDGpWucH.js';
2
+ export { e as DataList } from '../data-list-DDGpWucH.js';
3
+ export { D as DataListSkeleton, a as DataListSkeletonRows } from '../data-list-skeleton-CJFwZBlW.js';
3
4
  import { jsx } from 'react/jsx-runtime';
4
- import { D as DataListNextPageLoading, a as DataListNoMatch, d as DataListRowButton, f as DataListSortableTopCell } from '../data-list-spacer-DEMquKp9.js';
5
- import { c as DataListCell, b as DataListTopCell, a as DataListTop, D as DataListRoot } from '../data-list-top-BJCC62oy.js';
6
5
  import { T as Txt } from '../Txt-BuzYj7Vy.js';
7
6
  import { formatDate } from '../utils/date-format.es.js';
8
- export { T as TracesDataList } from '../traces-data-list-_mFOMw0U.js';
7
+ export { T as TracesDataList } from '../traces-data-list-L_r2GAtr.js';
9
8
  export { u as useDataListKeyboard } from '../use-data-list-keyboard-DFQr4t38.js';
10
9
  export { TabbedContainer } from '../layout/tabbed-container.es.js';
11
10
 
@@ -1 +1 @@
1
- {"version":3,"file":"DataList.es.js","sources":["../../src/ds/components/DataList/ScoresDataList/scores-data-list-cells.tsx","../../src/ds/components/DataList/ScoresDataList/scores-data-list.tsx"],"sourcesContent":["import { DataListCell } from '../data-list-cells';\nimport { Txt } from '@/ds/components/Txt';\nimport { formatDate } from '@/utils/date-format';\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n// ---------------------------------------------------------------------------\n// DateCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListDateCellProps {\n timestamp: Date | string;\n}\n\nexport function ScoresDataListDateCell({ timestamp }: ScoresDataListDateCellProps) {\n return <DataListCell className=\"text-muted-foreground\">{formatDate(timestamp, 'date') ?? '-'}</DataListCell>;\n}\n\n// ---------------------------------------------------------------------------\n// TimeCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListTimeCellProps {\n timestamp: Date | string;\n}\n\nexport function ScoresDataListTimeCell({ timestamp }: ScoresDataListTimeCellProps) {\n return (\n <DataListCell className=\"text-body-sm text-muted-foreground\">{formatDate(timestamp, 'time') ?? '-'}</DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InputCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListInputCellProps {\n input?: unknown;\n}\n\nexport function ScoresDataListInputCell({ input }: ScoresDataListInputCellProps) {\n const display = input != null ? JSON.stringify(input) : '-';\n return (\n <DataListCell>\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n font=\"mono\"\n className=\"block max-w-full min-w-0 truncate\"\n title={display}\n >\n {display}\n </Txt>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListEntityCellProps {\n entityId?: string | null;\n}\n\nexport function ScoresDataListEntityCell({ entityId }: ScoresDataListEntityCellProps) {\n const display = entityId || '-';\n return (\n <DataListCell>\n <Txt as=\"span\" variant=\"body-sm\" className=\"block max-w-full min-w-0 truncate\" title={display}>\n {display}\n </Txt>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// ScoreCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListScoreCellProps {\n score?: unknown;\n}\n\nexport function ScoresDataListScoreCell({ score }: ScoresDataListScoreCellProps) {\n const display = score == null ? '-' : typeof score === 'object' ? JSON.stringify(score) : String(score);\n return (\n <DataListCell>\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n font=\"mono\"\n className=\"block max-w-full min-w-0 truncate\"\n title={display}\n >\n {display}\n </Txt>\n </DataListCell>\n );\n}\n","import type { ComponentProps } from 'react';\nimport { DataListNextPageLoading } from '../data-list-next-page-loading';\nimport { DataListNoMatch } from '../data-list-no-match';\nimport { DataListRoot } from '../data-list-root';\nimport { DataListRowButton } from '../data-list-row-button';\nimport { DataListSortableTopCell } from '../data-list-sortable-top-cell';\nimport { DataListTop } from '../data-list-top';\nimport { DataListTopCell } from '../data-list-top-cell';\nimport {\n ScoresDataListDateCell,\n ScoresDataListTimeCell,\n ScoresDataListInputCell,\n ScoresDataListEntityCell,\n ScoresDataListScoreCell,\n} from './scores-data-list-cells';\n\n// oxlint-disable-next-line react/only-export-components -- compound component root, same pattern as TracesDataList\n// eslint-disable-next-line react-refresh/only-export-components -- compound component root, same pattern as TracesDataList\nfunction ScoresDataListRoot(props: ComponentProps<typeof DataListRoot>) {\n return <DataListRoot {...props} />;\n}\n\nexport const ScoresDataList = Object.assign(ScoresDataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n RowButton: DataListRowButton,\n NoMatch: DataListNoMatch,\n NextPageLoading: DataListNextPageLoading,\n DateCell: ScoresDataListDateCell,\n TimeCell: ScoresDataListTimeCell,\n InputCell: ScoresDataListInputCell,\n EntityCell: ScoresDataListEntityCell,\n ScoreCell: ScoresDataListScoreCell,\n});\n"],"names":[],"mappings":";;;;;;;;;;;AAgBO,SAAS,sBAAA,CAAuB,EAAE,SAAA,EAAU,EAAgC;AACjF,EAAA,uBAAO,GAAA,CAAC,gBAAa,SAAA,EAAU,uBAAA,EAAyB,qBAAW,SAAA,EAAW,MAAM,KAAK,GAAA,EAAI,CAAA;AAC/F;AAUO,SAAS,sBAAA,CAAuB,EAAE,SAAA,EAAU,EAAgC;AACjF,EAAA,uBACE,GAAA,CAAC,gBAAa,SAAA,EAAU,oCAAA,EAAsC,qBAAW,SAAA,EAAW,MAAM,KAAK,GAAA,EAAI,CAAA;AAEvG;AAUO,SAAS,uBAAA,CAAwB,EAAE,KAAA,EAAM,EAAiC;AAC/E,EAAA,MAAM,UAAU,KAAA,IAAS,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,GAAI,GAAA;AACxD,EAAA,2BACG,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAG,MAAA;AAAA,MACH,OAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAK,OAAA;AAAA,MACL,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAU,mCAAA;AAAA,MACV,KAAA,EAAO,OAAA;AAAA,MAEN,QAAA,EAAA;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAUO,SAAS,wBAAA,CAAyB,EAAE,QAAA,EAAS,EAAkC;AACpF,EAAA,MAAM,UAAU,QAAA,IAAY,GAAA;AAC5B,EAAA,uBACE,GAAA,CAAC,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAG,MAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,SAAA,EAAU,mCAAA,EAAoC,KAAA,EAAO,OAAA,EACnF,mBACH,CAAA,EACF,CAAA;AAEJ;AAUO,SAAS,uBAAA,CAAwB,EAAE,KAAA,EAAM,EAAiC;AAC/E,EAAA,MAAM,OAAA,GAAU,KAAA,IAAS,IAAA,GAAO,GAAA,GAAM,OAAO,KAAA,KAAU,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,GAAI,MAAA,CAAO,KAAK,CAAA;AACtG,EAAA,2BACG,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAG,MAAA;AAAA,MACH,OAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAK,OAAA;AAAA,MACL,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAU,mCAAA;AAAA,MACV,KAAA,EAAO,OAAA;AAAA,MAEN,QAAA,EAAA;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;;ACrFA,SAAS,mBAAmB,KAAA,EAA4C;AACtE,EAAA,uBAAO,GAAA,CAAC,YAAA,EAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AAClC;AAEO,MAAM,cAAA,GAAiB,MAAA,CAAO,MAAA,CAAO,kBAAA,EAAoB;AAAA,EAC9D,GAAA,EAAK,WAAA;AAAA,EACL,OAAA,EAAS,eAAA;AAAA,EACT,eAAA,EAAiB,uBAAA;AAAA,EACjB,SAAA,EAAW,iBAAA;AAAA,EACX,OAAA,EAAS,eAAA;AAAA,EACT,eAAA,EAAiB,uBAAA;AAAA,EACjB,QAAA,EAAU,sBAAA;AAAA,EACV,QAAA,EAAU,sBAAA;AAAA,EACV,SAAA,EAAW,uBAAA;AAAA,EACX,UAAA,EAAY,wBAAA;AAAA,EACZ,SAAA,EAAW;AACb,CAAC;;;;"}
1
+ {"version":3,"file":"DataList.es.js","sources":["../../src/ds/components/DataList/ScoresDataList/scores-data-list-cells.tsx","../../src/ds/components/DataList/ScoresDataList/scores-data-list.tsx"],"sourcesContent":["import { DataListCell } from '../data-list-cells';\nimport { Txt } from '@/ds/components/Txt';\nimport { formatDate } from '@/utils/date-format';\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\n// ---------------------------------------------------------------------------\n// DateCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListDateCellProps {\n timestamp: Date | string;\n}\n\nexport function ScoresDataListDateCell({ timestamp }: ScoresDataListDateCellProps) {\n return <DataListCell className=\"text-muted-foreground\">{formatDate(timestamp, 'date') ?? '-'}</DataListCell>;\n}\n\n// ---------------------------------------------------------------------------\n// TimeCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListTimeCellProps {\n timestamp: Date | string;\n}\n\nexport function ScoresDataListTimeCell({ timestamp }: ScoresDataListTimeCellProps) {\n return (\n <DataListCell className=\"text-body-sm text-muted-foreground\">{formatDate(timestamp, 'time') ?? '-'}</DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InputCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListInputCellProps {\n input?: unknown;\n}\n\nexport function ScoresDataListInputCell({ input }: ScoresDataListInputCellProps) {\n const display = input != null ? JSON.stringify(input) : '-';\n return (\n <DataListCell>\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n font=\"mono\"\n className=\"block max-w-full min-w-0 truncate\"\n title={display}\n >\n {display}\n </Txt>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// EntityCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListEntityCellProps {\n entityId?: string | null;\n}\n\nexport function ScoresDataListEntityCell({ entityId }: ScoresDataListEntityCellProps) {\n const display = entityId || '-';\n return (\n <DataListCell>\n <Txt as=\"span\" variant=\"body-sm\" className=\"block max-w-full min-w-0 truncate\" title={display}>\n {display}\n </Txt>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// ScoreCell\n// ---------------------------------------------------------------------------\n\nexport interface ScoresDataListScoreCellProps {\n score?: unknown;\n}\n\nexport function ScoresDataListScoreCell({ score }: ScoresDataListScoreCellProps) {\n const display = score == null ? '-' : typeof score === 'object' ? JSON.stringify(score) : String(score);\n return (\n <DataListCell>\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n font=\"mono\"\n className=\"block max-w-full min-w-0 truncate\"\n title={display}\n >\n {display}\n </Txt>\n </DataListCell>\n );\n}\n","import type { ComponentProps } from 'react';\nimport { DataListNextPageLoading } from '../data-list-next-page-loading';\nimport { DataListNoMatch } from '../data-list-no-match';\nimport { DataListRoot } from '../data-list-root';\nimport { DataListRowButton } from '../data-list-row-button';\nimport { DataListSortableTopCell } from '../data-list-sortable-top-cell';\nimport { DataListTop } from '../data-list-top';\nimport { DataListTopCell } from '../data-list-top-cell';\nimport {\n ScoresDataListDateCell,\n ScoresDataListTimeCell,\n ScoresDataListInputCell,\n ScoresDataListEntityCell,\n ScoresDataListScoreCell,\n} from './scores-data-list-cells';\n\n// oxlint-disable-next-line react/only-export-components -- compound component root, same pattern as TracesDataList\n// eslint-disable-next-line react-refresh/only-export-components -- compound component root, same pattern as TracesDataList\nfunction ScoresDataListRoot(props: ComponentProps<typeof DataListRoot>) {\n return <DataListRoot {...props} />;\n}\n\nexport const ScoresDataList = Object.assign(ScoresDataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n RowButton: DataListRowButton,\n NoMatch: DataListNoMatch,\n NextPageLoading: DataListNextPageLoading,\n DateCell: ScoresDataListDateCell,\n TimeCell: ScoresDataListTimeCell,\n InputCell: ScoresDataListInputCell,\n EntityCell: ScoresDataListEntityCell,\n ScoreCell: ScoresDataListScoreCell,\n});\n"],"names":[],"mappings":";;;;;;;;;;AAgBO,SAAS,sBAAA,CAAuB,EAAE,SAAA,EAAU,EAAgC;AACjF,EAAA,uBAAO,GAAA,CAAC,gBAAa,SAAA,EAAU,uBAAA,EAAyB,qBAAW,SAAA,EAAW,MAAM,KAAK,GAAA,EAAI,CAAA;AAC/F;AAUO,SAAS,sBAAA,CAAuB,EAAE,SAAA,EAAU,EAAgC;AACjF,EAAA,uBACE,GAAA,CAAC,gBAAa,SAAA,EAAU,oCAAA,EAAsC,qBAAW,SAAA,EAAW,MAAM,KAAK,GAAA,EAAI,CAAA;AAEvG;AAUO,SAAS,uBAAA,CAAwB,EAAE,KAAA,EAAM,EAAiC;AAC/E,EAAA,MAAM,UAAU,KAAA,IAAS,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,GAAI,GAAA;AACxD,EAAA,2BACG,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAG,MAAA;AAAA,MACH,OAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAK,OAAA;AAAA,MACL,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAU,mCAAA;AAAA,MACV,KAAA,EAAO,OAAA;AAAA,MAEN,QAAA,EAAA;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAUO,SAAS,wBAAA,CAAyB,EAAE,QAAA,EAAS,EAAkC;AACpF,EAAA,MAAM,UAAU,QAAA,IAAY,GAAA;AAC5B,EAAA,uBACE,GAAA,CAAC,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAI,EAAA,EAAG,MAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,SAAA,EAAU,mCAAA,EAAoC,KAAA,EAAO,OAAA,EACnF,mBACH,CAAA,EACF,CAAA;AAEJ;AAUO,SAAS,uBAAA,CAAwB,EAAE,KAAA,EAAM,EAAiC;AAC/E,EAAA,MAAM,OAAA,GAAU,KAAA,IAAS,IAAA,GAAO,GAAA,GAAM,OAAO,KAAA,KAAU,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA,GAAI,MAAA,CAAO,KAAK,CAAA;AACtG,EAAA,2BACG,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAA,EAAG,MAAA;AAAA,MACH,OAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAK,OAAA;AAAA,MACL,IAAA,EAAK,MAAA;AAAA,MACL,SAAA,EAAU,mCAAA;AAAA,MACV,KAAA,EAAO,OAAA;AAAA,MAEN,QAAA,EAAA;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;;ACrFA,SAAS,mBAAmB,KAAA,EAA4C;AACtE,EAAA,uBAAO,GAAA,CAAC,YAAA,EAAA,EAAc,GAAG,KAAA,EAAO,CAAA;AAClC;AAEO,MAAM,cAAA,GAAiB,MAAA,CAAO,MAAA,CAAO,kBAAA,EAAoB;AAAA,EAC9D,GAAA,EAAK,WAAA;AAAA,EACL,OAAA,EAAS,eAAA;AAAA,EACT,eAAA,EAAiB,uBAAA;AAAA,EACjB,SAAA,EAAW,iBAAA;AAAA,EACX,OAAA,EAAS,eAAA;AAAA,EACT,eAAA,EAAiB,uBAAA;AAAA,EACjB,QAAA,EAAU,sBAAA;AAAA,EACV,QAAA,EAAU,sBAAA;AAAA,EACV,SAAA,EAAW,uBAAA;AAAA,EACX,UAAA,EAAY,wBAAA;AAAA,EACZ,SAAA,EAAW;AACb,CAAC;;;;"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const dataPanel = require('../data-panel-BdeebdMA.cjs');
5
+ const dataPanel = require('../data-panel-Dhg7s3fD.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { D as DataPanel } from '../data-panel-BLqydW68.js';
1
+ export { D as DataPanel } from '../data-panel-DfVGx0Ea.js';
2
2
  //# sourceMappingURL=DataPanel.es.js.map
@@ -11,7 +11,6 @@ const datePicker = require('../date-picker-CoBCcoY4.cjs');
11
11
  const timePicker = require('../time-picker-D7hr3X0_.cjs');
12
12
  const Button = require('../Button-BfZzgZrA.cjs');
13
13
  const field = require('../field-D1SVMPMz.cjs');
14
- require('../field-control-aria-WzMGs0A4.cjs');
15
14
  const input = require('../input-zdqTky_C.cjs');
16
15
  const popover = require('../popover-CWHYNPp8.cjs');
17
16
  const primitives_controlSize = require('../primitives/control-size.cjs.js');
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker.cjs.js","sources":["../../src/ds/components/DateTimePicker/date-time-picker.tsx"],"sourcesContent":["import { format, formatDate, isValid } from 'date-fns';\nimport { CalendarIcon, Check, X } from 'lucide-react';\nimport * as React from 'react';\nimport type { DayPickerSingleProps } from 'react-day-picker';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { DatePicker } from './date-picker';\nimport { TimePicker } from './time-picker';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\nimport { Field, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover';\nimport { controlTriggerOpenStateFor } from '@/ds/primitives/control-size';\nimport { fieldTriggerStyle } from '@/ds/primitives/form-element';\nimport { cn } from '@/lib/utils';\n\ntype CommonProps = Omit<DayPickerSingleProps, 'mode' | 'selected' | 'onSelect'> & {\n value: Date | undefined | null;\n minValue?: Date | null;\n maxValue?: Date | null;\n defaultTimeStrValue?: string;\n onValueChange: (date: Date | undefined) => void;\n};\n\ntype DefaultTriggerLook = Pick<ButtonProps, 'variant' | 'size'>;\n\nexport type DateTimePickerProps =\n | (CommonProps & DefaultTriggerLook & { children?: never; className?: string; placeholder?: string })\n | (CommonProps & {\n children: React.ReactNode;\n className?: never;\n placeholder?: string;\n variant?: never;\n size?: never;\n });\n\nexport const DateTimePicker: React.FC<DateTimePickerProps> = ({\n value,\n minValue,\n maxValue,\n defaultTimeStrValue,\n onValueChange,\n children,\n className,\n placeholder,\n variant,\n size,\n ...props\n}) => {\n const [openPopover, setOpenPopover] = React.useState(false);\n\n return (\n <Popover open={openPopover} onOpenChange={setOpenPopover}>\n <PopoverTrigger asChild>\n {children ? (\n children\n ) : (\n <DefaultTrigger\n value={value}\n placeholder={placeholder}\n variant={variant}\n size={size}\n className={className}\n data-testid=\"datepicker-button\"\n />\n )}\n </PopoverTrigger>\n <PopoverContent\n className=\"backdrop-blur-4xl w-auto max-w-66 bg-muted p-0!\"\n align=\"start\"\n data-testid=\"datepicker-calendar\"\n >\n <DateTimePickerContent\n value={value}\n minValue={minValue}\n maxValue={maxValue}\n onValueChange={onValueChange}\n setOpenPopover={setOpenPopover}\n defaultTimeStrValue={defaultTimeStrValue}\n {...props}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nfunction getCompoundDate({ date, timeStr = '' }: { date: Date; timeStr?: string }): Date | null {\n if (!isValid(date)) {\n return null;\n }\n\n if (timeStr) {\n const dateStr = format(date, 'yyyy-MM-dd');\n const newDate = new Date(`${dateStr} ${timeStr}`);\n if (isValid(newDate)) {\n return newDate;\n }\n }\n\n return date;\n}\n\nexport const DateTimePickerContent = ({\n value,\n minValue,\n maxValue,\n onValueChange,\n setOpenPopover,\n placeholder,\n className,\n defaultTimeStrValue,\n ...props\n}: CommonProps & {\n setOpenPopover?: (open: boolean) => void;\n placeholder?: string;\n className?: string;\n}) => {\n const [localErrorMsg, setLocalErrorMsg] = React.useState<string | null>(null);\n const [dateInputValue, setDateInputValue] = React.useState<string>(\n value ? format(getCompoundDate({ date: value, timeStr: defaultTimeStrValue }) || '', 'PP p') : '',\n );\n const [timeStrValue, setTimeStrValue] = React.useState<string>(defaultTimeStrValue || '');\n const [selected, setSelected] = React.useState<Date | undefined>(value ? new Date(value) : undefined);\n\n const debouncedDateUpdate = useDebouncedCallback((date: Date) => {\n if (isValid(date)) {\n setSelected(date);\n onValueChange?.(date);\n setOpenPopover?.(false);\n }\n }, 500);\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = e => {\n setDateInputValue(e.currentTarget.value);\n const date = new Date(e.currentTarget.value);\n debouncedDateUpdate(date);\n };\n\n const updateInputValue = (date: Date | string) => {\n if (isValid(date)) {\n if (maxValue && date > maxValue) {\n setLocalErrorMsg(`The selected date should be before ${format(maxValue, 'PP p')}`);\n setDateInputValue('');\n } else if (minValue && date < minValue) {\n setLocalErrorMsg(`The selected date should be after ${format(minValue, 'PP p')}`);\n setDateInputValue('');\n } else {\n setDateInputValue(format(date, 'PP p'));\n setLocalErrorMsg('');\n }\n } else {\n setDateInputValue('');\n setLocalErrorMsg('');\n }\n };\n\n const dateInputValueDate = new Date(dateInputValue);\n const dateInputValueIsValid = isValid(dateInputValueDate);\n const newValueDefined = dateInputValueIsValid && dateInputValueDate.getTime() !== value?.getTime();\n\n const handleDaySelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleMonthSelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleTimeStrChange = (val: string) => {\n setTimeStrValue(val);\n\n if (dateInputValueIsValid) {\n const newDate = getCompoundDate({ date: dateInputValueDate, timeStr: val });\n updateInputValue(newDate || '');\n }\n };\n\n const handleCancel = () => {\n setOpenPopover?.(false);\n };\n\n const handleApply = () => {\n if (isValid(dateInputValueDate)) {\n onValueChange(dateInputValueDate);\n }\n setOpenPopover?.(false);\n };\n\n const handleClear = () => {\n onValueChange(undefined);\n setSelected(undefined);\n setDateInputValue('');\n setTimeStrValue('');\n setOpenPopover?.(false);\n };\n\n return (\n <div\n aria-label=\"Choose date\"\n className={cn('relative flex flex-col', className)}\n onKeyDown={e => {\n e.stopPropagation();\n if (e.key === 'Escape') {\n setOpenPopover?.(false);\n }\n }}\n >\n <Field invalid={Boolean(localErrorMsg)} className=\"m-4 mb-0 w-auto!\">\n <FieldLabel className=\"sr-only\">Date</FieldLabel>\n <Input type=\"text\" value={dateInputValue} onChange={handleInputChange} placeholder={placeholder} />\n <FieldError>{localErrorMsg}</FieldError>\n </Field>\n\n <DatePicker\n mode=\"single\"\n month={selected}\n selected={selected}\n onMonthChange={handleMonthSelect}\n onSelect={handleDaySelect}\n {...props}\n />\n\n <TimePicker\n onValueChange={handleTimeStrChange}\n className=\"m-4 mt-0 w-auto\"\n defaultValue={value ? formatDate(new Date(value), 'hh:mm a') : defaultTimeStrValue}\n />\n\n <div className=\"m-4 mt-0 grid grid-cols-[1fr_2fr] gap-2\">\n {newValueDefined && (\n <Button icon={<X />} tabIndex={0} size=\"md\" onClick={handleClear} type=\"button\">\n Clear\n </Button>\n )}\n <Button\n icon={newValueDefined ? <Check /> : <X />}\n tabIndex={0}\n type=\"button\"\n size=\"md\"\n variant={newValueDefined ? 'primary' : 'default'}\n onClick={() => {\n dateInputValueIsValid ? handleApply() : handleCancel();\n }}\n >\n {newValueDefined ? `Apply` : `Cancel`}\n </Button>\n </div>\n </div>\n );\n};\n\ntype DefaultButtonProps = Pick<ButtonProps, 'variant' | 'size' | 'tooltip' | 'disabled'> & {\n className?: string;\n placeholder?: string;\n value: Date | undefined | null;\n};\n\nexport const DefaultTrigger = React.forwardRef<HTMLButtonElement, DefaultButtonProps>(\n ({ value, placeholder, variant = 'default', size, className, ...props }, ref) => {\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'justify-start',\n variant === 'default' && fieldTriggerStyle,\n controlTriggerOpenStateFor(variant),\n className,\n )}\n icon={<CalendarIcon />}\n {...props}\n >\n {value ? (\n <span className=\"text-foreground\">{format(value, 'PP p')}</span>\n ) : (\n <span className=\"text-muted-foreground\">{placeholder ?? 'Pick a date'}</span>\n )}\n </Button>\n );\n },\n);\n"],"names":["React","jsxs","Popover","jsx","PopoverTrigger","PopoverContent","isValid","format","useDebouncedCallback","cn","Field","FieldLabel","Input","FieldError","DatePicker","TimePicker","formatDate","Button","X","Check","fieldTriggerStyle","controlTriggerOpenStateFor","CalendarIcon"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCO,MAAM,iBAAgD,CAAC;AAAA,EAC5D,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,mBAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,gBAAA,CAAM,SAAS,KAAK,CAAA;AAE1D,EAAA,uBACEC,eAAA,CAACC,eAAA,EAAA,EAAQ,IAAA,EAAM,WAAA,EAAa,cAAc,cAAA,EACxC,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAACC,sBAAA,EAAA,EAAe,OAAA,EAAO,IAAA,EACpB,QAAA,EAAA,QAAA,GACC,QAAA,mBAEAD,cAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,WAAA;AAAA,QACA,OAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA;AAAA,QACA,aAAA,EAAY;AAAA;AAAA,KACd,EAEJ,CAAA;AAAA,oBACAA,cAAA;AAAA,MAACE,sBAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,iDAAA;AAAA,QACV,KAAA,EAAM,OAAA;AAAA,QACN,aAAA,EAAY,qBAAA;AAAA,QAEZ,QAAA,kBAAAF,cAAA;AAAA,UAAC,qBAAA;AAAA,UAAA;AAAA,YACC,KAAA;AAAA,YACA,QAAA;AAAA,YACA,QAAA;AAAA,YACA,aAAA;AAAA,YACA,cAAA;AAAA,YACA,mBAAA;AAAA,YACC,GAAG;AAAA;AAAA;AACN;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,eAAA,CAAgB,EAAE,IAAA,EAAM,OAAA,GAAU,IAAG,EAAkD;AAC9F,EAAA,IAAI,CAACG,eAAA,CAAQ,IAAI,CAAA,EAAG;AAClB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,MAAM,OAAA,GAAUC,cAAA,CAAO,IAAA,EAAM,YAAY,CAAA;AACzC,IAAA,MAAM,0BAAU,IAAI,IAAA,CAAK,GAAG,OAAO,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,CAAA;AAChD,IAAA,IAAID,eAAA,CAAQ,OAAO,CAAA,EAAG;AACpB,MAAA,OAAO,OAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,MAAM,wBAAwB,CAAC;AAAA,EACpC,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,mBAAA;AAAA,EACA,GAAG;AACL,CAAA,KAIM;AACJ,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIN,gBAAA,CAAM,SAAwB,IAAI,CAAA;AAC5E,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,gBAAA,CAAM,QAAA;AAAA,IAChD,KAAA,GAAQO,cAAA,CAAO,eAAA,CAAgB,EAAE,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS,mBAAA,EAAqB,CAAA,IAAK,EAAA,EAAI,MAAM,CAAA,GAAI;AAAA,GACjG;AACA,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,IAAIP,gBAAA,CAAM,QAAA,CAAiB,uBAAuB,EAAE,CAAA;AACxF,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,gBAAA,CAAM,QAAA,CAA2B,KAAA,GAAQ,IAAI,IAAA,CAAK,KAAK,CAAA,GAAI,MAAS,CAAA;AAEpG,EAAA,MAAM,mBAAA,GAAsBQ,gCAAA,CAAqB,CAAC,IAAA,KAAe;AAC/D,IAAA,IAAIF,eAAA,CAAQ,IAAI,CAAA,EAAG;AACjB,MAAA,WAAA,CAAY,IAAI,CAAA;AAChB,MAAA,aAAA,GAAgB,IAAI,CAAA;AACpB,MAAA,cAAA,GAAiB,KAAK,CAAA;AAAA,IACxB;AAAA,EACF,GAAG,GAAG,CAAA;AAEN,EAAA,MAAM,oBAAgE,CAAA,CAAA,KAAK;AACzE,IAAA,iBAAA,CAAkB,CAAA,CAAE,cAAc,KAAK,CAAA;AACvC,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAA,CAAE,cAAc,KAAK,CAAA;AAC3C,IAAA,mBAAA,CAAoB,IAAI,CAAA;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAwB;AAChD,IAAA,IAAIA,eAAA,CAAQ,IAAI,CAAA,EAAG;AACjB,MAAA,IAAI,QAAA,IAAY,OAAO,QAAA,EAAU;AAC/B,QAAA,gBAAA,CAAiB,CAAA,mCAAA,EAAsCC,cAAA,CAAO,QAAA,EAAU,MAAM,CAAC,CAAA,CAAE,CAAA;AACjF,QAAA,iBAAA,CAAkB,EAAE,CAAA;AAAA,MACtB,CAAA,MAAA,IAAW,QAAA,IAAY,IAAA,GAAO,QAAA,EAAU;AACtC,QAAA,gBAAA,CAAiB,CAAA,kCAAA,EAAqCA,cAAA,CAAO,QAAA,EAAU,MAAM,CAAC,CAAA,CAAE,CAAA;AAChF,QAAA,iBAAA,CAAkB,EAAE,CAAA;AAAA,MACtB,CAAA,MAAO;AACL,QAAA,iBAAA,CAAkBA,cAAA,CAAO,IAAA,EAAM,MAAM,CAAC,CAAA;AACtC,QAAA,gBAAA,CAAiB,EAAE,CAAA;AAAA,MACrB;AAAA,IACF,CAAA,MAAO;AACL,MAAA,iBAAA,CAAkB,EAAE,CAAA;AACpB,MAAA,gBAAA,CAAiB,EAAE,CAAA;AAAA,IACrB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,IAAI,IAAA,CAAK,cAAc,CAAA;AAClD,EAAA,MAAM,qBAAA,GAAwBD,gBAAQ,kBAAkB,CAAA;AACxD,EAAA,MAAM,kBAAkB,qBAAA,IAAyB,kBAAA,CAAmB,OAAA,EAAQ,KAAM,OAAO,OAAA,EAAQ;AAEjG,EAAA,MAAM,eAAA,GAAkB,CAAC,IAAA,KAA2B;AAClD,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,UAAU,eAAA,CAAgB,EAAE,IAAA,EAAM,OAAA,EAAS,cAAc,CAAA;AAC/D,MAAA,gBAAA,CAAiB,WAAW,EAAE,CAAA;AAAA,IAChC,CAAA,MAAO;AACL,MAAA,gBAAA,CAAiB,EAAE,CAAA;AAAA,IACrB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,IAAA,KAA2B;AACpD,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,UAAU,eAAA,CAAgB,EAAE,IAAA,EAAM,OAAA,EAAS,cAAc,CAAA;AAC/D,MAAA,gBAAA,CAAiB,WAAW,EAAE,CAAA;AAAA,IAChC,CAAA,MAAO;AACL,MAAA,gBAAA,CAAiB,EAAE,CAAA;AAAA,IACrB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,mBAAA,GAAsB,CAAC,GAAA,KAAgB;AAC3C,IAAA,eAAA,CAAgB,GAAG,CAAA;AAEnB,IAAA,IAAI,qBAAA,EAAuB;AACzB,MAAA,MAAM,UAAU,eAAA,CAAgB,EAAE,MAAM,kBAAA,EAAoB,OAAA,EAAS,KAAK,CAAA;AAC1E,MAAA,gBAAA,CAAiB,WAAW,EAAE,CAAA;AAAA,IAChC;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,cAAA,GAAiB,KAAK,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAIA,eAAA,CAAQ,kBAAkB,CAAA,EAAG;AAC/B,MAAA,aAAA,CAAc,kBAAkB,CAAA;AAAA,IAClC;AACA,IAAA,cAAA,GAAiB,KAAK,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,aAAA,CAAc,MAAS,CAAA;AACvB,IAAA,WAAA,CAAY,MAAS,CAAA;AACrB,IAAA,iBAAA,CAAkB,EAAE,CAAA;AACpB,IAAA,eAAA,CAAgB,EAAE,CAAA;AAClB,IAAA,cAAA,GAAiB,KAAK,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,uBACEL,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAW,aAAA;AAAA,MACX,SAAA,EAAWQ,WAAA,CAAG,wBAAA,EAA0B,SAAS,CAAA;AAAA,MACjD,WAAW,CAAA,CAAA,KAAK;AACd,QAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,QAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,UAAA,cAAA,GAAiB,KAAK,CAAA;AAAA,QACxB;AAAA,MACF,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAR,eAAA,CAACS,eAAM,OAAA,EAAS,OAAA,CAAQ,aAAa,CAAA,EAAG,WAAU,kBAAA,EAChD,QAAA,EAAA;AAAA,0BAAAP,cAAA,CAACQ,gBAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,0BACpCR,cAAA,CAACS,eAAM,IAAA,EAAK,MAAA,EAAO,OAAO,cAAA,EAAgB,QAAA,EAAU,mBAAmB,WAAA,EAA0B,CAAA;AAAA,0BACjGT,cAAA,CAACU,oBAAY,QAAA,EAAA,aAAA,EAAc;AAAA,SAAA,EAC7B,CAAA;AAAA,wBAEAV,cAAA;AAAA,UAACW,qBAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,KAAA,EAAO,QAAA;AAAA,YACP,QAAA;AAAA,YACA,aAAA,EAAe,iBAAA;AAAA,YACf,QAAA,EAAU,eAAA;AAAA,YACT,GAAG;AAAA;AAAA,SACN;AAAA,wBAEAX,cAAA;AAAA,UAACY,qBAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAe,mBAAA;AAAA,YACf,SAAA,EAAU,iBAAA;AAAA,YACV,YAAA,EAAc,QAAQC,kBAAA,CAAW,IAAI,KAAK,KAAK,CAAA,EAAG,SAAS,CAAA,GAAI;AAAA;AAAA,SACjE;AAAA,wBAEAf,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACZ,QAAA,EAAA;AAAA,UAAA,eAAA,oBACCE,cAAA,CAACc,aAAA,EAAA,EAAO,IAAA,kBAAMd,cAAA,CAACe,iBAAE,CAAA,EAAI,QAAA,EAAU,CAAA,EAAG,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,WAAA,EAAa,IAAA,EAAK,UAAS,QAAA,EAAA,OAAA,EAEhF,CAAA;AAAA,0BAEFf,cAAA;AAAA,YAACc,aAAA;AAAA,YAAA;AAAA,cACC,MAAM,eAAA,mBAAkBd,cAAA,CAACgB,iBAAA,EAAA,EAAM,CAAA,kCAAMD,aAAA,EAAA,EAAE,CAAA;AAAA,cACvC,QAAA,EAAU,CAAA;AAAA,cACV,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAS,kBAAkB,SAAA,GAAY,SAAA;AAAA,cACvC,SAAS,MAAM;AACb,gBAAA,qBAAA,GAAwB,WAAA,KAAgB,YAAA,EAAa;AAAA,cACvD,CAAA;AAAA,cAEC,4BAAkB,CAAA,KAAA,CAAA,GAAU,CAAA,MAAA;AAAA;AAAA;AAC/B,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;AAQO,MAAM,iBAAiBlB,gBAAA,CAAM,UAAA;AAAA,EAClC,CAAC,EAAE,KAAA,EAAO,WAAA,EAAa,OAAA,GAAU,SAAA,EAAW,IAAA,EAAM,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC/E,IAAA,uBACEG,cAAA;AAAA,MAACc,aAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,OAAA;AAAA,QACA,IAAA;AAAA,QACA,SAAA,EAAWR,WAAA;AAAA,UACT,eAAA;AAAA,UACA,YAAY,SAAA,IAAaW,wCAAA;AAAA,UACzBC,kDAA2B,OAAO,CAAA;AAAA,UAClC;AAAA,SACF;AAAA,QACA,IAAA,iCAAOC,wBAAA,EAAA,EAAa,CAAA;AAAA,QACnB,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA,KAAA,mBACCnB,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,mBAAmB,QAAA,EAAAI,cAAA,CAAO,KAAA,EAAO,MAAM,CAAA,EAAE,oBAEzDJ,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAyB,yBAAe,aAAA,EAAc;AAAA;AAAA,KAE1E;AAAA,EAEJ;AACF;;;;;;;;"}
1
+ {"version":3,"file":"DateTimePicker.cjs.js","sources":["../../src/ds/components/DateTimePicker/date-time-picker.tsx"],"sourcesContent":["import { format, formatDate, isValid } from 'date-fns';\nimport { CalendarIcon, Check, X } from 'lucide-react';\nimport * as React from 'react';\nimport type { DayPickerSingleProps } from 'react-day-picker';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { DatePicker } from './date-picker';\nimport { TimePicker } from './time-picker';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\nimport { Field, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover';\nimport { controlTriggerOpenStateFor } from '@/ds/primitives/control-size';\nimport { fieldTriggerStyle } from '@/ds/primitives/form-element';\nimport { cn } from '@/lib/utils';\n\ntype CommonProps = Omit<DayPickerSingleProps, 'mode' | 'selected' | 'onSelect'> & {\n value: Date | undefined | null;\n minValue?: Date | null;\n maxValue?: Date | null;\n defaultTimeStrValue?: string;\n onValueChange: (date: Date | undefined) => void;\n};\n\ntype DefaultTriggerLook = Pick<ButtonProps, 'variant' | 'size'>;\n\nexport type DateTimePickerProps =\n | (CommonProps & DefaultTriggerLook & { children?: never; className?: string; placeholder?: string })\n | (CommonProps & {\n children: React.ReactNode;\n className?: never;\n placeholder?: string;\n variant?: never;\n size?: never;\n });\n\nexport const DateTimePicker: React.FC<DateTimePickerProps> = ({\n value,\n minValue,\n maxValue,\n defaultTimeStrValue,\n onValueChange,\n children,\n className,\n placeholder,\n variant,\n size,\n ...props\n}) => {\n const [openPopover, setOpenPopover] = React.useState(false);\n\n return (\n <Popover open={openPopover} onOpenChange={setOpenPopover}>\n <PopoverTrigger asChild>\n {children ? (\n children\n ) : (\n <DefaultTrigger\n value={value}\n placeholder={placeholder}\n variant={variant}\n size={size}\n className={className}\n data-testid=\"datepicker-button\"\n />\n )}\n </PopoverTrigger>\n <PopoverContent\n className=\"backdrop-blur-4xl w-auto max-w-66 bg-muted p-0!\"\n align=\"start\"\n data-testid=\"datepicker-calendar\"\n >\n <DateTimePickerContent\n value={value}\n minValue={minValue}\n maxValue={maxValue}\n onValueChange={onValueChange}\n setOpenPopover={setOpenPopover}\n defaultTimeStrValue={defaultTimeStrValue}\n {...props}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nfunction getCompoundDate({ date, timeStr = '' }: { date: Date; timeStr?: string }): Date | null {\n if (!isValid(date)) {\n return null;\n }\n\n if (timeStr) {\n const dateStr = format(date, 'yyyy-MM-dd');\n const newDate = new Date(`${dateStr} ${timeStr}`);\n if (isValid(newDate)) {\n return newDate;\n }\n }\n\n return date;\n}\n\nexport const DateTimePickerContent = ({\n value,\n minValue,\n maxValue,\n onValueChange,\n setOpenPopover,\n placeholder,\n className,\n defaultTimeStrValue,\n ...props\n}: CommonProps & {\n setOpenPopover?: (open: boolean) => void;\n placeholder?: string;\n className?: string;\n}) => {\n const [localErrorMsg, setLocalErrorMsg] = React.useState<string | null>(null);\n const [dateInputValue, setDateInputValue] = React.useState<string>(\n value ? format(getCompoundDate({ date: value, timeStr: defaultTimeStrValue }) || '', 'PP p') : '',\n );\n const [timeStrValue, setTimeStrValue] = React.useState<string>(defaultTimeStrValue || '');\n const [selected, setSelected] = React.useState<Date | undefined>(value ? new Date(value) : undefined);\n\n const debouncedDateUpdate = useDebouncedCallback((date: Date) => {\n if (isValid(date)) {\n setSelected(date);\n onValueChange?.(date);\n setOpenPopover?.(false);\n }\n }, 500);\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = e => {\n setDateInputValue(e.currentTarget.value);\n const date = new Date(e.currentTarget.value);\n debouncedDateUpdate(date);\n };\n\n const updateInputValue = (date: Date | string) => {\n if (isValid(date)) {\n if (maxValue && date > maxValue) {\n setLocalErrorMsg(`The selected date should be before ${format(maxValue, 'PP p')}`);\n setDateInputValue('');\n } else if (minValue && date < minValue) {\n setLocalErrorMsg(`The selected date should be after ${format(minValue, 'PP p')}`);\n setDateInputValue('');\n } else {\n setDateInputValue(format(date, 'PP p'));\n setLocalErrorMsg('');\n }\n } else {\n setDateInputValue('');\n setLocalErrorMsg('');\n }\n };\n\n const dateInputValueDate = new Date(dateInputValue);\n const dateInputValueIsValid = isValid(dateInputValueDate);\n const newValueDefined = dateInputValueIsValid && dateInputValueDate.getTime() !== value?.getTime();\n\n const handleDaySelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleMonthSelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleTimeStrChange = (val: string) => {\n setTimeStrValue(val);\n\n if (dateInputValueIsValid) {\n const newDate = getCompoundDate({ date: dateInputValueDate, timeStr: val });\n updateInputValue(newDate || '');\n }\n };\n\n const handleCancel = () => {\n setOpenPopover?.(false);\n };\n\n const handleApply = () => {\n if (isValid(dateInputValueDate)) {\n onValueChange(dateInputValueDate);\n }\n setOpenPopover?.(false);\n };\n\n const handleClear = () => {\n onValueChange(undefined);\n setSelected(undefined);\n setDateInputValue('');\n setTimeStrValue('');\n setOpenPopover?.(false);\n };\n\n return (\n <div\n aria-label=\"Choose date\"\n className={cn('relative flex flex-col', className)}\n onKeyDown={e => {\n e.stopPropagation();\n if (e.key === 'Escape') {\n setOpenPopover?.(false);\n }\n }}\n >\n <Field invalid={Boolean(localErrorMsg)} className=\"m-4 mb-0 w-auto!\">\n <FieldLabel className=\"sr-only\">Date</FieldLabel>\n <Input type=\"text\" value={dateInputValue} onChange={handleInputChange} placeholder={placeholder} />\n <FieldError>{localErrorMsg}</FieldError>\n </Field>\n\n <DatePicker\n mode=\"single\"\n month={selected}\n selected={selected}\n onMonthChange={handleMonthSelect}\n onSelect={handleDaySelect}\n {...props}\n />\n\n <TimePicker\n onValueChange={handleTimeStrChange}\n className=\"m-4 mt-0 w-auto\"\n defaultValue={value ? formatDate(new Date(value), 'hh:mm a') : defaultTimeStrValue}\n />\n\n <div className=\"m-4 mt-0 grid grid-cols-[1fr_2fr] gap-2\">\n {newValueDefined && (\n <Button icon={<X />} tabIndex={0} size=\"md\" onClick={handleClear} type=\"button\">\n Clear\n </Button>\n )}\n <Button\n icon={newValueDefined ? <Check /> : <X />}\n tabIndex={0}\n type=\"button\"\n size=\"md\"\n variant={newValueDefined ? 'primary' : 'default'}\n onClick={() => {\n dateInputValueIsValid ? handleApply() : handleCancel();\n }}\n >\n {newValueDefined ? `Apply` : `Cancel`}\n </Button>\n </div>\n </div>\n );\n};\n\ntype DefaultButtonProps = Pick<ButtonProps, 'variant' | 'size' | 'tooltip' | 'disabled'> & {\n className?: string;\n placeholder?: string;\n value: Date | undefined | null;\n};\n\nexport const DefaultTrigger = React.forwardRef<HTMLButtonElement, DefaultButtonProps>(\n ({ value, placeholder, variant = 'default', size, className, ...props }, ref) => {\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'justify-start',\n variant === 'default' && fieldTriggerStyle,\n controlTriggerOpenStateFor(variant),\n className,\n )}\n icon={<CalendarIcon />}\n {...props}\n >\n {value ? (\n <span className=\"text-foreground\">{format(value, 'PP p')}</span>\n ) : (\n <span className=\"text-muted-foreground\">{placeholder ?? 'Pick a date'}</span>\n )}\n </Button>\n );\n },\n);\n"],"names":["React","jsxs","Popover","jsx","PopoverTrigger","PopoverContent","isValid","format","useDebouncedCallback","cn","Field","FieldLabel","Input","FieldError","DatePicker","TimePicker","formatDate","Button","X","Check","fieldTriggerStyle","controlTriggerOpenStateFor","CalendarIcon"],"mappings":"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"}
@@ -4,11 +4,10 @@ import { X, Check, CalendarIcon } from 'lucide-react';
4
4
  import * as React from 'react';
5
5
  import { useDebouncedCallback } from 'use-debounce';
6
6
  import { D as DatePicker } from '../date-picker-BN8OEPyr.js';
7
- import { T as TimePicker } from '../time-picker-J7GaNaEd.js';
7
+ import { T as TimePicker } from '../time-picker-Bo6GJcmz.js';
8
8
  import { B as Button } from '../Button-C8QDEN9j.js';
9
- import { F as Field, e as FieldLabel, c as FieldError } from '../field-B89BEZg4.js';
10
- import '../field-control-aria-DB6y41tQ.js';
11
- import { I as Input } from '../input-DQFUjtnh.js';
9
+ import { F as Field, e as FieldLabel, c as FieldError } from '../field-Bc8Ewf_M.js';
10
+ import { I as Input } from '../input-Ds171RJ5.js';
12
11
  import { P as Popover, b as PopoverTrigger, a as PopoverContent } from '../popover-Jf2UUdQ1.js';
13
12
  import { controlTriggerOpenStateFor } from '../primitives/control-size.es.js';
14
13
  import { fieldTriggerStyle } from '../primitives/form-element.es.js';
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker.es.js","sources":["../../src/ds/components/DateTimePicker/date-time-picker.tsx"],"sourcesContent":["import { format, formatDate, isValid } from 'date-fns';\nimport { CalendarIcon, Check, X } from 'lucide-react';\nimport * as React from 'react';\nimport type { DayPickerSingleProps } from 'react-day-picker';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { DatePicker } from './date-picker';\nimport { TimePicker } from './time-picker';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\nimport { Field, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover';\nimport { controlTriggerOpenStateFor } from '@/ds/primitives/control-size';\nimport { fieldTriggerStyle } from '@/ds/primitives/form-element';\nimport { cn } from '@/lib/utils';\n\ntype CommonProps = Omit<DayPickerSingleProps, 'mode' | 'selected' | 'onSelect'> & {\n value: Date | undefined | null;\n minValue?: Date | null;\n maxValue?: Date | null;\n defaultTimeStrValue?: string;\n onValueChange: (date: Date | undefined) => void;\n};\n\ntype DefaultTriggerLook = Pick<ButtonProps, 'variant' | 'size'>;\n\nexport type DateTimePickerProps =\n | (CommonProps & DefaultTriggerLook & { children?: never; className?: string; placeholder?: string })\n | (CommonProps & {\n children: React.ReactNode;\n className?: never;\n placeholder?: string;\n variant?: never;\n size?: never;\n });\n\nexport const DateTimePicker: React.FC<DateTimePickerProps> = ({\n value,\n minValue,\n maxValue,\n defaultTimeStrValue,\n onValueChange,\n children,\n className,\n placeholder,\n variant,\n size,\n ...props\n}) => {\n const [openPopover, setOpenPopover] = React.useState(false);\n\n return (\n <Popover open={openPopover} onOpenChange={setOpenPopover}>\n <PopoverTrigger asChild>\n {children ? (\n children\n ) : (\n <DefaultTrigger\n value={value}\n placeholder={placeholder}\n variant={variant}\n size={size}\n className={className}\n data-testid=\"datepicker-button\"\n />\n )}\n </PopoverTrigger>\n <PopoverContent\n className=\"backdrop-blur-4xl w-auto max-w-66 bg-muted p-0!\"\n align=\"start\"\n data-testid=\"datepicker-calendar\"\n >\n <DateTimePickerContent\n value={value}\n minValue={minValue}\n maxValue={maxValue}\n onValueChange={onValueChange}\n setOpenPopover={setOpenPopover}\n defaultTimeStrValue={defaultTimeStrValue}\n {...props}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nfunction getCompoundDate({ date, timeStr = '' }: { date: Date; timeStr?: string }): Date | null {\n if (!isValid(date)) {\n return null;\n }\n\n if (timeStr) {\n const dateStr = format(date, 'yyyy-MM-dd');\n const newDate = new Date(`${dateStr} ${timeStr}`);\n if (isValid(newDate)) {\n return newDate;\n }\n }\n\n return date;\n}\n\nexport const DateTimePickerContent = ({\n value,\n minValue,\n maxValue,\n onValueChange,\n setOpenPopover,\n placeholder,\n className,\n defaultTimeStrValue,\n ...props\n}: CommonProps & {\n setOpenPopover?: (open: boolean) => void;\n placeholder?: string;\n className?: string;\n}) => {\n const [localErrorMsg, setLocalErrorMsg] = React.useState<string | null>(null);\n const [dateInputValue, setDateInputValue] = React.useState<string>(\n value ? format(getCompoundDate({ date: value, timeStr: defaultTimeStrValue }) || '', 'PP p') : '',\n );\n const [timeStrValue, setTimeStrValue] = React.useState<string>(defaultTimeStrValue || '');\n const [selected, setSelected] = React.useState<Date | undefined>(value ? new Date(value) : undefined);\n\n const debouncedDateUpdate = useDebouncedCallback((date: Date) => {\n if (isValid(date)) {\n setSelected(date);\n onValueChange?.(date);\n setOpenPopover?.(false);\n }\n }, 500);\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = e => {\n setDateInputValue(e.currentTarget.value);\n const date = new Date(e.currentTarget.value);\n debouncedDateUpdate(date);\n };\n\n const updateInputValue = (date: Date | string) => {\n if (isValid(date)) {\n if (maxValue && date > maxValue) {\n setLocalErrorMsg(`The selected date should be before ${format(maxValue, 'PP p')}`);\n setDateInputValue('');\n } else if (minValue && date < minValue) {\n setLocalErrorMsg(`The selected date should be after ${format(minValue, 'PP p')}`);\n setDateInputValue('');\n } else {\n setDateInputValue(format(date, 'PP p'));\n setLocalErrorMsg('');\n }\n } else {\n setDateInputValue('');\n setLocalErrorMsg('');\n }\n };\n\n const dateInputValueDate = new Date(dateInputValue);\n const dateInputValueIsValid = isValid(dateInputValueDate);\n const newValueDefined = dateInputValueIsValid && dateInputValueDate.getTime() !== value?.getTime();\n\n const handleDaySelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleMonthSelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleTimeStrChange = (val: string) => {\n setTimeStrValue(val);\n\n if (dateInputValueIsValid) {\n const newDate = getCompoundDate({ date: dateInputValueDate, timeStr: val });\n updateInputValue(newDate || '');\n }\n };\n\n const handleCancel = () => {\n setOpenPopover?.(false);\n };\n\n const handleApply = () => {\n if (isValid(dateInputValueDate)) {\n onValueChange(dateInputValueDate);\n }\n setOpenPopover?.(false);\n };\n\n const handleClear = () => {\n onValueChange(undefined);\n setSelected(undefined);\n setDateInputValue('');\n setTimeStrValue('');\n setOpenPopover?.(false);\n };\n\n return (\n <div\n aria-label=\"Choose date\"\n className={cn('relative flex flex-col', className)}\n onKeyDown={e => {\n e.stopPropagation();\n if (e.key === 'Escape') {\n setOpenPopover?.(false);\n }\n }}\n >\n <Field invalid={Boolean(localErrorMsg)} className=\"m-4 mb-0 w-auto!\">\n <FieldLabel className=\"sr-only\">Date</FieldLabel>\n <Input type=\"text\" value={dateInputValue} onChange={handleInputChange} placeholder={placeholder} />\n <FieldError>{localErrorMsg}</FieldError>\n </Field>\n\n <DatePicker\n mode=\"single\"\n month={selected}\n selected={selected}\n onMonthChange={handleMonthSelect}\n onSelect={handleDaySelect}\n {...props}\n />\n\n <TimePicker\n onValueChange={handleTimeStrChange}\n className=\"m-4 mt-0 w-auto\"\n defaultValue={value ? formatDate(new Date(value), 'hh:mm a') : defaultTimeStrValue}\n />\n\n <div className=\"m-4 mt-0 grid grid-cols-[1fr_2fr] gap-2\">\n {newValueDefined && (\n <Button icon={<X />} tabIndex={0} size=\"md\" onClick={handleClear} type=\"button\">\n Clear\n </Button>\n )}\n <Button\n icon={newValueDefined ? <Check /> : <X />}\n tabIndex={0}\n type=\"button\"\n size=\"md\"\n variant={newValueDefined ? 'primary' : 'default'}\n onClick={() => {\n dateInputValueIsValid ? handleApply() : handleCancel();\n }}\n >\n {newValueDefined ? `Apply` : `Cancel`}\n </Button>\n </div>\n </div>\n );\n};\n\ntype DefaultButtonProps = Pick<ButtonProps, 'variant' | 'size' | 'tooltip' | 'disabled'> & {\n className?: string;\n placeholder?: string;\n value: Date | undefined | null;\n};\n\nexport const DefaultTrigger = React.forwardRef<HTMLButtonElement, DefaultButtonProps>(\n ({ value, placeholder, variant = 'default', size, className, ...props }, ref) => {\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'justify-start',\n variant === 'default' && fieldTriggerStyle,\n controlTriggerOpenStateFor(variant),\n className,\n )}\n icon={<CalendarIcon />}\n {...props}\n >\n {value ? (\n <span className=\"text-foreground\">{format(value, 'PP p')}</span>\n ) : (\n <span className=\"text-muted-foreground\">{placeholder ?? 'Pick a date'}</span>\n )}\n </Button>\n );\n },\n);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DateTimePicker.es.js","sources":["../../src/ds/components/DateTimePicker/date-time-picker.tsx"],"sourcesContent":["import { format, formatDate, isValid } from 'date-fns';\nimport { CalendarIcon, Check, X } from 'lucide-react';\nimport * as React from 'react';\nimport type { DayPickerSingleProps } from 'react-day-picker';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { DatePicker } from './date-picker';\nimport { TimePicker } from './time-picker';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\nimport { Field, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover';\nimport { controlTriggerOpenStateFor } from '@/ds/primitives/control-size';\nimport { fieldTriggerStyle } from '@/ds/primitives/form-element';\nimport { cn } from '@/lib/utils';\n\ntype CommonProps = Omit<DayPickerSingleProps, 'mode' | 'selected' | 'onSelect'> & {\n value: Date | undefined | null;\n minValue?: Date | null;\n maxValue?: Date | null;\n defaultTimeStrValue?: string;\n onValueChange: (date: Date | undefined) => void;\n};\n\ntype DefaultTriggerLook = Pick<ButtonProps, 'variant' | 'size'>;\n\nexport type DateTimePickerProps =\n | (CommonProps & DefaultTriggerLook & { children?: never; className?: string; placeholder?: string })\n | (CommonProps & {\n children: React.ReactNode;\n className?: never;\n placeholder?: string;\n variant?: never;\n size?: never;\n });\n\nexport const DateTimePicker: React.FC<DateTimePickerProps> = ({\n value,\n minValue,\n maxValue,\n defaultTimeStrValue,\n onValueChange,\n children,\n className,\n placeholder,\n variant,\n size,\n ...props\n}) => {\n const [openPopover, setOpenPopover] = React.useState(false);\n\n return (\n <Popover open={openPopover} onOpenChange={setOpenPopover}>\n <PopoverTrigger asChild>\n {children ? (\n children\n ) : (\n <DefaultTrigger\n value={value}\n placeholder={placeholder}\n variant={variant}\n size={size}\n className={className}\n data-testid=\"datepicker-button\"\n />\n )}\n </PopoverTrigger>\n <PopoverContent\n className=\"backdrop-blur-4xl w-auto max-w-66 bg-muted p-0!\"\n align=\"start\"\n data-testid=\"datepicker-calendar\"\n >\n <DateTimePickerContent\n value={value}\n minValue={minValue}\n maxValue={maxValue}\n onValueChange={onValueChange}\n setOpenPopover={setOpenPopover}\n defaultTimeStrValue={defaultTimeStrValue}\n {...props}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nfunction getCompoundDate({ date, timeStr = '' }: { date: Date; timeStr?: string }): Date | null {\n if (!isValid(date)) {\n return null;\n }\n\n if (timeStr) {\n const dateStr = format(date, 'yyyy-MM-dd');\n const newDate = new Date(`${dateStr} ${timeStr}`);\n if (isValid(newDate)) {\n return newDate;\n }\n }\n\n return date;\n}\n\nexport const DateTimePickerContent = ({\n value,\n minValue,\n maxValue,\n onValueChange,\n setOpenPopover,\n placeholder,\n className,\n defaultTimeStrValue,\n ...props\n}: CommonProps & {\n setOpenPopover?: (open: boolean) => void;\n placeholder?: string;\n className?: string;\n}) => {\n const [localErrorMsg, setLocalErrorMsg] = React.useState<string | null>(null);\n const [dateInputValue, setDateInputValue] = React.useState<string>(\n value ? format(getCompoundDate({ date: value, timeStr: defaultTimeStrValue }) || '', 'PP p') : '',\n );\n const [timeStrValue, setTimeStrValue] = React.useState<string>(defaultTimeStrValue || '');\n const [selected, setSelected] = React.useState<Date | undefined>(value ? new Date(value) : undefined);\n\n const debouncedDateUpdate = useDebouncedCallback((date: Date) => {\n if (isValid(date)) {\n setSelected(date);\n onValueChange?.(date);\n setOpenPopover?.(false);\n }\n }, 500);\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = e => {\n setDateInputValue(e.currentTarget.value);\n const date = new Date(e.currentTarget.value);\n debouncedDateUpdate(date);\n };\n\n const updateInputValue = (date: Date | string) => {\n if (isValid(date)) {\n if (maxValue && date > maxValue) {\n setLocalErrorMsg(`The selected date should be before ${format(maxValue, 'PP p')}`);\n setDateInputValue('');\n } else if (minValue && date < minValue) {\n setLocalErrorMsg(`The selected date should be after ${format(minValue, 'PP p')}`);\n setDateInputValue('');\n } else {\n setDateInputValue(format(date, 'PP p'));\n setLocalErrorMsg('');\n }\n } else {\n setDateInputValue('');\n setLocalErrorMsg('');\n }\n };\n\n const dateInputValueDate = new Date(dateInputValue);\n const dateInputValueIsValid = isValid(dateInputValueDate);\n const newValueDefined = dateInputValueIsValid && dateInputValueDate.getTime() !== value?.getTime();\n\n const handleDaySelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleMonthSelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleTimeStrChange = (val: string) => {\n setTimeStrValue(val);\n\n if (dateInputValueIsValid) {\n const newDate = getCompoundDate({ date: dateInputValueDate, timeStr: val });\n updateInputValue(newDate || '');\n }\n };\n\n const handleCancel = () => {\n setOpenPopover?.(false);\n };\n\n const handleApply = () => {\n if (isValid(dateInputValueDate)) {\n onValueChange(dateInputValueDate);\n }\n setOpenPopover?.(false);\n };\n\n const handleClear = () => {\n onValueChange(undefined);\n setSelected(undefined);\n setDateInputValue('');\n setTimeStrValue('');\n setOpenPopover?.(false);\n };\n\n return (\n <div\n aria-label=\"Choose date\"\n className={cn('relative flex flex-col', className)}\n onKeyDown={e => {\n e.stopPropagation();\n if (e.key === 'Escape') {\n setOpenPopover?.(false);\n }\n }}\n >\n <Field invalid={Boolean(localErrorMsg)} className=\"m-4 mb-0 w-auto!\">\n <FieldLabel className=\"sr-only\">Date</FieldLabel>\n <Input type=\"text\" value={dateInputValue} onChange={handleInputChange} placeholder={placeholder} />\n <FieldError>{localErrorMsg}</FieldError>\n </Field>\n\n <DatePicker\n mode=\"single\"\n month={selected}\n selected={selected}\n onMonthChange={handleMonthSelect}\n onSelect={handleDaySelect}\n {...props}\n />\n\n <TimePicker\n onValueChange={handleTimeStrChange}\n className=\"m-4 mt-0 w-auto\"\n defaultValue={value ? formatDate(new Date(value), 'hh:mm a') : defaultTimeStrValue}\n />\n\n <div className=\"m-4 mt-0 grid grid-cols-[1fr_2fr] gap-2\">\n {newValueDefined && (\n <Button icon={<X />} tabIndex={0} size=\"md\" onClick={handleClear} type=\"button\">\n Clear\n </Button>\n )}\n <Button\n icon={newValueDefined ? <Check /> : <X />}\n tabIndex={0}\n type=\"button\"\n size=\"md\"\n variant={newValueDefined ? 'primary' : 'default'}\n onClick={() => {\n dateInputValueIsValid ? handleApply() : handleCancel();\n }}\n >\n {newValueDefined ? `Apply` : `Cancel`}\n </Button>\n </div>\n </div>\n );\n};\n\ntype DefaultButtonProps = Pick<ButtonProps, 'variant' | 'size' | 'tooltip' | 'disabled'> & {\n className?: string;\n placeholder?: string;\n value: Date | undefined | null;\n};\n\nexport const DefaultTrigger = React.forwardRef<HTMLButtonElement, DefaultButtonProps>(\n ({ value, placeholder, variant = 'default', size, className, ...props }, ref) => {\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'justify-start',\n variant === 'default' && fieldTriggerStyle,\n controlTriggerOpenStateFor(variant),\n className,\n )}\n icon={<CalendarIcon />}\n {...props}\n >\n {value ? (\n <span className=\"text-foreground\">{format(value, 'PP p')}</span>\n ) : (\n <span className=\"text-muted-foreground\">{placeholder ?? 'Pick a date'}</span>\n )}\n </Button>\n );\n },\n);\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const dateTimeRangePicker = require('../date-time-range-picker-BvRPfy1i.cjs');
5
+ const dateTimeRangePicker = require('../date-time-range-picker-BNaXCa7r.cjs');
6
6
 
7
7
 
8
8
 
@@ -1,2 +1,2 @@
1
- export { D as DateTimeRangePicker } from '../date-time-range-picker-CIfaXUuy.js';
1
+ export { D as DateTimeRangePicker } from '../date-time-range-picker-C5x_33hB.js';
2
2
  //# sourceMappingURL=DateTimeRangePicker.es.js.map
@@ -2,8 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const dialog = require('../dialog-wL-fuFON.cjs');
6
- const dialogAction = require('../dialog-action-CcMhvjM-.cjs');
5
+ const dialog = require('../dialog-DQI9ChYf.cjs');
6
+ const dialogAction = require('../dialog-action-gdo9CwUv.cjs');
7
7
 
8
8
 
9
9
 
@@ -1,3 +1,3 @@
1
- export { D as Dialog, a as DialogBody, b as DialogCancel, c as DialogClose, d as DialogContent, e as DialogDescription, f as DialogFooter, g as DialogHeader, h as DialogOverlay, i as DialogPortal, j as DialogTitle, k as DialogTrigger } from '../dialog-BYsQZGIj.js';
2
- export { D as DialogAction } from '../dialog-action-B-pF99m0.js';
1
+ export { D as Dialog, a as DialogBody, b as DialogCancel, c as DialogClose, d as DialogContent, e as DialogDescription, f as DialogFooter, g as DialogHeader, h as DialogOverlay, i as DialogPortal, j as DialogTitle, k as DialogTrigger } from '../dialog-DlZmNahd.js';
2
+ export { D as DialogAction } from '../dialog-action-c4nfPomF.js';
3
3
  //# sourceMappingURL=Dialog.es.js.map