@mastra/playground-ui 62.0.1-alpha.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 (433) 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.es.js +4 -4
  38. package/dist/components/DataPanel.cjs.js +1 -1
  39. package/dist/components/DataPanel.es.js +1 -1
  40. package/dist/components/DateTimePicker.cjs.js +0 -1
  41. package/dist/components/DateTimePicker.cjs.js.map +1 -1
  42. package/dist/components/DateTimePicker.es.js +3 -4
  43. package/dist/components/DateTimePicker.es.js.map +1 -1
  44. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  45. package/dist/components/DateTimeRangePicker.es.js +1 -1
  46. package/dist/components/Dialog.cjs.js +2 -2
  47. package/dist/components/Dialog.es.js +2 -2
  48. package/dist/components/Drawer.cjs.js +1 -1
  49. package/dist/components/Drawer.es.js +1 -1
  50. package/dist/components/EnvironmentVariablesEditor.cjs.js +0 -1
  51. package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
  52. package/dist/components/EnvironmentVariablesEditor.es.js +3 -4
  53. package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
  54. package/dist/components/Field.es.js +2 -2
  55. package/dist/components/FilterBar.cjs.js +2 -2
  56. package/dist/components/FilterBar.cjs.js.map +1 -1
  57. package/dist/components/FilterBar.es.js +3 -3
  58. package/dist/components/FilterBar.es.js.map +1 -1
  59. package/dist/components/FormFieldBlocks.es.js +2 -2
  60. package/dist/components/Input.es.js +1 -1
  61. package/dist/components/InputGroup.es.js +1 -1
  62. package/dist/components/InputNumber.es.js +1 -1
  63. package/dist/components/JSONSchemaForm.cjs.js +0 -1
  64. package/dist/components/JSONSchemaForm.cjs.js.map +1 -1
  65. package/dist/components/JSONSchemaForm.es.js +4 -5
  66. package/dist/components/JSONSchemaForm.es.js.map +1 -1
  67. package/dist/components/ListSearch.cjs.js +1 -1
  68. package/dist/components/ListSearch.es.js +1 -1
  69. package/dist/components/LogsDataList.es.js +3 -3
  70. package/dist/components/MarkdownRenderer.es.js +1 -1
  71. package/dist/components/PropertyFilter.cjs.js +0 -1
  72. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  73. package/dist/components/PropertyFilter.es.js +4 -5
  74. package/dist/components/PropertyFilter.es.js.map +1 -1
  75. package/dist/components/RadioGroup.es.js +1 -1
  76. package/dist/components/RuleBuilder.es.js +2 -2
  77. package/dist/components/SavedViews.cjs.js +1 -1
  78. package/dist/components/SavedViews.es.js +1 -1
  79. package/dist/components/SearchInput.cjs.js +1 -1
  80. package/dist/components/SearchInput.es.js +1 -1
  81. package/dist/components/Section.cjs.js +1 -1
  82. package/dist/components/Section.es.js +1 -1
  83. package/dist/components/SegmentedControl.es.js +1 -1
  84. package/dist/components/Select.es.js +1 -1
  85. package/dist/components/SideDialog.cjs.js +1 -1
  86. package/dist/components/SideDialog.es.js +1 -1
  87. package/dist/components/Sidebar.cjs.js +2 -2
  88. package/dist/components/Sidebar.es.js +3 -3
  89. package/dist/components/Switch.es.js +1 -1
  90. package/dist/components/ThemeToggle.es.js +1 -1
  91. package/dist/components/Workflow.cjs.js +2 -2
  92. package/dist/components/Workflow.es.js +3 -3
  93. package/dist/components/ai/activity.es.js +1 -1
  94. package/dist/components/ai/ask-user.cjs.js +1 -1
  95. package/dist/components/ai/ask-user.es.js +1 -1
  96. package/dist/components/ai/plan.es.js +1 -1
  97. package/dist/components/ai/tool-approval.es.js +1 -1
  98. package/dist/components/ai/tool-call.es.js +1 -1
  99. package/dist/{data-code-section-zG2S1MPX.js → data-code-section-BGLC-hxm.js} +3 -3
  100. package/dist/{data-code-section-zG2S1MPX.js.map → data-code-section-BGLC-hxm.js.map} +1 -1
  101. package/dist/{data-code-section-hVbIXLNC.cjs → data-code-section-BTRNa1SD.cjs} +3 -3
  102. package/dist/{data-code-section-hVbIXLNC.cjs.map → data-code-section-BTRNa1SD.cjs.map} +1 -1
  103. package/dist/{data-list-DvbAODUM.js → data-list-DDGpWucH.js} +2 -2
  104. package/dist/{data-list-DvbAODUM.js.map → data-list-DDGpWucH.js.map} +1 -1
  105. package/dist/{data-list-skeleton-DLVW7OFS.js → data-list-skeleton-CJFwZBlW.js} +2 -2
  106. package/dist/{data-list-skeleton-DLVW7OFS.js.map → data-list-skeleton-CJFwZBlW.js.map} +1 -1
  107. package/dist/{data-panel-BLqydW68.js → data-panel-DfVGx0Ea.js} +3 -3
  108. package/dist/{data-panel-BLqydW68.js.map → data-panel-DfVGx0Ea.js.map} +1 -1
  109. package/dist/{data-panel-BdeebdMA.cjs → data-panel-Dhg7s3fD.cjs} +4 -4
  110. package/dist/{data-panel-BdeebdMA.cjs.map → data-panel-Dhg7s3fD.cjs.map} +1 -1
  111. package/dist/{date-time-range-picker-BvRPfy1i.cjs → date-time-range-picker-BNaXCa7r.cjs} +1 -2
  112. package/dist/{date-time-range-picker-BvRPfy1i.cjs.map → date-time-range-picker-BNaXCa7r.cjs.map} +1 -1
  113. package/dist/{date-time-range-picker-CIfaXUuy.js → date-time-range-picker-C5x_33hB.js} +3 -4
  114. package/dist/{date-time-range-picker-CIfaXUuy.js.map → date-time-range-picker-C5x_33hB.js.map} +1 -1
  115. package/dist/{dialog-wL-fuFON.cjs → dialog-DQI9ChYf.cjs} +74 -37
  116. package/dist/dialog-DQI9ChYf.cjs.map +1 -0
  117. package/dist/{dialog-BYsQZGIj.js → dialog-DlZmNahd.js} +75 -35
  118. package/dist/dialog-DlZmNahd.js.map +1 -0
  119. package/dist/{dialog-action-B-pF99m0.js → dialog-action-c4nfPomF.js} +2 -2
  120. package/dist/{dialog-action-B-pF99m0.js.map → dialog-action-c4nfPomF.js.map} +1 -1
  121. package/dist/{dialog-action-CcMhvjM-.cjs → dialog-action-gdo9CwUv.cjs} +2 -2
  122. package/dist/{dialog-action-CcMhvjM-.cjs.map → dialog-action-gdo9CwUv.cjs.map} +1 -1
  123. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +1 -1
  124. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +1 -1
  125. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
  126. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +2 -2
  127. package/dist/domains/chat/messages/dataset-save-action.cjs.js +2 -3
  128. package/dist/domains/chat/messages/dataset-save-action.cjs.js.map +1 -1
  129. package/dist/domains/chat/messages/dataset-save-action.es.js +5 -6
  130. package/dist/domains/chat/messages/dataset-save-action.es.js.map +1 -1
  131. package/dist/domains/chat/messages/message-row.cjs.js +0 -1
  132. package/dist/domains/chat/messages/message-row.cjs.js.map +1 -1
  133. package/dist/domains/chat/messages/message-row.es.js +1 -2
  134. package/dist/domains/chat/messages/message-row.es.js.map +1 -1
  135. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  136. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  137. package/dist/domains/chat/messages/skill-message.es.js +1 -1
  138. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  139. package/dist/domains/chat/tools/badges/agent-badge.es.js +2 -2
  140. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  141. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  142. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +1 -1
  143. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +2 -2
  144. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  145. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
  146. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
  147. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  148. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  149. package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
  150. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +0 -1
  151. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  152. package/dist/domains/chat/tools/badges/workflow-badge.es.js +2 -3
  153. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  154. package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
  155. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  156. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +1 -2
  157. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js.map +1 -1
  158. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -5
  159. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js.map +1 -1
  160. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  161. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  162. package/dist/domains/logs/components/logs-list-view.es.js +3 -3
  163. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  164. package/dist/domains/memory/components/observation-detail-view.cjs.js +0 -1
  165. package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
  166. package/dist/domains/memory/components/observation-detail-view.es.js +2 -3
  167. package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
  168. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  169. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  170. package/dist/domains/metrics/drilldown.cjs.js +1 -1
  171. package/dist/domains/metrics/drilldown.es.js +1 -1
  172. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +1 -2
  173. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +1 -1
  174. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -5
  175. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +1 -1
  176. package/dist/domains/request-context/components/request-context-label.cjs.js +0 -1
  177. package/dist/domains/request-context/components/request-context-label.cjs.js.map +1 -1
  178. package/dist/domains/request-context/components/request-context-label.es.js +1 -2
  179. package/dist/domains/request-context/components/request-context-label.es.js.map +1 -1
  180. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  181. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  182. package/dist/domains/scores/components/span-scoring.cjs.js +2 -2
  183. package/dist/domains/scores/components/span-scoring.es.js +3 -3
  184. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
  185. package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
  186. package/dist/domains/traces/components/feedback-thread.es.js +2 -2
  187. package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -2
  188. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  189. package/dist/domains/traces/components/span-data-panel-view.es.js +1 -2
  190. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  191. package/dist/domains/traces/components/span-details-view.cjs.js +0 -1
  192. package/dist/domains/traces/components/span-details-view.cjs.js.map +1 -1
  193. package/dist/domains/traces/components/span-details-view.es.js +0 -1
  194. package/dist/domains/traces/components/span-details-view.es.js.map +1 -1
  195. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  196. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  197. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  198. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  199. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  200. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  201. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  202. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
  203. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  204. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  205. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  206. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  207. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +0 -1
  208. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  209. package/dist/domains/traces/components/thread-view-by-trace.es.js +0 -1
  210. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  211. package/dist/domains/traces/components/trace-columns-menu.cjs.js +2 -3
  212. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  213. package/dist/domains/traces/components/trace-columns-menu.es.js +4 -5
  214. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  215. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
  216. package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
  217. package/dist/domains/traces/components/trace-data-panel.cjs.js +1 -3
  218. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  219. package/dist/domains/traces/components/trace-data-panel.es.js +2 -4
  220. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  221. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  222. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  223. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  224. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  225. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  226. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  227. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +3 -3
  228. package/dist/domains/traces/components/trace-time-range-chip.es.js +3 -3
  229. package/dist/domains/traces/components/traces-list-view.es.js +3 -3
  230. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
  231. package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js +1 -1
  232. package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js +1 -1
  233. package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +1 -1
  234. package/dist/domains/traces/hooks/use-trace-url-state.es.js +1 -1
  235. package/dist/domains/traces/trace-filters.cjs.js +1 -1
  236. package/dist/domains/traces/trace-filters.es.js +1 -1
  237. package/dist/domains/traces/trace-query-filters.cjs.js +1 -1
  238. package/dist/domains/traces/trace-query-filters.es.js +1 -1
  239. package/dist/domains/traces.cjs.js +1 -1
  240. package/dist/domains/traces.es.js +1 -1
  241. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  242. package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
  243. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  244. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +1 -1
  245. package/dist/domains/workflows/runs/workflow-run-list.es.js +1 -1
  246. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  247. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  248. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +1 -1
  249. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +0 -1
  250. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js.map +1 -1
  251. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +2 -3
  252. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js.map +1 -1
  253. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +0 -1
  254. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js.map +1 -1
  255. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +2 -3
  256. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js.map +1 -1
  257. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
  258. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  259. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  260. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  261. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +0 -1
  262. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js.map +1 -1
  263. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +2 -3
  264. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js.map +1 -1
  265. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +1 -1
  266. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
  267. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +0 -2
  268. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
  269. package/dist/domains/workflows/workflow/workflow-input-data.es.js +0 -2
  270. package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
  271. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +1 -1
  272. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +2 -2
  273. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
  274. package/dist/domains/workflows/workflow/workflow-run-data.es.js +1 -1
  275. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  276. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +1 -1
  277. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +2 -2
  278. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
  279. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +0 -1
  280. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js.map +1 -1
  281. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +2 -3
  282. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js.map +1 -1
  283. package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
  284. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +3 -4
  285. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js.map +1 -1
  286. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +6 -7
  287. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js.map +1 -1
  288. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +1 -1
  289. package/dist/domains/workspace/components/workspace-create-directory.es.js +2 -2
  290. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  291. package/dist/domains/workspace/components/workspace-search.es.js +1 -1
  292. package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
  293. package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
  294. package/dist/{drawer-B-t4ydEh.js → drawer-CZlqOjd2.js} +17 -7
  295. package/dist/{drawer-B-t4ydEh.js.map → drawer-CZlqOjd2.js.map} +1 -1
  296. package/dist/{drawer-DE2b3eld.cjs → drawer-CeUYCG-S.cjs} +16 -6
  297. package/dist/{drawer-DE2b3eld.cjs.map → drawer-CeUYCG-S.cjs.map} +1 -1
  298. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  299. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +1 -1
  300. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +4 -4
  301. package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
  302. package/dist/ee/signals/noise-detail-panel.es.js +1 -1
  303. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -3
  304. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
  305. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +4 -5
  306. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
  307. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  308. package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
  309. package/dist/ee/signals/theme-detail-panel.es.js +1 -1
  310. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
  311. package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
  312. package/dist/{field-B89BEZg4.js → field-Bc8Ewf_M.js} +2 -2
  313. package/dist/{field-B89BEZg4.js.map → field-Bc8Ewf_M.js.map} +1 -1
  314. package/dist/{field-control-aria-DB6y41tQ.js → field-control-aria-CCJ4-mUe.js} +2 -2
  315. package/dist/{field-control-aria-DB6y41tQ.js.map → field-control-aria-CCJ4-mUe.js.map} +1 -1
  316. package/dist/{filter-bar-chip-uPmGVzPR.cjs → filter-bar-chip-C_371aon.cjs} +35 -6
  317. package/dist/filter-bar-chip-C_371aon.cjs.map +1 -0
  318. package/dist/{filter-bar-chip-Bu27EjSO.js → filter-bar-chip-Dc6phYqZ.js} +35 -6
  319. package/dist/filter-bar-chip-Dc6phYqZ.js.map +1 -0
  320. package/dist/hooks/use-is-mobile.cjs.js +14 -10
  321. package/dist/hooks/use-is-mobile.cjs.js.map +1 -1
  322. package/dist/hooks/use-is-mobile.es.js +15 -11
  323. package/dist/hooks/use-is-mobile.es.js.map +1 -1
  324. package/dist/{input-DQFUjtnh.js → input-Ds171RJ5.js} +2 -2
  325. package/dist/{input-DQFUjtnh.js.map → input-Ds171RJ5.js.map} +1 -1
  326. package/dist/{input-group-BWsGYnES.js → input-group-Cxv64rPB.js} +2 -2
  327. package/dist/{input-group-BWsGYnES.js.map → input-group-Cxv64rPB.js.map} +1 -1
  328. package/dist/layout/tabbed-container.cjs.js +1 -1
  329. package/dist/layout/tabbed-container.es.js +3 -3
  330. package/dist/lib/form/components/boolean-field.cjs.js +0 -1
  331. package/dist/lib/form/components/boolean-field.cjs.js.map +1 -1
  332. package/dist/lib/form/components/boolean-field.es.js +2 -3
  333. package/dist/lib/form/components/boolean-field.es.js.map +1 -1
  334. package/dist/lib/form/components/date-field.es.js +1 -1
  335. package/dist/lib/form/components/field-wrapper.cjs.js +0 -1
  336. package/dist/lib/form/components/field-wrapper.cjs.js.map +1 -1
  337. package/dist/lib/form/components/field-wrapper.es.js +1 -2
  338. package/dist/lib/form/components/field-wrapper.es.js.map +1 -1
  339. package/dist/lib/form/components/number-field.es.js +1 -1
  340. package/dist/lib/form/components/record-field.es.js +1 -1
  341. package/dist/lib/form/components/select-field.es.js +1 -1
  342. package/dist/{list-search-xHadeMHl.cjs → list-search-C3yXcTRO.cjs} +2 -2
  343. package/dist/{list-search-xHadeMHl.cjs.map → list-search-C3yXcTRO.cjs.map} +1 -1
  344. package/dist/{list-search-BNnMwbpv.js → list-search-CmPRFDsn.js} +2 -2
  345. package/dist/{list-search-BNnMwbpv.js.map → list-search-CmPRFDsn.js.map} +1 -1
  346. package/dist/{logs-data-list-Dc1CNVBT.js → logs-data-list-Cudh6b-c.js} +2 -2
  347. package/dist/{logs-data-list-Dc1CNVBT.js.map → logs-data-list-Cudh6b-c.js.map} +1 -1
  348. package/dist/{markdown-renderer-D5Wjk1Cs.js → markdown-renderer-Cly6VMDr.js} +2 -2
  349. package/dist/{markdown-renderer-D5Wjk1Cs.js.map → markdown-renderer-Cly6VMDr.js.map} +1 -1
  350. package/dist/new/settings.cjs.js +1 -1
  351. package/dist/new/settings.es.js +1 -1
  352. package/dist/{plan-Cl3-JgbI.js → plan-DIbhFPRL.js} +2 -2
  353. package/dist/{plan-Cl3-JgbI.js.map → plan-DIbhFPRL.js.map} +1 -1
  354. package/dist/primitives/textarea-control.es.js +1 -1
  355. package/dist/{property-filter-applied-CZLzY0OH.js → property-filter-applied-DXH81ffT.js} +2 -2
  356. package/dist/{property-filter-applied-CZLzY0OH.js.map → property-filter-applied-DXH81ffT.js.map} +1 -1
  357. package/dist/{radio-group-Bk52hNNb.js → radio-group-C2zsCipq.js} +2 -2
  358. package/dist/{radio-group-Bk52hNNb.js.map → radio-group-C2zsCipq.js.map} +1 -1
  359. package/dist/{reasoning-activity-CIuVSAGA.js → reasoning-activity-B1r4JQxm.js} +2 -2
  360. package/dist/{reasoning-activity-CIuVSAGA.js.map → reasoning-activity-B1r4JQxm.js.map} +1 -1
  361. package/dist/resize/panel-drawer.cjs.js +1 -1
  362. package/dist/resize/panel-drawer.es.js +1 -1
  363. package/dist/{search-input-fqSrRTLU.js → search-input-D23h16CB.js} +3 -4
  364. package/dist/{search-input-fqSrRTLU.js.map → search-input-D23h16CB.js.map} +1 -1
  365. package/dist/{search-input-UtTJMjJu.cjs → search-input-DbEE2zEz.cjs} +1 -2
  366. package/dist/{search-input-UtTJMjJu.cjs.map → search-input-DbEE2zEz.cjs.map} +1 -1
  367. package/dist/{section-DhZbtWhu.cjs → section-CdaSS9M7.cjs} +2 -2
  368. package/dist/{section-DhZbtWhu.cjs.map → section-CdaSS9M7.cjs.map} +1 -1
  369. package/dist/{section-Dq6aFxlH.js → section-DcjTdrqz.js} +2 -2
  370. package/dist/{section-Dq6aFxlH.js.map → section-DcjTdrqz.js.map} +1 -1
  371. package/dist/{segmented-control-CUnvFStD.js → segmented-control-BfY7F0NZ.js} +2 -2
  372. package/dist/{segmented-control-CUnvFStD.js.map → segmented-control-BfY7F0NZ.js.map} +1 -1
  373. package/dist/{select-N2lgBRsg.js → select-BGAiIHnS.js} +2 -2
  374. package/dist/{select-N2lgBRsg.js.map → select-BGAiIHnS.js.map} +1 -1
  375. package/dist/{settings-row-CwZ3JffC.cjs → settings-row-rOI4yGvi.cjs} +1 -2
  376. package/dist/{settings-row-CwZ3JffC.cjs.map → settings-row-rOI4yGvi.cjs.map} +1 -1
  377. package/dist/{settings-row-gpwIVAMN.js → settings-row-ylIw4rfC.js} +2 -3
  378. package/dist/{settings-row-gpwIVAMN.js.map → settings-row-ylIw4rfC.js.map} +1 -1
  379. package/dist/{side-dialog-BIyr498B.js → side-dialog-CB_wrLtE.js} +3 -3
  380. package/dist/{side-dialog-BIyr498B.js.map → side-dialog-CB_wrLtE.js.map} +1 -1
  381. package/dist/{side-dialog-BT2xywA8.cjs → side-dialog-OPXvmRDA.cjs} +3 -3
  382. package/dist/{side-dialog-BT2xywA8.cjs.map → side-dialog-OPXvmRDA.cjs.map} +1 -1
  383. package/dist/{span-payload-primitives-WqYTBiGx.js → span-payload-primitives-Cixom2Py.js} +2 -2
  384. package/dist/{span-payload-primitives-WqYTBiGx.js.map → span-payload-primitives-Cixom2Py.js.map} +1 -1
  385. package/dist/src/ds/components/AlertDialog/alert-dialog.d.ts +8 -11
  386. package/dist/src/ds/components/Dialog/dialog-shell.d.ts +1 -0
  387. package/dist/src/ds/components/Dialog/dialog.d.ts +9 -3
  388. package/dist/src/ds/components/FilterBar/filter-bar-tree.d.ts +9 -1
  389. package/dist/src/ds/components/FilterBar/types.d.ts +6 -0
  390. package/dist/style.css +17 -4
  391. package/dist/{switch-DiSlsWUt.js → switch-BBeMfeQ2.js} +2 -2
  392. package/dist/{switch-DiSlsWUt.js.map → switch-BBeMfeQ2.js.map} +1 -1
  393. package/dist/{time-picker-J7GaNaEd.js → time-picker-Bo6GJcmz.js} +2 -2
  394. package/dist/{time-picker-J7GaNaEd.js.map → time-picker-Bo6GJcmz.js.map} +1 -1
  395. package/dist/{tool-approval-nsbG8-qI.js → tool-approval-BQ6sDvyS.js} +2 -2
  396. package/dist/{tool-approval-nsbG8-qI.js.map → tool-approval-BQ6sDvyS.js.map} +1 -1
  397. package/dist/{tool-call-arguments-RKyYP3xh.js → tool-call-arguments-B86JP3Dy.js} +2 -2
  398. package/dist/{tool-call-arguments-RKyYP3xh.js.map → tool-call-arguments-B86JP3Dy.js.map} +1 -1
  399. package/dist/{tool-card-BtPh44u6.js → tool-card-C8IrtMuQ.js} +2 -2
  400. package/dist/{tool-card-BtPh44u6.js.map → tool-card-C8IrtMuQ.js.map} +1 -1
  401. package/dist/{trace-filters-B9myZP-l.cjs → trace-filters-Bh4dVNPX.cjs} +16 -20
  402. package/dist/trace-filters-Bh4dVNPX.cjs.map +1 -0
  403. package/dist/{trace-filters-Cvra0Aum.js → trace-filters-C71gmCq4.js} +16 -20
  404. package/dist/trace-filters-C71gmCq4.js.map +1 -0
  405. package/dist/{traces-data-list-Cz8YHTOD.js → traces-data-list-L_r2GAtr.js} +2 -2
  406. package/dist/{traces-data-list-Cz8YHTOD.js.map → traces-data-list-L_r2GAtr.js.map} +1 -1
  407. package/dist/types-CIPrYAzY.js.map +1 -1
  408. package/dist/types-Ns4ZNp-g.cjs.map +1 -1
  409. package/dist/{use-workflow-graph-runtime-CAyNWN_Z.js → use-workflow-graph-runtime-DS7eWso7.js} +2 -2
  410. package/dist/{use-workflow-graph-runtime-CAyNWN_Z.js.map → use-workflow-graph-runtime-DS7eWso7.js.map} +1 -1
  411. package/dist/{workflow-code-dialog-content-CNDoMFAV.js → workflow-code-dialog-content-BUCZZoKf.js} +2 -2
  412. package/dist/{workflow-code-dialog-content-CNDoMFAV.js.map → workflow-code-dialog-content-BUCZZoKf.js.map} +1 -1
  413. package/dist/{workflow-data-edge-view-CMdPlcQj.cjs → workflow-data-edge-view-BHvpuvmp.cjs} +2 -2
  414. package/dist/{workflow-data-edge-view-CMdPlcQj.cjs.map → workflow-data-edge-view-BHvpuvmp.cjs.map} +1 -1
  415. package/dist/{workflow-data-edge-view-DeX0gykV.js → workflow-data-edge-view-BIiMA9zg.js} +2 -2
  416. package/dist/{workflow-data-edge-view-DeX0gykV.js.map → workflow-data-edge-view-BIiMA9zg.js.map} +1 -1
  417. package/dist/{workflow-edge-data-button-CSeMH2Ky.cjs → workflow-edge-data-button-Cz2rcoDr.cjs} +2 -2
  418. package/dist/{workflow-edge-data-button-CSeMH2Ky.cjs.map → workflow-edge-data-button-Cz2rcoDr.cjs.map} +1 -1
  419. package/dist/{workflow-edge-data-button-DfyJCI6R.js → workflow-edge-data-button-D5oK4NS5.js} +3 -3
  420. package/dist/{workflow-edge-data-button-DfyJCI6R.js.map → workflow-edge-data-button-D5oK4NS5.js.map} +1 -1
  421. package/package.json +8 -8
  422. package/dist/alert-dialog-BJlS-v3z.cjs +0 -55
  423. package/dist/alert-dialog-BJlS-v3z.cjs.map +0 -1
  424. package/dist/alert-dialog-BvzVYar8.js +0 -53
  425. package/dist/alert-dialog-BvzVYar8.js.map +0 -1
  426. package/dist/command-B141Sxts.js.map +0 -1
  427. package/dist/command-Cx5QAS4E.cjs.map +0 -1
  428. package/dist/dialog-BYsQZGIj.js.map +0 -1
  429. package/dist/dialog-wL-fuFON.cjs.map +0 -1
  430. package/dist/filter-bar-chip-Bu27EjSO.js.map +0 -1
  431. package/dist/filter-bar-chip-uPmGVzPR.cjs.map +0 -1
  432. package/dist/trace-filters-B9myZP-l.cjs.map +0 -1
  433. package/dist/trace-filters-Cvra0Aum.js.map +0 -1
@@ -0,0 +1,40 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { B as Button } from './Button-C8QDEN9j.js';
3
+ import { D as Dialog, k as DialogTrigger, g as DialogHeader, f as DialogFooter, a as DialogBody, j as DialogTitle, e as DialogDescription, b as DialogCancel, d as DialogContent, c as DialogClose, l as dialogActionSizeClasses, m as dialogActionLayoutClasses } from './dialog-DlZmNahd.js';
4
+ import { c as cn } from './cn-coERSHz5.js';
5
+
6
+ function AlertDialog(props) {
7
+ return /* @__PURE__ */ jsx(Dialog, { ...props, modal: true, disablePointerDismissal: true });
8
+ }
9
+ function AlertDialogContent({ size = "sm", ...props }) {
10
+ return /* @__PURE__ */ jsx(DialogContent, { "data-slot": "alert-dialog-content", size, showCloseButton: false, ...props, role: "alertdialog" });
11
+ }
12
+ function AlertDialogAction({ children, ...props }) {
13
+ return /* @__PURE__ */ jsx(
14
+ DialogClose,
15
+ {
16
+ render: /* @__PURE__ */ jsx(
17
+ Button,
18
+ {
19
+ variant: "primary",
20
+ size: "md",
21
+ className: cn(dialogActionLayoutClasses, dialogActionSizeClasses.md),
22
+ children
23
+ }
24
+ ),
25
+ ...props
26
+ }
27
+ );
28
+ }
29
+ AlertDialog.Trigger = DialogTrigger;
30
+ AlertDialog.Content = AlertDialogContent;
31
+ AlertDialog.Header = DialogHeader;
32
+ AlertDialog.Footer = DialogFooter;
33
+ AlertDialog.Body = DialogBody;
34
+ AlertDialog.Title = DialogTitle;
35
+ AlertDialog.Description = DialogDescription;
36
+ AlertDialog.Action = AlertDialogAction;
37
+ AlertDialog.Cancel = DialogCancel;
38
+
39
+ export { AlertDialog as A };
40
+ //# sourceMappingURL=alert-dialog-R9z2SJLl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog-R9z2SJLl.js","sources":["../src/ds/components/AlertDialog/alert-dialog.tsx"],"sourcesContent":["import type * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport {\n Dialog,\n DialogBody,\n DialogCancel,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from '@/ds/components/Dialog';\nimport type { DialogProps } from '@/ds/components/Dialog';\nimport { dialogActionLayoutClasses, dialogActionSizeClasses } from '@/ds/components/Dialog/dialog-context';\nimport { cn } from '@/lib/utils';\n\ntype AlertDialogProps = Omit<DialogProps, 'intent' | 'pending' | 'modal' | 'disablePointerDismissal'>;\n\n// base-ui's AlertDialog is its Dialog with these three settings, so it shares Dialog's phone drawer.\nfunction AlertDialog(props: AlertDialogProps) {\n return <Dialog {...props} modal disablePointerDismissal />;\n}\n\ntype AlertDialogContentProps = Omit<\n React.ComponentProps<typeof DialogContent>,\n 'showCloseButton' | 'showOverlay' | 'overlayClassName' | 'role'\n>;\n\nfunction AlertDialogContent({ size = 'sm', ...props }: AlertDialogContentProps) {\n return (\n <DialogContent data-slot=\"alert-dialog-content\" size={size} showCloseButton={false} {...props} role=\"alertdialog\" />\n );\n}\n\nfunction AlertDialogAction({ children, ...props }: React.ComponentProps<typeof DialogClose>) {\n return (\n <DialogClose\n render={\n <Button\n variant=\"primary\"\n size=\"md\"\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses.md)}\n children={children}\n />\n }\n {...props}\n />\n );\n}\n\nAlertDialog.Trigger = DialogTrigger;\nAlertDialog.Content = AlertDialogContent;\nAlertDialog.Header = DialogHeader;\nAlertDialog.Footer = DialogFooter;\nAlertDialog.Body = DialogBody;\nAlertDialog.Title = DialogTitle;\nAlertDialog.Description = DialogDescription;\nAlertDialog.Action = AlertDialogAction;\nAlertDialog.Cancel = DialogCancel;\n\nexport { AlertDialog };\n"],"names":[],"mappings":";;;;;AAsBA,SAAS,YAAY,KAAA,EAAyB;AAC5C,EAAA,2BAAQ,MAAA,EAAA,EAAQ,GAAG,OAAO,KAAA,EAAK,IAAA,EAAC,yBAAuB,IAAA,EAAC,CAAA;AAC1D;AAOA,SAAS,mBAAmB,EAAE,IAAA,GAAO,IAAA,EAAM,GAAG,OAAM,EAA4B;AAC9E,EAAA,uBACE,GAAA,CAAC,aAAA,EAAA,EAAc,WAAA,EAAU,sBAAA,EAAuB,IAAA,EAAY,iBAAiB,KAAA,EAAQ,GAAG,KAAA,EAAO,IAAA,EAAK,aAAA,EAAc,CAAA;AAEtH;AAEA,SAAS,iBAAA,CAAkB,EAAE,QAAA,EAAU,GAAG,OAAM,EAA6C;AAC3F,EAAA,uBACE,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,MAAA,kBACE,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,SAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,uBAAA,CAAwB,EAAE,CAAA;AAAA,UACnE;AAAA;AAAA,OACF;AAAA,MAED,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,WAAA,CAAY,OAAA,GAAU,aAAA;AACtB,WAAA,CAAY,OAAA,GAAU,kBAAA;AACtB,WAAA,CAAY,MAAA,GAAS,YAAA;AACrB,WAAA,CAAY,MAAA,GAAS,YAAA;AACrB,WAAA,CAAY,IAAA,GAAO,UAAA;AACnB,WAAA,CAAY,KAAA,GAAQ,WAAA;AACpB,WAAA,CAAY,WAAA,GAAc,iBAAA;AAC1B,WAAA,CAAY,MAAA,GAAS,iBAAA;AACrB,WAAA,CAAY,MAAA,GAAS,YAAA;;;;"}
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ const jsxRuntime = require('react/jsx-runtime');
4
+ const Button = require('./Button-BfZzgZrA.cjs');
5
+ const dialog = require('./dialog-DQI9ChYf.cjs');
6
+ const utils_cn = require('./cn-TqD01zH-.cjs');
7
+
8
+ function AlertDialog(props) {
9
+ return /* @__PURE__ */ jsxRuntime.jsx(dialog.Dialog, { ...props, modal: true, disablePointerDismissal: true });
10
+ }
11
+ function AlertDialogContent({ size = "sm", ...props }) {
12
+ return /* @__PURE__ */ jsxRuntime.jsx(dialog.DialogContent, { "data-slot": "alert-dialog-content", size, showCloseButton: false, ...props, role: "alertdialog" });
13
+ }
14
+ function AlertDialogAction({ children, ...props }) {
15
+ return /* @__PURE__ */ jsxRuntime.jsx(
16
+ dialog.DialogClose,
17
+ {
18
+ render: /* @__PURE__ */ jsxRuntime.jsx(
19
+ Button.Button,
20
+ {
21
+ variant: "primary",
22
+ size: "md",
23
+ className: utils_cn.cn(dialog.dialogActionLayoutClasses, dialog.dialogActionSizeClasses.md),
24
+ children
25
+ }
26
+ ),
27
+ ...props
28
+ }
29
+ );
30
+ }
31
+ AlertDialog.Trigger = dialog.DialogTrigger;
32
+ AlertDialog.Content = AlertDialogContent;
33
+ AlertDialog.Header = dialog.DialogHeader;
34
+ AlertDialog.Footer = dialog.DialogFooter;
35
+ AlertDialog.Body = dialog.DialogBody;
36
+ AlertDialog.Title = dialog.DialogTitle;
37
+ AlertDialog.Description = dialog.DialogDescription;
38
+ AlertDialog.Action = AlertDialogAction;
39
+ AlertDialog.Cancel = dialog.DialogCancel;
40
+
41
+ exports.AlertDialog = AlertDialog;
42
+ //# sourceMappingURL=alert-dialog-j626w-Qb.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog-j626w-Qb.cjs","sources":["../src/ds/components/AlertDialog/alert-dialog.tsx"],"sourcesContent":["import type * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport {\n Dialog,\n DialogBody,\n DialogCancel,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from '@/ds/components/Dialog';\nimport type { DialogProps } from '@/ds/components/Dialog';\nimport { dialogActionLayoutClasses, dialogActionSizeClasses } from '@/ds/components/Dialog/dialog-context';\nimport { cn } from '@/lib/utils';\n\ntype AlertDialogProps = Omit<DialogProps, 'intent' | 'pending' | 'modal' | 'disablePointerDismissal'>;\n\n// base-ui's AlertDialog is its Dialog with these three settings, so it shares Dialog's phone drawer.\nfunction AlertDialog(props: AlertDialogProps) {\n return <Dialog {...props} modal disablePointerDismissal />;\n}\n\ntype AlertDialogContentProps = Omit<\n React.ComponentProps<typeof DialogContent>,\n 'showCloseButton' | 'showOverlay' | 'overlayClassName' | 'role'\n>;\n\nfunction AlertDialogContent({ size = 'sm', ...props }: AlertDialogContentProps) {\n return (\n <DialogContent data-slot=\"alert-dialog-content\" size={size} showCloseButton={false} {...props} role=\"alertdialog\" />\n );\n}\n\nfunction AlertDialogAction({ children, ...props }: React.ComponentProps<typeof DialogClose>) {\n return (\n <DialogClose\n render={\n <Button\n variant=\"primary\"\n size=\"md\"\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses.md)}\n children={children}\n />\n }\n {...props}\n />\n );\n}\n\nAlertDialog.Trigger = DialogTrigger;\nAlertDialog.Content = AlertDialogContent;\nAlertDialog.Header = DialogHeader;\nAlertDialog.Footer = DialogFooter;\nAlertDialog.Body = DialogBody;\nAlertDialog.Title = DialogTitle;\nAlertDialog.Description = DialogDescription;\nAlertDialog.Action = AlertDialogAction;\nAlertDialog.Cancel = DialogCancel;\n\nexport { AlertDialog };\n"],"names":["Dialog","jsx","DialogContent","DialogClose","Button","cn","dialogActionLayoutClasses","dialogActionSizeClasses","DialogTrigger","DialogHeader","DialogFooter","DialogBody","DialogTitle","DialogDescription","DialogCancel"],"mappings":";;;;;;;AAsBA,SAAS,YAAY,KAAA,EAAyB;AAC5C,EAAA,sCAAQA,aAAA,EAAA,EAAQ,GAAG,OAAO,KAAA,EAAK,IAAA,EAAC,yBAAuB,IAAA,EAAC,CAAA;AAC1D;AAOA,SAAS,mBAAmB,EAAE,IAAA,GAAO,IAAA,EAAM,GAAG,OAAM,EAA4B;AAC9E,EAAA,uBACEC,cAAA,CAACC,oBAAA,EAAA,EAAc,WAAA,EAAU,sBAAA,EAAuB,IAAA,EAAY,iBAAiB,KAAA,EAAQ,GAAG,KAAA,EAAO,IAAA,EAAK,aAAA,EAAc,CAAA;AAEtH;AAEA,SAAS,iBAAA,CAAkB,EAAE,QAAA,EAAU,GAAG,OAAM,EAA6C;AAC3F,EAAA,uBACED,cAAA;AAAA,IAACE,kBAAA;AAAA,IAAA;AAAA,MACC,MAAA,kBACEF,cAAA;AAAA,QAACG,aAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAQ,SAAA;AAAA,UACR,IAAA,EAAK,IAAA;AAAA,UACL,SAAA,EAAWC,WAAA,CAAGC,gCAAA,EAA2BC,8BAAA,CAAwB,EAAE,CAAA;AAAA,UACnE;AAAA;AAAA,OACF;AAAA,MAED,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,WAAA,CAAY,OAAA,GAAUC,oBAAA;AACtB,WAAA,CAAY,OAAA,GAAU,kBAAA;AACtB,WAAA,CAAY,MAAA,GAASC,mBAAA;AACrB,WAAA,CAAY,MAAA,GAASC,mBAAA;AACrB,WAAA,CAAY,IAAA,GAAOC,iBAAA;AACnB,WAAA,CAAY,KAAA,GAAQC,kBAAA;AACpB,WAAA,CAAY,WAAA,GAAcC,wBAAA;AAC1B,WAAA,CAAY,MAAA,GAAS,iBAAA;AACrB,WAAA,CAAY,MAAA,GAASC,mBAAA;;;;"}
@@ -3,15 +3,14 @@ import { createContext, useContext, useId, useState } from 'react';
3
3
  import { MessageCircleQuestion, Check } from 'lucide-react';
4
4
  import { B as Badge } from './Badge-3-G2I_cx.js';
5
5
  import { B as Button } from './Button-C8QDEN9j.js';
6
- import { d as FieldItem, e as FieldLabel, f as Fieldset } from './field-B89BEZg4.js';
7
- import './field-control-aria-DB6y41tQ.js';
6
+ import { d as FieldItem, e as FieldLabel, f as Fieldset } from './field-Bc8Ewf_M.js';
8
7
  import { T as Txt } from './Txt-BuzYj7Vy.js';
9
8
  import { Icon } from './icons/Icon.es.js';
10
9
  import { raisedSurfaceStyle } from './primitives/raised-surface.es.js';
11
10
  import { c as cn } from './cn-coERSHz5.js';
12
- import { C as Checkbox } from './checkbox-mmR3rD2j.js';
13
- import { I as Input } from './input-DQFUjtnh.js';
14
- import { R as RadioGroup, a as RadioGroupItem } from './radio-group-Bk52hNNb.js';
11
+ import { C as Checkbox } from './checkbox-B3tvJLCl.js';
12
+ import { I as Input } from './input-Ds171RJ5.js';
13
+ import { R as RadioGroup, a as RadioGroupItem } from './radio-group-C2zsCipq.js';
15
14
 
16
15
  const AskUserContext = createContext(void 0);
17
16
  function useOptionalAskUserContext() {
@@ -421,4 +420,4 @@ function AskUser({
421
420
  }
422
421
 
423
422
  export { AskUser as A, AskUserBody as a, AskUserContainer as b, AskUserCustomAnswer as c, AskUserLabel as d, AskUserOptionItem as e, AskUserOptionRow as f, AskUserOptions as g, AskUserOutput as h, AskUserPending as i, AskUserQuestion as j, AskUserRoot as k, AskUserSubmit as l, AskUserTextAnswer as m };
424
- //# sourceMappingURL=ask-user-card-xR8YiiQa.js.map
423
+ //# sourceMappingURL=ask-user-card-CwKfl6M2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask-user-card-xR8YiiQa.js","sources":["../src/ds/components/ai/ask-user/ask-user-context.ts","../src/ds/components/ai/ask-user/ask-user-layout.tsx","../src/ds/components/ai/ask-user/ask-user-controls.tsx","../src/ds/components/ai/ask-user/ask-user-root.tsx","../src/ds/components/ai/ask-user/ask-user-card.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { AskUserSelectionMode } from './ask-user-types';\n\ninterface AskUserContextValue {\n questionId: string;\n selectionMode: AskUserSelectionMode;\n disabled: boolean;\n answerText: string;\n selectedOptionLabels: string[];\n isCustomAnswerSelected: boolean;\n canSubmitAnswer: boolean;\n selectOption: (optionLabel: string) => void;\n setCustomAnswerSelected: (selected: boolean) => void;\n changeAnswerText: (text: string) => void;\n unselectEmptyCustomAnswer: () => void;\n submitAnswer: () => void;\n}\n\nexport const AskUserContext = createContext<AskUserContextValue | undefined>(undefined);\n\nexport function useOptionalAskUserContext() {\n return useContext(AskUserContext);\n}\n\nexport function useAskUserContext() {\n const context = useOptionalAskUserContext();\n if (!context) throw new Error('AskUser controls must be rendered inside AskUser.Root.');\n return context;\n}\n","import { Check, MessageCircleQuestion } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useOptionalAskUserContext } from './ask-user-context';\nimport type { AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { FieldItem, FieldLabel } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('p-4', className)} {...props} />\n);\n\nconst AskUserQuestionTitle = ({ children }: { children: ReactNode }) => (\n <span className=\"flex items-start gap-2\">\n <Icon size=\"xs\" className={cn('mt-1 shrink-0', 'text-muted-foreground')} aria-hidden>\n <MessageCircleQuestion />\n </Icon>\n <span className=\"min-w-0\">{children}</span>\n </span>\n);\n\nexport const AskUserQuestion = ({ children, className, ...props }: ComponentProps<typeof Txt>) => {\n const context = useOptionalAskUserContext();\n return (\n <Txt\n as=\"p\"\n variant=\"subheading\"\n tone=\"ink\"\n {...props}\n id={context?.questionId ?? props.id}\n className={cn('mb-3', className)}\n >\n <AskUserQuestionTitle>{children}</AskUserQuestionTitle>\n </Txt>\n );\n};\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: ReactNode;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn('state-layer flex items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50', className)}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitButtonProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmitButton = ({ children = 'Submit answer', ...props }: AskUserSubmitButtonProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n","import type { ChangeEvent, ComponentProps, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { useAskUserContext, useOptionalAskUserContext } from './ask-user-context';\nimport { AskUserOptionRow, AskUserSubmitButton } from './ask-user-layout';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldItem, FieldLabel, Fieldset } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n// Keep the UI-only custom choice separate from suggested answer values.\nconst customAnswerValue = 'custom';\nconst optionValuePrefix = 'option:';\n\nfunction getOptionRadioValue(optionLabel: string): string {\n return `${optionValuePrefix}${optionLabel}`;\n}\n\nexport function AskUserOptions({ children, className, ...props }: ComponentProps<typeof Fieldset>) {\n const context = useAskUserContext();\n\n const handleSingleSelectChange = (radioValue: unknown) => {\n if (radioValue === customAnswerValue) {\n context.setCustomAnswerSelected(true);\n return;\n }\n if (typeof radioValue !== 'string' || !radioValue.startsWith(optionValuePrefix)) return;\n context.selectOption(radioValue.slice(optionValuePrefix.length));\n };\n\n if (context.selectionMode === 'multi_select') {\n return (\n <Fieldset aria-label=\"Answer options\" {...props} className={cn('gap-2', className)}>\n {children}\n </Fieldset>\n );\n }\n\n const selectedOptionLabel = context.selectedOptionLabels[0];\n const selectedOptionValue = selectedOptionLabel === undefined ? '' : getOptionRadioValue(selectedOptionLabel);\n const selectedRadioValue = context.isCustomAnswerSelected ? customAnswerValue : selectedOptionValue;\n\n return (\n <Fieldset\n {...props}\n className={cn('gap-2', className)}\n render={\n <RadioGroup\n aria-labelledby={context.questionId}\n disabled={context.disabled}\n value={selectedRadioValue}\n onValueChange={handleSingleSelectChange}\n />\n }\n >\n {children}\n </Fieldset>\n );\n}\n\nexport interface AskUserOptionItemProps {\n value: string;\n children: ReactNode;\n description?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function AskUserOptionItem({\n value,\n children,\n description,\n disabled = false,\n className,\n}: AskUserOptionItemProps) {\n const context = useAskUserContext();\n const isDisabled = context.disabled || disabled;\n\n const handleOptionToggle = () => {\n if (!isDisabled) context.selectOption(value);\n };\n\n return (\n <AskUserOptionRow\n label={children}\n description={description}\n disabled={isDisabled}\n className={className}\n control={\n context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n disabled={isDisabled}\n checked={context.selectedOptionLabels.includes(value)}\n onCheckedChange={handleOptionToggle}\n />\n ) : (\n <RadioGroupItem className=\"mt-0.5\" disabled={isDisabled} value={getOptionRadioValue(value)} />\n )\n }\n />\n );\n}\n\nexport type AskUserTextAnswerProps = Omit<\n ComponentProps<typeof Input>,\n 'value' | 'defaultValue' | 'onChange' | 'onKeyDown'\n>;\n\nexport function AskUserTextAnswer({ disabled = false, ...props }: AskUserTextAnswerProps) {\n const context = useAskUserContext();\n\n const handleAnswerTextChange = (event: ChangeEvent<HTMLInputElement>) => {\n context.changeAnswerText(event.target.value);\n };\n\n const handleAnswerTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n context.submitAnswer();\n }\n };\n\n return (\n <Input\n type=\"text\"\n aria-labelledby={props['aria-label'] ? undefined : context.questionId}\n placeholder=\"Type your answer...\"\n size=\"sm\"\n {...props}\n disabled={context.disabled || disabled}\n value={context.answerText}\n onChange={handleAnswerTextChange}\n onKeyDown={handleAnswerTextKeyDown}\n />\n );\n}\n\nexport interface AskUserCustomAnswerProps {\n className?: string;\n label?: string;\n inputLabel?: string;\n}\n\nexport function AskUserCustomAnswer({\n className,\n label = 'Other…',\n inputLabel = 'Your answer',\n}: AskUserCustomAnswerProps) {\n const context = useAskUserContext();\n\n const handleRowClick = (event: MouseEvent<HTMLDivElement>) => {\n if (context.disabled || event.target !== event.currentTarget) return;\n if (context.isCustomAnswerSelected) {\n event.currentTarget.querySelector<HTMLInputElement>('input[type=\"text\"]')?.focus();\n return;\n }\n event.currentTarget.querySelector<HTMLElement>('[role=\"radio\"], [role=\"checkbox\"]')?.click();\n };\n\n const handleControlMouseDown = (event: MouseEvent<HTMLSpanElement>) => {\n // Let the checkbox click unselect it before blur resets its controlled value.\n if (context.isCustomAnswerSelected && !context.answerText.trim()) event.preventDefault();\n };\n\n return (\n <FieldItem\n role=\"group\"\n aria-label=\"Custom answer\"\n aria-disabled={context.disabled || undefined}\n disabled={context.disabled}\n onClick={handleRowClick}\n className={cn(\n 'items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50',\n !context.isCustomAnswerSelected && 'state-layer',\n className,\n )}\n >\n {context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n aria-label={label}\n disabled={context.disabled}\n checked={context.isCustomAnswerSelected}\n onMouseDown={handleControlMouseDown}\n onCheckedChange={context.setCustomAnswerSelected}\n />\n ) : (\n <RadioGroupItem aria-label={label} className=\"mt-0.5\" value={customAnswerValue} />\n )}\n {context.isCustomAnswerSelected ? (\n <AskUserTextAnswer\n aria-label={inputLabel}\n onBlur={context.unselectEmptyCustomAnswer}\n placeholder={label}\n variant=\"unstyled\"\n className={cn('h-auto min-w-0 flex-1 px-0', 'text-body')}\n autoFocus\n />\n ) : (\n <FieldLabel className=\"flex-1\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n </FieldLabel>\n )}\n </FieldItem>\n );\n}\n\nexport type AskUserSubmitProps = ComponentProps<typeof AskUserSubmitButton> & {\n when?: 'always' | 'custom-answer';\n};\n\nexport function AskUserSubmit({ when = 'always', disabled = false, onClick, ...props }: AskUserSubmitProps) {\n const context = useOptionalAskUserContext();\n\n const handleSubmitClick = (event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented && !disabled) context?.submitAnswer();\n };\n\n if (when === 'custom-answer' && !context?.isCustomAnswerSelected) return null;\n\n return (\n <AskUserSubmitButton\n {...props}\n disabled={disabled || (context !== undefined && !context.canSubmitAnswer)}\n onClick={handleSubmitClick}\n />\n );\n}\n","import { useId, useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport { AskUserContext } from './ask-user-context';\nimport { AskUserContainer } from './ask-user-layout';\nimport type { AskUserAnswer, AskUserSelectionMode } from './ask-user-types';\n\nexport interface AskUserRootProps extends Omit<ComponentProps<typeof AskUserContainer>, 'onSubmit'> {\n selectionMode?: AskUserSelectionMode;\n disabled?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n}\n\ninterface AskUserAnswerDraft {\n answerText: string;\n selectedOptionLabels: string[];\n selectionMode: AskUserSelectionMode;\n isCustomAnswerSelected: boolean;\n}\n\nfunction getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n}: AskUserAnswerDraft): AskUserAnswer | undefined {\n const trimmedAnswerText = answerText.trim();\n if (isCustomAnswerSelected && !trimmedAnswerText) return undefined;\n if (selectionMode === 'single_select') {\n // Suggested single-select answers already submit when selected.\n if (!isCustomAnswerSelected && selectedOptionLabels.length > 0) return undefined;\n return trimmedAnswerText || undefined;\n }\n\n const answerLabels = isCustomAnswerSelected ? [...selectedOptionLabels, trimmedAnswerText] : selectedOptionLabels;\n return answerLabels.length > 0 ? answerLabels : undefined;\n}\n\nfunction toggleSelectedOptionLabel(selectedOptionLabels: string[], optionLabel: string): string[] {\n if (selectedOptionLabels.includes(optionLabel)) {\n return selectedOptionLabels.filter(selectedLabel => selectedLabel !== optionLabel);\n }\n return [...selectedOptionLabels, optionLabel];\n}\n\nexport function AskUserRoot({\n selectionMode = 'single_select',\n disabled = false,\n onSubmit,\n children,\n ...props\n}: AskUserRootProps) {\n const questionId = useId();\n const [answerText, setAnswerText] = useState('');\n const [selectedOptionLabels, setSelectedOptionLabels] = useState<string[]>([]);\n const [isCustomAnswerSelected, setIsCustomAnswerSelected] = useState(false);\n const answerToSubmit = getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n });\n const canSubmitAnswer = !disabled && answerToSubmit !== undefined;\n\n const selectOption = (optionLabel: string) => {\n if (disabled) return;\n if (selectionMode === 'multi_select') {\n setSelectedOptionLabels(currentLabels => toggleSelectedOptionLabel(currentLabels, optionLabel));\n return;\n }\n setIsCustomAnswerSelected(false);\n setSelectedOptionLabels([optionLabel]);\n onSubmit(optionLabel);\n };\n\n const setCustomAnswerSelected = (selected: boolean) => {\n if (disabled) return;\n setIsCustomAnswerSelected(selected);\n if (selected && selectionMode === 'single_select') setSelectedOptionLabels([]);\n };\n\n const changeAnswerText = (text: string) => {\n if (!disabled) setAnswerText(text);\n };\n\n const unselectEmptyCustomAnswer = () => {\n if (!disabled && !answerText.trim()) setIsCustomAnswerSelected(false);\n };\n\n const submitAnswer = () => {\n if (disabled || answerToSubmit === undefined) return;\n onSubmit(answerToSubmit);\n };\n\n return (\n <AskUserContext.Provider\n value={{\n questionId,\n selectionMode,\n disabled,\n answerText,\n selectedOptionLabels,\n isCustomAnswerSelected,\n canSubmitAnswer,\n selectOption,\n setCustomAnswerSelected,\n changeAnswerText,\n unselectEmptyCustomAnswer,\n submitAnswer,\n }}\n >\n <AskUserContainer role=\"group\" aria-labelledby={questionId} {...props}>\n {children}\n </AskUserContainer>\n </AskUserContext.Provider>\n );\n}\n","import type { ComponentProps, ReactNode } from 'react';\nimport { useAskUserContext } from './ask-user-context';\nimport {\n AskUserCustomAnswer,\n AskUserOptionItem,\n AskUserOptions,\n AskUserSubmit,\n AskUserTextAnswer,\n} from './ask-user-controls';\nimport { AskUserBody, AskUserContainer, AskUserOutput, AskUserPending, AskUserQuestion } from './ask-user-layout';\nimport { AskUserRoot } from './ask-user-root';\nimport type { AskUserAnswer, AskUserOption, AskUserPayload, AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nfunction getValidOptions(options: AskUserPayload['options']): AskUserOption[] {\n return (\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? []\n );\n}\n\nfunction AskUserAnswerControls({ options }: { options: AskUserOption[] }) {\n const { selectionMode } = useAskUserContext();\n const isMultiSelect = selectionMode === 'multi_select';\n if (options.length === 0) {\n return (\n <div className=\"flex items-center gap-2\">\n <AskUserTextAnswer />\n <AskUserSubmit className=\"shrink-0 whitespace-nowrap\" />\n </div>\n );\n }\n\n return (\n <>\n <AskUserOptions>\n {options.map(option => (\n <AskUserOptionItem key={option.label} value={option.label} description={option.description}>\n {option.label}\n </AskUserOptionItem>\n ))}\n <AskUserCustomAnswer />\n {isMultiSelect ? <AskUserSubmit className=\"mt-1 justify-self-start\" /> : null}\n </AskUserOptions>\n {!isMultiSelect ? <AskUserSubmit when=\"custom-answer\" className=\"mt-2\" /> : null}\n </>\n );\n}\n\ninterface AskUserCardContentProps extends Pick<AskUserProps, 'result' | 'isAnswered' | 'isSubmitting' | 'footer'> {\n options: AskUserOption[];\n}\n\nfunction AskUserCardContent({ result, isAnswered, isSubmitting, options, footer }: AskUserCardContentProps) {\n if (result) return <AskUserOutput result={result} />;\n if (isAnswered) return <Badge variant=\"success\">Answered</Badge>;\n\n return (\n <>\n <AskUserAnswerControls options={options} />\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </>\n );\n}\n\nexport function AskUser({\n payload,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserProps) {\n const options = getValidOptions(payload.options);\n const isMultiSelect = options.length > 0 && payload.selectionMode === 'multi_select';\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n const hasAnswer = result !== undefined || isAnswered;\n\n return (\n <AskUserRoot\n key={payloadKey}\n data-testid=\"ask-user\"\n selectionMode={isMultiSelect ? 'multi_select' : 'single_select'}\n disabled={isSubmitting || hasAnswer}\n onSubmit={onSubmit}\n {...props}\n >\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n <AskUserCardContent\n result={result}\n isAnswered={isAnswered}\n isSubmitting={isSubmitting}\n options={options}\n footer={footer}\n />\n </AskUserBody>\n </AskUserRoot>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask-user-card-CwKfl6M2.js","sources":["../src/ds/components/ai/ask-user/ask-user-context.ts","../src/ds/components/ai/ask-user/ask-user-layout.tsx","../src/ds/components/ai/ask-user/ask-user-controls.tsx","../src/ds/components/ai/ask-user/ask-user-root.tsx","../src/ds/components/ai/ask-user/ask-user-card.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { AskUserSelectionMode } from './ask-user-types';\n\ninterface AskUserContextValue {\n questionId: string;\n selectionMode: AskUserSelectionMode;\n disabled: boolean;\n answerText: string;\n selectedOptionLabels: string[];\n isCustomAnswerSelected: boolean;\n canSubmitAnswer: boolean;\n selectOption: (optionLabel: string) => void;\n setCustomAnswerSelected: (selected: boolean) => void;\n changeAnswerText: (text: string) => void;\n unselectEmptyCustomAnswer: () => void;\n submitAnswer: () => void;\n}\n\nexport const AskUserContext = createContext<AskUserContextValue | undefined>(undefined);\n\nexport function useOptionalAskUserContext() {\n return useContext(AskUserContext);\n}\n\nexport function useAskUserContext() {\n const context = useOptionalAskUserContext();\n if (!context) throw new Error('AskUser controls must be rendered inside AskUser.Root.');\n return context;\n}\n","import { Check, MessageCircleQuestion } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useOptionalAskUserContext } from './ask-user-context';\nimport type { AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { FieldItem, FieldLabel } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('p-4', className)} {...props} />\n);\n\nconst AskUserQuestionTitle = ({ children }: { children: ReactNode }) => (\n <span className=\"flex items-start gap-2\">\n <Icon size=\"xs\" className={cn('mt-1 shrink-0', 'text-muted-foreground')} aria-hidden>\n <MessageCircleQuestion />\n </Icon>\n <span className=\"min-w-0\">{children}</span>\n </span>\n);\n\nexport const AskUserQuestion = ({ children, className, ...props }: ComponentProps<typeof Txt>) => {\n const context = useOptionalAskUserContext();\n return (\n <Txt\n as=\"p\"\n variant=\"subheading\"\n tone=\"ink\"\n {...props}\n id={context?.questionId ?? props.id}\n className={cn('mb-3', className)}\n >\n <AskUserQuestionTitle>{children}</AskUserQuestionTitle>\n </Txt>\n );\n};\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: ReactNode;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn('state-layer flex items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50', className)}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitButtonProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmitButton = ({ children = 'Submit answer', ...props }: AskUserSubmitButtonProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n","import type { ChangeEvent, ComponentProps, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { useAskUserContext, useOptionalAskUserContext } from './ask-user-context';\nimport { AskUserOptionRow, AskUserSubmitButton } from './ask-user-layout';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldItem, FieldLabel, Fieldset } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n// Keep the UI-only custom choice separate from suggested answer values.\nconst customAnswerValue = 'custom';\nconst optionValuePrefix = 'option:';\n\nfunction getOptionRadioValue(optionLabel: string): string {\n return `${optionValuePrefix}${optionLabel}`;\n}\n\nexport function AskUserOptions({ children, className, ...props }: ComponentProps<typeof Fieldset>) {\n const context = useAskUserContext();\n\n const handleSingleSelectChange = (radioValue: unknown) => {\n if (radioValue === customAnswerValue) {\n context.setCustomAnswerSelected(true);\n return;\n }\n if (typeof radioValue !== 'string' || !radioValue.startsWith(optionValuePrefix)) return;\n context.selectOption(radioValue.slice(optionValuePrefix.length));\n };\n\n if (context.selectionMode === 'multi_select') {\n return (\n <Fieldset aria-label=\"Answer options\" {...props} className={cn('gap-2', className)}>\n {children}\n </Fieldset>\n );\n }\n\n const selectedOptionLabel = context.selectedOptionLabels[0];\n const selectedOptionValue = selectedOptionLabel === undefined ? '' : getOptionRadioValue(selectedOptionLabel);\n const selectedRadioValue = context.isCustomAnswerSelected ? customAnswerValue : selectedOptionValue;\n\n return (\n <Fieldset\n {...props}\n className={cn('gap-2', className)}\n render={\n <RadioGroup\n aria-labelledby={context.questionId}\n disabled={context.disabled}\n value={selectedRadioValue}\n onValueChange={handleSingleSelectChange}\n />\n }\n >\n {children}\n </Fieldset>\n );\n}\n\nexport interface AskUserOptionItemProps {\n value: string;\n children: ReactNode;\n description?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function AskUserOptionItem({\n value,\n children,\n description,\n disabled = false,\n className,\n}: AskUserOptionItemProps) {\n const context = useAskUserContext();\n const isDisabled = context.disabled || disabled;\n\n const handleOptionToggle = () => {\n if (!isDisabled) context.selectOption(value);\n };\n\n return (\n <AskUserOptionRow\n label={children}\n description={description}\n disabled={isDisabled}\n className={className}\n control={\n context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n disabled={isDisabled}\n checked={context.selectedOptionLabels.includes(value)}\n onCheckedChange={handleOptionToggle}\n />\n ) : (\n <RadioGroupItem className=\"mt-0.5\" disabled={isDisabled} value={getOptionRadioValue(value)} />\n )\n }\n />\n );\n}\n\nexport type AskUserTextAnswerProps = Omit<\n ComponentProps<typeof Input>,\n 'value' | 'defaultValue' | 'onChange' | 'onKeyDown'\n>;\n\nexport function AskUserTextAnswer({ disabled = false, ...props }: AskUserTextAnswerProps) {\n const context = useAskUserContext();\n\n const handleAnswerTextChange = (event: ChangeEvent<HTMLInputElement>) => {\n context.changeAnswerText(event.target.value);\n };\n\n const handleAnswerTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n context.submitAnswer();\n }\n };\n\n return (\n <Input\n type=\"text\"\n aria-labelledby={props['aria-label'] ? undefined : context.questionId}\n placeholder=\"Type your answer...\"\n size=\"sm\"\n {...props}\n disabled={context.disabled || disabled}\n value={context.answerText}\n onChange={handleAnswerTextChange}\n onKeyDown={handleAnswerTextKeyDown}\n />\n );\n}\n\nexport interface AskUserCustomAnswerProps {\n className?: string;\n label?: string;\n inputLabel?: string;\n}\n\nexport function AskUserCustomAnswer({\n className,\n label = 'Other…',\n inputLabel = 'Your answer',\n}: AskUserCustomAnswerProps) {\n const context = useAskUserContext();\n\n const handleRowClick = (event: MouseEvent<HTMLDivElement>) => {\n if (context.disabled || event.target !== event.currentTarget) return;\n if (context.isCustomAnswerSelected) {\n event.currentTarget.querySelector<HTMLInputElement>('input[type=\"text\"]')?.focus();\n return;\n }\n event.currentTarget.querySelector<HTMLElement>('[role=\"radio\"], [role=\"checkbox\"]')?.click();\n };\n\n const handleControlMouseDown = (event: MouseEvent<HTMLSpanElement>) => {\n // Let the checkbox click unselect it before blur resets its controlled value.\n if (context.isCustomAnswerSelected && !context.answerText.trim()) event.preventDefault();\n };\n\n return (\n <FieldItem\n role=\"group\"\n aria-label=\"Custom answer\"\n aria-disabled={context.disabled || undefined}\n disabled={context.disabled}\n onClick={handleRowClick}\n className={cn(\n 'items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50',\n !context.isCustomAnswerSelected && 'state-layer',\n className,\n )}\n >\n {context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n aria-label={label}\n disabled={context.disabled}\n checked={context.isCustomAnswerSelected}\n onMouseDown={handleControlMouseDown}\n onCheckedChange={context.setCustomAnswerSelected}\n />\n ) : (\n <RadioGroupItem aria-label={label} className=\"mt-0.5\" value={customAnswerValue} />\n )}\n {context.isCustomAnswerSelected ? (\n <AskUserTextAnswer\n aria-label={inputLabel}\n onBlur={context.unselectEmptyCustomAnswer}\n placeholder={label}\n variant=\"unstyled\"\n className={cn('h-auto min-w-0 flex-1 px-0', 'text-body')}\n autoFocus\n />\n ) : (\n <FieldLabel className=\"flex-1\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n </FieldLabel>\n )}\n </FieldItem>\n );\n}\n\nexport type AskUserSubmitProps = ComponentProps<typeof AskUserSubmitButton> & {\n when?: 'always' | 'custom-answer';\n};\n\nexport function AskUserSubmit({ when = 'always', disabled = false, onClick, ...props }: AskUserSubmitProps) {\n const context = useOptionalAskUserContext();\n\n const handleSubmitClick = (event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented && !disabled) context?.submitAnswer();\n };\n\n if (when === 'custom-answer' && !context?.isCustomAnswerSelected) return null;\n\n return (\n <AskUserSubmitButton\n {...props}\n disabled={disabled || (context !== undefined && !context.canSubmitAnswer)}\n onClick={handleSubmitClick}\n />\n );\n}\n","import { useId, useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport { AskUserContext } from './ask-user-context';\nimport { AskUserContainer } from './ask-user-layout';\nimport type { AskUserAnswer, AskUserSelectionMode } from './ask-user-types';\n\nexport interface AskUserRootProps extends Omit<ComponentProps<typeof AskUserContainer>, 'onSubmit'> {\n selectionMode?: AskUserSelectionMode;\n disabled?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n}\n\ninterface AskUserAnswerDraft {\n answerText: string;\n selectedOptionLabels: string[];\n selectionMode: AskUserSelectionMode;\n isCustomAnswerSelected: boolean;\n}\n\nfunction getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n}: AskUserAnswerDraft): AskUserAnswer | undefined {\n const trimmedAnswerText = answerText.trim();\n if (isCustomAnswerSelected && !trimmedAnswerText) return undefined;\n if (selectionMode === 'single_select') {\n // Suggested single-select answers already submit when selected.\n if (!isCustomAnswerSelected && selectedOptionLabels.length > 0) return undefined;\n return trimmedAnswerText || undefined;\n }\n\n const answerLabels = isCustomAnswerSelected ? [...selectedOptionLabels, trimmedAnswerText] : selectedOptionLabels;\n return answerLabels.length > 0 ? answerLabels : undefined;\n}\n\nfunction toggleSelectedOptionLabel(selectedOptionLabels: string[], optionLabel: string): string[] {\n if (selectedOptionLabels.includes(optionLabel)) {\n return selectedOptionLabels.filter(selectedLabel => selectedLabel !== optionLabel);\n }\n return [...selectedOptionLabels, optionLabel];\n}\n\nexport function AskUserRoot({\n selectionMode = 'single_select',\n disabled = false,\n onSubmit,\n children,\n ...props\n}: AskUserRootProps) {\n const questionId = useId();\n const [answerText, setAnswerText] = useState('');\n const [selectedOptionLabels, setSelectedOptionLabels] = useState<string[]>([]);\n const [isCustomAnswerSelected, setIsCustomAnswerSelected] = useState(false);\n const answerToSubmit = getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n });\n const canSubmitAnswer = !disabled && answerToSubmit !== undefined;\n\n const selectOption = (optionLabel: string) => {\n if (disabled) return;\n if (selectionMode === 'multi_select') {\n setSelectedOptionLabels(currentLabels => toggleSelectedOptionLabel(currentLabels, optionLabel));\n return;\n }\n setIsCustomAnswerSelected(false);\n setSelectedOptionLabels([optionLabel]);\n onSubmit(optionLabel);\n };\n\n const setCustomAnswerSelected = (selected: boolean) => {\n if (disabled) return;\n setIsCustomAnswerSelected(selected);\n if (selected && selectionMode === 'single_select') setSelectedOptionLabels([]);\n };\n\n const changeAnswerText = (text: string) => {\n if (!disabled) setAnswerText(text);\n };\n\n const unselectEmptyCustomAnswer = () => {\n if (!disabled && !answerText.trim()) setIsCustomAnswerSelected(false);\n };\n\n const submitAnswer = () => {\n if (disabled || answerToSubmit === undefined) return;\n onSubmit(answerToSubmit);\n };\n\n return (\n <AskUserContext.Provider\n value={{\n questionId,\n selectionMode,\n disabled,\n answerText,\n selectedOptionLabels,\n isCustomAnswerSelected,\n canSubmitAnswer,\n selectOption,\n setCustomAnswerSelected,\n changeAnswerText,\n unselectEmptyCustomAnswer,\n submitAnswer,\n }}\n >\n <AskUserContainer role=\"group\" aria-labelledby={questionId} {...props}>\n {children}\n </AskUserContainer>\n </AskUserContext.Provider>\n );\n}\n","import type { ComponentProps, ReactNode } from 'react';\nimport { useAskUserContext } from './ask-user-context';\nimport {\n AskUserCustomAnswer,\n AskUserOptionItem,\n AskUserOptions,\n AskUserSubmit,\n AskUserTextAnswer,\n} from './ask-user-controls';\nimport { AskUserBody, AskUserContainer, AskUserOutput, AskUserPending, AskUserQuestion } from './ask-user-layout';\nimport { AskUserRoot } from './ask-user-root';\nimport type { AskUserAnswer, AskUserOption, AskUserPayload, AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nfunction getValidOptions(options: AskUserPayload['options']): AskUserOption[] {\n return (\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? []\n );\n}\n\nfunction AskUserAnswerControls({ options }: { options: AskUserOption[] }) {\n const { selectionMode } = useAskUserContext();\n const isMultiSelect = selectionMode === 'multi_select';\n if (options.length === 0) {\n return (\n <div className=\"flex items-center gap-2\">\n <AskUserTextAnswer />\n <AskUserSubmit className=\"shrink-0 whitespace-nowrap\" />\n </div>\n );\n }\n\n return (\n <>\n <AskUserOptions>\n {options.map(option => (\n <AskUserOptionItem key={option.label} value={option.label} description={option.description}>\n {option.label}\n </AskUserOptionItem>\n ))}\n <AskUserCustomAnswer />\n {isMultiSelect ? <AskUserSubmit className=\"mt-1 justify-self-start\" /> : null}\n </AskUserOptions>\n {!isMultiSelect ? <AskUserSubmit when=\"custom-answer\" className=\"mt-2\" /> : null}\n </>\n );\n}\n\ninterface AskUserCardContentProps extends Pick<AskUserProps, 'result' | 'isAnswered' | 'isSubmitting' | 'footer'> {\n options: AskUserOption[];\n}\n\nfunction AskUserCardContent({ result, isAnswered, isSubmitting, options, footer }: AskUserCardContentProps) {\n if (result) return <AskUserOutput result={result} />;\n if (isAnswered) return <Badge variant=\"success\">Answered</Badge>;\n\n return (\n <>\n <AskUserAnswerControls options={options} />\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </>\n );\n}\n\nexport function AskUser({\n payload,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserProps) {\n const options = getValidOptions(payload.options);\n const isMultiSelect = options.length > 0 && payload.selectionMode === 'multi_select';\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n const hasAnswer = result !== undefined || isAnswered;\n\n return (\n <AskUserRoot\n key={payloadKey}\n data-testid=\"ask-user\"\n selectionMode={isMultiSelect ? 'multi_select' : 'single_select'}\n disabled={isSubmitting || hasAnswer}\n onSubmit={onSubmit}\n {...props}\n >\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n <AskUserCardContent\n result={result}\n isAnswered={isAnswered}\n isSubmitting={isSubmitting}\n options={options}\n footer={footer}\n />\n </AskUserBody>\n </AskUserRoot>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -6,7 +6,6 @@ const lucideReact = require('lucide-react');
6
6
  const Badge = require('./Badge-BF6FbLH_.cjs');
7
7
  const Button = require('./Button-BfZzgZrA.cjs');
8
8
  const field = require('./field-D1SVMPMz.cjs');
9
- require('./field-control-aria-WzMGs0A4.cjs');
10
9
  const Txt = require('./Txt-DXjXpX9r.cjs');
11
10
  const icons_Icon = require('./icons/Icon.cjs.js');
12
11
  const primitives_raisedSurface = require('./primitives/raised-surface.cjs.js');
@@ -436,4 +435,4 @@ exports.AskUserQuestion = AskUserQuestion;
436
435
  exports.AskUserRoot = AskUserRoot;
437
436
  exports.AskUserSubmit = AskUserSubmit;
438
437
  exports.AskUserTextAnswer = AskUserTextAnswer;
439
- //# sourceMappingURL=ask-user-card-40a18Qea.cjs.map
438
+ //# sourceMappingURL=ask-user-card-g8cqh8KI.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ask-user-card-40a18Qea.cjs","sources":["../src/ds/components/ai/ask-user/ask-user-context.ts","../src/ds/components/ai/ask-user/ask-user-layout.tsx","../src/ds/components/ai/ask-user/ask-user-controls.tsx","../src/ds/components/ai/ask-user/ask-user-root.tsx","../src/ds/components/ai/ask-user/ask-user-card.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { AskUserSelectionMode } from './ask-user-types';\n\ninterface AskUserContextValue {\n questionId: string;\n selectionMode: AskUserSelectionMode;\n disabled: boolean;\n answerText: string;\n selectedOptionLabels: string[];\n isCustomAnswerSelected: boolean;\n canSubmitAnswer: boolean;\n selectOption: (optionLabel: string) => void;\n setCustomAnswerSelected: (selected: boolean) => void;\n changeAnswerText: (text: string) => void;\n unselectEmptyCustomAnswer: () => void;\n submitAnswer: () => void;\n}\n\nexport const AskUserContext = createContext<AskUserContextValue | undefined>(undefined);\n\nexport function useOptionalAskUserContext() {\n return useContext(AskUserContext);\n}\n\nexport function useAskUserContext() {\n const context = useOptionalAskUserContext();\n if (!context) throw new Error('AskUser controls must be rendered inside AskUser.Root.');\n return context;\n}\n","import { Check, MessageCircleQuestion } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useOptionalAskUserContext } from './ask-user-context';\nimport type { AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { FieldItem, FieldLabel } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('p-4', className)} {...props} />\n);\n\nconst AskUserQuestionTitle = ({ children }: { children: ReactNode }) => (\n <span className=\"flex items-start gap-2\">\n <Icon size=\"xs\" className={cn('mt-1 shrink-0', 'text-muted-foreground')} aria-hidden>\n <MessageCircleQuestion />\n </Icon>\n <span className=\"min-w-0\">{children}</span>\n </span>\n);\n\nexport const AskUserQuestion = ({ children, className, ...props }: ComponentProps<typeof Txt>) => {\n const context = useOptionalAskUserContext();\n return (\n <Txt\n as=\"p\"\n variant=\"subheading\"\n tone=\"ink\"\n {...props}\n id={context?.questionId ?? props.id}\n className={cn('mb-3', className)}\n >\n <AskUserQuestionTitle>{children}</AskUserQuestionTitle>\n </Txt>\n );\n};\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: ReactNode;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn('state-layer flex items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50', className)}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitButtonProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmitButton = ({ children = 'Submit answer', ...props }: AskUserSubmitButtonProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n","import type { ChangeEvent, ComponentProps, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { useAskUserContext, useOptionalAskUserContext } from './ask-user-context';\nimport { AskUserOptionRow, AskUserSubmitButton } from './ask-user-layout';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldItem, FieldLabel, Fieldset } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n// Keep the UI-only custom choice separate from suggested answer values.\nconst customAnswerValue = 'custom';\nconst optionValuePrefix = 'option:';\n\nfunction getOptionRadioValue(optionLabel: string): string {\n return `${optionValuePrefix}${optionLabel}`;\n}\n\nexport function AskUserOptions({ children, className, ...props }: ComponentProps<typeof Fieldset>) {\n const context = useAskUserContext();\n\n const handleSingleSelectChange = (radioValue: unknown) => {\n if (radioValue === customAnswerValue) {\n context.setCustomAnswerSelected(true);\n return;\n }\n if (typeof radioValue !== 'string' || !radioValue.startsWith(optionValuePrefix)) return;\n context.selectOption(radioValue.slice(optionValuePrefix.length));\n };\n\n if (context.selectionMode === 'multi_select') {\n return (\n <Fieldset aria-label=\"Answer options\" {...props} className={cn('gap-2', className)}>\n {children}\n </Fieldset>\n );\n }\n\n const selectedOptionLabel = context.selectedOptionLabels[0];\n const selectedOptionValue = selectedOptionLabel === undefined ? '' : getOptionRadioValue(selectedOptionLabel);\n const selectedRadioValue = context.isCustomAnswerSelected ? customAnswerValue : selectedOptionValue;\n\n return (\n <Fieldset\n {...props}\n className={cn('gap-2', className)}\n render={\n <RadioGroup\n aria-labelledby={context.questionId}\n disabled={context.disabled}\n value={selectedRadioValue}\n onValueChange={handleSingleSelectChange}\n />\n }\n >\n {children}\n </Fieldset>\n );\n}\n\nexport interface AskUserOptionItemProps {\n value: string;\n children: ReactNode;\n description?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function AskUserOptionItem({\n value,\n children,\n description,\n disabled = false,\n className,\n}: AskUserOptionItemProps) {\n const context = useAskUserContext();\n const isDisabled = context.disabled || disabled;\n\n const handleOptionToggle = () => {\n if (!isDisabled) context.selectOption(value);\n };\n\n return (\n <AskUserOptionRow\n label={children}\n description={description}\n disabled={isDisabled}\n className={className}\n control={\n context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n disabled={isDisabled}\n checked={context.selectedOptionLabels.includes(value)}\n onCheckedChange={handleOptionToggle}\n />\n ) : (\n <RadioGroupItem className=\"mt-0.5\" disabled={isDisabled} value={getOptionRadioValue(value)} />\n )\n }\n />\n );\n}\n\nexport type AskUserTextAnswerProps = Omit<\n ComponentProps<typeof Input>,\n 'value' | 'defaultValue' | 'onChange' | 'onKeyDown'\n>;\n\nexport function AskUserTextAnswer({ disabled = false, ...props }: AskUserTextAnswerProps) {\n const context = useAskUserContext();\n\n const handleAnswerTextChange = (event: ChangeEvent<HTMLInputElement>) => {\n context.changeAnswerText(event.target.value);\n };\n\n const handleAnswerTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n context.submitAnswer();\n }\n };\n\n return (\n <Input\n type=\"text\"\n aria-labelledby={props['aria-label'] ? undefined : context.questionId}\n placeholder=\"Type your answer...\"\n size=\"sm\"\n {...props}\n disabled={context.disabled || disabled}\n value={context.answerText}\n onChange={handleAnswerTextChange}\n onKeyDown={handleAnswerTextKeyDown}\n />\n );\n}\n\nexport interface AskUserCustomAnswerProps {\n className?: string;\n label?: string;\n inputLabel?: string;\n}\n\nexport function AskUserCustomAnswer({\n className,\n label = 'Other…',\n inputLabel = 'Your answer',\n}: AskUserCustomAnswerProps) {\n const context = useAskUserContext();\n\n const handleRowClick = (event: MouseEvent<HTMLDivElement>) => {\n if (context.disabled || event.target !== event.currentTarget) return;\n if (context.isCustomAnswerSelected) {\n event.currentTarget.querySelector<HTMLInputElement>('input[type=\"text\"]')?.focus();\n return;\n }\n event.currentTarget.querySelector<HTMLElement>('[role=\"radio\"], [role=\"checkbox\"]')?.click();\n };\n\n const handleControlMouseDown = (event: MouseEvent<HTMLSpanElement>) => {\n // Let the checkbox click unselect it before blur resets its controlled value.\n if (context.isCustomAnswerSelected && !context.answerText.trim()) event.preventDefault();\n };\n\n return (\n <FieldItem\n role=\"group\"\n aria-label=\"Custom answer\"\n aria-disabled={context.disabled || undefined}\n disabled={context.disabled}\n onClick={handleRowClick}\n className={cn(\n 'items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50',\n !context.isCustomAnswerSelected && 'state-layer',\n className,\n )}\n >\n {context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n aria-label={label}\n disabled={context.disabled}\n checked={context.isCustomAnswerSelected}\n onMouseDown={handleControlMouseDown}\n onCheckedChange={context.setCustomAnswerSelected}\n />\n ) : (\n <RadioGroupItem aria-label={label} className=\"mt-0.5\" value={customAnswerValue} />\n )}\n {context.isCustomAnswerSelected ? (\n <AskUserTextAnswer\n aria-label={inputLabel}\n onBlur={context.unselectEmptyCustomAnswer}\n placeholder={label}\n variant=\"unstyled\"\n className={cn('h-auto min-w-0 flex-1 px-0', 'text-body')}\n autoFocus\n />\n ) : (\n <FieldLabel className=\"flex-1\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n </FieldLabel>\n )}\n </FieldItem>\n );\n}\n\nexport type AskUserSubmitProps = ComponentProps<typeof AskUserSubmitButton> & {\n when?: 'always' | 'custom-answer';\n};\n\nexport function AskUserSubmit({ when = 'always', disabled = false, onClick, ...props }: AskUserSubmitProps) {\n const context = useOptionalAskUserContext();\n\n const handleSubmitClick = (event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented && !disabled) context?.submitAnswer();\n };\n\n if (when === 'custom-answer' && !context?.isCustomAnswerSelected) return null;\n\n return (\n <AskUserSubmitButton\n {...props}\n disabled={disabled || (context !== undefined && !context.canSubmitAnswer)}\n onClick={handleSubmitClick}\n />\n );\n}\n","import { useId, useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport { AskUserContext } from './ask-user-context';\nimport { AskUserContainer } from './ask-user-layout';\nimport type { AskUserAnswer, AskUserSelectionMode } from './ask-user-types';\n\nexport interface AskUserRootProps extends Omit<ComponentProps<typeof AskUserContainer>, 'onSubmit'> {\n selectionMode?: AskUserSelectionMode;\n disabled?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n}\n\ninterface AskUserAnswerDraft {\n answerText: string;\n selectedOptionLabels: string[];\n selectionMode: AskUserSelectionMode;\n isCustomAnswerSelected: boolean;\n}\n\nfunction getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n}: AskUserAnswerDraft): AskUserAnswer | undefined {\n const trimmedAnswerText = answerText.trim();\n if (isCustomAnswerSelected && !trimmedAnswerText) return undefined;\n if (selectionMode === 'single_select') {\n // Suggested single-select answers already submit when selected.\n if (!isCustomAnswerSelected && selectedOptionLabels.length > 0) return undefined;\n return trimmedAnswerText || undefined;\n }\n\n const answerLabels = isCustomAnswerSelected ? [...selectedOptionLabels, trimmedAnswerText] : selectedOptionLabels;\n return answerLabels.length > 0 ? answerLabels : undefined;\n}\n\nfunction toggleSelectedOptionLabel(selectedOptionLabels: string[], optionLabel: string): string[] {\n if (selectedOptionLabels.includes(optionLabel)) {\n return selectedOptionLabels.filter(selectedLabel => selectedLabel !== optionLabel);\n }\n return [...selectedOptionLabels, optionLabel];\n}\n\nexport function AskUserRoot({\n selectionMode = 'single_select',\n disabled = false,\n onSubmit,\n children,\n ...props\n}: AskUserRootProps) {\n const questionId = useId();\n const [answerText, setAnswerText] = useState('');\n const [selectedOptionLabels, setSelectedOptionLabels] = useState<string[]>([]);\n const [isCustomAnswerSelected, setIsCustomAnswerSelected] = useState(false);\n const answerToSubmit = getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n });\n const canSubmitAnswer = !disabled && answerToSubmit !== undefined;\n\n const selectOption = (optionLabel: string) => {\n if (disabled) return;\n if (selectionMode === 'multi_select') {\n setSelectedOptionLabels(currentLabels => toggleSelectedOptionLabel(currentLabels, optionLabel));\n return;\n }\n setIsCustomAnswerSelected(false);\n setSelectedOptionLabels([optionLabel]);\n onSubmit(optionLabel);\n };\n\n const setCustomAnswerSelected = (selected: boolean) => {\n if (disabled) return;\n setIsCustomAnswerSelected(selected);\n if (selected && selectionMode === 'single_select') setSelectedOptionLabels([]);\n };\n\n const changeAnswerText = (text: string) => {\n if (!disabled) setAnswerText(text);\n };\n\n const unselectEmptyCustomAnswer = () => {\n if (!disabled && !answerText.trim()) setIsCustomAnswerSelected(false);\n };\n\n const submitAnswer = () => {\n if (disabled || answerToSubmit === undefined) return;\n onSubmit(answerToSubmit);\n };\n\n return (\n <AskUserContext.Provider\n value={{\n questionId,\n selectionMode,\n disabled,\n answerText,\n selectedOptionLabels,\n isCustomAnswerSelected,\n canSubmitAnswer,\n selectOption,\n setCustomAnswerSelected,\n changeAnswerText,\n unselectEmptyCustomAnswer,\n submitAnswer,\n }}\n >\n <AskUserContainer role=\"group\" aria-labelledby={questionId} {...props}>\n {children}\n </AskUserContainer>\n </AskUserContext.Provider>\n );\n}\n","import type { ComponentProps, ReactNode } from 'react';\nimport { useAskUserContext } from './ask-user-context';\nimport {\n AskUserCustomAnswer,\n AskUserOptionItem,\n AskUserOptions,\n AskUserSubmit,\n AskUserTextAnswer,\n} from './ask-user-controls';\nimport { AskUserBody, AskUserContainer, AskUserOutput, AskUserPending, AskUserQuestion } from './ask-user-layout';\nimport { AskUserRoot } from './ask-user-root';\nimport type { AskUserAnswer, AskUserOption, AskUserPayload, AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nfunction getValidOptions(options: AskUserPayload['options']): AskUserOption[] {\n return (\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? []\n );\n}\n\nfunction AskUserAnswerControls({ options }: { options: AskUserOption[] }) {\n const { selectionMode } = useAskUserContext();\n const isMultiSelect = selectionMode === 'multi_select';\n if (options.length === 0) {\n return (\n <div className=\"flex items-center gap-2\">\n <AskUserTextAnswer />\n <AskUserSubmit className=\"shrink-0 whitespace-nowrap\" />\n </div>\n );\n }\n\n return (\n <>\n <AskUserOptions>\n {options.map(option => (\n <AskUserOptionItem key={option.label} value={option.label} description={option.description}>\n {option.label}\n </AskUserOptionItem>\n ))}\n <AskUserCustomAnswer />\n {isMultiSelect ? <AskUserSubmit className=\"mt-1 justify-self-start\" /> : null}\n </AskUserOptions>\n {!isMultiSelect ? <AskUserSubmit when=\"custom-answer\" className=\"mt-2\" /> : null}\n </>\n );\n}\n\ninterface AskUserCardContentProps extends Pick<AskUserProps, 'result' | 'isAnswered' | 'isSubmitting' | 'footer'> {\n options: AskUserOption[];\n}\n\nfunction AskUserCardContent({ result, isAnswered, isSubmitting, options, footer }: AskUserCardContentProps) {\n if (result) return <AskUserOutput result={result} />;\n if (isAnswered) return <Badge variant=\"success\">Answered</Badge>;\n\n return (\n <>\n <AskUserAnswerControls options={options} />\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </>\n );\n}\n\nexport function AskUser({\n payload,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserProps) {\n const options = getValidOptions(payload.options);\n const isMultiSelect = options.length > 0 && payload.selectionMode === 'multi_select';\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n const hasAnswer = result !== undefined || isAnswered;\n\n return (\n <AskUserRoot\n key={payloadKey}\n data-testid=\"ask-user\"\n selectionMode={isMultiSelect ? 'multi_select' : 'single_select'}\n disabled={isSubmitting || hasAnswer}\n onSubmit={onSubmit}\n {...props}\n >\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n <AskUserCardContent\n result={result}\n isAnswered={isAnswered}\n isSubmitting={isSubmitting}\n options={options}\n footer={footer}\n />\n </AskUserBody>\n </AskUserRoot>\n );\n}\n"],"names":["createContext","useContext","jsx","cn","raisedSurfaceStyle","Icon","MessageCircleQuestion","Txt","jsxs","FieldItem","FieldLabel","Button","Check","Badge","Fieldset","RadioGroup","Checkbox","RadioGroupItem","Input","useId","useState","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"ask-user-card-g8cqh8KI.cjs","sources":["../src/ds/components/ai/ask-user/ask-user-context.ts","../src/ds/components/ai/ask-user/ask-user-layout.tsx","../src/ds/components/ai/ask-user/ask-user-controls.tsx","../src/ds/components/ai/ask-user/ask-user-root.tsx","../src/ds/components/ai/ask-user/ask-user-card.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { AskUserSelectionMode } from './ask-user-types';\n\ninterface AskUserContextValue {\n questionId: string;\n selectionMode: AskUserSelectionMode;\n disabled: boolean;\n answerText: string;\n selectedOptionLabels: string[];\n isCustomAnswerSelected: boolean;\n canSubmitAnswer: boolean;\n selectOption: (optionLabel: string) => void;\n setCustomAnswerSelected: (selected: boolean) => void;\n changeAnswerText: (text: string) => void;\n unselectEmptyCustomAnswer: () => void;\n submitAnswer: () => void;\n}\n\nexport const AskUserContext = createContext<AskUserContextValue | undefined>(undefined);\n\nexport function useOptionalAskUserContext() {\n return useContext(AskUserContext);\n}\n\nexport function useAskUserContext() {\n const context = useOptionalAskUserContext();\n if (!context) throw new Error('AskUser controls must be rendered inside AskUser.Root.');\n return context;\n}\n","import { Check, MessageCircleQuestion } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useOptionalAskUserContext } from './ask-user-context';\nimport type { AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { FieldItem, FieldLabel } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('p-4', className)} {...props} />\n);\n\nconst AskUserQuestionTitle = ({ children }: { children: ReactNode }) => (\n <span className=\"flex items-start gap-2\">\n <Icon size=\"xs\" className={cn('mt-1 shrink-0', 'text-muted-foreground')} aria-hidden>\n <MessageCircleQuestion />\n </Icon>\n <span className=\"min-w-0\">{children}</span>\n </span>\n);\n\nexport const AskUserQuestion = ({ children, className, ...props }: ComponentProps<typeof Txt>) => {\n const context = useOptionalAskUserContext();\n return (\n <Txt\n as=\"p\"\n variant=\"subheading\"\n tone=\"ink\"\n {...props}\n id={context?.questionId ?? props.id}\n className={cn('mb-3', className)}\n >\n <AskUserQuestionTitle>{children}</AskUserQuestionTitle>\n </Txt>\n );\n};\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: ReactNode;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn('state-layer flex items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50', className)}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitButtonProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmitButton = ({ children = 'Submit answer', ...props }: AskUserSubmitButtonProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n","import type { ChangeEvent, ComponentProps, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { useAskUserContext, useOptionalAskUserContext } from './ask-user-context';\nimport { AskUserOptionRow, AskUserSubmitButton } from './ask-user-layout';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldItem, FieldLabel, Fieldset } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n// Keep the UI-only custom choice separate from suggested answer values.\nconst customAnswerValue = 'custom';\nconst optionValuePrefix = 'option:';\n\nfunction getOptionRadioValue(optionLabel: string): string {\n return `${optionValuePrefix}${optionLabel}`;\n}\n\nexport function AskUserOptions({ children, className, ...props }: ComponentProps<typeof Fieldset>) {\n const context = useAskUserContext();\n\n const handleSingleSelectChange = (radioValue: unknown) => {\n if (radioValue === customAnswerValue) {\n context.setCustomAnswerSelected(true);\n return;\n }\n if (typeof radioValue !== 'string' || !radioValue.startsWith(optionValuePrefix)) return;\n context.selectOption(radioValue.slice(optionValuePrefix.length));\n };\n\n if (context.selectionMode === 'multi_select') {\n return (\n <Fieldset aria-label=\"Answer options\" {...props} className={cn('gap-2', className)}>\n {children}\n </Fieldset>\n );\n }\n\n const selectedOptionLabel = context.selectedOptionLabels[0];\n const selectedOptionValue = selectedOptionLabel === undefined ? '' : getOptionRadioValue(selectedOptionLabel);\n const selectedRadioValue = context.isCustomAnswerSelected ? customAnswerValue : selectedOptionValue;\n\n return (\n <Fieldset\n {...props}\n className={cn('gap-2', className)}\n render={\n <RadioGroup\n aria-labelledby={context.questionId}\n disabled={context.disabled}\n value={selectedRadioValue}\n onValueChange={handleSingleSelectChange}\n />\n }\n >\n {children}\n </Fieldset>\n );\n}\n\nexport interface AskUserOptionItemProps {\n value: string;\n children: ReactNode;\n description?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function AskUserOptionItem({\n value,\n children,\n description,\n disabled = false,\n className,\n}: AskUserOptionItemProps) {\n const context = useAskUserContext();\n const isDisabled = context.disabled || disabled;\n\n const handleOptionToggle = () => {\n if (!isDisabled) context.selectOption(value);\n };\n\n return (\n <AskUserOptionRow\n label={children}\n description={description}\n disabled={isDisabled}\n className={className}\n control={\n context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n disabled={isDisabled}\n checked={context.selectedOptionLabels.includes(value)}\n onCheckedChange={handleOptionToggle}\n />\n ) : (\n <RadioGroupItem className=\"mt-0.5\" disabled={isDisabled} value={getOptionRadioValue(value)} />\n )\n }\n />\n );\n}\n\nexport type AskUserTextAnswerProps = Omit<\n ComponentProps<typeof Input>,\n 'value' | 'defaultValue' | 'onChange' | 'onKeyDown'\n>;\n\nexport function AskUserTextAnswer({ disabled = false, ...props }: AskUserTextAnswerProps) {\n const context = useAskUserContext();\n\n const handleAnswerTextChange = (event: ChangeEvent<HTMLInputElement>) => {\n context.changeAnswerText(event.target.value);\n };\n\n const handleAnswerTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n context.submitAnswer();\n }\n };\n\n return (\n <Input\n type=\"text\"\n aria-labelledby={props['aria-label'] ? undefined : context.questionId}\n placeholder=\"Type your answer...\"\n size=\"sm\"\n {...props}\n disabled={context.disabled || disabled}\n value={context.answerText}\n onChange={handleAnswerTextChange}\n onKeyDown={handleAnswerTextKeyDown}\n />\n );\n}\n\nexport interface AskUserCustomAnswerProps {\n className?: string;\n label?: string;\n inputLabel?: string;\n}\n\nexport function AskUserCustomAnswer({\n className,\n label = 'Other…',\n inputLabel = 'Your answer',\n}: AskUserCustomAnswerProps) {\n const context = useAskUserContext();\n\n const handleRowClick = (event: MouseEvent<HTMLDivElement>) => {\n if (context.disabled || event.target !== event.currentTarget) return;\n if (context.isCustomAnswerSelected) {\n event.currentTarget.querySelector<HTMLInputElement>('input[type=\"text\"]')?.focus();\n return;\n }\n event.currentTarget.querySelector<HTMLElement>('[role=\"radio\"], [role=\"checkbox\"]')?.click();\n };\n\n const handleControlMouseDown = (event: MouseEvent<HTMLSpanElement>) => {\n // Let the checkbox click unselect it before blur resets its controlled value.\n if (context.isCustomAnswerSelected && !context.answerText.trim()) event.preventDefault();\n };\n\n return (\n <FieldItem\n role=\"group\"\n aria-label=\"Custom answer\"\n aria-disabled={context.disabled || undefined}\n disabled={context.disabled}\n onClick={handleRowClick}\n className={cn(\n 'items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50',\n !context.isCustomAnswerSelected && 'state-layer',\n className,\n )}\n >\n {context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n aria-label={label}\n disabled={context.disabled}\n checked={context.isCustomAnswerSelected}\n onMouseDown={handleControlMouseDown}\n onCheckedChange={context.setCustomAnswerSelected}\n />\n ) : (\n <RadioGroupItem aria-label={label} className=\"mt-0.5\" value={customAnswerValue} />\n )}\n {context.isCustomAnswerSelected ? (\n <AskUserTextAnswer\n aria-label={inputLabel}\n onBlur={context.unselectEmptyCustomAnswer}\n placeholder={label}\n variant=\"unstyled\"\n className={cn('h-auto min-w-0 flex-1 px-0', 'text-body')}\n autoFocus\n />\n ) : (\n <FieldLabel className=\"flex-1\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n </FieldLabel>\n )}\n </FieldItem>\n );\n}\n\nexport type AskUserSubmitProps = ComponentProps<typeof AskUserSubmitButton> & {\n when?: 'always' | 'custom-answer';\n};\n\nexport function AskUserSubmit({ when = 'always', disabled = false, onClick, ...props }: AskUserSubmitProps) {\n const context = useOptionalAskUserContext();\n\n const handleSubmitClick = (event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented && !disabled) context?.submitAnswer();\n };\n\n if (when === 'custom-answer' && !context?.isCustomAnswerSelected) return null;\n\n return (\n <AskUserSubmitButton\n {...props}\n disabled={disabled || (context !== undefined && !context.canSubmitAnswer)}\n onClick={handleSubmitClick}\n />\n );\n}\n","import { useId, useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport { AskUserContext } from './ask-user-context';\nimport { AskUserContainer } from './ask-user-layout';\nimport type { AskUserAnswer, AskUserSelectionMode } from './ask-user-types';\n\nexport interface AskUserRootProps extends Omit<ComponentProps<typeof AskUserContainer>, 'onSubmit'> {\n selectionMode?: AskUserSelectionMode;\n disabled?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n}\n\ninterface AskUserAnswerDraft {\n answerText: string;\n selectedOptionLabels: string[];\n selectionMode: AskUserSelectionMode;\n isCustomAnswerSelected: boolean;\n}\n\nfunction getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n}: AskUserAnswerDraft): AskUserAnswer | undefined {\n const trimmedAnswerText = answerText.trim();\n if (isCustomAnswerSelected && !trimmedAnswerText) return undefined;\n if (selectionMode === 'single_select') {\n // Suggested single-select answers already submit when selected.\n if (!isCustomAnswerSelected && selectedOptionLabels.length > 0) return undefined;\n return trimmedAnswerText || undefined;\n }\n\n const answerLabels = isCustomAnswerSelected ? [...selectedOptionLabels, trimmedAnswerText] : selectedOptionLabels;\n return answerLabels.length > 0 ? answerLabels : undefined;\n}\n\nfunction toggleSelectedOptionLabel(selectedOptionLabels: string[], optionLabel: string): string[] {\n if (selectedOptionLabels.includes(optionLabel)) {\n return selectedOptionLabels.filter(selectedLabel => selectedLabel !== optionLabel);\n }\n return [...selectedOptionLabels, optionLabel];\n}\n\nexport function AskUserRoot({\n selectionMode = 'single_select',\n disabled = false,\n onSubmit,\n children,\n ...props\n}: AskUserRootProps) {\n const questionId = useId();\n const [answerText, setAnswerText] = useState('');\n const [selectedOptionLabels, setSelectedOptionLabels] = useState<string[]>([]);\n const [isCustomAnswerSelected, setIsCustomAnswerSelected] = useState(false);\n const answerToSubmit = getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n });\n const canSubmitAnswer = !disabled && answerToSubmit !== undefined;\n\n const selectOption = (optionLabel: string) => {\n if (disabled) return;\n if (selectionMode === 'multi_select') {\n setSelectedOptionLabels(currentLabels => toggleSelectedOptionLabel(currentLabels, optionLabel));\n return;\n }\n setIsCustomAnswerSelected(false);\n setSelectedOptionLabels([optionLabel]);\n onSubmit(optionLabel);\n };\n\n const setCustomAnswerSelected = (selected: boolean) => {\n if (disabled) return;\n setIsCustomAnswerSelected(selected);\n if (selected && selectionMode === 'single_select') setSelectedOptionLabels([]);\n };\n\n const changeAnswerText = (text: string) => {\n if (!disabled) setAnswerText(text);\n };\n\n const unselectEmptyCustomAnswer = () => {\n if (!disabled && !answerText.trim()) setIsCustomAnswerSelected(false);\n };\n\n const submitAnswer = () => {\n if (disabled || answerToSubmit === undefined) return;\n onSubmit(answerToSubmit);\n };\n\n return (\n <AskUserContext.Provider\n value={{\n questionId,\n selectionMode,\n disabled,\n answerText,\n selectedOptionLabels,\n isCustomAnswerSelected,\n canSubmitAnswer,\n selectOption,\n setCustomAnswerSelected,\n changeAnswerText,\n unselectEmptyCustomAnswer,\n submitAnswer,\n }}\n >\n <AskUserContainer role=\"group\" aria-labelledby={questionId} {...props}>\n {children}\n </AskUserContainer>\n </AskUserContext.Provider>\n );\n}\n","import type { ComponentProps, ReactNode } from 'react';\nimport { useAskUserContext } from './ask-user-context';\nimport {\n AskUserCustomAnswer,\n AskUserOptionItem,\n AskUserOptions,\n AskUserSubmit,\n AskUserTextAnswer,\n} from './ask-user-controls';\nimport { AskUserBody, AskUserContainer, AskUserOutput, AskUserPending, AskUserQuestion } from './ask-user-layout';\nimport { AskUserRoot } from './ask-user-root';\nimport type { AskUserAnswer, AskUserOption, AskUserPayload, AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nfunction getValidOptions(options: AskUserPayload['options']): AskUserOption[] {\n return (\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? []\n );\n}\n\nfunction AskUserAnswerControls({ options }: { options: AskUserOption[] }) {\n const { selectionMode } = useAskUserContext();\n const isMultiSelect = selectionMode === 'multi_select';\n if (options.length === 0) {\n return (\n <div className=\"flex items-center gap-2\">\n <AskUserTextAnswer />\n <AskUserSubmit className=\"shrink-0 whitespace-nowrap\" />\n </div>\n );\n }\n\n return (\n <>\n <AskUserOptions>\n {options.map(option => (\n <AskUserOptionItem key={option.label} value={option.label} description={option.description}>\n {option.label}\n </AskUserOptionItem>\n ))}\n <AskUserCustomAnswer />\n {isMultiSelect ? <AskUserSubmit className=\"mt-1 justify-self-start\" /> : null}\n </AskUserOptions>\n {!isMultiSelect ? <AskUserSubmit when=\"custom-answer\" className=\"mt-2\" /> : null}\n </>\n );\n}\n\ninterface AskUserCardContentProps extends Pick<AskUserProps, 'result' | 'isAnswered' | 'isSubmitting' | 'footer'> {\n options: AskUserOption[];\n}\n\nfunction AskUserCardContent({ result, isAnswered, isSubmitting, options, footer }: AskUserCardContentProps) {\n if (result) return <AskUserOutput result={result} />;\n if (isAnswered) return <Badge variant=\"success\">Answered</Badge>;\n\n return (\n <>\n <AskUserAnswerControls options={options} />\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </>\n );\n}\n\nexport function AskUser({\n payload,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserProps) {\n const options = getValidOptions(payload.options);\n const isMultiSelect = options.length > 0 && payload.selectionMode === 'multi_select';\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n const hasAnswer = result !== undefined || isAnswered;\n\n return (\n <AskUserRoot\n key={payloadKey}\n data-testid=\"ask-user\"\n selectionMode={isMultiSelect ? 'multi_select' : 'single_select'}\n disabled={isSubmitting || hasAnswer}\n onSubmit={onSubmit}\n {...props}\n >\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n <AskUserCardContent\n result={result}\n isAnswered={isAnswered}\n isSubmitting={isSubmitting}\n options={options}\n footer={footer}\n />\n </AskUserBody>\n </AskUserRoot>\n );\n}\n"],"names":["createContext","useContext","jsx","cn","raisedSurfaceStyle","Icon","MessageCircleQuestion","Txt","jsxs","FieldItem","FieldLabel","Button","Check","Badge","Fieldset","RadioGroup","Checkbox","RadioGroupItem","Input","useId","useState","Fragment"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { Checkbox as Checkbox$1 } from '@base-ui/react/checkbox';
3
3
  import { Check, Minus } from 'lucide-react';
4
4
  import * as React from 'react';
5
- import { k as keepOwnAccessibleName } from './field-control-aria-DB6y41tQ.js';
5
+ import { k as keepOwnAccessibleName } from './field-control-aria-CCJ4-mUe.js';
6
6
  import { selectionControlStyle } from './primitives/selection-control.es.js';
7
7
  import { c as cn } from './cn-coERSHz5.js';
8
8
 
@@ -78,4 +78,4 @@ function CheckboxIndicatorIcon() {
78
78
  }
79
79
 
80
80
  export { Checkbox as C };
81
- //# sourceMappingURL=checkbox-mmR3rD2j.js.map
81
+ //# sourceMappingURL=checkbox-B3tvJLCl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox-mmR3rD2j.js","sources":["../src/ds/components/Checkbox/checkbox.tsx"],"sourcesContent":["import { Checkbox as CheckboxPrimitive } from '@base-ui/react/checkbox';\nimport { Check, Minus } from 'lucide-react';\nimport * as React from 'react';\n\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { selectionControlStyle } from '@/ds/primitives/selection-control';\nimport { cn } from '@/lib/utils';\n\n/**\n * Radix-style tri-state value for the controlled `checked` prop. Base UI splits\n * this into a strict `checked` boolean plus a separate `indeterminate` boolean —\n * we keep the Radix union here so existing consumers (which pass\n * `checked=\"indeterminate\"`) keep working without changes.\n *\n * `defaultChecked` is intentionally a plain boolean: an uncontrolled checkbox\n * cannot start \"indeterminate\" and then be toggled out of it (the indeterminate\n * state is inherently controlled), so `'indeterminate'` is not allowed there.\n */\nexport type CheckedState = boolean | 'indeterminate';\n\ntype CheckboxProps = Omit<CheckboxPrimitive.Root.Props, 'className' | 'checked'> & {\n className?: string;\n checked?: CheckedState;\n};\n\nconst Checkbox = React.forwardRef<HTMLSpanElement, CheckboxProps>(\n ({ className, checked, indeterminate, ...props }, ref) => {\n // Translate the Radix `'indeterminate'` sentinel into Base UI's dedicated\n // `indeterminate` prop while leaving `checked` as a boolean.\n const isCheckedIndeterminate = checked === 'indeterminate';\n\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n checked={isCheckedIndeterminate ? false : checked}\n indeterminate={indeterminate ?? isCheckedIndeterminate}\n data-slot=\"checkbox\"\n render={<span {...keepOwnAccessibleName(props)} />}\n className={cn(\n 'peer rounded-[0.3125rem]',\n selectionControlStyle,\n // Indeterminate is checkbox-only and mirrors the checked chip.\n 'data-[indeterminate]:border-foreground data-[indeterminate]:bg-foreground data-[indeterminate]:text-background',\n 'data-[indeterminate]:hover:border-foreground/90 data-[indeterminate]:hover:bg-foreground/90',\n 'data-[indeterminate]:active:border-foreground/75 data-[indeterminate]:active:bg-foreground/75',\n 'data-[disabled]:data-[indeterminate]:border-muted-foreground data-[disabled]:data-[indeterminate]:bg-muted-foreground data-[disabled]:data-[indeterminate]:text-background',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n keepMounted\n className={cn(\n 'group/checkbox-indicator flex items-center justify-center text-current',\n 'scale-75 opacity-0 transition-[opacity,transform] duration-200 ease-out-custom',\n 'data-[checked]:scale-100 data-[checked]:opacity-100',\n 'data-[indeterminate]:scale-100 data-[indeterminate]:opacity-100',\n 'data-[starting-style]:scale-75 data-[starting-style]:opacity-0',\n 'data-[ending-style]:scale-75 data-[ending-style]:opacity-0',\n )}\n >\n <CheckboxIndicatorIcon />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n },\n);\nCheckbox.displayName = 'Checkbox';\n\n/**\n * Picks the checkmark vs. the dash based on the Indicator's data attributes.\n * The Indicator stays mounted so unchecked transitions can animate out cleanly.\n */\nfunction CheckboxIndicatorIcon() {\n return (\n <>\n <Check\n className={cn(\n 'stroke-3.25 size-3 scale-95 transition-[stroke-dashoffset,transform] duration-200 ease-out-custom',\n // Lucide's check path is ~22.6 units long. Use a longer dash so the\n // final checked mark is never clipped.\n '[stroke-dasharray:28] [stroke-dashoffset:28]',\n 'group-data-[checked]/checkbox-indicator:[stroke-dashoffset:0]',\n 'group-data-[checked]/checkbox-indicator:scale-100',\n 'group-data-[indeterminate]/checkbox-indicator:hidden',\n )}\n />\n <Minus\n className={cn(\n 'stroke-3.25 hidden size-3 scale-95 transition-transform duration-200 ease-out-custom',\n 'group-data-[indeterminate]/checkbox-indicator:block',\n 'group-data-[indeterminate]/checkbox-indicator:scale-100',\n )}\n />\n </>\n );\n}\n\nexport { Checkbox };\nexport type { CheckboxProps };\n"],"names":["CheckboxPrimitive"],"mappings":";;;;;;;;AAyBA,MAAM,WAAW,KAAA,CAAM,UAAA;AAAA,EACrB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,eAAe,GAAG,KAAA,IAAS,GAAA,KAAQ;AAGxD,IAAA,MAAM,yBAAyB,OAAA,KAAY,eAAA;AAE3C,IAAA,uBACE,GAAA;AAAA,MAACA,UAAA,CAAkB,IAAA;AAAA,MAAlB;AAAA,QACC,GAAA;AAAA,QACA,OAAA,EAAS,yBAAyB,KAAA,GAAQ,OAAA;AAAA,QAC1C,eAAe,aAAA,IAAiB,sBAAA;AAAA,QAChC,WAAA,EAAU,UAAA;AAAA,QACV,wBAAQ,GAAA,CAAC,MAAA,EAAA,EAAM,GAAG,qBAAA,CAAsB,KAAK,CAAA,EAAG,CAAA;AAAA,QAChD,SAAA,EAAW,EAAA;AAAA,UACT,0BAAA;AAAA,UACA,qBAAA;AAAA;AAAA,UAEA,gHAAA;AAAA,UACA,6FAAA;AAAA,UACA,+FAAA;AAAA,UACA,4KAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QAEJ,QAAA,kBAAA,GAAA;AAAA,UAACA,UAAA,CAAkB,SAAA;AAAA,UAAlB;AAAA,YACC,WAAA,EAAW,IAAA;AAAA,YACX,SAAA,EAAW,EAAA;AAAA,cACT,wEAAA;AAAA,cACA,gFAAA;AAAA,cACA,qDAAA;AAAA,cACA,iEAAA;AAAA,cACA,gEAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEA,8BAAC,qBAAA,EAAA,EAAsB;AAAA;AAAA;AACzB;AAAA,KACF;AAAA,EAEJ;AACF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AAMvB,SAAS,qBAAA,GAAwB;AAC/B,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,mGAAA;AAAA;AAAA;AAAA,UAGA,8CAAA;AAAA,UACA,+DAAA;AAAA,UACA,mDAAA;AAAA,UACA;AAAA;AACF;AAAA,KACF;AAAA,oBACA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,sFAAA;AAAA,UACA,qDAAA;AAAA,UACA;AAAA;AACF;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"checkbox-B3tvJLCl.js","sources":["../src/ds/components/Checkbox/checkbox.tsx"],"sourcesContent":["import { Checkbox as CheckboxPrimitive } from '@base-ui/react/checkbox';\nimport { Check, Minus } from 'lucide-react';\nimport * as React from 'react';\n\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { selectionControlStyle } from '@/ds/primitives/selection-control';\nimport { cn } from '@/lib/utils';\n\n/**\n * Radix-style tri-state value for the controlled `checked` prop. Base UI splits\n * this into a strict `checked` boolean plus a separate `indeterminate` boolean —\n * we keep the Radix union here so existing consumers (which pass\n * `checked=\"indeterminate\"`) keep working without changes.\n *\n * `defaultChecked` is intentionally a plain boolean: an uncontrolled checkbox\n * cannot start \"indeterminate\" and then be toggled out of it (the indeterminate\n * state is inherently controlled), so `'indeterminate'` is not allowed there.\n */\nexport type CheckedState = boolean | 'indeterminate';\n\ntype CheckboxProps = Omit<CheckboxPrimitive.Root.Props, 'className' | 'checked'> & {\n className?: string;\n checked?: CheckedState;\n};\n\nconst Checkbox = React.forwardRef<HTMLSpanElement, CheckboxProps>(\n ({ className, checked, indeterminate, ...props }, ref) => {\n // Translate the Radix `'indeterminate'` sentinel into Base UI's dedicated\n // `indeterminate` prop while leaving `checked` as a boolean.\n const isCheckedIndeterminate = checked === 'indeterminate';\n\n return (\n <CheckboxPrimitive.Root\n ref={ref}\n checked={isCheckedIndeterminate ? false : checked}\n indeterminate={indeterminate ?? isCheckedIndeterminate}\n data-slot=\"checkbox\"\n render={<span {...keepOwnAccessibleName(props)} />}\n className={cn(\n 'peer rounded-[0.3125rem]',\n selectionControlStyle,\n // Indeterminate is checkbox-only and mirrors the checked chip.\n 'data-[indeterminate]:border-foreground data-[indeterminate]:bg-foreground data-[indeterminate]:text-background',\n 'data-[indeterminate]:hover:border-foreground/90 data-[indeterminate]:hover:bg-foreground/90',\n 'data-[indeterminate]:active:border-foreground/75 data-[indeterminate]:active:bg-foreground/75',\n 'data-[disabled]:data-[indeterminate]:border-muted-foreground data-[disabled]:data-[indeterminate]:bg-muted-foreground data-[disabled]:data-[indeterminate]:text-background',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n keepMounted\n className={cn(\n 'group/checkbox-indicator flex items-center justify-center text-current',\n 'scale-75 opacity-0 transition-[opacity,transform] duration-200 ease-out-custom',\n 'data-[checked]:scale-100 data-[checked]:opacity-100',\n 'data-[indeterminate]:scale-100 data-[indeterminate]:opacity-100',\n 'data-[starting-style]:scale-75 data-[starting-style]:opacity-0',\n 'data-[ending-style]:scale-75 data-[ending-style]:opacity-0',\n )}\n >\n <CheckboxIndicatorIcon />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n },\n);\nCheckbox.displayName = 'Checkbox';\n\n/**\n * Picks the checkmark vs. the dash based on the Indicator's data attributes.\n * The Indicator stays mounted so unchecked transitions can animate out cleanly.\n */\nfunction CheckboxIndicatorIcon() {\n return (\n <>\n <Check\n className={cn(\n 'stroke-3.25 size-3 scale-95 transition-[stroke-dashoffset,transform] duration-200 ease-out-custom',\n // Lucide's check path is ~22.6 units long. Use a longer dash so the\n // final checked mark is never clipped.\n '[stroke-dasharray:28] [stroke-dashoffset:28]',\n 'group-data-[checked]/checkbox-indicator:[stroke-dashoffset:0]',\n 'group-data-[checked]/checkbox-indicator:scale-100',\n 'group-data-[indeterminate]/checkbox-indicator:hidden',\n )}\n />\n <Minus\n className={cn(\n 'stroke-3.25 hidden size-3 scale-95 transition-transform duration-200 ease-out-custom',\n 'group-data-[indeterminate]/checkbox-indicator:block',\n 'group-data-[indeterminate]/checkbox-indicator:scale-100',\n )}\n />\n </>\n );\n}\n\nexport { Checkbox };\nexport type { CheckboxProps };\n"],"names":["CheckboxPrimitive"],"mappings":";;;;;;;;AAyBA,MAAM,WAAW,KAAA,CAAM,UAAA;AAAA,EACrB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,eAAe,GAAG,KAAA,IAAS,GAAA,KAAQ;AAGxD,IAAA,MAAM,yBAAyB,OAAA,KAAY,eAAA;AAE3C,IAAA,uBACE,GAAA;AAAA,MAACA,UAAA,CAAkB,IAAA;AAAA,MAAlB;AAAA,QACC,GAAA;AAAA,QACA,OAAA,EAAS,yBAAyB,KAAA,GAAQ,OAAA;AAAA,QAC1C,eAAe,aAAA,IAAiB,sBAAA;AAAA,QAChC,WAAA,EAAU,UAAA;AAAA,QACV,wBAAQ,GAAA,CAAC,MAAA,EAAA,EAAM,GAAG,qBAAA,CAAsB,KAAK,CAAA,EAAG,CAAA;AAAA,QAChD,SAAA,EAAW,EAAA;AAAA,UACT,0BAAA;AAAA,UACA,qBAAA;AAAA;AAAA,UAEA,gHAAA;AAAA,UACA,6FAAA;AAAA,UACA,+FAAA;AAAA,UACA,4KAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QAEJ,QAAA,kBAAA,GAAA;AAAA,UAACA,UAAA,CAAkB,SAAA;AAAA,UAAlB;AAAA,YACC,WAAA,EAAW,IAAA;AAAA,YACX,SAAA,EAAW,EAAA;AAAA,cACT,wEAAA;AAAA,cACA,gFAAA;AAAA,cACA,qDAAA;AAAA,cACA,iEAAA;AAAA,cACA,gEAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEA,8BAAC,qBAAA,EAAA,EAAsB;AAAA;AAAA;AACzB;AAAA,KACF;AAAA,EAEJ;AACF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AAMvB,SAAS,qBAAA,GAAwB;AAC/B,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,mGAAA;AAAA;AAAA;AAAA,UAGA,8CAAA;AAAA,UACA,+DAAA;AAAA,UACA,mDAAA;AAAA,UACA;AAAA;AACF;AAAA,KACF;AAAA,oBACA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,sFAAA;AAAA,UACA,qDAAA;AAAA,UACA;AAAA;AACF;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { C as Code } from './code-DAXWNzvf.js';
3
3
  import { C as CopyButton } from './copy-button-CDyuUYUr.js';
4
- import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent, c as SelectItem } from './select-N2lgBRsg.js';
4
+ import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent, c as SelectItem } from './select-BGAiIHnS.js';
5
5
  import { T as TabList } from './tabs-list-DY_hziv7.js';
6
6
  import { T as Tabs } from './tabs-root-CvGhdNKc.js';
7
7
  import { T as Tab } from './tabs-tab-BchiQf0E.js';
@@ -84,4 +84,4 @@ function CodeBlock({
84
84
  }
85
85
 
86
86
  export { CodeBlock as C };
87
- //# sourceMappingURL=code-block-BQZUoOfS.js.map
87
+ //# sourceMappingURL=code-block-9sT-CaoF.js.map