@mastra/playground-ui 60.2.0 → 61.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 (1106) hide show
  1. package/README.md +18 -0
  2. package/dist/{Avatar-bHcyExU7.js → Avatar-Bg_EZRgZ.js} +2 -2
  3. package/dist/{Avatar-bHcyExU7.js.map → Avatar-Bg_EZRgZ.js.map} +1 -1
  4. package/dist/{Avatar-B3PwGdWv.cjs → Avatar-DchBEEMO.cjs} +2 -2
  5. package/dist/{Avatar-B3PwGdWv.cjs.map → Avatar-DchBEEMO.cjs.map} +1 -1
  6. package/dist/{Badge-D3EctKQo.cjs → Badge-DB59RxT5.cjs} +3 -3
  7. package/dist/Badge-DB59RxT5.cjs.map +1 -0
  8. package/dist/{Badge-DmOqFpXW.js → Badge-DId-8rYY.js} +3 -3
  9. package/dist/Badge-DId-8rYY.js.map +1 -0
  10. package/dist/{EmptyState-DyyUFpzY.js → EmptyState-DGzBN0Ix.js} +2 -2
  11. package/dist/{EmptyState-DyyUFpzY.js.map → EmptyState-DGzBN0Ix.js.map} +1 -1
  12. package/dist/{EmptyState-CuoMGNP0.cjs → EmptyState-DvSib3QC.cjs} +2 -2
  13. package/dist/{EmptyState-CuoMGNP0.cjs.map → EmptyState-DvSib3QC.cjs.map} +1 -1
  14. package/dist/{Header-hTHhO02b.js → Header-BXl3AZgO.js} +2 -2
  15. package/dist/{Header-hTHhO02b.js.map → Header-BXl3AZgO.js.map} +1 -1
  16. package/dist/{Header-y51Sfo3G.cjs → Header-W3PBmXia.cjs} +2 -2
  17. package/dist/{Header-y51Sfo3G.cjs.map → Header-W3PBmXia.cjs.map} +1 -1
  18. package/dist/{Notice-B8RIClJD.js → Notice-D4gMAkVI.js} +2 -2
  19. package/dist/{Notice-B8RIClJD.js.map → Notice-D4gMAkVI.js.map} +1 -1
  20. package/dist/{Notice-C4Tgmtgb.cjs → Notice-D4zc_oTj.cjs} +2 -2
  21. package/dist/{Notice-C4Tgmtgb.cjs.map → Notice-D4zc_oTj.cjs.map} +1 -1
  22. package/dist/{Txt-BP1SRHmL.js → Txt-C3cYJgKU.js} +4 -1
  23. package/dist/Txt-C3cYJgKU.js.map +1 -0
  24. package/dist/{Txt-DPmEpNbp.cjs → Txt-DNnvlrBo.cjs} +4 -1
  25. package/dist/Txt-DNnvlrBo.cjs.map +1 -0
  26. package/dist/{activity-CbQG59Oc.cjs → activity-ClKZR5_o.cjs} +2 -2
  27. package/dist/{activity-CbQG59Oc.cjs.map → activity-ClKZR5_o.cjs.map} +1 -1
  28. package/dist/{activity-BoXbE4Kz.js → activity-D0SefV4r.js} +2 -2
  29. package/dist/{activity-BoXbE4Kz.js.map → activity-D0SefV4r.js.map} +1 -1
  30. package/dist/{ask-user-DE8TaPhb.js → ask-user-CqCUiZRR.js} +4 -4
  31. package/dist/{ask-user-DE8TaPhb.js.map → ask-user-CqCUiZRR.js.map} +1 -1
  32. package/dist/{ask-user-XYY0fUoI.cjs → ask-user-DBb0lUh2.cjs} +4 -4
  33. package/dist/{ask-user-XYY0fUoI.cjs.map → ask-user-DBb0lUh2.cjs.map} +1 -1
  34. package/dist/buttons-group.css +1 -1
  35. package/dist/{code-block-Bnz7Pq0Q.js → code-block-C04dJD3G.js} +5 -4
  36. package/dist/{code-block-Bnz7Pq0Q.js.map → code-block-C04dJD3G.js.map} +1 -1
  37. package/dist/{code-block-C3DbSINk.cjs → code-block-CMI2oLXm.cjs} +6 -5
  38. package/dist/{code-block-C3DbSINk.cjs.map → code-block-CMI2oLXm.cjs.map} +1 -1
  39. package/dist/collapsible-box-DW-y0Oi1.js +67 -0
  40. package/dist/collapsible-box-DW-y0Oi1.js.map +1 -0
  41. package/dist/collapsible-box-DdUueeh6.cjs +69 -0
  42. package/dist/collapsible-box-DdUueeh6.cjs.map +1 -0
  43. package/dist/{combobox-RzEkcOuu.cjs → combobox-DPpiBLWV.cjs} +3 -3
  44. package/dist/{combobox-RzEkcOuu.cjs.map → combobox-DPpiBLWV.cjs.map} +1 -1
  45. package/dist/{combobox-DKFPbNMB.js → combobox-DoJgbq9N.js} +3 -3
  46. package/dist/{combobox-DKFPbNMB.js.map → combobox-DoJgbq9N.js.map} +1 -1
  47. package/dist/{combobox-styles-mbcWlNZQ.js → combobox-styles-BuHYzri9.js} +3 -3
  48. package/dist/combobox-styles-BuHYzri9.js.map +1 -0
  49. package/dist/{combobox-styles-qL3FSgmU.cjs → combobox-styles-zdW4cHSq.cjs} +3 -3
  50. package/dist/combobox-styles-zdW4cHSq.cjs.map +1 -0
  51. package/dist/{command-DFin7kHN.js → command-CXPbrw66.js} +7 -4
  52. package/dist/command-CXPbrw66.js.map +1 -0
  53. package/dist/{command-Bm0VcX7X.cjs → command-DD3WIrQX.cjs} +7 -4
  54. package/dist/command-DD3WIrQX.cjs.map +1 -0
  55. package/dist/{comment-DKWkzdMj.js → comment-B1Cf9w4Z.js} +2 -2
  56. package/dist/{comment-DKWkzdMj.js.map → comment-B1Cf9w4Z.js.map} +1 -1
  57. package/dist/{comment-DWY6D0pZ.cjs → comment-DnbibTOe.cjs} +2 -2
  58. package/dist/{comment-DWY6D0pZ.cjs.map → comment-DnbibTOe.cjs.map} +1 -1
  59. package/dist/components/Avatar.cjs.js +1 -1
  60. package/dist/components/Avatar.es.js +1 -1
  61. package/dist/components/Badge.cjs.js +1 -1
  62. package/dist/components/Badge.es.js +1 -1
  63. package/dist/components/ClampedText.cjs.js +1 -1
  64. package/dist/components/ClampedText.es.js +1 -1
  65. package/dist/components/CodeBlock.cjs.js +1 -1
  66. package/dist/components/CodeBlock.es.js +1 -1
  67. package/dist/components/CollapsibleBox.cjs.js +3 -2
  68. package/dist/components/CollapsibleBox.cjs.js.map +1 -1
  69. package/dist/components/CollapsibleBox.es.js +2 -1
  70. package/dist/components/CollapsibleBox.es.js.map +1 -1
  71. package/dist/components/Combobox.cjs.js +2 -2
  72. package/dist/components/Combobox.es.js +2 -2
  73. package/dist/components/Command.cjs.js +1 -1
  74. package/dist/components/Command.es.js +1 -1
  75. package/dist/components/CommandPalette.cjs.js +2 -2
  76. package/dist/components/CommandPalette.es.js +2 -2
  77. package/dist/components/Comment.cjs.js +4 -4
  78. package/dist/components/Comment.es.js +5 -5
  79. package/dist/components/DataCodeSection.cjs.js +1 -1
  80. package/dist/components/DataCodeSection.es.js +1 -1
  81. package/dist/components/DataDetailsPanel.cjs.js +1 -1
  82. package/dist/components/DataDetailsPanel.es.js +1 -1
  83. package/dist/components/DataList.cjs.js +4 -4
  84. package/dist/components/DataList.es.js +4 -4
  85. package/dist/components/DataPanel.cjs.js +1 -1
  86. package/dist/components/DataPanel.es.js +1 -1
  87. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  88. package/dist/components/DateRangeTimeline.es.js +1 -1
  89. package/dist/components/DateTimePicker.cjs.js +2 -2
  90. package/dist/components/DateTimePicker.es.js +2 -2
  91. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  92. package/dist/components/DateTimeRangePicker.es.js +1 -1
  93. package/dist/components/EmptyState.cjs.js +1 -1
  94. package/dist/components/EmptyState.es.js +1 -1
  95. package/dist/components/Entity.cjs.js +1 -1
  96. package/dist/components/Entity.es.js +1 -1
  97. package/dist/components/EntityHeader.cjs.js +1 -1
  98. package/dist/components/EntityHeader.es.js +1 -1
  99. package/dist/components/Entry.cjs.js +1 -1
  100. package/dist/components/Entry.es.js +1 -1
  101. package/dist/components/EnvironmentVariablesEditor.cjs.js +5 -5
  102. package/dist/components/EnvironmentVariablesEditor.es.js +5 -5
  103. package/dist/components/Field.cjs.js +1 -1
  104. package/dist/components/Field.es.js +1 -1
  105. package/dist/components/FileDropBackdrop.cjs.js +1 -1
  106. package/dist/components/FileDropBackdrop.es.js +1 -1
  107. package/dist/components/FilterBar.cjs.js +3 -3
  108. package/dist/components/FilterBar.es.js +4 -4
  109. package/dist/components/FormFieldBlocks.cjs.js +2 -2
  110. package/dist/components/FormFieldBlocks.es.js +2 -2
  111. package/dist/components/Header.cjs.js +1 -1
  112. package/dist/components/Header.es.js +1 -1
  113. package/dist/components/HorizontalBars.cjs.js +1 -1
  114. package/dist/components/HorizontalBars.es.js +1 -1
  115. package/dist/components/InputGroup.cjs.js +3 -1
  116. package/dist/components/InputGroup.cjs.js.map +1 -1
  117. package/dist/components/InputGroup.es.js +1 -1
  118. package/dist/components/InputNumber.cjs.js +95 -0
  119. package/dist/components/InputNumber.cjs.js.map +1 -0
  120. package/dist/components/InputNumber.d.ts +2 -0
  121. package/dist/components/InputNumber.es.js +68 -0
  122. package/dist/components/InputNumber.es.js.map +1 -0
  123. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  124. package/dist/components/JSONSchemaForm.es.js +2 -2
  125. package/dist/components/KeyValueList.cjs.js +1 -1
  126. package/dist/components/KeyValueList.es.js +1 -1
  127. package/dist/components/ListSearch.cjs.js +1 -1
  128. package/dist/components/ListSearch.es.js +1 -1
  129. package/dist/components/LogsDataList.cjs.js +3 -1
  130. package/dist/components/LogsDataList.cjs.js.map +1 -1
  131. package/dist/components/LogsDataList.es.js +3 -1
  132. package/dist/components/LogsDataList.es.js.map +1 -1
  133. package/dist/components/MainHeader.cjs.js +1 -1
  134. package/dist/components/MainHeader.es.js +1 -1
  135. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  136. package/dist/components/MarkdownRenderer.es.js +1 -1
  137. package/dist/components/Message.cjs.js +1 -1
  138. package/dist/components/Message.es.js +2 -2
  139. package/dist/components/MetricsCard.cjs.js +1 -1
  140. package/dist/components/MetricsCard.es.js +1 -1
  141. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  142. package/dist/components/MetricsKpiCard.es.js +1 -1
  143. package/dist/components/MetricsLineChart.cjs.js +2 -2
  144. package/dist/components/MetricsLineChart.es.js +2 -2
  145. package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
  146. package/dist/components/MetricsStackedBarChart.es.js +1 -1
  147. package/dist/components/Notice.cjs.js +1 -1
  148. package/dist/components/Notice.es.js +1 -1
  149. package/dist/components/PageHeader.cjs.js +1 -1
  150. package/dist/components/PageHeader.es.js +1 -1
  151. package/dist/components/PageLayout.cjs.js +1 -1
  152. package/dist/components/PageLayout.es.js +1 -1
  153. package/dist/components/ProductBadge.cjs.js +1 -1
  154. package/dist/components/ProductBadge.es.js +1 -1
  155. package/dist/components/PropertyFilter.cjs.js +3 -3
  156. package/dist/components/PropertyFilter.es.js +3 -3
  157. package/dist/components/RelativeTimestamp.cjs.js +1 -1
  158. package/dist/components/RelativeTimestamp.es.js +1 -1
  159. package/dist/components/RuleBuilder.cjs.js +2 -2
  160. package/dist/components/RuleBuilder.es.js +2 -2
  161. package/dist/components/ScatterPlotChart.cjs.js +1 -1
  162. package/dist/components/ScatterPlotChart.es.js +1 -1
  163. package/dist/components/SearchInput.cjs.js +1 -1
  164. package/dist/components/SearchInput.es.js +1 -1
  165. package/dist/components/Section.cjs.js +1 -1
  166. package/dist/components/Section.es.js +1 -1
  167. package/dist/components/SectionCard.cjs.js +1 -1
  168. package/dist/components/SectionCard.es.js +1 -1
  169. package/dist/components/Select.cjs.js +1 -1
  170. package/dist/components/Select.es.js +1 -1
  171. package/dist/components/SideDialog.cjs.js +1 -1
  172. package/dist/components/SideDialog.es.js +1 -1
  173. package/dist/components/StatusIndicators.cjs.js +1 -1
  174. package/dist/components/StatusIndicators.es.js +1 -1
  175. package/dist/components/Steps.cjs.js +1 -1
  176. package/dist/components/Steps.es.js +1 -1
  177. package/dist/components/Table.cjs.js +1 -1
  178. package/dist/components/Table.es.js +1 -1
  179. package/dist/components/Tabs.cjs.js +5 -4
  180. package/dist/components/Tabs.cjs.js.map +1 -1
  181. package/dist/components/Tabs.es.js +4 -3
  182. package/dist/components/Tabs.es.js.map +1 -1
  183. package/dist/components/Text.cjs.js +1 -1
  184. package/dist/components/Text.es.js +1 -1
  185. package/dist/components/ThinkingLevel.cjs.js +230 -0
  186. package/dist/components/ThinkingLevel.cjs.js.map +1 -0
  187. package/dist/components/ThinkingLevel.d.ts +2 -0
  188. package/dist/components/ThinkingLevel.es.js +223 -0
  189. package/dist/components/ThinkingLevel.es.js.map +1 -0
  190. package/dist/components/ThreadList.cjs.js +1 -1
  191. package/dist/components/ThreadList.es.js +1 -1
  192. package/dist/components/ThreadRail.cjs.js +1 -1
  193. package/dist/components/ThreadRail.es.js +1 -1
  194. package/dist/components/TokenBudget.cjs.js +1 -1
  195. package/dist/components/TokenBudget.es.js +1 -1
  196. package/dist/components/Tree.cjs.js +2 -487
  197. package/dist/components/Tree.cjs.js.map +1 -1
  198. package/dist/components/Tree.es.js +1 -471
  199. package/dist/components/Tree.es.js.map +1 -1
  200. package/dist/components/Truncate.cjs.js +1 -1
  201. package/dist/components/Truncate.es.js +1 -1
  202. package/dist/components/Txt.cjs.js +1 -1
  203. package/dist/components/Txt.es.js +1 -1
  204. package/dist/components/Workflow.cjs.js +4 -4
  205. package/dist/components/Workflow.es.js +4 -4
  206. package/dist/components/ai/activity.cjs.js +4 -4
  207. package/dist/components/ai/activity.es.js +4 -4
  208. package/dist/components/ai/ask-user.cjs.js +1 -1
  209. package/dist/components/ai/ask-user.es.js +1 -1
  210. package/dist/components/ai/plan.cjs.js +1 -1
  211. package/dist/components/ai/plan.es.js +1 -1
  212. package/dist/components/ai/task-list.cjs.js +1 -1
  213. package/dist/components/ai/task-list.es.js +1 -1
  214. package/dist/components/ai/tool-call.cjs.js +2 -2
  215. package/dist/components/ai/tool-call.es.js +2 -2
  216. package/dist/components/ai/transcript-divider.cjs.js +3 -11
  217. package/dist/components/ai/transcript-divider.cjs.js.map +1 -1
  218. package/dist/components/ai/transcript-divider.es.js +1 -13
  219. package/dist/components/ai/transcript-divider.es.js.map +1 -1
  220. package/dist/{data-code-section-Ds79F6W-.cjs → data-code-section-DIj4CMvD.cjs} +2 -2
  221. package/dist/{data-code-section-Ds79F6W-.cjs.map → data-code-section-DIj4CMvD.cjs.map} +1 -1
  222. package/dist/{data-code-section-DFxE6ckH.js → data-code-section-K-2Bj1zO.js} +2 -2
  223. package/dist/{data-code-section-DFxE6ckH.js.map → data-code-section-K-2Bj1zO.js.map} +1 -1
  224. package/dist/{data-list-CEIYm7FY.js → data-list-DdsyfT8B.js} +3 -3
  225. package/dist/{data-list-CEIYm7FY.js.map → data-list-DdsyfT8B.js.map} +1 -1
  226. package/dist/{data-list-Bqf-fhMx.cjs → data-list-DoKc-wSe.cjs} +3 -3
  227. package/dist/{data-list-Bqf-fhMx.cjs.map → data-list-DoKc-wSe.cjs.map} +1 -1
  228. package/dist/{data-list-spacer-BH2DjRdk.js → data-list-spacer-7QVTcgIS.js} +2 -2
  229. package/dist/{data-list-spacer-BH2DjRdk.js.map → data-list-spacer-7QVTcgIS.js.map} +1 -1
  230. package/dist/{data-list-spacer-DFvaAEqo.cjs → data-list-spacer-CD4hD-As.cjs} +2 -2
  231. package/dist/{data-list-spacer-DFvaAEqo.cjs.map → data-list-spacer-CD4hD-As.cjs.map} +1 -1
  232. package/dist/{data-panel-CbomKGJt.js → data-panel-CKvpHRUM.js} +4 -4
  233. package/dist/data-panel-CKvpHRUM.js.map +1 -0
  234. package/dist/{data-panel-o-QLWuFV.cjs → data-panel-YCvno_Di.cjs} +4 -4
  235. package/dist/data-panel-YCvno_Di.cjs.map +1 -0
  236. package/dist/{date-time-range-picker-Bb-CGVEL.cjs → date-time-range-picker-BbX8F_LY.cjs} +4 -4
  237. package/dist/{date-time-range-picker-Bb-CGVEL.cjs.map → date-time-range-picker-BbX8F_LY.cjs.map} +1 -1
  238. package/dist/{date-time-range-picker-B1zYIQTC.js → date-time-range-picker-DzPLKJol.js} +4 -4
  239. package/dist/{date-time-range-picker-B1zYIQTC.js.map → date-time-range-picker-DzPLKJol.js.map} +1 -1
  240. package/dist/domains/auth/components/permission-denied.cjs.js +1 -1
  241. package/dist/domains/auth/components/permission-denied.es.js +1 -1
  242. package/dist/domains/auth/components/session-expired.cjs.js +1 -1
  243. package/dist/domains/auth/components/session-expired.es.js +1 -1
  244. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  245. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  246. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
  247. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
  248. package/dist/domains/chat/components/section-label.cjs.js +1 -1
  249. package/dist/domains/chat/components/section-label.es.js +1 -1
  250. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +1 -1
  251. package/dist/domains/chat/messages/assistant-message-actions.es.js +1 -1
  252. package/dist/domains/chat/messages/dataset-save-action.cjs.js +2 -2
  253. package/dist/domains/chat/messages/dataset-save-action.es.js +2 -2
  254. package/dist/domains/chat/messages/message-row.cjs.js +4 -4
  255. package/dist/domains/chat/messages/message-row.es.js +4 -4
  256. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  257. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  258. package/dist/domains/chat/messages/renderers/message-text.cjs.js +3 -3
  259. package/dist/domains/chat/messages/renderers/message-text.es.js +3 -3
  260. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  261. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  262. package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
  263. package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
  264. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  265. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  266. package/dist/domains/chat/messages/skill-message.cjs.js +3 -3
  267. package/dist/domains/chat/messages/skill-message.es.js +3 -3
  268. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  269. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  270. package/dist/domains/chat/messages/tripwire-notice.cjs.js +2 -2
  271. package/dist/domains/chat/messages/tripwire-notice.es.js +2 -2
  272. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  273. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  274. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +1 -1
  275. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
  276. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +1 -1
  277. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +1 -1
  278. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +3 -3
  279. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +3 -3
  280. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
  281. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
  282. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +3 -3
  283. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +3 -3
  284. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +2 -2
  285. package/dist/domains/chat/tools/badges/observation-renderer.es.js +2 -2
  286. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
  287. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
  288. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +2 -2
  289. package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
  290. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -1
  291. package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
  292. package/dist/domains/chat/tools/badges/workspace-link.cjs.js +1 -1
  293. package/dist/domains/chat/tools/badges/workspace-link.es.js +1 -1
  294. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +2 -2
  295. package/dist/domains/chat/tools/submit-plan-tool.es.js +2 -2
  296. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +4 -4
  297. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -4
  298. package/dist/domains/logs/components/log-data-panel.cjs.js +2 -2
  299. package/dist/domains/logs/components/log-data-panel.es.js +2 -2
  300. package/dist/domains/logs/components/logs-error-content.cjs.js +1 -1
  301. package/dist/domains/logs/components/logs-error-content.es.js +1 -1
  302. package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
  303. package/dist/domains/logs/components/logs-list-view.es.js +1 -1
  304. package/dist/domains/logs/components/no-logs-info.cjs.js +1 -1
  305. package/dist/domains/logs/components/no-logs-info.es.js +1 -1
  306. package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
  307. package/dist/domains/memory/components/flame-graph.es.js +1 -1
  308. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  309. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  310. package/dist/domains/memory/components/observation-detail-view.cjs.js +3 -3
  311. package/dist/domains/memory/components/observation-detail-view.es.js +3 -3
  312. package/dist/domains/metrics/components/bar-list.cjs.js +1 -1
  313. package/dist/domains/metrics/components/bar-list.es.js +1 -1
  314. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  315. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  316. package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
  317. package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
  318. package/dist/domains/metrics/components/latency-card-view.cjs.js +8 -7
  319. package/dist/domains/metrics/components/latency-card-view.cjs.js.map +1 -1
  320. package/dist/domains/metrics/components/latency-card-view.es.js +7 -6
  321. package/dist/domains/metrics/components/latency-card-view.es.js.map +1 -1
  322. package/dist/domains/metrics/components/memory-card-view.cjs.js +7 -6
  323. package/dist/domains/metrics/components/memory-card-view.cjs.js.map +1 -1
  324. package/dist/domains/metrics/components/memory-card-view.es.js +6 -5
  325. package/dist/domains/metrics/components/memory-card-view.es.js.map +1 -1
  326. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +2 -2
  327. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +2 -2
  328. package/dist/domains/metrics/components/scores-card-view.cjs.js +8 -7
  329. package/dist/domains/metrics/components/scores-card-view.cjs.js.map +1 -1
  330. package/dist/domains/metrics/components/scores-card-view.es.js +7 -6
  331. package/dist/domains/metrics/components/scores-card-view.es.js.map +1 -1
  332. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +7 -6
  333. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js.map +1 -1
  334. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +6 -5
  335. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js.map +1 -1
  336. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +8 -7
  337. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js.map +1 -1
  338. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +7 -6
  339. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js.map +1 -1
  340. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +7 -6
  341. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js.map +1 -1
  342. package/dist/domains/metrics/components/traces-volume-card-view.es.js +6 -5
  343. package/dist/domains/metrics/components/traces-volume-card-view.es.js.map +1 -1
  344. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +4 -4
  345. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -4
  346. package/dist/domains/observability/components/trace-as-item-dialog.cjs.js +1 -1
  347. package/dist/domains/observability/components/trace-as-item-dialog.es.js +1 -1
  348. package/dist/domains/request-context/components/request-context-label.cjs.js +1 -1
  349. package/dist/domains/request-context/components/request-context-label.es.js +1 -1
  350. package/dist/domains/review/components/review-status-badge.cjs.js +1 -1
  351. package/dist/domains/review/components/review-status-badge.es.js +1 -1
  352. package/dist/domains/scores/components/score-as-item-dialog.cjs.js +1 -1
  353. package/dist/domains/scores/components/score-as-item-dialog.es.js +1 -1
  354. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  355. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  356. package/dist/domains/scores/components/span-scoring.cjs.js +3 -3
  357. package/dist/domains/scores/components/span-scoring.es.js +3 -3
  358. package/dist/domains/scores/components/trace-scores-tab.cjs.js +5 -4
  359. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  360. package/dist/domains/scores/components/trace-scores-tab.es.js +5 -4
  361. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  362. package/dist/domains/traces/components/feedback-thread.cjs.js +4 -4
  363. package/dist/domains/traces/components/feedback-thread.es.js +4 -4
  364. package/dist/domains/traces/components/no-traces-info.cjs.js +1 -1
  365. package/dist/domains/traces/components/no-traces-info.es.js +1 -1
  366. package/dist/domains/traces/components/span-data-panel-view.cjs.js +20 -15
  367. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  368. package/dist/domains/traces/components/span-data-panel-view.es.js +19 -14
  369. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  370. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +2 -2
  371. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +2 -2
  372. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  373. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  374. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -3
  375. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -3
  376. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +3 -3
  377. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +3 -3
  378. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  379. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  380. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  381. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  382. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +3 -2
  383. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js.map +1 -1
  384. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +2 -1
  385. package/dist/domains/traces/components/span-payload/span-payload-section.es.js.map +1 -1
  386. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  387. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  388. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +3 -3
  389. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +3 -3
  390. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  391. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  392. package/dist/domains/traces/components/span-timeline-row.cjs.js +1 -1
  393. package/dist/domains/traces/components/span-timeline-row.es.js +1 -1
  394. package/dist/domains/traces/components/span-token-usage.cjs.js +1 -1
  395. package/dist/domains/traces/components/span-token-usage.es.js +1 -1
  396. package/dist/domains/traces/components/span-type-legend.cjs.js +1 -1
  397. package/dist/domains/traces/components/span-type-legend.es.js +1 -1
  398. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +5 -3
  399. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js.map +1 -1
  400. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +5 -3
  401. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js.map +1 -1
  402. package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js +3 -2
  403. package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js.map +1 -1
  404. package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js +3 -2
  405. package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js.map +1 -1
  406. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +8 -16
  407. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js.map +1 -1
  408. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +8 -15
  409. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js.map +1 -1
  410. package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js +2 -15
  411. package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js.map +1 -1
  412. package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js +2 -15
  413. package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js.map +1 -1
  414. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js +26 -4
  415. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js.map +1 -1
  416. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +26 -6
  417. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js.map +1 -1
  418. package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.cjs.js +29 -24
  419. package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.cjs.js.map +1 -1
  420. package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.es.js +30 -25
  421. package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.es.js.map +1 -1
  422. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +45 -45
  423. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js.map +1 -1
  424. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +47 -47
  425. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js.map +1 -1
  426. package/dist/domains/traces/components/thread-trace.cjs.js +2 -1
  427. package/dist/domains/traces/components/thread-trace.cjs.js.map +1 -1
  428. package/dist/domains/traces/components/thread-trace.es.js +4 -3
  429. package/dist/domains/traces/components/thread-trace.es.js.map +1 -1
  430. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +43 -24
  431. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  432. package/dist/domains/traces/components/thread-view-by-trace.es.js +46 -27
  433. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  434. package/dist/domains/traces/components/thread-view-skeleton.cjs.js +28 -13
  435. package/dist/domains/traces/components/thread-view-skeleton.cjs.js.map +1 -1
  436. package/dist/domains/traces/components/thread-view-skeleton.es.js +28 -13
  437. package/dist/domains/traces/components/thread-view-skeleton.es.js.map +1 -1
  438. package/dist/domains/traces/components/timeline-name-col.cjs.js +5 -5
  439. package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
  440. package/dist/domains/traces/components/timeline-name-col.es.js +5 -5
  441. package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
  442. package/dist/domains/traces/components/timeline-timing-col.cjs.js +1 -1
  443. package/dist/domains/traces/components/timeline-timing-col.es.js +1 -1
  444. package/dist/domains/traces/components/trace-columns-menu.cjs.js +3 -3
  445. package/dist/domains/traces/components/trace-columns-menu.es.js +3 -3
  446. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +72 -50
  447. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  448. package/dist/domains/traces/components/trace-data-panel-view.es.js +72 -50
  449. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  450. package/dist/domains/traces/components/trace-data-panel.cjs.js +1 -1
  451. package/dist/domains/traces/components/trace-data-panel.es.js +1 -1
  452. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  453. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  454. package/dist/domains/traces/components/trace-messages-panel.cjs.js +2 -16
  455. package/dist/domains/traces/components/trace-messages-panel.cjs.js.map +1 -1
  456. package/dist/domains/traces/components/trace-messages-panel.es.js +3 -17
  457. package/dist/domains/traces/components/trace-messages-panel.es.js.map +1 -1
  458. package/dist/domains/traces/components/trace-messages-skeleton.cjs.js +18 -15
  459. package/dist/domains/traces/components/trace-messages-skeleton.cjs.js.map +1 -1
  460. package/dist/domains/traces/components/trace-messages-skeleton.es.js +18 -15
  461. package/dist/domains/traces/components/trace-messages-skeleton.es.js.map +1 -1
  462. package/dist/domains/traces/components/trace-span-panel.cjs.js +77 -66
  463. package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
  464. package/dist/domains/traces/components/trace-span-panel.es.js +78 -67
  465. package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
  466. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js +11 -13
  467. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js.map +1 -1
  468. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js +11 -13
  469. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js.map +1 -1
  470. package/dist/domains/traces/components/trace-span-tree.cjs.js +1 -1
  471. package/dist/domains/traces/components/trace-span-tree.es.js +1 -1
  472. package/dist/domains/traces/components/trace-summary-description.cjs.js +2 -2
  473. package/dist/domains/traces/components/trace-summary-description.es.js +2 -2
  474. package/dist/domains/traces/components/trace-thread-item-view.cjs.js +2 -2
  475. package/dist/domains/traces/components/trace-thread-item-view.cjs.js.map +1 -1
  476. package/dist/domains/traces/components/trace-thread-item-view.es.js +2 -2
  477. package/dist/domains/traces/components/trace-thread-item-view.es.js.map +1 -1
  478. package/dist/domains/traces/components/trace-thread-panel.cjs.js +32 -21
  479. package/dist/domains/traces/components/trace-thread-panel.cjs.js.map +1 -1
  480. package/dist/domains/traces/components/trace-thread-panel.es.js +32 -21
  481. package/dist/domains/traces/components/trace-thread-panel.es.js.map +1 -1
  482. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  483. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  484. package/dist/domains/traces/components/traces-error-content.cjs.js +1 -1
  485. package/dist/domains/traces/components/traces-error-content.es.js +1 -1
  486. package/dist/domains/traces/components/traces-list-view.cjs.js +3 -3
  487. package/dist/domains/traces/components/traces-list-view.es.js +3 -3
  488. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -0
  489. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  490. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -0
  491. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  492. package/dist/domains/traces/hooks/use-branch.cjs.js +0 -3
  493. package/dist/domains/traces/hooks/use-branch.cjs.js.map +1 -1
  494. package/dist/domains/traces/hooks/use-branch.es.js +0 -3
  495. package/dist/domains/traces/hooks/use-branch.es.js.map +1 -1
  496. package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js +0 -3
  497. package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js.map +1 -1
  498. package/dist/domains/traces/hooks/use-trace-light-spans.es.js +0 -3
  499. package/dist/domains/traces/hooks/use-trace-light-spans.es.js.map +1 -1
  500. package/dist/domains/traces/hooks/use-trace-or-branch-spans.cjs.js.map +1 -1
  501. package/dist/domains/traces/hooks/use-trace-or-branch-spans.es.js.map +1 -1
  502. package/dist/domains/traces/hooks/use-trace-query.cjs.js +2 -0
  503. package/dist/domains/traces/hooks/use-trace-query.cjs.js.map +1 -1
  504. package/dist/domains/traces/hooks/use-trace-query.es.js +2 -0
  505. package/dist/domains/traces/hooks/use-trace-query.es.js.map +1 -1
  506. package/dist/domains/traces/hooks/use-trace-search.cjs.js +7 -2
  507. package/dist/domains/traces/hooks/use-trace-search.cjs.js.map +1 -1
  508. package/dist/domains/traces/hooks/use-trace-search.es.js +7 -2
  509. package/dist/domains/traces/hooks/use-trace-search.es.js.map +1 -1
  510. package/dist/domains/traces/hooks/use-trace-spans.cjs.js +1 -5
  511. package/dist/domains/traces/hooks/use-trace-spans.cjs.js.map +1 -1
  512. package/dist/domains/traces/hooks/use-trace-spans.es.js +1 -5
  513. package/dist/domains/traces/hooks/use-trace-spans.es.js.map +1 -1
  514. package/dist/domains/traces/utils/to-searchable-spans.cjs.js +0 -5
  515. package/dist/domains/traces/utils/to-searchable-spans.cjs.js.map +1 -1
  516. package/dist/domains/traces/utils/to-searchable-spans.es.js +1 -5
  517. package/dist/domains/traces/utils/to-searchable-spans.es.js.map +1 -1
  518. package/dist/domains/traces/utils.cjs.js +0 -1
  519. package/dist/domains/traces/utils.cjs.js.map +1 -1
  520. package/dist/domains/traces/utils.es.js +1 -1
  521. package/dist/domains/traces.cjs.js +0 -1
  522. package/dist/domains/traces.cjs.js.map +1 -1
  523. package/dist/domains/traces.es.js +1 -1
  524. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  525. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  526. package/dist/domains/workflows/components/workflow-entity-header.cjs.js +2 -2
  527. package/dist/domains/workflows/components/workflow-entity-header.es.js +2 -2
  528. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +3 -3
  529. package/dist/domains/workflows/components/workflow-step-detail.es.js +3 -3
  530. package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +1 -1
  531. package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +1 -1
  532. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +3 -3
  533. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +3 -3
  534. package/dist/domains/workflows/runs/workflow-run-details.cjs.js +1 -1
  535. package/dist/domains/workflows/runs/workflow-run-details.es.js +1 -1
  536. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +2 -2
  537. package/dist/domains/workflows/runs/workflow-run-list.es.js +2 -2
  538. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  539. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  540. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +2 -2
  541. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +2 -2
  542. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  543. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  544. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +2 -2
  545. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +2 -2
  546. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  547. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  548. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +2 -2
  549. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +2 -2
  550. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  551. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  552. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -1
  553. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +1 -1
  554. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  555. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  556. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +1 -1
  557. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +1 -1
  558. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  559. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  560. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  561. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  562. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
  563. package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
  564. package/dist/domains/workflows/workflow/workflow-input-type-toggle.cjs.js +1 -1
  565. package/dist/domains/workflows/workflow/workflow-input-type-toggle.es.js +1 -1
  566. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +4 -4
  567. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +4 -4
  568. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +6 -5
  569. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js.map +1 -1
  570. package/dist/domains/workflows/workflow/workflow-run-data.es.js +5 -4
  571. package/dist/domains/workflows/workflow/workflow-run-data.es.js.map +1 -1
  572. package/dist/domains/workflows/workflow/workflow-run-error.cjs.js +1 -1
  573. package/dist/domains/workflows/workflow/workflow-run-error.es.js +1 -1
  574. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +3 -3
  575. package/dist/domains/workflows/workflow/workflow-run-header.es.js +3 -3
  576. package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
  577. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  578. package/dist/domains/workflows/workflow/workflow-steps-status.cjs.js +1 -1
  579. package/dist/domains/workflows/workflow/workflow-steps-status.es.js +1 -1
  580. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +2 -2
  581. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +2 -2
  582. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +3 -3
  583. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +3 -3
  584. package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +1 -1
  585. package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +1 -1
  586. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +1 -1
  587. package/dist/domains/workflows/workflow/workflow-timeline.es.js +1 -1
  588. package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +2 -2
  589. package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +2 -2
  590. package/dist/domains/workflows/workflow/workflow-trigger.cjs.js +1 -1
  591. package/dist/domains/workflows/workflow/workflow-trigger.es.js +1 -1
  592. package/dist/domains/workspace/components/frontmatter.cjs.js +13 -0
  593. package/dist/domains/workspace/components/frontmatter.cjs.js.map +1 -0
  594. package/dist/domains/workspace/components/frontmatter.d.ts +2 -0
  595. package/dist/domains/workspace/components/frontmatter.es.js +9 -0
  596. package/dist/domains/workspace/components/frontmatter.es.js.map +1 -0
  597. package/dist/domains/workspace/components/mount-icon.cjs.js +42 -0
  598. package/dist/domains/workspace/components/mount-icon.cjs.js.map +1 -0
  599. package/dist/domains/workspace/components/mount-icon.d.ts +2 -0
  600. package/dist/domains/workspace/components/mount-icon.es.js +38 -0
  601. package/dist/domains/workspace/components/mount-icon.es.js.map +1 -0
  602. package/dist/domains/workspace/components/use-workspace-context.cjs.js +16 -0
  603. package/dist/domains/workspace/components/use-workspace-context.cjs.js.map +1 -0
  604. package/dist/domains/workspace/components/use-workspace-context.d.ts +2 -0
  605. package/dist/domains/workspace/components/use-workspace-context.es.js +11 -0
  606. package/dist/domains/workspace/components/use-workspace-context.es.js.map +1 -0
  607. package/dist/domains/workspace/components/workspace-active-file.cjs.js +72 -0
  608. package/dist/domains/workspace/components/workspace-active-file.cjs.js.map +1 -0
  609. package/dist/domains/workspace/components/workspace-active-file.d.ts +2 -0
  610. package/dist/domains/workspace/components/workspace-active-file.es.js +67 -0
  611. package/dist/domains/workspace/components/workspace-active-file.es.js.map +1 -0
  612. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +282 -0
  613. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js.map +1 -0
  614. package/dist/domains/workspace/components/workspace-add-skill-dialog.d.ts +2 -0
  615. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +278 -0
  616. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js.map +1 -0
  617. package/dist/domains/workspace/components/workspace-add-skill.cjs.js +48 -0
  618. package/dist/domains/workspace/components/workspace-add-skill.cjs.js.map +1 -0
  619. package/dist/domains/workspace/components/workspace-add-skill.d.ts +2 -0
  620. package/dist/domains/workspace/components/workspace-add-skill.es.js +44 -0
  621. package/dist/domains/workspace/components/workspace-add-skill.es.js.map +1 -0
  622. package/dist/domains/workspace/components/workspace-context.cjs.js +88 -0
  623. package/dist/domains/workspace/components/workspace-context.cjs.js.map +1 -0
  624. package/dist/domains/workspace/components/workspace-context.d.ts +2 -0
  625. package/dist/domains/workspace/components/workspace-context.es.js +84 -0
  626. package/dist/domains/workspace/components/workspace-context.es.js.map +1 -0
  627. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +68 -0
  628. package/dist/domains/workspace/components/workspace-create-directory.cjs.js.map +1 -0
  629. package/dist/domains/workspace/components/workspace-create-directory.d.ts +2 -0
  630. package/dist/domains/workspace/components/workspace-create-directory.es.js +64 -0
  631. package/dist/domains/workspace/components/workspace-create-directory.es.js.map +1 -0
  632. package/dist/domains/workspace/components/workspace-error.cjs.js +26 -0
  633. package/dist/domains/workspace/components/workspace-error.cjs.js.map +1 -0
  634. package/dist/domains/workspace/components/workspace-error.d.ts +2 -0
  635. package/dist/domains/workspace/components/workspace-error.es.js +22 -0
  636. package/dist/domains/workspace/components/workspace-error.es.js.map +1 -0
  637. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +27 -0
  638. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js.map +1 -0
  639. package/dist/domains/workspace/components/workspace-markdown-preview.d.ts +2 -0
  640. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +23 -0
  641. package/dist/domains/workspace/components/workspace-markdown-preview.es.js.map +1 -0
  642. package/dist/domains/workspace/components/workspace-parts.cjs.js +94 -0
  643. package/dist/domains/workspace/components/workspace-parts.cjs.js.map +1 -0
  644. package/dist/domains/workspace/components/workspace-parts.d.ts +2 -0
  645. package/dist/domains/workspace/components/workspace-parts.es.js +84 -0
  646. package/dist/domains/workspace/components/workspace-parts.es.js.map +1 -0
  647. package/dist/domains/workspace/components/workspace-search.cjs.js +117 -0
  648. package/dist/domains/workspace/components/workspace-search.cjs.js.map +1 -0
  649. package/dist/domains/workspace/components/workspace-search.d.ts +2 -0
  650. package/dist/domains/workspace/components/workspace-search.es.js +111 -0
  651. package/dist/domains/workspace/components/workspace-search.es.js.map +1 -0
  652. package/dist/domains/workspace/components/workspace-tree-view.cjs.js +34 -0
  653. package/dist/domains/workspace/components/workspace-tree-view.cjs.js.map +1 -0
  654. package/dist/domains/workspace/components/workspace-tree-view.d.ts +2 -0
  655. package/dist/domains/workspace/components/workspace-tree-view.es.js +30 -0
  656. package/dist/domains/workspace/components/workspace-tree-view.es.js.map +1 -0
  657. package/dist/domains/workspace/components/workspace-tree.cjs.js +245 -0
  658. package/dist/domains/workspace/components/workspace-tree.cjs.js.map +1 -0
  659. package/dist/domains/workspace/components/workspace-tree.d.ts +2 -0
  660. package/dist/domains/workspace/components/workspace-tree.es.js +241 -0
  661. package/dist/domains/workspace/components/workspace-tree.es.js.map +1 -0
  662. package/dist/domains/workspace/components/workspace.cjs.js +25 -0
  663. package/dist/domains/workspace/components/workspace.cjs.js.map +1 -0
  664. package/dist/domains/workspace/components/workspace.d.ts +2 -0
  665. package/dist/domains/workspace/components/workspace.es.js +21 -0
  666. package/dist/domains/workspace/components/workspace.es.js.map +1 -0
  667. package/dist/domains/workspace/file-type.cjs.js +25 -0
  668. package/dist/domains/workspace/file-type.cjs.js.map +1 -0
  669. package/dist/domains/workspace/file-type.d.ts +2 -0
  670. package/dist/domains/workspace/file-type.es.js +17 -0
  671. package/dist/domains/workspace/file-type.es.js.map +1 -0
  672. package/dist/domains/workspace/hooks/use-skills-sh.cjs.js +72 -0
  673. package/dist/domains/workspace/hooks/use-skills-sh.cjs.js.map +1 -0
  674. package/dist/domains/workspace/hooks/use-skills-sh.d.ts +2 -0
  675. package/dist/domains/workspace/hooks/use-skills-sh.es.js +65 -0
  676. package/dist/domains/workspace/hooks/use-skills-sh.es.js.map +1 -0
  677. package/dist/domains/workspace/hooks/use-workspace-directory.cjs.js +21 -0
  678. package/dist/domains/workspace/hooks/use-workspace-directory.cjs.js.map +1 -0
  679. package/dist/domains/workspace/hooks/use-workspace-directory.d.ts +2 -0
  680. package/dist/domains/workspace/hooks/use-workspace-directory.es.js +16 -0
  681. package/dist/domains/workspace/hooks/use-workspace-directory.es.js.map +1 -0
  682. package/dist/domains/workspace/hooks/use-workspace-file-content.cjs.js +22 -0
  683. package/dist/domains/workspace/hooks/use-workspace-file-content.cjs.js.map +1 -0
  684. package/dist/domains/workspace/hooks/use-workspace-file-content.d.ts +2 -0
  685. package/dist/domains/workspace/hooks/use-workspace-file-content.es.js +18 -0
  686. package/dist/domains/workspace/hooks/use-workspace-file-content.es.js.map +1 -0
  687. package/dist/domains/workspace/hooks/use-workspace-search.cjs.js +53 -0
  688. package/dist/domains/workspace/hooks/use-workspace-search.cjs.js.map +1 -0
  689. package/dist/domains/workspace/hooks/use-workspace-search.d.ts +2 -0
  690. package/dist/domains/workspace/hooks/use-workspace-search.es.js +49 -0
  691. package/dist/domains/workspace/hooks/use-workspace-search.es.js.map +1 -0
  692. package/dist/domains/workspace/path.cjs.js +17 -0
  693. package/dist/domains/workspace/path.cjs.js.map +1 -0
  694. package/dist/domains/workspace/path.d.ts +2 -0
  695. package/dist/domains/workspace/path.es.js +10 -0
  696. package/dist/domains/workspace/path.es.js.map +1 -0
  697. package/dist/domains/workspace.cjs.js +24 -0
  698. package/dist/domains/workspace.cjs.js.map +1 -0
  699. package/dist/domains/workspace.d.ts +2 -0
  700. package/dist/domains/workspace.es.js +9 -0
  701. package/dist/domains/workspace.es.js.map +1 -0
  702. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +2 -2
  703. package/dist/ee/signals/components/entity-index-compact-grid.es.js +2 -2
  704. package/dist/ee/signals/components/entity-index-list.cjs.js +4 -2
  705. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  706. package/dist/ee/signals/components/entity-index-list.es.js +4 -2
  707. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  708. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  709. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  710. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +1 -1
  711. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +1 -1
  712. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +4 -3
  713. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  714. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +4 -3
  715. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  716. package/dist/ee/signals/examples-pager.cjs.js +1 -1
  717. package/dist/ee/signals/examples-pager.es.js +1 -1
  718. package/dist/ee/signals/flow-card.cjs.js +1 -1
  719. package/dist/ee/signals/flow-card.es.js +1 -1
  720. package/dist/ee/signals/lifeline-row.cjs.js +1 -1
  721. package/dist/ee/signals/lifeline-row.es.js +1 -1
  722. package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
  723. package/dist/ee/signals/noise-detail-panel.es.js +1 -1
  724. package/dist/ee/signals/sankey-signals.cjs.js +4 -3
  725. package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
  726. package/dist/ee/signals/sankey-signals.es.js +3 -2
  727. package/dist/ee/signals/sankey-signals.es.js.map +1 -1
  728. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +3 -3
  729. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +3 -3
  730. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +3 -3
  731. package/dist/ee/signals/settings/trace-signal-settings.es.js +3 -3
  732. package/dist/ee/signals/signal-delta-column.cjs.js +1 -1
  733. package/dist/ee/signals/signal-delta-column.es.js +1 -1
  734. package/dist/ee/signals/signal-lifelines.cjs.js +1 -1
  735. package/dist/ee/signals/signal-lifelines.es.js +1 -1
  736. package/dist/ee/signals/signals-error-state.cjs.js +1 -1
  737. package/dist/ee/signals/signals-error-state.es.js +1 -1
  738. package/dist/ee/signals/snapshot-timeline.cjs.js +1 -1
  739. package/dist/ee/signals/snapshot-timeline.es.js +1 -1
  740. package/dist/ee/signals/theme-compare.cjs.js +1 -1
  741. package/dist/ee/signals/theme-compare.es.js +1 -1
  742. package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
  743. package/dist/ee/signals/theme-detail-panel.es.js +1 -1
  744. package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
  745. package/dist/ee/signals/theme-filter-banner.es.js +1 -1
  746. package/dist/ee/signals/theme-lifelines.cjs.js +1 -1
  747. package/dist/ee/signals/theme-lifelines.es.js +1 -1
  748. package/dist/ee/signals/trace-insight-view.cjs.js +1 -1
  749. package/dist/ee/signals/trace-insight-view.es.js +1 -1
  750. package/dist/ee/signals/trace-intelligence-explainer.cjs.js +1 -1
  751. package/dist/ee/signals/trace-intelligence-explainer.es.js +1 -1
  752. package/dist/ee/signals/view-mode-tab.cjs.js +2 -2
  753. package/dist/ee/signals/view-mode-tab.es.js +2 -2
  754. package/dist/ee/topics/components/topic-trace-details-panel.cjs.js +2 -1
  755. package/dist/ee/topics/components/topic-trace-details-panel.cjs.js.map +1 -1
  756. package/dist/ee/topics/components/topic-trace-details-panel.es.js +2 -1
  757. package/dist/ee/topics/components/topic-trace-details-panel.es.js.map +1 -1
  758. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
  759. package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
  760. package/dist/{entity-header-DEjkHoqj.cjs → entity-header-By57lpH8.cjs} +2 -2
  761. package/dist/{entity-header-DEjkHoqj.cjs.map → entity-header-By57lpH8.cjs.map} +1 -1
  762. package/dist/{entity-header-9qzr-3xQ.js → entity-header-DMjzE4Za.js} +2 -2
  763. package/dist/{entity-header-9qzr-3xQ.js.map → entity-header-DMjzE4Za.js.map} +1 -1
  764. package/dist/{field-BtvEQ68O.js → field-BiMIiq2Y.js} +3 -3
  765. package/dist/field-BiMIiq2Y.js.map +1 -0
  766. package/dist/{field-ip9xiOVa.cjs → field-BkeKcz_6.cjs} +3 -3
  767. package/dist/field-BkeKcz_6.cjs.map +1 -0
  768. package/dist/{field-error-id-4DYu4KZ2.cjs → field-error-id-4xiCVBJ_.cjs} +5 -5
  769. package/dist/field-error-id-4xiCVBJ_.cjs.map +1 -0
  770. package/dist/{field-error-id-BSQLcfHo.js → field-error-id-CSvLKtJE.js} +5 -5
  771. package/dist/field-error-id-CSvLKtJE.js.map +1 -0
  772. package/dist/{filter-bar-chip-Dmboyu1t.js → filter-bar-chip-CRejLco-.js} +2 -2
  773. package/dist/{filter-bar-chip-Dmboyu1t.js.map → filter-bar-chip-CRejLco-.js.map} +1 -1
  774. package/dist/{filter-bar-chip-BsWm7SQr.cjs → filter-bar-chip-Cr7kUN9G.cjs} +2 -2
  775. package/dist/{filter-bar-chip-BsWm7SQr.cjs.map → filter-bar-chip-Cr7kUN9G.cjs.map} +1 -1
  776. package/dist/hooks/use-fluid-hover.cjs.js +11 -0
  777. package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
  778. package/dist/hooks/use-fluid-hover.es.js +11 -0
  779. package/dist/hooks/use-fluid-hover.es.js.map +1 -1
  780. package/dist/{horizontal-bars-BSRESJsp.js → horizontal-bars-BL-GHeFh.js} +2 -2
  781. package/dist/{horizontal-bars-BSRESJsp.js.map → horizontal-bars-BL-GHeFh.js.map} +1 -1
  782. package/dist/{horizontal-bars-DRD7JkHL.cjs → horizontal-bars-D-rFCRbH.cjs} +2 -2
  783. package/dist/{horizontal-bars-DRD7JkHL.cjs.map → horizontal-bars-D-rFCRbH.cjs.map} +1 -1
  784. package/dist/icons/FileIcon.cjs.js +18 -0
  785. package/dist/icons/FileIcon.cjs.js.map +1 -0
  786. package/dist/icons/FileIcon.d.ts +2 -0
  787. package/dist/icons/FileIcon.es.js +14 -0
  788. package/dist/icons/FileIcon.es.js.map +1 -0
  789. package/dist/icons/SearchIcon.cjs.js +18 -0
  790. package/dist/icons/SearchIcon.cjs.js.map +1 -0
  791. package/dist/icons/SearchIcon.d.ts +2 -0
  792. package/dist/icons/SearchIcon.es.js +14 -0
  793. package/dist/icons/SearchIcon.es.js.map +1 -0
  794. package/dist/icons/TrashIcon.cjs.js +18 -0
  795. package/dist/icons/TrashIcon.cjs.js.map +1 -0
  796. package/dist/icons/TrashIcon.d.ts +2 -0
  797. package/dist/icons/TrashIcon.es.js +14 -0
  798. package/dist/icons/TrashIcon.es.js.map +1 -0
  799. package/dist/{input-group-wzirc-1k.js → input-group-D1XvzgI2.js} +10 -7
  800. package/dist/input-group-D1XvzgI2.js.map +1 -0
  801. package/dist/{input-group-BgCXLSRV.cjs → input-group-DBRe9V5t.cjs} +11 -6
  802. package/dist/input-group-DBRe9V5t.cjs.map +1 -0
  803. package/dist/layout/tabbed-container.cjs.js +11 -9
  804. package/dist/layout/tabbed-container.cjs.js.map +1 -1
  805. package/dist/layout/tabbed-container.es.js +9 -7
  806. package/dist/layout/tabbed-container.es.js.map +1 -1
  807. package/dist/lib/form/components/array-element-wrapper.cjs.js +1 -1
  808. package/dist/lib/form/components/array-element-wrapper.es.js +1 -1
  809. package/dist/lib/form/components/array-wrapper.cjs.js +1 -1
  810. package/dist/lib/form/components/array-wrapper.es.js +1 -1
  811. package/dist/lib/form/components/boolean-field.cjs.js +1 -1
  812. package/dist/lib/form/components/boolean-field.es.js +1 -1
  813. package/dist/lib/form/components/error-message.cjs.js +1 -1
  814. package/dist/lib/form/components/error-message.es.js +1 -1
  815. package/dist/lib/form/components/field-wrapper.cjs.js +1 -1
  816. package/dist/lib/form/components/field-wrapper.es.js +1 -1
  817. package/dist/lib/form/components/object-wrapper.cjs.js +1 -1
  818. package/dist/lib/form/components/object-wrapper.es.js +1 -1
  819. package/dist/lib/form/components/select-field.cjs.js +1 -1
  820. package/dist/lib/form/components/select-field.es.js +1 -1
  821. package/dist/lib/form/components/union-field.cjs.js +1 -1
  822. package/dist/lib/form/components/union-field.es.js +1 -1
  823. package/dist/{list-search-CTGQJCh1.cjs → list-search-CCHN2OMB.cjs} +2 -2
  824. package/dist/{list-search-CTGQJCh1.cjs.map → list-search-CCHN2OMB.cjs.map} +1 -1
  825. package/dist/{list-search-CmOCmTwL.js → list-search-DcACBmNB.js} +2 -2
  826. package/dist/{list-search-CmOCmTwL.js.map → list-search-DcACBmNB.js.map} +1 -1
  827. package/dist/{logs-data-list-B9CAqAHD.cjs → logs-data-list-BITdSK12.cjs} +4 -4
  828. package/dist/{logs-data-list-B9CAqAHD.cjs.map → logs-data-list-BITdSK12.cjs.map} +1 -1
  829. package/dist/{logs-data-list-DfzdzgXB.js → logs-data-list-PlH4_hgq.js} +4 -4
  830. package/dist/{logs-data-list-DfzdzgXB.js.map → logs-data-list-PlH4_hgq.js.map} +1 -1
  831. package/dist/{markdown-renderer-DPwN7Vtm.cjs → markdown-renderer-DRo-Hcuu.cjs} +2 -2
  832. package/dist/{markdown-renderer-DPwN7Vtm.cjs.map → markdown-renderer-DRo-Hcuu.cjs.map} +1 -1
  833. package/dist/{markdown-renderer-zvB6a8uj.js → markdown-renderer-XfWPF-B7.js} +2 -2
  834. package/dist/{markdown-renderer-zvB6a8uj.js.map → markdown-renderer-XfWPF-B7.js.map} +1 -1
  835. package/dist/{message-C1c5oZE7.cjs → message-DGDmsmOT.cjs} +2 -2
  836. package/dist/{message-C1c5oZE7.cjs.map → message-DGDmsmOT.cjs.map} +1 -1
  837. package/dist/{message-C7hocqft.js → message-DoxVrgBX.js} +2 -2
  838. package/dist/{message-C7hocqft.js.map → message-DoxVrgBX.js.map} +1 -1
  839. package/dist/{metrics-card-C1rTkbcn.js → metrics-card-DFEWxFkJ.js} +3 -3
  840. package/dist/{metrics-card-C1rTkbcn.js.map → metrics-card-DFEWxFkJ.js.map} +1 -1
  841. package/dist/{metrics-card-D7J9JDgn.cjs → metrics-card-xX9SHUpB.cjs} +3 -3
  842. package/dist/{metrics-card-D7J9JDgn.cjs.map → metrics-card-xX9SHUpB.cjs.map} +1 -1
  843. package/dist/{metrics-kpi-card-1hbihR2T.cjs → metrics-kpi-card-9L0j_oGY.cjs} +5 -14
  844. package/dist/metrics-kpi-card-9L0j_oGY.cjs.map +1 -0
  845. package/dist/{metrics-kpi-card-CiB88L41.js → metrics-kpi-card-DxcLqbDU.js} +5 -14
  846. package/dist/metrics-kpi-card-DxcLqbDU.js.map +1 -0
  847. package/dist/{metrics-line-chart-C3UMBQ38.js → metrics-line-chart-C9_EMuHK.js} +2 -2
  848. package/dist/{metrics-line-chart-C3UMBQ38.js.map → metrics-line-chart-C9_EMuHK.js.map} +1 -1
  849. package/dist/{metrics-line-chart-CjJxBbM-.cjs → metrics-line-chart-R-T_jyeP.cjs} +2 -2
  850. package/dist/{metrics-line-chart-CjJxBbM-.cjs.map → metrics-line-chart-R-T_jyeP.cjs.map} +1 -1
  851. package/dist/{metrics-line-chart-tooltip-DiXCgpik.cjs → metrics-line-chart-tooltip-BoG8nbkO.cjs} +2 -2
  852. package/dist/{metrics-line-chart-tooltip-DiXCgpik.cjs.map → metrics-line-chart-tooltip-BoG8nbkO.cjs.map} +1 -1
  853. package/dist/{metrics-line-chart-tooltip-mZXPH1yH.js → metrics-line-chart-tooltip-C3WAk3DN.js} +2 -2
  854. package/dist/{metrics-line-chart-tooltip-mZXPH1yH.js.map → metrics-line-chart-tooltip-C3WAk3DN.js.map} +1 -1
  855. package/dist/new/layout/page-header.cjs.js +1 -1
  856. package/dist/new/layout/page-header.es.js +1 -1
  857. package/dist/new/settings.cjs.js +2 -2
  858. package/dist/new/settings.es.js +2 -2
  859. package/dist/new/sidebar.cjs.js +1 -1
  860. package/dist/new/sidebar.es.js +1 -1
  861. package/dist/{notification-activity-CFR_b8eA.js → notification-activity-BDoleJAA.js} +4 -4
  862. package/dist/{notification-activity-CFR_b8eA.js.map → notification-activity-BDoleJAA.js.map} +1 -1
  863. package/dist/{notification-activity-Dk50wcE4.cjs → notification-activity-C_vZiswj.cjs} +4 -4
  864. package/dist/{notification-activity-Dk50wcE4.cjs.map → notification-activity-C_vZiswj.cjs.map} +1 -1
  865. package/dist/{page-header-DIS8V2TK.js → page-header-D5a7qrVc.js} +2 -2
  866. package/dist/{page-header-DIS8V2TK.js.map → page-header-D5a7qrVc.js.map} +1 -1
  867. package/dist/{page-header-C1WiOrTE.cjs → page-header-Dc2KSbnw.cjs} +2 -2
  868. package/dist/{page-header-C1WiOrTE.cjs.map → page-header-Dc2KSbnw.cjs.map} +1 -1
  869. package/dist/{plan-D8rM4i4S.cjs → plan-BBf7ONr7.cjs} +7 -6
  870. package/dist/{plan-D8rM4i4S.cjs.map → plan-BBf7ONr7.cjs.map} +1 -1
  871. package/dist/{plan-BtOryfz5.js → plan-BgvXKTEM.js} +6 -5
  872. package/dist/{plan-BtOryfz5.js.map → plan-BgvXKTEM.js.map} +1 -1
  873. package/dist/primitives/form-element.cjs.js +1 -1
  874. package/dist/primitives/form-element.cjs.js.map +1 -1
  875. package/dist/primitives/form-element.es.js +1 -1
  876. package/dist/primitives/form-element.es.js.map +1 -1
  877. package/dist/{reasoning-activity-6VkIbDT4.js → reasoning-activity-DTmKCDZ-.js} +3 -3
  878. package/dist/{reasoning-activity-6VkIbDT4.js.map → reasoning-activity-DTmKCDZ-.js.map} +1 -1
  879. package/dist/{reasoning-activity-DaXMgyr3.cjs → reasoning-activity-Dc6VbiMr.cjs} +3 -3
  880. package/dist/{reasoning-activity-DaXMgyr3.cjs.map → reasoning-activity-Dc6VbiMr.cjs.map} +1 -1
  881. package/dist/{relative-timestamp-BlmN8Vjn.cjs → relative-timestamp-Nnwtw7Rp.cjs} +2 -2
  882. package/dist/{relative-timestamp-BlmN8Vjn.cjs.map → relative-timestamp-Nnwtw7Rp.cjs.map} +1 -1
  883. package/dist/{relative-timestamp-Cnp4VeLp.js → relative-timestamp-Rn8mAobA.js} +2 -2
  884. package/dist/{relative-timestamp-Cnp4VeLp.js.map → relative-timestamp-Rn8mAobA.js.map} +1 -1
  885. package/dist/resize/panel-group.cjs.js +14 -2
  886. package/dist/resize/panel-group.cjs.js.map +1 -1
  887. package/dist/resize/panel-group.es.js +14 -2
  888. package/dist/resize/panel-group.es.js.map +1 -1
  889. package/dist/{search-input-BKXiYeed.js → search-input-63Y1_wgA.js} +3 -3
  890. package/dist/{search-input-BKXiYeed.js.map → search-input-63Y1_wgA.js.map} +1 -1
  891. package/dist/{search-input-T0orZ7Jf.cjs → search-input-CBhT3N4z.cjs} +3 -3
  892. package/dist/{search-input-T0orZ7Jf.cjs.map → search-input-CBhT3N4z.cjs.map} +1 -1
  893. package/dist/{section-Byml9qxH.cjs → section-C5r-Mtxk.cjs} +3 -3
  894. package/dist/{section-Byml9qxH.cjs.map → section-C5r-Mtxk.cjs.map} +1 -1
  895. package/dist/{section-DTooysg2.js → section-DYrbH35K.js} +3 -3
  896. package/dist/{section-DTooysg2.js.map → section-DYrbH35K.js.map} +1 -1
  897. package/dist/{select--ArpXYDc.js → select-CWxcmE3F.js} +2 -2
  898. package/dist/select-CWxcmE3F.js.map +1 -0
  899. package/dist/{select-DJQYAVcm.cjs → select-KV77JIvp.cjs} +2 -2
  900. package/dist/select-KV77JIvp.cjs.map +1 -0
  901. package/dist/{settings-row-B0jGFpVw.js → settings-row-Dc6ECXjj.js} +2 -2
  902. package/dist/{settings-row-B0jGFpVw.js.map → settings-row-Dc6ECXjj.js.map} +1 -1
  903. package/dist/{settings-row-Dt4WnnRf.cjs → settings-row-UPZXTcx1.cjs} +2 -2
  904. package/dist/{settings-row-Dt4WnnRf.cjs.map → settings-row-UPZXTcx1.cjs.map} +1 -1
  905. package/dist/{side-dialog-lQUx6B_M.cjs → side-dialog-CFTgnDXu.cjs} +2 -2
  906. package/dist/{side-dialog-lQUx6B_M.cjs.map → side-dialog-CFTgnDXu.cjs.map} +1 -1
  907. package/dist/{side-dialog-DZJc85m3.js → side-dialog-yvAvCday.js} +2 -2
  908. package/dist/{side-dialog-DZJc85m3.js.map → side-dialog-yvAvCday.js.map} +1 -1
  909. package/dist/{signal-activity-byCTRP86.cjs → signal-activity-BI-DRdjw.cjs} +4 -4
  910. package/dist/{signal-activity-byCTRP86.cjs.map → signal-activity-BI-DRdjw.cjs.map} +1 -1
  911. package/dist/{signal-activity-DW2ExjIp.js → signal-activity-_ChAbNsW.js} +4 -4
  912. package/dist/{signal-activity-DW2ExjIp.js.map → signal-activity-_ChAbNsW.js.map} +1 -1
  913. package/dist/{span-payload-primitives-CGamdu2t.js → span-payload-primitives-188dDV5s.js} +3 -3
  914. package/dist/{span-payload-primitives-CGamdu2t.js.map → span-payload-primitives-188dDV5s.js.map} +1 -1
  915. package/dist/{span-payload-primitives-SkL3U9hR.cjs → span-payload-primitives-DrKJXIc3.cjs} +3 -3
  916. package/dist/{span-payload-primitives-SkL3U9hR.cjs.map → span-payload-primitives-DrKJXIc3.cjs.map} +1 -1
  917. package/dist/src/domains/traces/components/span-data-panel-view.d.ts +3 -1
  918. package/dist/src/domains/traces/components/thread-trace/index.d.ts +23 -20
  919. package/dist/src/domains/traces/components/thread-trace/thread-trace-details.d.ts +1 -1
  920. package/dist/src/domains/traces/components/thread-trace/thread-trace-messages.d.ts +5 -15
  921. package/dist/src/domains/traces/components/thread-trace/thread-trace-root.d.ts +2 -2
  922. package/dist/src/domains/traces/components/thread-trace/thread-trace-row.d.ts +17 -2
  923. package/dist/src/domains/traces/components/thread-trace/thread-trace-span-panel.d.ts +3 -3
  924. package/dist/src/domains/traces/components/thread-trace/thread-trace-spans.d.ts +3 -4
  925. package/dist/src/domains/traces/components/thread-view-skeleton.d.ts +10 -4
  926. package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +10 -3
  927. package/dist/src/domains/traces/components/trace-data-panel-view.stories.d.ts +7 -5
  928. package/dist/src/domains/traces/components/trace-messages-panel.d.ts +2 -10
  929. package/dist/src/domains/traces/components/trace-messages-skeleton.d.ts +9 -6
  930. package/dist/src/domains/traces/components/trace-span-panel.d.ts +1 -1
  931. package/dist/src/domains/traces/components/trace-span-tree-skeleton.d.ts +4 -6
  932. package/dist/src/domains/traces/components/trace-thread-panel.d.ts +7 -5
  933. package/dist/src/domains/traces/hooks/use-branch.d.ts +2 -2
  934. package/dist/src/domains/traces/hooks/use-trace-light-spans.d.ts +2 -2
  935. package/dist/src/domains/traces/hooks/use-trace-or-branch-spans.d.ts +2 -2
  936. package/dist/src/domains/traces/hooks/use-trace-query.d.ts +2 -0
  937. package/dist/src/domains/traces/hooks/use-trace-search.d.ts +11 -8
  938. package/dist/src/domains/traces/hooks/use-trace-spans.d.ts +1 -7
  939. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +1 -0
  940. package/dist/src/domains/traces/utils/index.d.ts +1 -1
  941. package/dist/src/domains/traces/utils/to-searchable-spans.d.ts +2 -26
  942. package/dist/src/domains/workspace/components/frontmatter.d.ts +4 -0
  943. package/dist/src/domains/workspace/components/mount-icon.d.ts +6 -0
  944. package/dist/src/domains/workspace/components/use-workspace-context.d.ts +32 -0
  945. package/dist/src/domains/workspace/components/workspace-active-file.d.ts +13 -0
  946. package/dist/src/domains/workspace/components/workspace-add-skill-dialog.d.ts +39 -0
  947. package/dist/src/domains/workspace/components/workspace-add-skill.d.ts +10 -0
  948. package/dist/src/domains/workspace/components/workspace-context.d.ts +28 -0
  949. package/dist/src/domains/workspace/components/workspace-create-directory.d.ts +4 -0
  950. package/dist/src/domains/workspace/components/workspace-error.d.ts +5 -0
  951. package/dist/src/domains/workspace/components/workspace-markdown-preview.d.ts +4 -0
  952. package/dist/src/domains/workspace/components/workspace-parts.d.ts +25 -0
  953. package/dist/src/domains/workspace/components/workspace-search.d.ts +5 -0
  954. package/dist/src/domains/workspace/components/workspace-tree-view.d.ts +32 -0
  955. package/dist/src/domains/workspace/components/workspace-tree.d.ts +1 -0
  956. package/dist/src/domains/workspace/components/workspace.d.ts +18 -0
  957. package/dist/src/domains/workspace/file-type.d.ts +6 -0
  958. package/dist/src/domains/workspace/hooks/use-skills-sh.d.ts +51 -0
  959. package/dist/src/domains/workspace/hooks/use-workspace-directory.d.ts +17 -0
  960. package/dist/src/domains/workspace/hooks/use-workspace-file-content.d.ts +8 -0
  961. package/dist/src/domains/workspace/hooks/use-workspace-search.d.ts +11 -0
  962. package/dist/src/domains/workspace/index.d.ts +14 -0
  963. package/dist/src/domains/workspace/path.d.ts +6 -0
  964. package/dist/src/ds/components/Button/button.stories.d.ts +1 -0
  965. package/dist/src/ds/components/CollapsibleBox/collapsible-box.d.ts +5 -2
  966. package/dist/src/ds/components/CollapsibleBox/collapsible-box.stories.d.ts +1 -0
  967. package/dist/src/ds/components/Combobox/combobox-styles.d.ts +1 -1
  968. package/dist/src/ds/components/Command/command.stories.d.ts +1 -0
  969. package/dist/src/ds/components/InputGroup/input-group.d.ts +2 -0
  970. package/dist/src/ds/components/InputGroup/input-group.stories.d.ts +0 -1
  971. package/dist/src/ds/components/InputNumber/index.d.ts +1 -0
  972. package/dist/src/ds/components/InputNumber/input-number.d.ts +26 -0
  973. package/dist/src/ds/components/InputNumber/input-number.stories.d.ts +11 -0
  974. package/dist/src/ds/components/Tabs/tabs-context.d.ts +0 -1
  975. package/dist/src/ds/components/Tabs/tabs-list.d.ts +0 -7
  976. package/dist/src/ds/components/Tabs/tabs-root.d.ts +1 -1
  977. package/dist/src/ds/components/Tabs/tabs-tab.d.ts +3 -1
  978. package/dist/src/ds/components/Tabs/tabs.stories.d.ts +0 -1
  979. package/dist/src/ds/components/ThinkingLevel/index.d.ts +4 -0
  980. package/dist/src/ds/components/ThinkingLevel/thinking-level-picker.d.ts +17 -0
  981. package/dist/src/ds/components/ThinkingLevel/thinking-level-ramp.d.ts +9 -0
  982. package/dist/src/ds/components/ThinkingLevel/thinking-level-slider.d.ts +13 -0
  983. package/dist/src/ds/components/ThinkingLevel/thinking-level.stories.d.ts +14 -0
  984. package/dist/src/ds/components/ThinkingLevel/use-thinking-level-stop.d.ts +29 -0
  985. package/dist/src/ds/components/ai/transcript-divider/stories/transcript-divider.stories.d.ts +3 -0
  986. package/dist/src/ds/components/ai/transcript-divider/transcript-divider.d.ts +6 -1
  987. package/dist/src/ds/icons/FileIcon.d.ts +2 -0
  988. package/dist/src/ds/icons/SearchIcon.d.ts +2 -0
  989. package/dist/src/ds/icons/TrashIcon.d.ts +2 -0
  990. package/dist/src/ds/icons/index.d.ts +3 -0
  991. package/dist/src/ds/layout/tabbed-container/tabbed-container-root.d.ts +2 -1
  992. package/dist/src/ds/tokens/fonts.d.ts +1 -1
  993. package/dist/src/lib/resize/panel-group.d.ts +3 -1
  994. package/dist/style.css +270 -121
  995. package/dist/{tabs-content-DnscxcLI.cjs → tabs-content-DfH1hhpU.cjs} +3 -3
  996. package/dist/{tabs-content-DnscxcLI.cjs.map → tabs-content-DfH1hhpU.cjs.map} +1 -1
  997. package/dist/{tabs-content-CwbkTutf.js → tabs-content-OWF8un_n.js} +2 -2
  998. package/dist/{tabs-content-CwbkTutf.js.map → tabs-content-OWF8un_n.js.map} +1 -1
  999. package/dist/tabs-context-Cbuw7i0u.js +7 -0
  1000. package/dist/tabs-context-Cbuw7i0u.js.map +1 -0
  1001. package/dist/tabs-context-pnspPkI-.cjs +10 -0
  1002. package/dist/tabs-context-pnspPkI-.cjs.map +1 -0
  1003. package/dist/{tabs-root-C-ePF1y9.cjs → tabs-list-Tqj36HIL.cjs} +10 -43
  1004. package/dist/tabs-list-Tqj36HIL.cjs.map +1 -0
  1005. package/dist/{tabs-root-lrZZ3KwH.js → tabs-list-tLx5fgP0.js} +12 -44
  1006. package/dist/tabs-list-tLx5fgP0.js.map +1 -0
  1007. package/dist/tabs-root-BbzhUZl4.js +40 -0
  1008. package/dist/tabs-root-BbzhUZl4.js.map +1 -0
  1009. package/dist/tabs-root-Hkt7A6oq.cjs +42 -0
  1010. package/dist/tabs-root-Hkt7A6oq.cjs.map +1 -0
  1011. package/dist/tabs-root.css +0 -70
  1012. package/dist/{tabs-tab-BmIBFifi.cjs → tabs-tab-C-C2vX-D.cjs} +10 -7
  1013. package/dist/tabs-tab-C-C2vX-D.cjs.map +1 -0
  1014. package/dist/{tabs-tab-DoPSW-1s.js → tabs-tab-ClLIOGiC.js} +11 -6
  1015. package/dist/tabs-tab-ClLIOGiC.js.map +1 -0
  1016. package/dist/{text-and-icon-CuBm-Wjm.js → text-and-icon-Bo6NLLBl.js} +2 -2
  1017. package/dist/{text-and-icon-CuBm-Wjm.js.map → text-and-icon-Bo6NLLBl.js.map} +1 -1
  1018. package/dist/{text-and-icon-4eVhfmbb.cjs → text-and-icon-CvakH4YL.cjs} +2 -2
  1019. package/dist/{text-and-icon-4eVhfmbb.cjs.map → text-and-icon-CvakH4YL.cjs.map} +1 -1
  1020. package/dist/{thread-list-BTpezI4f.js → thread-list-D2zSEQWK.js} +2 -2
  1021. package/dist/{thread-list-BTpezI4f.js.map → thread-list-D2zSEQWK.js.map} +1 -1
  1022. package/dist/{thread-list-Drcptd4x.cjs → thread-list-DKBwiGfX.cjs} +2 -2
  1023. package/dist/{thread-list-Drcptd4x.cjs.map → thread-list-DKBwiGfX.cjs.map} +1 -1
  1024. package/dist/{time-picker-KE48KlpH.cjs → time-picker-Uz05Y0qU.cjs} +2 -2
  1025. package/dist/{time-picker-KE48KlpH.cjs.map → time-picker-Uz05Y0qU.cjs.map} +1 -1
  1026. package/dist/{time-picker-DRSAkFuj.js → time-picker-eQkyOP4X.js} +2 -2
  1027. package/dist/{time-picker-DRSAkFuj.js.map → time-picker-eQkyOP4X.js.map} +1 -1
  1028. package/dist/tokens.cjs.js +3 -0
  1029. package/dist/tokens.cjs.js.map +1 -1
  1030. package/dist/tokens.es.js +3 -0
  1031. package/dist/tokens.es.js.map +1 -1
  1032. package/dist/{tool-call-arguments-CtUKj7IB.js → tool-call-arguments-Cm5qfywz.js} +2 -2
  1033. package/dist/{tool-call-arguments-CtUKj7IB.js.map → tool-call-arguments-Cm5qfywz.js.map} +1 -1
  1034. package/dist/{tool-call-arguments-BemKsB9v.cjs → tool-call-arguments-cML2FFBk.cjs} +2 -2
  1035. package/dist/{tool-call-arguments-BemKsB9v.cjs.map → tool-call-arguments-cML2FFBk.cjs.map} +1 -1
  1036. package/dist/{tool-call-group-D_ioE9hT.cjs → tool-call-group-CALHT0zr.cjs} +3 -3
  1037. package/dist/{tool-call-group-D_ioE9hT.cjs.map → tool-call-group-CALHT0zr.cjs.map} +1 -1
  1038. package/dist/{tool-call-group-ZuYxpyDs.js → tool-call-group-UoMplOy2.js} +3 -3
  1039. package/dist/{tool-call-group-ZuYxpyDs.js.map → tool-call-group-UoMplOy2.js.map} +1 -1
  1040. package/dist/{traces-data-list-Dd8vMPQK.cjs → traces-data-list-D-wz-Je3.cjs} +5 -5
  1041. package/dist/{traces-data-list-Dd8vMPQK.cjs.map → traces-data-list-D-wz-Je3.cjs.map} +1 -1
  1042. package/dist/{traces-data-list-Fvl8mlih.js → traces-data-list-DmCgejAx.js} +5 -5
  1043. package/dist/{traces-data-list-Fvl8mlih.js.map → traces-data-list-DmCgejAx.js.map} +1 -1
  1044. package/dist/transcript-divider-273Bsdjs.cjs +30 -0
  1045. package/dist/transcript-divider-273Bsdjs.cjs.map +1 -0
  1046. package/dist/transcript-divider-CPIo8NUj.js +28 -0
  1047. package/dist/transcript-divider-CPIo8NUj.js.map +1 -0
  1048. package/dist/tree-DOVwqiSm.cjs +493 -0
  1049. package/dist/tree-DOVwqiSm.cjs.map +1 -0
  1050. package/dist/tree-DixCN7B0.js +472 -0
  1051. package/dist/tree-DixCN7B0.js.map +1 -0
  1052. package/dist/use-collapsible-box-B0t2_SvP.js +20 -0
  1053. package/dist/use-collapsible-box-B0t2_SvP.js.map +1 -0
  1054. package/dist/use-collapsible-box-BI80L4h_.cjs +23 -0
  1055. package/dist/use-collapsible-box-BI80L4h_.cjs.map +1 -0
  1056. package/dist/{use-workflow-graph-runtime-JQwLwNBD.js → use-workflow-graph-runtime-IZ-er4hs.js} +4 -4
  1057. package/dist/{use-workflow-graph-runtime-JQwLwNBD.js.map → use-workflow-graph-runtime-IZ-er4hs.js.map} +1 -1
  1058. package/dist/{use-workflow-graph-runtime-BNAtEa06.cjs → use-workflow-graph-runtime-t17K6Hkf.cjs} +4 -4
  1059. package/dist/{use-workflow-graph-runtime-BNAtEa06.cjs.map → use-workflow-graph-runtime-t17K6Hkf.cjs.map} +1 -1
  1060. package/dist/{workflow-condition-card-BjEAp0t6.cjs → workflow-condition-card-B_oDiQ6I.cjs} +3 -3
  1061. package/dist/{workflow-condition-card-BjEAp0t6.cjs.map → workflow-condition-card-B_oDiQ6I.cjs.map} +1 -1
  1062. package/dist/{workflow-condition-card-3J-As62x.js → workflow-condition-card-CLyskv_B.js} +3 -3
  1063. package/dist/{workflow-condition-card-3J-As62x.js.map → workflow-condition-card-CLyskv_B.js.map} +1 -1
  1064. package/dist/{workflow-data-edge-view-C4nbA2Fa.js → workflow-data-edge-view-JmkSlDp1.js} +2 -2
  1065. package/dist/{workflow-data-edge-view-C4nbA2Fa.js.map → workflow-data-edge-view-JmkSlDp1.js.map} +1 -1
  1066. package/dist/{workflow-data-edge-view-aHAZkZOH.cjs → workflow-data-edge-view-aNTgHQUk.cjs} +2 -2
  1067. package/dist/{workflow-data-edge-view-aHAZkZOH.cjs.map → workflow-data-edge-view-aNTgHQUk.cjs.map} +1 -1
  1068. package/dist/{workflow-debug-controls-tty6gLX2.js → workflow-debug-controls-CQc8ljAI.js} +3 -3
  1069. package/dist/{workflow-debug-controls-tty6gLX2.js.map → workflow-debug-controls-CQc8ljAI.js.map} +1 -1
  1070. package/dist/{workflow-debug-controls-VbxiluNZ.cjs → workflow-debug-controls-WXT05idC.cjs} +3 -3
  1071. package/dist/{workflow-debug-controls-VbxiluNZ.cjs.map → workflow-debug-controls-WXT05idC.cjs.map} +1 -1
  1072. package/dist/{workflow-edge-data-button-2aIkzgev.js → workflow-edge-data-button-B7bM7UqW.js} +2 -2
  1073. package/dist/{workflow-edge-data-button-2aIkzgev.js.map → workflow-edge-data-button-B7bM7UqW.js.map} +1 -1
  1074. package/dist/{workflow-edge-data-button-BFNO-TRL.cjs → workflow-edge-data-button-CHoNrfef.cjs} +2 -2
  1075. package/dist/{workflow-edge-data-button-BFNO-TRL.cjs.map → workflow-edge-data-button-CHoNrfef.cjs.map} +1 -1
  1076. package/package.json +10 -10
  1077. package/theme/colors.css +1 -1
  1078. package/theme/typography.css +19 -2
  1079. package/dist/Badge-D3EctKQo.cjs.map +0 -1
  1080. package/dist/Badge-DmOqFpXW.js.map +0 -1
  1081. package/dist/Txt-BP1SRHmL.js.map +0 -1
  1082. package/dist/Txt-DPmEpNbp.cjs.map +0 -1
  1083. package/dist/combobox-styles-mbcWlNZQ.js.map +0 -1
  1084. package/dist/combobox-styles-qL3FSgmU.cjs.map +0 -1
  1085. package/dist/command-Bm0VcX7X.cjs.map +0 -1
  1086. package/dist/command-DFin7kHN.js.map +0 -1
  1087. package/dist/data-panel-CbomKGJt.js.map +0 -1
  1088. package/dist/data-panel-o-QLWuFV.cjs.map +0 -1
  1089. package/dist/field-BtvEQ68O.js.map +0 -1
  1090. package/dist/field-error-id-4DYu4KZ2.cjs.map +0 -1
  1091. package/dist/field-error-id-BSQLcfHo.js.map +0 -1
  1092. package/dist/field-ip9xiOVa.cjs.map +0 -1
  1093. package/dist/input-group-BgCXLSRV.cjs.map +0 -1
  1094. package/dist/input-group-wzirc-1k.js.map +0 -1
  1095. package/dist/metrics-kpi-card-1hbihR2T.cjs.map +0 -1
  1096. package/dist/metrics-kpi-card-CiB88L41.js.map +0 -1
  1097. package/dist/select--ArpXYDc.js.map +0 -1
  1098. package/dist/select-DJQYAVcm.cjs.map +0 -1
  1099. package/dist/tabs-root-C-ePF1y9.cjs.map +0 -1
  1100. package/dist/tabs-root-lrZZ3KwH.js.map +0 -1
  1101. package/dist/tabs-tab-BmIBFifi.cjs.map +0 -1
  1102. package/dist/tabs-tab-DoPSW-1s.js.map +0 -1
  1103. package/dist/use-collapsible-box-CCvsF_a9.js +0 -54
  1104. package/dist/use-collapsible-box-CCvsF_a9.js.map +0 -1
  1105. package/dist/use-collapsible-box-CbQOkokQ.cjs +0 -58
  1106. package/dist/use-collapsible-box-CbQOkokQ.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"plan-D8rM4i4S.cjs","sources":["../src/ds/components/ai/plan/plan.tsx"],"sourcesContent":["import { CheckIcon, ClipboardList, CopyIcon, Maximize2, Minimize2 } from 'lucide-react';\nimport { createContext, useContext } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { CollapsibleBox, DEFAULT_COLLAPSED_HEIGHT, useCollapsibleBox } from '@/ds/components/CollapsibleBox';\nimport type { CollapsibleBoxState } from '@/ds/components/CollapsibleBox';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\nimport { cn } from '@/lib/utils';\n\nconst PlanContext = createContext<CollapsibleBoxState | null>(null);\n\nconst usePlanContext = () => {\n const context = useContext(PlanContext);\n\n if (!context) {\n throw new Error('Plan compound components must be rendered inside <Plan>.');\n }\n\n return context;\n};\n\nexport interface PlanProps extends ComponentProps<'div'> {\n collapsedHeight?: number;\n}\n\nexport function Plan({ children, collapsedHeight = DEFAULT_COLLAPSED_HEIGHT, className, ...props }: PlanProps) {\n const contextValue = useCollapsibleBox({ collapsedHeight });\n\n return (\n <PlanContext.Provider value={contextValue}>\n <div data-slot=\"plan\" className={cn('w-full overflow-hidden rounded-xl bg-card', className)} {...props}>\n {children}\n </div>\n </PlanContext.Provider>\n );\n}\n\nexport type PlanHeaderProps = ComponentProps<'div'>;\n\nexport function PlanHeader({ children, className, ...props }: PlanHeaderProps) {\n return (\n <div\n data-slot=\"plan-header\"\n className={cn('flex min-h-10 items-center justify-between gap-3 px-4 pt-3', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport type PlanLabelProps = ComponentProps<'div'>;\n\nexport function PlanLabel({ children = 'Plan', className, ...props }: PlanLabelProps) {\n return (\n <div data-slot=\"plan-label\" className={cn('flex min-w-0 items-center gap-2', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <ClipboardList />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n );\n}\n\nexport type PlanHeaderActionsProps = ComponentProps<'div'>;\n\nexport function PlanHeaderActions({ children, className, ...props }: PlanHeaderActionsProps) {\n return (\n <div data-slot=\"plan-header-actions\" className={cn('flex shrink-0 items-center gap-1', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanStatusProps = Omit<ComponentProps<typeof Badge>, 'icon' | 'indicator' | 'size'>;\n\nexport function PlanStatus({ children, variant = 'neutral', ...props }: PlanStatusProps) {\n return (\n <Badge {...props} variant={variant} size=\"xs\" indicator=\"dot\">\n {children}\n </Badge>\n );\n}\n\nexport interface PlanCopyButtonProps extends Omit<\n ComponentProps<typeof Button>,\n 'aria-label' | 'children' | 'onClick' | 'size' | 'tooltip' | 'type' | 'variant'\n> {\n content: string;\n}\n\nexport function PlanCopyButton({ content, ...props }: PlanCopyButtonProps) {\n const { isCopied, handleCopy } = useCopyToClipboard({\n text: content,\n copiedDuration: 1500,\n showToast: false,\n });\n\n return (\n <Button\n {...props}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Copy plan\"\n aria-label=\"Copy plan\"\n onClick={handleCopy}\n >\n {isCopied ? <CheckIcon /> : <CopyIcon />}\n </Button>\n );\n}\n\nexport type PlanBodyProps = ComponentProps<'div'>;\n\nexport function PlanBody({ children, className, ...props }: PlanBodyProps) {\n return (\n <div data-slot=\"plan-body\" className={cn('px-5 pt-4 pb-5', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanIntroProps = ComponentProps<'div'>;\n\nexport function PlanIntro({ children, className, ...props }: PlanIntroProps) {\n return (\n <div data-slot=\"plan-intro\" className={cn('mb-5 space-y-1', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface PlanTitleProps extends Omit<ComponentProps<typeof Txt>, 'as' | 'children' | 'variant'> {\n children: ReactNode;\n}\n\nexport function PlanTitle({ children, className, ...props }: PlanTitleProps) {\n return (\n <Txt {...props} as=\"h3\" variant=\"heading\" tone=\"ink\" className={className}>\n {children}\n </Txt>\n );\n}\n\nexport interface PlanPathProps extends Omit<\n ComponentProps<typeof Txt>,\n 'as' | 'children' | 'font' | 'title' | 'variant'\n> {\n children: string;\n}\n\nconst getFileName = (path: string) => {\n const segments = path.split(/[\\\\/]/).filter(Boolean);\n return segments[segments.length - 1] ?? path;\n};\n\nexport function PlanPath({ children, className, ...props }: PlanPathProps) {\n return (\n <Txt\n {...props}\n as=\"p\"\n variant=\"meta\"\n tone=\"muted\"\n font=\"mono\"\n title={children}\n className={cn('max-w-full truncate overflow-hidden', className)}\n >\n {getFileName(children)}\n </Txt>\n );\n}\n\nexport type PlanMainProps = ComponentProps<'div'>;\n\nexport function PlanMain({ children, className, ...props }: PlanMainProps) {\n return (\n <div data-slot=\"plan-main\" className={cn('relative', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface PlanContentProps extends Omit<ComponentProps<'div'>, 'children'> {\n children: string;\n}\n\nexport function PlanContent({ children, ...props }: PlanContentProps) {\n const state = usePlanContext();\n\n return (\n <CollapsibleBox data-slot=\"plan-content\" state={state} {...props}>\n <div className=\"[&_code]:bg-muted [&_h1]:text-title [&_h2]:text-heading [&_h3]:text-subheading [&_p]:text-body\">\n <MarkdownRenderer className=\"text-foreground\">{children}</MarkdownRenderer>\n </div>\n </CollapsibleBox>\n );\n}\n\nexport interface PlanFileProps extends Omit<ComponentProps<'div'>, 'children'> {\n children: string;\n}\n\nexport function PlanFile({ children, className, ...props }: PlanFileProps) {\n return (\n <div data-slot=\"plan-file\" className={className} {...props}>\n <Txt as=\"p\" variant=\"meta\" tone=\"muted\" className=\"mb-2\">\n Plan file\n </Txt>\n <Txt as=\"p\" variant=\"caption\" tone=\"ink\" font=\"mono\" className=\"break-all\">\n {children}\n </Txt>\n </div>\n );\n}\n\nexport type PlanControlsProps = ComponentProps<'div'>;\n\nexport function PlanControls({ children, className, ...props }: PlanControlsProps) {\n const hasActions = Boolean(children);\n\n return (\n <div\n data-slot=\"plan-controls\"\n className={cn('relative z-10 mt-4 flex justify-center empty:hidden', className)}\n {...props}\n >\n {hasActions ? (\n <div className=\"grid w-full max-w-sm grid-cols-[1fr_auto_1fr] items-center gap-2 px-10\">{children}</div>\n ) : (\n <PlanExpandButton />\n )}\n </div>\n );\n}\n\nexport type PlanActionGroupProps = ComponentProps<'div'>;\n\nexport function PlanActionGroup({ children, className, ...props }: PlanActionGroupProps) {\n return (\n <div data-slot=\"plan-action-group\" className={cn('flex justify-start gap-2 empty:hidden', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanExpandButtonProps = Omit<\n ComponentProps<typeof Button>,\n 'aria-label' | 'children' | 'onClick' | 'size' | 'type'\n>;\n\nexport function PlanExpandButton({ className, variant = 'default', ...props }: PlanExpandButtonProps) {\n const { isExpanded, isClipped, toggleExpanded } = usePlanContext();\n\n // Nothing to expand: the collapsed card already shows the whole plan.\n if (!isClipped && !isExpanded) return null;\n\n return (\n <Button\n {...props}\n className={cn('shrink-0 whitespace-nowrap', className)}\n type=\"button\"\n variant={variant}\n size=\"sm\"\n aria-label={isExpanded ? 'Collapse plan' : 'Expand plan'}\n onClick={toggleExpanded}\n icon={isExpanded ? <Minimize2 /> : <Maximize2 />}\n >\n {isExpanded ? 'Collapse plan' : 'Expand plan'}\n </Button>\n );\n}\n"],"names":["createContext","useContext","DEFAULT_COLLAPSED_HEIGHT","useCollapsibleBox","cn","jsx","jsxs","Icon","ClipboardList","Txt","Badge","useCopyToClipboard","Button","CheckIcon","CopyIcon","CollapsibleBox","MarkdownRenderer","Minimize2","Maximize2"],"mappings":"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"}
1
+ {"version":3,"file":"plan-BBf7ONr7.cjs","sources":["../src/ds/components/ai/plan/plan.tsx"],"sourcesContent":["import { CheckIcon, ClipboardList, CopyIcon, Maximize2, Minimize2 } from 'lucide-react';\nimport { createContext, useContext } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { CollapsibleBox, DEFAULT_COLLAPSED_HEIGHT, useCollapsibleBox } from '@/ds/components/CollapsibleBox';\nimport type { CollapsibleBoxState } from '@/ds/components/CollapsibleBox';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\nimport { cn } from '@/lib/utils';\n\nconst PlanContext = createContext<CollapsibleBoxState | null>(null);\n\nconst usePlanContext = () => {\n const context = useContext(PlanContext);\n\n if (!context) {\n throw new Error('Plan compound components must be rendered inside <Plan>.');\n }\n\n return context;\n};\n\nexport interface PlanProps extends ComponentProps<'div'> {\n collapsedHeight?: number;\n}\n\nexport function Plan({ children, collapsedHeight = DEFAULT_COLLAPSED_HEIGHT, className, ...props }: PlanProps) {\n const contextValue = useCollapsibleBox({ collapsedHeight });\n\n return (\n <PlanContext.Provider value={contextValue}>\n <div data-slot=\"plan\" className={cn('w-full overflow-hidden rounded-xl bg-card', className)} {...props}>\n {children}\n </div>\n </PlanContext.Provider>\n );\n}\n\nexport type PlanHeaderProps = ComponentProps<'div'>;\n\nexport function PlanHeader({ children, className, ...props }: PlanHeaderProps) {\n return (\n <div\n data-slot=\"plan-header\"\n className={cn('flex min-h-10 items-center justify-between gap-3 px-4 pt-3', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport type PlanLabelProps = ComponentProps<'div'>;\n\nexport function PlanLabel({ children = 'Plan', className, ...props }: PlanLabelProps) {\n return (\n <div data-slot=\"plan-label\" className={cn('flex min-w-0 items-center gap-2', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <ClipboardList />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n );\n}\n\nexport type PlanHeaderActionsProps = ComponentProps<'div'>;\n\nexport function PlanHeaderActions({ children, className, ...props }: PlanHeaderActionsProps) {\n return (\n <div data-slot=\"plan-header-actions\" className={cn('flex shrink-0 items-center gap-1', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanStatusProps = Omit<ComponentProps<typeof Badge>, 'icon' | 'indicator' | 'size'>;\n\nexport function PlanStatus({ children, variant = 'neutral', ...props }: PlanStatusProps) {\n return (\n <Badge {...props} variant={variant} size=\"xs\" indicator=\"dot\">\n {children}\n </Badge>\n );\n}\n\nexport interface PlanCopyButtonProps extends Omit<\n ComponentProps<typeof Button>,\n 'aria-label' | 'children' | 'onClick' | 'size' | 'tooltip' | 'type' | 'variant'\n> {\n content: string;\n}\n\nexport function PlanCopyButton({ content, ...props }: PlanCopyButtonProps) {\n const { isCopied, handleCopy } = useCopyToClipboard({\n text: content,\n copiedDuration: 1500,\n showToast: false,\n });\n\n return (\n <Button\n {...props}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Copy plan\"\n aria-label=\"Copy plan\"\n onClick={handleCopy}\n >\n {isCopied ? <CheckIcon /> : <CopyIcon />}\n </Button>\n );\n}\n\nexport type PlanBodyProps = ComponentProps<'div'>;\n\nexport function PlanBody({ children, className, ...props }: PlanBodyProps) {\n return (\n <div data-slot=\"plan-body\" className={cn('px-5 pt-4 pb-5', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanIntroProps = ComponentProps<'div'>;\n\nexport function PlanIntro({ children, className, ...props }: PlanIntroProps) {\n return (\n <div data-slot=\"plan-intro\" className={cn('mb-5 space-y-1', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface PlanTitleProps extends Omit<ComponentProps<typeof Txt>, 'as' | 'children' | 'variant'> {\n children: ReactNode;\n}\n\nexport function PlanTitle({ children, className, ...props }: PlanTitleProps) {\n return (\n <Txt {...props} as=\"h3\" variant=\"heading\" tone=\"ink\" className={className}>\n {children}\n </Txt>\n );\n}\n\nexport interface PlanPathProps extends Omit<\n ComponentProps<typeof Txt>,\n 'as' | 'children' | 'font' | 'title' | 'variant'\n> {\n children: string;\n}\n\nconst getFileName = (path: string) => {\n const segments = path.split(/[\\\\/]/).filter(Boolean);\n return segments[segments.length - 1] ?? path;\n};\n\nexport function PlanPath({ children, className, ...props }: PlanPathProps) {\n return (\n <Txt\n {...props}\n as=\"p\"\n variant=\"meta\"\n tone=\"muted\"\n font=\"mono\"\n title={children}\n className={cn('max-w-full truncate overflow-hidden', className)}\n >\n {getFileName(children)}\n </Txt>\n );\n}\n\nexport type PlanMainProps = ComponentProps<'div'>;\n\nexport function PlanMain({ children, className, ...props }: PlanMainProps) {\n return (\n <div data-slot=\"plan-main\" className={cn('relative', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface PlanContentProps extends Omit<ComponentProps<'div'>, 'children'> {\n children: string;\n}\n\nexport function PlanContent({ children, ...props }: PlanContentProps) {\n const state = usePlanContext();\n\n return (\n <CollapsibleBox data-slot=\"plan-content\" state={state} {...props}>\n <div className=\"[&_code]:bg-muted [&_h1]:text-title [&_h2]:text-heading [&_h3]:text-subheading [&_p]:text-body\">\n <MarkdownRenderer className=\"text-foreground\">{children}</MarkdownRenderer>\n </div>\n </CollapsibleBox>\n );\n}\n\nexport interface PlanFileProps extends Omit<ComponentProps<'div'>, 'children'> {\n children: string;\n}\n\nexport function PlanFile({ children, className, ...props }: PlanFileProps) {\n return (\n <div data-slot=\"plan-file\" className={className} {...props}>\n <Txt as=\"p\" variant=\"meta\" tone=\"muted\" className=\"mb-2\">\n Plan file\n </Txt>\n <Txt as=\"p\" variant=\"caption\" tone=\"ink\" font=\"mono\" className=\"break-all\">\n {children}\n </Txt>\n </div>\n );\n}\n\nexport type PlanControlsProps = ComponentProps<'div'>;\n\nexport function PlanControls({ children, className, ...props }: PlanControlsProps) {\n const hasActions = Boolean(children);\n\n return (\n <div\n data-slot=\"plan-controls\"\n className={cn('relative z-10 mt-4 flex justify-center empty:hidden', className)}\n {...props}\n >\n {hasActions ? (\n <div className=\"grid w-full max-w-sm grid-cols-[1fr_auto_1fr] items-center gap-2 px-10\">{children}</div>\n ) : (\n <PlanExpandButton />\n )}\n </div>\n );\n}\n\nexport type PlanActionGroupProps = ComponentProps<'div'>;\n\nexport function PlanActionGroup({ children, className, ...props }: PlanActionGroupProps) {\n return (\n <div data-slot=\"plan-action-group\" className={cn('flex justify-start gap-2 empty:hidden', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanExpandButtonProps = Omit<\n ComponentProps<typeof Button>,\n 'aria-label' | 'children' | 'onClick' | 'size' | 'type'\n>;\n\nexport function PlanExpandButton({ className, variant = 'default', ...props }: PlanExpandButtonProps) {\n const { isExpanded, isClipped, toggleExpanded } = usePlanContext();\n\n // Nothing to expand: the collapsed card already shows the whole plan.\n if (!isClipped && !isExpanded) return null;\n\n return (\n <Button\n {...props}\n className={cn('shrink-0 whitespace-nowrap', className)}\n type=\"button\"\n variant={variant}\n size=\"sm\"\n aria-label={isExpanded ? 'Collapse plan' : 'Expand plan'}\n onClick={toggleExpanded}\n icon={isExpanded ? <Minimize2 /> : <Maximize2 />}\n >\n {isExpanded ? 'Collapse plan' : 'Expand plan'}\n </Button>\n );\n}\n"],"names":["createContext","useContext","DEFAULT_COLLAPSED_HEIGHT","useCollapsibleBox","cn","jsx","jsxs","Icon","ClipboardList","Txt","Badge","useCopyToClipboard","Button","CheckIcon","CopyIcon","CollapsibleBox","MarkdownRenderer","Minimize2","Maximize2"],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { ClipboardList, CheckIcon, CopyIcon, Minimize2, Maximize2 } from 'lucide-react';
3
3
  import { createContext, useContext } from 'react';
4
- import { B as Badge } from './Badge-DmOqFpXW.js';
4
+ import { B as Badge } from './Badge-DId-8rYY.js';
5
5
  import { B as Button } from './Button-D43ghVKt.js';
6
- import { u as useCollapsibleBox, D as DEFAULT_COLLAPSED_HEIGHT, C as CollapsibleBox } from './use-collapsible-box-CCvsF_a9.js';
7
- import { M as MarkdownRenderer } from './markdown-renderer-zvB6a8uj.js';
8
- import { T as Txt } from './Txt-BP1SRHmL.js';
6
+ import { C as CollapsibleBox } from './collapsible-box-DW-y0Oi1.js';
7
+ import { u as useCollapsibleBox, D as DEFAULT_COLLAPSED_HEIGHT } from './use-collapsible-box-B0t2_SvP.js';
8
+ import { M as MarkdownRenderer } from './markdown-renderer-XfWPF-B7.js';
9
+ import { T as Txt } from './Txt-C3cYJgKU.js';
9
10
  import { Icon } from './icons/Icon.es.js';
10
11
  import { useCopyToClipboard } from './hooks/use-copy-to-clipboard.es.js';
11
12
  import { c as cn } from './cn-65Adrsfj.js';
@@ -141,4 +142,4 @@ function PlanExpandButton({ className, variant = "default", ...props }) {
141
142
  }
142
143
 
143
144
  export { Plan as P, PlanActionGroup as a, PlanBody as b, PlanContent as c, PlanControls as d, PlanCopyButton as e, PlanExpandButton as f, PlanFile as g, PlanHeader as h, PlanHeaderActions as i, PlanIntro as j, PlanLabel as k, PlanMain as l, PlanPath as m, PlanStatus as n, PlanTitle as o };
144
- //# sourceMappingURL=plan-BtOryfz5.js.map
145
+ //# sourceMappingURL=plan-BgvXKTEM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan-BtOryfz5.js","sources":["../src/ds/components/ai/plan/plan.tsx"],"sourcesContent":["import { CheckIcon, ClipboardList, CopyIcon, Maximize2, Minimize2 } from 'lucide-react';\nimport { createContext, useContext } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { CollapsibleBox, DEFAULT_COLLAPSED_HEIGHT, useCollapsibleBox } from '@/ds/components/CollapsibleBox';\nimport type { CollapsibleBoxState } from '@/ds/components/CollapsibleBox';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\nimport { cn } from '@/lib/utils';\n\nconst PlanContext = createContext<CollapsibleBoxState | null>(null);\n\nconst usePlanContext = () => {\n const context = useContext(PlanContext);\n\n if (!context) {\n throw new Error('Plan compound components must be rendered inside <Plan>.');\n }\n\n return context;\n};\n\nexport interface PlanProps extends ComponentProps<'div'> {\n collapsedHeight?: number;\n}\n\nexport function Plan({ children, collapsedHeight = DEFAULT_COLLAPSED_HEIGHT, className, ...props }: PlanProps) {\n const contextValue = useCollapsibleBox({ collapsedHeight });\n\n return (\n <PlanContext.Provider value={contextValue}>\n <div data-slot=\"plan\" className={cn('w-full overflow-hidden rounded-xl bg-card', className)} {...props}>\n {children}\n </div>\n </PlanContext.Provider>\n );\n}\n\nexport type PlanHeaderProps = ComponentProps<'div'>;\n\nexport function PlanHeader({ children, className, ...props }: PlanHeaderProps) {\n return (\n <div\n data-slot=\"plan-header\"\n className={cn('flex min-h-10 items-center justify-between gap-3 px-4 pt-3', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport type PlanLabelProps = ComponentProps<'div'>;\n\nexport function PlanLabel({ children = 'Plan', className, ...props }: PlanLabelProps) {\n return (\n <div data-slot=\"plan-label\" className={cn('flex min-w-0 items-center gap-2', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <ClipboardList />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n );\n}\n\nexport type PlanHeaderActionsProps = ComponentProps<'div'>;\n\nexport function PlanHeaderActions({ children, className, ...props }: PlanHeaderActionsProps) {\n return (\n <div data-slot=\"plan-header-actions\" className={cn('flex shrink-0 items-center gap-1', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanStatusProps = Omit<ComponentProps<typeof Badge>, 'icon' | 'indicator' | 'size'>;\n\nexport function PlanStatus({ children, variant = 'neutral', ...props }: PlanStatusProps) {\n return (\n <Badge {...props} variant={variant} size=\"xs\" indicator=\"dot\">\n {children}\n </Badge>\n );\n}\n\nexport interface PlanCopyButtonProps extends Omit<\n ComponentProps<typeof Button>,\n 'aria-label' | 'children' | 'onClick' | 'size' | 'tooltip' | 'type' | 'variant'\n> {\n content: string;\n}\n\nexport function PlanCopyButton({ content, ...props }: PlanCopyButtonProps) {\n const { isCopied, handleCopy } = useCopyToClipboard({\n text: content,\n copiedDuration: 1500,\n showToast: false,\n });\n\n return (\n <Button\n {...props}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Copy plan\"\n aria-label=\"Copy plan\"\n onClick={handleCopy}\n >\n {isCopied ? <CheckIcon /> : <CopyIcon />}\n </Button>\n );\n}\n\nexport type PlanBodyProps = ComponentProps<'div'>;\n\nexport function PlanBody({ children, className, ...props }: PlanBodyProps) {\n return (\n <div data-slot=\"plan-body\" className={cn('px-5 pt-4 pb-5', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanIntroProps = ComponentProps<'div'>;\n\nexport function PlanIntro({ children, className, ...props }: PlanIntroProps) {\n return (\n <div data-slot=\"plan-intro\" className={cn('mb-5 space-y-1', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface PlanTitleProps extends Omit<ComponentProps<typeof Txt>, 'as' | 'children' | 'variant'> {\n children: ReactNode;\n}\n\nexport function PlanTitle({ children, className, ...props }: PlanTitleProps) {\n return (\n <Txt {...props} as=\"h3\" variant=\"heading\" tone=\"ink\" className={className}>\n {children}\n </Txt>\n );\n}\n\nexport interface PlanPathProps extends Omit<\n ComponentProps<typeof Txt>,\n 'as' | 'children' | 'font' | 'title' | 'variant'\n> {\n children: string;\n}\n\nconst getFileName = (path: string) => {\n const segments = path.split(/[\\\\/]/).filter(Boolean);\n return segments[segments.length - 1] ?? path;\n};\n\nexport function PlanPath({ children, className, ...props }: PlanPathProps) {\n return (\n <Txt\n {...props}\n as=\"p\"\n variant=\"meta\"\n tone=\"muted\"\n font=\"mono\"\n title={children}\n className={cn('max-w-full truncate overflow-hidden', className)}\n >\n {getFileName(children)}\n </Txt>\n );\n}\n\nexport type PlanMainProps = ComponentProps<'div'>;\n\nexport function PlanMain({ children, className, ...props }: PlanMainProps) {\n return (\n <div data-slot=\"plan-main\" className={cn('relative', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface PlanContentProps extends Omit<ComponentProps<'div'>, 'children'> {\n children: string;\n}\n\nexport function PlanContent({ children, ...props }: PlanContentProps) {\n const state = usePlanContext();\n\n return (\n <CollapsibleBox data-slot=\"plan-content\" state={state} {...props}>\n <div className=\"[&_code]:bg-muted [&_h1]:text-title [&_h2]:text-heading [&_h3]:text-subheading [&_p]:text-body\">\n <MarkdownRenderer className=\"text-foreground\">{children}</MarkdownRenderer>\n </div>\n </CollapsibleBox>\n );\n}\n\nexport interface PlanFileProps extends Omit<ComponentProps<'div'>, 'children'> {\n children: string;\n}\n\nexport function PlanFile({ children, className, ...props }: PlanFileProps) {\n return (\n <div data-slot=\"plan-file\" className={className} {...props}>\n <Txt as=\"p\" variant=\"meta\" tone=\"muted\" className=\"mb-2\">\n Plan file\n </Txt>\n <Txt as=\"p\" variant=\"caption\" tone=\"ink\" font=\"mono\" className=\"break-all\">\n {children}\n </Txt>\n </div>\n );\n}\n\nexport type PlanControlsProps = ComponentProps<'div'>;\n\nexport function PlanControls({ children, className, ...props }: PlanControlsProps) {\n const hasActions = Boolean(children);\n\n return (\n <div\n data-slot=\"plan-controls\"\n className={cn('relative z-10 mt-4 flex justify-center empty:hidden', className)}\n {...props}\n >\n {hasActions ? (\n <div className=\"grid w-full max-w-sm grid-cols-[1fr_auto_1fr] items-center gap-2 px-10\">{children}</div>\n ) : (\n <PlanExpandButton />\n )}\n </div>\n );\n}\n\nexport type PlanActionGroupProps = ComponentProps<'div'>;\n\nexport function PlanActionGroup({ children, className, ...props }: PlanActionGroupProps) {\n return (\n <div data-slot=\"plan-action-group\" className={cn('flex justify-start gap-2 empty:hidden', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanExpandButtonProps = Omit<\n ComponentProps<typeof Button>,\n 'aria-label' | 'children' | 'onClick' | 'size' | 'type'\n>;\n\nexport function PlanExpandButton({ className, variant = 'default', ...props }: PlanExpandButtonProps) {\n const { isExpanded, isClipped, toggleExpanded } = usePlanContext();\n\n // Nothing to expand: the collapsed card already shows the whole plan.\n if (!isClipped && !isExpanded) return null;\n\n return (\n <Button\n {...props}\n className={cn('shrink-0 whitespace-nowrap', className)}\n type=\"button\"\n variant={variant}\n size=\"sm\"\n aria-label={isExpanded ? 'Collapse plan' : 'Expand plan'}\n onClick={toggleExpanded}\n icon={isExpanded ? <Minimize2 /> : <Maximize2 />}\n >\n {isExpanded ? 'Collapse plan' : 'Expand plan'}\n </Button>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-BgvXKTEM.js","sources":["../src/ds/components/ai/plan/plan.tsx"],"sourcesContent":["import { CheckIcon, ClipboardList, CopyIcon, Maximize2, Minimize2 } from 'lucide-react';\nimport { createContext, useContext } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { CollapsibleBox, DEFAULT_COLLAPSED_HEIGHT, useCollapsibleBox } from '@/ds/components/CollapsibleBox';\nimport type { CollapsibleBoxState } from '@/ds/components/CollapsibleBox';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\nimport { cn } from '@/lib/utils';\n\nconst PlanContext = createContext<CollapsibleBoxState | null>(null);\n\nconst usePlanContext = () => {\n const context = useContext(PlanContext);\n\n if (!context) {\n throw new Error('Plan compound components must be rendered inside <Plan>.');\n }\n\n return context;\n};\n\nexport interface PlanProps extends ComponentProps<'div'> {\n collapsedHeight?: number;\n}\n\nexport function Plan({ children, collapsedHeight = DEFAULT_COLLAPSED_HEIGHT, className, ...props }: PlanProps) {\n const contextValue = useCollapsibleBox({ collapsedHeight });\n\n return (\n <PlanContext.Provider value={contextValue}>\n <div data-slot=\"plan\" className={cn('w-full overflow-hidden rounded-xl bg-card', className)} {...props}>\n {children}\n </div>\n </PlanContext.Provider>\n );\n}\n\nexport type PlanHeaderProps = ComponentProps<'div'>;\n\nexport function PlanHeader({ children, className, ...props }: PlanHeaderProps) {\n return (\n <div\n data-slot=\"plan-header\"\n className={cn('flex min-h-10 items-center justify-between gap-3 px-4 pt-3', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport type PlanLabelProps = ComponentProps<'div'>;\n\nexport function PlanLabel({ children = 'Plan', className, ...props }: PlanLabelProps) {\n return (\n <div data-slot=\"plan-label\" className={cn('flex min-w-0 items-center gap-2', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <ClipboardList />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n );\n}\n\nexport type PlanHeaderActionsProps = ComponentProps<'div'>;\n\nexport function PlanHeaderActions({ children, className, ...props }: PlanHeaderActionsProps) {\n return (\n <div data-slot=\"plan-header-actions\" className={cn('flex shrink-0 items-center gap-1', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanStatusProps = Omit<ComponentProps<typeof Badge>, 'icon' | 'indicator' | 'size'>;\n\nexport function PlanStatus({ children, variant = 'neutral', ...props }: PlanStatusProps) {\n return (\n <Badge {...props} variant={variant} size=\"xs\" indicator=\"dot\">\n {children}\n </Badge>\n );\n}\n\nexport interface PlanCopyButtonProps extends Omit<\n ComponentProps<typeof Button>,\n 'aria-label' | 'children' | 'onClick' | 'size' | 'tooltip' | 'type' | 'variant'\n> {\n content: string;\n}\n\nexport function PlanCopyButton({ content, ...props }: PlanCopyButtonProps) {\n const { isCopied, handleCopy } = useCopyToClipboard({\n text: content,\n copiedDuration: 1500,\n showToast: false,\n });\n\n return (\n <Button\n {...props}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Copy plan\"\n aria-label=\"Copy plan\"\n onClick={handleCopy}\n >\n {isCopied ? <CheckIcon /> : <CopyIcon />}\n </Button>\n );\n}\n\nexport type PlanBodyProps = ComponentProps<'div'>;\n\nexport function PlanBody({ children, className, ...props }: PlanBodyProps) {\n return (\n <div data-slot=\"plan-body\" className={cn('px-5 pt-4 pb-5', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanIntroProps = ComponentProps<'div'>;\n\nexport function PlanIntro({ children, className, ...props }: PlanIntroProps) {\n return (\n <div data-slot=\"plan-intro\" className={cn('mb-5 space-y-1', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface PlanTitleProps extends Omit<ComponentProps<typeof Txt>, 'as' | 'children' | 'variant'> {\n children: ReactNode;\n}\n\nexport function PlanTitle({ children, className, ...props }: PlanTitleProps) {\n return (\n <Txt {...props} as=\"h3\" variant=\"heading\" tone=\"ink\" className={className}>\n {children}\n </Txt>\n );\n}\n\nexport interface PlanPathProps extends Omit<\n ComponentProps<typeof Txt>,\n 'as' | 'children' | 'font' | 'title' | 'variant'\n> {\n children: string;\n}\n\nconst getFileName = (path: string) => {\n const segments = path.split(/[\\\\/]/).filter(Boolean);\n return segments[segments.length - 1] ?? path;\n};\n\nexport function PlanPath({ children, className, ...props }: PlanPathProps) {\n return (\n <Txt\n {...props}\n as=\"p\"\n variant=\"meta\"\n tone=\"muted\"\n font=\"mono\"\n title={children}\n className={cn('max-w-full truncate overflow-hidden', className)}\n >\n {getFileName(children)}\n </Txt>\n );\n}\n\nexport type PlanMainProps = ComponentProps<'div'>;\n\nexport function PlanMain({ children, className, ...props }: PlanMainProps) {\n return (\n <div data-slot=\"plan-main\" className={cn('relative', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport interface PlanContentProps extends Omit<ComponentProps<'div'>, 'children'> {\n children: string;\n}\n\nexport function PlanContent({ children, ...props }: PlanContentProps) {\n const state = usePlanContext();\n\n return (\n <CollapsibleBox data-slot=\"plan-content\" state={state} {...props}>\n <div className=\"[&_code]:bg-muted [&_h1]:text-title [&_h2]:text-heading [&_h3]:text-subheading [&_p]:text-body\">\n <MarkdownRenderer className=\"text-foreground\">{children}</MarkdownRenderer>\n </div>\n </CollapsibleBox>\n );\n}\n\nexport interface PlanFileProps extends Omit<ComponentProps<'div'>, 'children'> {\n children: string;\n}\n\nexport function PlanFile({ children, className, ...props }: PlanFileProps) {\n return (\n <div data-slot=\"plan-file\" className={className} {...props}>\n <Txt as=\"p\" variant=\"meta\" tone=\"muted\" className=\"mb-2\">\n Plan file\n </Txt>\n <Txt as=\"p\" variant=\"caption\" tone=\"ink\" font=\"mono\" className=\"break-all\">\n {children}\n </Txt>\n </div>\n );\n}\n\nexport type PlanControlsProps = ComponentProps<'div'>;\n\nexport function PlanControls({ children, className, ...props }: PlanControlsProps) {\n const hasActions = Boolean(children);\n\n return (\n <div\n data-slot=\"plan-controls\"\n className={cn('relative z-10 mt-4 flex justify-center empty:hidden', className)}\n {...props}\n >\n {hasActions ? (\n <div className=\"grid w-full max-w-sm grid-cols-[1fr_auto_1fr] items-center gap-2 px-10\">{children}</div>\n ) : (\n <PlanExpandButton />\n )}\n </div>\n );\n}\n\nexport type PlanActionGroupProps = ComponentProps<'div'>;\n\nexport function PlanActionGroup({ children, className, ...props }: PlanActionGroupProps) {\n return (\n <div data-slot=\"plan-action-group\" className={cn('flex justify-start gap-2 empty:hidden', className)} {...props}>\n {children}\n </div>\n );\n}\n\nexport type PlanExpandButtonProps = Omit<\n ComponentProps<typeof Button>,\n 'aria-label' | 'children' | 'onClick' | 'size' | 'type'\n>;\n\nexport function PlanExpandButton({ className, variant = 'default', ...props }: PlanExpandButtonProps) {\n const { isExpanded, isClipped, toggleExpanded } = usePlanContext();\n\n // Nothing to expand: the collapsed card already shows the whole plan.\n if (!isClipped && !isExpanded) return null;\n\n return (\n <Button\n {...props}\n className={cn('shrink-0 whitespace-nowrap', className)}\n type=\"button\"\n variant={variant}\n size=\"sm\"\n aria-label={isExpanded ? 'Collapse plan' : 'Expand plan'}\n onClick={toggleExpanded}\n icon={isExpanded ? <Minimize2 /> : <Maximize2 />}\n >\n {isExpanded ? 'Collapse plan' : 'Expand plan'}\n </Button>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ const inputSurfaceAndFocusStyle = "bg-field shadow-input text-foreground disable
23
23
  const inputSurfaceAndFocusWithinStyle = "bg-field shadow-input text-foreground has-[:disabled]:bg-field-disabled " + surfaceTintHoverWithin + " outline-hidden focus-within:outline-hidden " + fieldRimFocusWithin;
24
24
  const controlTintHover = "[&:hover:not(:active):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]";
25
25
  const controlTintActive = "[&:active:not(:disabled)]:[--surface-tint:var(--fill)]";
26
- const raisedControlSurfaceStyle = "bg-card shadow-raised text-foreground " + controlTintHover + " " + controlTintActive + " " + surfaceRimFocus;
26
+ const raisedControlSurfaceStyle = "bg-field shadow-input text-foreground " + controlTintHover + " " + controlTintActive + " " + surfaceRimFocus;
27
27
  function resolveFieldVariant(variant) {
28
28
  return variant === "filled" ? "default" : variant;
29
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"form-element.cjs.js","sources":["../../src/ds/primitives/form-element.ts"],"sourcesContent":["// Disabled controls resolve to dedicated muted roles rather than a blanket opacity:\n// an opacity wash inherits whatever sits behind the control, so the same disabled\n// field clears contrast on one surface and fails on another. The `not-disabled:`\n// guards on each variant keep hover and active fills from painting over these.\nexport const sharedFormElementDisabledStyle = 'disabled:cursor-not-allowed disabled:text-muted-foreground';\n\n// Focus indicator for the (green-less) input family. Instead of a heavy ring we\n// reinforce the existing 1px border: on focus it brightens to a translucent\n// `foreground` (theme-aware — light on dark surfaces, dark on light) that clears\n// WCAG 1.4.11 non-text contrast (3:1) on any surface, where the resting `border`\n// token alone does not. `focus-visible` for the bare control, `focus-within` for\n// wrapper variants (InputGroup) whose focus lives on a nested input.\nexport const inputFocusBorderVisible = 'focus-visible:border-border-focus';\nexport const inputFocusBorderWithin = 'focus-within:border-border-focus';\n\n// Canonical focus indicator for a bare interactive control (Button, etc.) in the\n// non-accent input/border language: suppress the browser outline and let the 1px\n// border brighten to the same translucent neutral the input family uses. This is\n// what unifies button focus with input focus (no green accent ring). Wrappers\n// whose focus lives on a nested control use `inputFocusBorderWithin` instead.\nexport const controlFocusBorderVisible = `outline-hidden focus-visible:outline-hidden ${inputFocusBorderVisible}`;\n\n// A field is the same material as a card: `bg-card` plus `shadow-raised`, which\n// carries the 1px rim, so a field draws no border of its own. That is what makes a\n// filter input and the panel beside it read as one system — in light the field is\n// white on the off-white canvas, in dark it is the same step above it.\n//\n// Hover washes the fill, focus repaints the rim. Both go through `shadow-raised`:\n// an `<input>` cannot carry a pseudo-element, so `--surface-tint` reaches into an\n// inset layer of that utility and gives a field the same state layer a `Card` gets\n// from `state-layer` — the rung a filter chip's segments already wear, which is the\n// weight a resting field should move by. Brightening the rim on hover instead made\n// every field in a form announce the pointer: the boundary is the loudest part of a\n// surface that has no border of its own, so it is reserved for focus, where being\n// unmissable is the point. Disabled is the exception that drops the card fill for\n// the lowest translucent rung, which is how a disabled field reads as recessed.\n//\n// Focus repaints that rim to `--border-focus`, the one focus colour, rather than\n// drawing an outline beside it. Wrappers whose focus lives on a nested control\n// (InputGroup, a chip) take the `within` flavour.\n//\n// Caller appends a radius (`rounded-full` for single-line inputs, `rounded-xl` for\n// textareas).\n// `:not([data-popup-open])` because a trigger's open rung is a plain attribute\n// selector and would otherwise lose to this compound one while the pointer is\n// still on the trigger that opened the popup.\nconst surfaceTintHover =\n '[&:hover:not(:focus-visible):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]';\nexport const surfaceRimFocus = 'focus-visible:outline-hidden focus-visible:[--surface-rim:var(--border-focus)]';\n\n// The wrapper itself is never `:disabled` — the control it wraps is — so both\n// guards have to ask about descendants.\nconst surfaceTintHoverWithin = '[&:hover:not(:focus-within):not(:has(:disabled))]:[--surface-tint:var(--fill-subtle)]';\nconst fieldRimFocus = 'focus-visible:outline-hidden focus-visible:[--surface-rim:var(--field-rim-focus)]';\nconst fieldRimFocusWithin = 'focus-within:[--surface-rim:var(--field-rim-focus)]';\nexport const fieldErrorRim =\n 'aria-invalid:[--field-rim:var(--destructive-indicator)] aria-invalid:[--field-rim-focus:var(--destructive-indicator)]';\nexport const fieldErrorRimWithin =\n 'has-[[aria-invalid=true]]:[--field-rim:var(--destructive-indicator)] has-[[aria-invalid=true]]:[--field-rim-focus:var(--destructive-indicator)]';\nexport function deprecatedErrorAria(error: boolean | undefined): { 'aria-invalid'?: true } {\n return error ? { 'aria-invalid': true } : {};\n}\nexport const fieldTriggerErrorBorder =\n 'aria-invalid:border-destructive-indicator aria-invalid:hover:border-destructive-indicator aria-invalid:focus-visible:border-destructive-indicator';\nexport const fieldTriggerStyle =\n 'bg-field shadow-input ' +\n fieldRimFocus +\n ' disabled:bg-field-disabled aria-disabled:bg-field-disabled data-[disabled]:bg-field-disabled aria-invalid:[--field-rim:var(--destructive-indicator)] aria-invalid:[--field-rim-focus:var(--destructive-indicator)]';\n\n// Width of a select/combobox trigger: fills its field unless an ancestor that owns\n// control sizing (SettingsRow) sets `--field-width` / `--field-shrink`. A width class\n// passed by the caller still wins, since `cn` drops the conflicting default.\nexport const fieldTriggerWidthStyle = 'w-(--field-width,100%) shrink-(--field-shrink,1)';\n\nexport const inputSurfaceAndFocusStyle =\n 'bg-field shadow-input text-foreground disabled:bg-field-disabled ' +\n surfaceTintHover +\n ' outline-hidden focus-visible:outline-hidden ' +\n fieldRimFocus;\n\nexport const inputSurfaceAndFocusWithinStyle =\n 'bg-field shadow-input text-foreground has-[:disabled]:bg-field-disabled ' +\n surfaceTintHoverWithin +\n ' outline-hidden focus-within:outline-hidden ' +\n fieldRimFocusWithin;\n\n// The same material, for a neutral control that is a button rather than a field: `Button`'s\n// `default` variant, and with it every trigger built on it (Select, Combobox, DateTimePicker).\n// A filled neutral control is one material across the system — a `md` input beside a `md`\n// button had two resting fills, `--card` and the 6% `--fill` rung, and read as two systems.\n//\n// A button answers the pointer harder than a field does: a field washes on hover only\n// (its rim is reserved for focus), a button washes on hover and again on press. Both go\n// through `--surface-tint` for the reason above it — an element with a fill cannot carry a\n// pseudo-element state layer. `:not(:active)` on the hover guard keeps the two off each\n// other's specificity: they are both arbitrary property setters, so whichever matched last\n// would otherwise decide the press.\nconst controlTintHover =\n '[&:hover:not(:active):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]';\nconst controlTintActive = '[&:active:not(:disabled)]:[--surface-tint:var(--fill)]';\n\nexport const raisedControlSurfaceStyle =\n 'bg-card shadow-raised text-foreground ' + controlTintHover + ' ' + controlTintActive + ' ' + surfaceRimFocus;\n\n// `filled` was an alias for `default` (both render the filled surface) and has been\n// removed from the variant set. An unknown value makes cva emit nothing for the\n// variant group, so a field would lose its surface entirely rather than fall back;\n// resolve it here instead. Drop this once no published consumer passes `filled`.\nexport type DeprecatedFilledVariant = 'filled';\n\nexport function resolveFieldVariant<TVariant extends string>(\n variant: TVariant | DeprecatedFilledVariant | null | undefined,\n): TVariant | 'default' | null | undefined {\n return variant === 'filled' ? 'default' : (variant as TVariant | null | undefined);\n}\n\n// Unstyled variant baseline — strips all chrome but still suppresses the\n// browser default focus ring so the field sits cleanly inside a styled parent.\nexport const unstyledFormElementStyle = 'border-0 bg-transparent outline-hidden focus-visible:outline-hidden';\n"],"names":[],"mappings":";;;;AAIO,MAAM,8BAAA,GAAiC;AAQvC,MAAM,uBAAA,GAA0B;AAChC,MAAM,sBAAA,GAAyB;AAO/B,MAAM,yBAAA,GAA4B,+CAA+C,uBAAuB,CAAA;AA0B/G,MAAM,gBAAA,GACJ,yGAAA;AACK,MAAM,eAAA,GAAkB;AAI/B,MAAM,sBAAA,GAAyB,uFAAA;AAC/B,MAAM,aAAA,GAAgB,mFAAA;AACtB,MAAM,mBAAA,GAAsB,qDAAA;AACrB,MAAM,aAAA,GACX;AACK,MAAM,mBAAA,GACX;AACK,SAAS,oBAAoB,KAAA,EAAuD;AACzF,EAAA,OAAO,KAAA,GAAQ,EAAE,cAAA,EAAgB,IAAA,KAAS,EAAC;AAC7C;AACO,MAAM,uBAAA,GACX;AACK,MAAM,iBAAA,GACX,2BACA,aAAA,GACA;AAKK,MAAM,sBAAA,GAAyB;AAE/B,MAAM,yBAAA,GACX,mEAAA,GACA,gBAAA,GACA,+CAAA,GACA;AAEK,MAAM,+BAAA,GACX,0EAAA,GACA,sBAAA,GACA,8CAAA,GACA;AAaF,MAAM,gBAAA,GACJ,kGAAA;AACF,MAAM,iBAAA,GAAoB,wDAAA;AAEnB,MAAM,yBAAA,GACX,wCAAA,GAA2C,gBAAA,GAAmB,GAAA,GAAM,oBAAoB,GAAA,GAAM;AAQzF,SAAS,oBACd,OAAA,EACyC;AACzC,EAAA,OAAO,OAAA,KAAY,WAAW,SAAA,GAAa,OAAA;AAC7C;AAIO,MAAM,wBAAA,GAA2B;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"form-element.cjs.js","sources":["../../src/ds/primitives/form-element.ts"],"sourcesContent":["// Disabled controls resolve to dedicated muted roles rather than a blanket opacity:\n// an opacity wash inherits whatever sits behind the control, so the same disabled\n// field clears contrast on one surface and fails on another. The `not-disabled:`\n// guards on each variant keep hover and active fills from painting over these.\nexport const sharedFormElementDisabledStyle = 'disabled:cursor-not-allowed disabled:text-muted-foreground';\n\n// Focus indicator for the (green-less) input family. Instead of a heavy ring we\n// reinforce the existing 1px border: on focus it brightens to a translucent\n// `foreground` (theme-aware — light on dark surfaces, dark on light) that clears\n// WCAG 1.4.11 non-text contrast (3:1) on any surface, where the resting `border`\n// token alone does not. `focus-visible` for the bare control, `focus-within` for\n// wrapper variants (InputGroup) whose focus lives on a nested input.\nexport const inputFocusBorderVisible = 'focus-visible:border-border-focus';\nexport const inputFocusBorderWithin = 'focus-within:border-border-focus';\n\n// Canonical focus indicator for a bare interactive control (Button, etc.) in the\n// non-accent input/border language: suppress the browser outline and let the 1px\n// border brighten to the same translucent neutral the input family uses. This is\n// what unifies button focus with input focus (no green accent ring). Wrappers\n// whose focus lives on a nested control use `inputFocusBorderWithin` instead.\nexport const controlFocusBorderVisible = `outline-hidden focus-visible:outline-hidden ${inputFocusBorderVisible}`;\n\n// A field is the same material as a card: `bg-card` plus `shadow-raised`, which\n// carries the 1px rim, so a field draws no border of its own. That is what makes a\n// filter input and the panel beside it read as one system — in light the field is\n// white on the off-white canvas, in dark it is the same step above it.\n//\n// Hover washes the fill, focus repaints the rim. Both go through `shadow-raised`:\n// an `<input>` cannot carry a pseudo-element, so `--surface-tint` reaches into an\n// inset layer of that utility and gives a field the same state layer a `Card` gets\n// from `state-layer` — the rung a filter chip's segments already wear, which is the\n// weight a resting field should move by. Brightening the rim on hover instead made\n// every field in a form announce the pointer: the boundary is the loudest part of a\n// surface that has no border of its own, so it is reserved for focus, where being\n// unmissable is the point. Disabled is the exception that drops the card fill for\n// the lowest translucent rung, which is how a disabled field reads as recessed.\n//\n// Focus repaints that rim to `--border-focus`, the one focus colour, rather than\n// drawing an outline beside it. Wrappers whose focus lives on a nested control\n// (InputGroup, a chip) take the `within` flavour.\n//\n// Caller appends a radius (`rounded-full` for single-line inputs, `rounded-xl` for\n// textareas).\n// `:not([data-popup-open])` because a trigger's open rung is a plain attribute\n// selector and would otherwise lose to this compound one while the pointer is\n// still on the trigger that opened the popup.\nconst surfaceTintHover =\n '[&:hover:not(:focus-visible):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]';\nexport const surfaceRimFocus = 'focus-visible:outline-hidden focus-visible:[--surface-rim:var(--border-focus)]';\n\n// The wrapper itself is never `:disabled` — the control it wraps is — so both\n// guards have to ask about descendants.\nconst surfaceTintHoverWithin = '[&:hover:not(:focus-within):not(:has(:disabled))]:[--surface-tint:var(--fill-subtle)]';\nconst fieldRimFocus = 'focus-visible:outline-hidden focus-visible:[--surface-rim:var(--field-rim-focus)]';\nconst fieldRimFocusWithin = 'focus-within:[--surface-rim:var(--field-rim-focus)]';\nexport const fieldErrorRim =\n 'aria-invalid:[--field-rim:var(--destructive-indicator)] aria-invalid:[--field-rim-focus:var(--destructive-indicator)]';\nexport const fieldErrorRimWithin =\n 'has-[[aria-invalid=true]]:[--field-rim:var(--destructive-indicator)] has-[[aria-invalid=true]]:[--field-rim-focus:var(--destructive-indicator)]';\nexport function deprecatedErrorAria(error: boolean | undefined): { 'aria-invalid'?: true } {\n return error ? { 'aria-invalid': true } : {};\n}\nexport const fieldTriggerErrorBorder =\n 'aria-invalid:border-destructive-indicator aria-invalid:hover:border-destructive-indicator aria-invalid:focus-visible:border-destructive-indicator';\nexport const fieldTriggerStyle =\n 'bg-field shadow-input ' +\n fieldRimFocus +\n ' disabled:bg-field-disabled aria-disabled:bg-field-disabled data-[disabled]:bg-field-disabled aria-invalid:[--field-rim:var(--destructive-indicator)] aria-invalid:[--field-rim-focus:var(--destructive-indicator)]';\n\n// Width of a select/combobox trigger: fills its field unless an ancestor that owns\n// control sizing (SettingsRow) sets `--field-width` / `--field-shrink`. A width class\n// passed by the caller still wins, since `cn` drops the conflicting default.\nexport const fieldTriggerWidthStyle = 'w-(--field-width,100%) shrink-(--field-shrink,1)';\n\nexport const inputSurfaceAndFocusStyle =\n 'bg-field shadow-input text-foreground disabled:bg-field-disabled ' +\n surfaceTintHover +\n ' outline-hidden focus-visible:outline-hidden ' +\n fieldRimFocus;\n\nexport const inputSurfaceAndFocusWithinStyle =\n 'bg-field shadow-input text-foreground has-[:disabled]:bg-field-disabled ' +\n surfaceTintHoverWithin +\n ' outline-hidden focus-within:outline-hidden ' +\n fieldRimFocusWithin;\n\n// The same material, for a neutral control that is a button rather than a field: `Button`'s\n// `default` variant, and with it every trigger built on it (Select, Combobox, DateTimePicker).\n// A filled neutral control is one material across the system — a `md` input beside a `md`\n// button had two resting fills, `--card` and the 6% `--fill` rung, and read as two systems.\n//\n// A button answers the pointer harder than a field does: a field washes on hover only\n// (its rim is reserved for focus), a button washes on hover and again on press. Both go\n// through `--surface-tint` for the reason above it — an element with a fill cannot carry a\n// pseudo-element state layer. `:not(:active)` on the hover guard keeps the two off each\n// other's specificity: they are both arbitrary property setters, so whichever matched last\n// would otherwise decide the press.\nconst controlTintHover =\n '[&:hover:not(:active):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]';\nconst controlTintActive = '[&:active:not(:disabled)]:[--surface-tint:var(--fill)]';\n\nexport const raisedControlSurfaceStyle =\n 'bg-field shadow-input text-foreground ' + controlTintHover + ' ' + controlTintActive + ' ' + surfaceRimFocus;\n\n// `filled` was an alias for `default` (both render the filled surface) and has been\n// removed from the variant set. An unknown value makes cva emit nothing for the\n// variant group, so a field would lose its surface entirely rather than fall back;\n// resolve it here instead. Drop this once no published consumer passes `filled`.\nexport type DeprecatedFilledVariant = 'filled';\n\nexport function resolveFieldVariant<TVariant extends string>(\n variant: TVariant | DeprecatedFilledVariant | null | undefined,\n): TVariant | 'default' | null | undefined {\n return variant === 'filled' ? 'default' : (variant as TVariant | null | undefined);\n}\n\n// Unstyled variant baseline — strips all chrome but still suppresses the\n// browser default focus ring so the field sits cleanly inside a styled parent.\nexport const unstyledFormElementStyle = 'border-0 bg-transparent outline-hidden focus-visible:outline-hidden';\n"],"names":[],"mappings":";;;;AAIO,MAAM,8BAAA,GAAiC;AAQvC,MAAM,uBAAA,GAA0B;AAChC,MAAM,sBAAA,GAAyB;AAO/B,MAAM,yBAAA,GAA4B,+CAA+C,uBAAuB,CAAA;AA0B/G,MAAM,gBAAA,GACJ,yGAAA;AACK,MAAM,eAAA,GAAkB;AAI/B,MAAM,sBAAA,GAAyB,uFAAA;AAC/B,MAAM,aAAA,GAAgB,mFAAA;AACtB,MAAM,mBAAA,GAAsB,qDAAA;AACrB,MAAM,aAAA,GACX;AACK,MAAM,mBAAA,GACX;AACK,SAAS,oBAAoB,KAAA,EAAuD;AACzF,EAAA,OAAO,KAAA,GAAQ,EAAE,cAAA,EAAgB,IAAA,KAAS,EAAC;AAC7C;AACO,MAAM,uBAAA,GACX;AACK,MAAM,iBAAA,GACX,2BACA,aAAA,GACA;AAKK,MAAM,sBAAA,GAAyB;AAE/B,MAAM,yBAAA,GACX,mEAAA,GACA,gBAAA,GACA,+CAAA,GACA;AAEK,MAAM,+BAAA,GACX,0EAAA,GACA,sBAAA,GACA,8CAAA,GACA;AAaF,MAAM,gBAAA,GACJ,kGAAA;AACF,MAAM,iBAAA,GAAoB,wDAAA;AAEnB,MAAM,yBAAA,GACX,wCAAA,GAA2C,gBAAA,GAAmB,GAAA,GAAM,oBAAoB,GAAA,GAAM;AAQzF,SAAS,oBACd,OAAA,EACyC;AACzC,EAAA,OAAO,OAAA,KAAY,WAAW,SAAA,GAAa,OAAA;AAC7C;AAIO,MAAM,wBAAA,GAA2B;;;;;;;;;;;;;;;;;;;"}
@@ -19,7 +19,7 @@ const inputSurfaceAndFocusStyle = "bg-field shadow-input text-foreground disable
19
19
  const inputSurfaceAndFocusWithinStyle = "bg-field shadow-input text-foreground has-[:disabled]:bg-field-disabled " + surfaceTintHoverWithin + " outline-hidden focus-within:outline-hidden " + fieldRimFocusWithin;
20
20
  const controlTintHover = "[&:hover:not(:active):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]";
21
21
  const controlTintActive = "[&:active:not(:disabled)]:[--surface-tint:var(--fill)]";
22
- const raisedControlSurfaceStyle = "bg-card shadow-raised text-foreground " + controlTintHover + " " + controlTintActive + " " + surfaceRimFocus;
22
+ const raisedControlSurfaceStyle = "bg-field shadow-input text-foreground " + controlTintHover + " " + controlTintActive + " " + surfaceRimFocus;
23
23
  function resolveFieldVariant(variant) {
24
24
  return variant === "filled" ? "default" : variant;
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"form-element.es.js","sources":["../../src/ds/primitives/form-element.ts"],"sourcesContent":["// Disabled controls resolve to dedicated muted roles rather than a blanket opacity:\n// an opacity wash inherits whatever sits behind the control, so the same disabled\n// field clears contrast on one surface and fails on another. The `not-disabled:`\n// guards on each variant keep hover and active fills from painting over these.\nexport const sharedFormElementDisabledStyle = 'disabled:cursor-not-allowed disabled:text-muted-foreground';\n\n// Focus indicator for the (green-less) input family. Instead of a heavy ring we\n// reinforce the existing 1px border: on focus it brightens to a translucent\n// `foreground` (theme-aware — light on dark surfaces, dark on light) that clears\n// WCAG 1.4.11 non-text contrast (3:1) on any surface, where the resting `border`\n// token alone does not. `focus-visible` for the bare control, `focus-within` for\n// wrapper variants (InputGroup) whose focus lives on a nested input.\nexport const inputFocusBorderVisible = 'focus-visible:border-border-focus';\nexport const inputFocusBorderWithin = 'focus-within:border-border-focus';\n\n// Canonical focus indicator for a bare interactive control (Button, etc.) in the\n// non-accent input/border language: suppress the browser outline and let the 1px\n// border brighten to the same translucent neutral the input family uses. This is\n// what unifies button focus with input focus (no green accent ring). Wrappers\n// whose focus lives on a nested control use `inputFocusBorderWithin` instead.\nexport const controlFocusBorderVisible = `outline-hidden focus-visible:outline-hidden ${inputFocusBorderVisible}`;\n\n// A field is the same material as a card: `bg-card` plus `shadow-raised`, which\n// carries the 1px rim, so a field draws no border of its own. That is what makes a\n// filter input and the panel beside it read as one system — in light the field is\n// white on the off-white canvas, in dark it is the same step above it.\n//\n// Hover washes the fill, focus repaints the rim. Both go through `shadow-raised`:\n// an `<input>` cannot carry a pseudo-element, so `--surface-tint` reaches into an\n// inset layer of that utility and gives a field the same state layer a `Card` gets\n// from `state-layer` — the rung a filter chip's segments already wear, which is the\n// weight a resting field should move by. Brightening the rim on hover instead made\n// every field in a form announce the pointer: the boundary is the loudest part of a\n// surface that has no border of its own, so it is reserved for focus, where being\n// unmissable is the point. Disabled is the exception that drops the card fill for\n// the lowest translucent rung, which is how a disabled field reads as recessed.\n//\n// Focus repaints that rim to `--border-focus`, the one focus colour, rather than\n// drawing an outline beside it. Wrappers whose focus lives on a nested control\n// (InputGroup, a chip) take the `within` flavour.\n//\n// Caller appends a radius (`rounded-full` for single-line inputs, `rounded-xl` for\n// textareas).\n// `:not([data-popup-open])` because a trigger's open rung is a plain attribute\n// selector and would otherwise lose to this compound one while the pointer is\n// still on the trigger that opened the popup.\nconst surfaceTintHover =\n '[&:hover:not(:focus-visible):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]';\nexport const surfaceRimFocus = 'focus-visible:outline-hidden focus-visible:[--surface-rim:var(--border-focus)]';\n\n// The wrapper itself is never `:disabled` — the control it wraps is — so both\n// guards have to ask about descendants.\nconst surfaceTintHoverWithin = '[&:hover:not(:focus-within):not(:has(:disabled))]:[--surface-tint:var(--fill-subtle)]';\nconst fieldRimFocus = 'focus-visible:outline-hidden focus-visible:[--surface-rim:var(--field-rim-focus)]';\nconst fieldRimFocusWithin = 'focus-within:[--surface-rim:var(--field-rim-focus)]';\nexport const fieldErrorRim =\n 'aria-invalid:[--field-rim:var(--destructive-indicator)] aria-invalid:[--field-rim-focus:var(--destructive-indicator)]';\nexport const fieldErrorRimWithin =\n 'has-[[aria-invalid=true]]:[--field-rim:var(--destructive-indicator)] has-[[aria-invalid=true]]:[--field-rim-focus:var(--destructive-indicator)]';\nexport function deprecatedErrorAria(error: boolean | undefined): { 'aria-invalid'?: true } {\n return error ? { 'aria-invalid': true } : {};\n}\nexport const fieldTriggerErrorBorder =\n 'aria-invalid:border-destructive-indicator aria-invalid:hover:border-destructive-indicator aria-invalid:focus-visible:border-destructive-indicator';\nexport const fieldTriggerStyle =\n 'bg-field shadow-input ' +\n fieldRimFocus +\n ' disabled:bg-field-disabled aria-disabled:bg-field-disabled data-[disabled]:bg-field-disabled aria-invalid:[--field-rim:var(--destructive-indicator)] aria-invalid:[--field-rim-focus:var(--destructive-indicator)]';\n\n// Width of a select/combobox trigger: fills its field unless an ancestor that owns\n// control sizing (SettingsRow) sets `--field-width` / `--field-shrink`. A width class\n// passed by the caller still wins, since `cn` drops the conflicting default.\nexport const fieldTriggerWidthStyle = 'w-(--field-width,100%) shrink-(--field-shrink,1)';\n\nexport const inputSurfaceAndFocusStyle =\n 'bg-field shadow-input text-foreground disabled:bg-field-disabled ' +\n surfaceTintHover +\n ' outline-hidden focus-visible:outline-hidden ' +\n fieldRimFocus;\n\nexport const inputSurfaceAndFocusWithinStyle =\n 'bg-field shadow-input text-foreground has-[:disabled]:bg-field-disabled ' +\n surfaceTintHoverWithin +\n ' outline-hidden focus-within:outline-hidden ' +\n fieldRimFocusWithin;\n\n// The same material, for a neutral control that is a button rather than a field: `Button`'s\n// `default` variant, and with it every trigger built on it (Select, Combobox, DateTimePicker).\n// A filled neutral control is one material across the system — a `md` input beside a `md`\n// button had two resting fills, `--card` and the 6% `--fill` rung, and read as two systems.\n//\n// A button answers the pointer harder than a field does: a field washes on hover only\n// (its rim is reserved for focus), a button washes on hover and again on press. Both go\n// through `--surface-tint` for the reason above it — an element with a fill cannot carry a\n// pseudo-element state layer. `:not(:active)` on the hover guard keeps the two off each\n// other's specificity: they are both arbitrary property setters, so whichever matched last\n// would otherwise decide the press.\nconst controlTintHover =\n '[&:hover:not(:active):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]';\nconst controlTintActive = '[&:active:not(:disabled)]:[--surface-tint:var(--fill)]';\n\nexport const raisedControlSurfaceStyle =\n 'bg-card shadow-raised text-foreground ' + controlTintHover + ' ' + controlTintActive + ' ' + surfaceRimFocus;\n\n// `filled` was an alias for `default` (both render the filled surface) and has been\n// removed from the variant set. An unknown value makes cva emit nothing for the\n// variant group, so a field would lose its surface entirely rather than fall back;\n// resolve it here instead. Drop this once no published consumer passes `filled`.\nexport type DeprecatedFilledVariant = 'filled';\n\nexport function resolveFieldVariant<TVariant extends string>(\n variant: TVariant | DeprecatedFilledVariant | null | undefined,\n): TVariant | 'default' | null | undefined {\n return variant === 'filled' ? 'default' : (variant as TVariant | null | undefined);\n}\n\n// Unstyled variant baseline — strips all chrome but still suppresses the\n// browser default focus ring so the field sits cleanly inside a styled parent.\nexport const unstyledFormElementStyle = 'border-0 bg-transparent outline-hidden focus-visible:outline-hidden';\n"],"names":[],"mappings":"AAIO,MAAM,8BAAA,GAAiC;AAQvC,MAAM,uBAAA,GAA0B;AAChC,MAAM,sBAAA,GAAyB;AAO/B,MAAM,yBAAA,GAA4B,+CAA+C,uBAAuB,CAAA;AA0B/G,MAAM,gBAAA,GACJ,yGAAA;AACK,MAAM,eAAA,GAAkB;AAI/B,MAAM,sBAAA,GAAyB,uFAAA;AAC/B,MAAM,aAAA,GAAgB,mFAAA;AACtB,MAAM,mBAAA,GAAsB,qDAAA;AACrB,MAAM,aAAA,GACX;AACK,MAAM,mBAAA,GACX;AACK,SAAS,oBAAoB,KAAA,EAAuD;AACzF,EAAA,OAAO,KAAA,GAAQ,EAAE,cAAA,EAAgB,IAAA,KAAS,EAAC;AAC7C;AACO,MAAM,uBAAA,GACX;AACK,MAAM,iBAAA,GACX,2BACA,aAAA,GACA;AAKK,MAAM,sBAAA,GAAyB;AAE/B,MAAM,yBAAA,GACX,mEAAA,GACA,gBAAA,GACA,+CAAA,GACA;AAEK,MAAM,+BAAA,GACX,0EAAA,GACA,sBAAA,GACA,8CAAA,GACA;AAaF,MAAM,gBAAA,GACJ,kGAAA;AACF,MAAM,iBAAA,GAAoB,wDAAA;AAEnB,MAAM,yBAAA,GACX,wCAAA,GAA2C,gBAAA,GAAmB,GAAA,GAAM,oBAAoB,GAAA,GAAM;AAQzF,SAAS,oBACd,OAAA,EACyC;AACzC,EAAA,OAAO,OAAA,KAAY,WAAW,SAAA,GAAa,OAAA;AAC7C;AAIO,MAAM,wBAAA,GAA2B;;;;"}
1
+ {"version":3,"file":"form-element.es.js","sources":["../../src/ds/primitives/form-element.ts"],"sourcesContent":["// Disabled controls resolve to dedicated muted roles rather than a blanket opacity:\n// an opacity wash inherits whatever sits behind the control, so the same disabled\n// field clears contrast on one surface and fails on another. The `not-disabled:`\n// guards on each variant keep hover and active fills from painting over these.\nexport const sharedFormElementDisabledStyle = 'disabled:cursor-not-allowed disabled:text-muted-foreground';\n\n// Focus indicator for the (green-less) input family. Instead of a heavy ring we\n// reinforce the existing 1px border: on focus it brightens to a translucent\n// `foreground` (theme-aware — light on dark surfaces, dark on light) that clears\n// WCAG 1.4.11 non-text contrast (3:1) on any surface, where the resting `border`\n// token alone does not. `focus-visible` for the bare control, `focus-within` for\n// wrapper variants (InputGroup) whose focus lives on a nested input.\nexport const inputFocusBorderVisible = 'focus-visible:border-border-focus';\nexport const inputFocusBorderWithin = 'focus-within:border-border-focus';\n\n// Canonical focus indicator for a bare interactive control (Button, etc.) in the\n// non-accent input/border language: suppress the browser outline and let the 1px\n// border brighten to the same translucent neutral the input family uses. This is\n// what unifies button focus with input focus (no green accent ring). Wrappers\n// whose focus lives on a nested control use `inputFocusBorderWithin` instead.\nexport const controlFocusBorderVisible = `outline-hidden focus-visible:outline-hidden ${inputFocusBorderVisible}`;\n\n// A field is the same material as a card: `bg-card` plus `shadow-raised`, which\n// carries the 1px rim, so a field draws no border of its own. That is what makes a\n// filter input and the panel beside it read as one system — in light the field is\n// white on the off-white canvas, in dark it is the same step above it.\n//\n// Hover washes the fill, focus repaints the rim. Both go through `shadow-raised`:\n// an `<input>` cannot carry a pseudo-element, so `--surface-tint` reaches into an\n// inset layer of that utility and gives a field the same state layer a `Card` gets\n// from `state-layer` — the rung a filter chip's segments already wear, which is the\n// weight a resting field should move by. Brightening the rim on hover instead made\n// every field in a form announce the pointer: the boundary is the loudest part of a\n// surface that has no border of its own, so it is reserved for focus, where being\n// unmissable is the point. Disabled is the exception that drops the card fill for\n// the lowest translucent rung, which is how a disabled field reads as recessed.\n//\n// Focus repaints that rim to `--border-focus`, the one focus colour, rather than\n// drawing an outline beside it. Wrappers whose focus lives on a nested control\n// (InputGroup, a chip) take the `within` flavour.\n//\n// Caller appends a radius (`rounded-full` for single-line inputs, `rounded-xl` for\n// textareas).\n// `:not([data-popup-open])` because a trigger's open rung is a plain attribute\n// selector and would otherwise lose to this compound one while the pointer is\n// still on the trigger that opened the popup.\nconst surfaceTintHover =\n '[&:hover:not(:focus-visible):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]';\nexport const surfaceRimFocus = 'focus-visible:outline-hidden focus-visible:[--surface-rim:var(--border-focus)]';\n\n// The wrapper itself is never `:disabled` — the control it wraps is — so both\n// guards have to ask about descendants.\nconst surfaceTintHoverWithin = '[&:hover:not(:focus-within):not(:has(:disabled))]:[--surface-tint:var(--fill-subtle)]';\nconst fieldRimFocus = 'focus-visible:outline-hidden focus-visible:[--surface-rim:var(--field-rim-focus)]';\nconst fieldRimFocusWithin = 'focus-within:[--surface-rim:var(--field-rim-focus)]';\nexport const fieldErrorRim =\n 'aria-invalid:[--field-rim:var(--destructive-indicator)] aria-invalid:[--field-rim-focus:var(--destructive-indicator)]';\nexport const fieldErrorRimWithin =\n 'has-[[aria-invalid=true]]:[--field-rim:var(--destructive-indicator)] has-[[aria-invalid=true]]:[--field-rim-focus:var(--destructive-indicator)]';\nexport function deprecatedErrorAria(error: boolean | undefined): { 'aria-invalid'?: true } {\n return error ? { 'aria-invalid': true } : {};\n}\nexport const fieldTriggerErrorBorder =\n 'aria-invalid:border-destructive-indicator aria-invalid:hover:border-destructive-indicator aria-invalid:focus-visible:border-destructive-indicator';\nexport const fieldTriggerStyle =\n 'bg-field shadow-input ' +\n fieldRimFocus +\n ' disabled:bg-field-disabled aria-disabled:bg-field-disabled data-[disabled]:bg-field-disabled aria-invalid:[--field-rim:var(--destructive-indicator)] aria-invalid:[--field-rim-focus:var(--destructive-indicator)]';\n\n// Width of a select/combobox trigger: fills its field unless an ancestor that owns\n// control sizing (SettingsRow) sets `--field-width` / `--field-shrink`. A width class\n// passed by the caller still wins, since `cn` drops the conflicting default.\nexport const fieldTriggerWidthStyle = 'w-(--field-width,100%) shrink-(--field-shrink,1)';\n\nexport const inputSurfaceAndFocusStyle =\n 'bg-field shadow-input text-foreground disabled:bg-field-disabled ' +\n surfaceTintHover +\n ' outline-hidden focus-visible:outline-hidden ' +\n fieldRimFocus;\n\nexport const inputSurfaceAndFocusWithinStyle =\n 'bg-field shadow-input text-foreground has-[:disabled]:bg-field-disabled ' +\n surfaceTintHoverWithin +\n ' outline-hidden focus-within:outline-hidden ' +\n fieldRimFocusWithin;\n\n// The same material, for a neutral control that is a button rather than a field: `Button`'s\n// `default` variant, and with it every trigger built on it (Select, Combobox, DateTimePicker).\n// A filled neutral control is one material across the system — a `md` input beside a `md`\n// button had two resting fills, `--card` and the 6% `--fill` rung, and read as two systems.\n//\n// A button answers the pointer harder than a field does: a field washes on hover only\n// (its rim is reserved for focus), a button washes on hover and again on press. Both go\n// through `--surface-tint` for the reason above it — an element with a fill cannot carry a\n// pseudo-element state layer. `:not(:active)` on the hover guard keeps the two off each\n// other's specificity: they are both arbitrary property setters, so whichever matched last\n// would otherwise decide the press.\nconst controlTintHover =\n '[&:hover:not(:active):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]';\nconst controlTintActive = '[&:active:not(:disabled)]:[--surface-tint:var(--fill)]';\n\nexport const raisedControlSurfaceStyle =\n 'bg-field shadow-input text-foreground ' + controlTintHover + ' ' + controlTintActive + ' ' + surfaceRimFocus;\n\n// `filled` was an alias for `default` (both render the filled surface) and has been\n// removed from the variant set. An unknown value makes cva emit nothing for the\n// variant group, so a field would lose its surface entirely rather than fall back;\n// resolve it here instead. Drop this once no published consumer passes `filled`.\nexport type DeprecatedFilledVariant = 'filled';\n\nexport function resolveFieldVariant<TVariant extends string>(\n variant: TVariant | DeprecatedFilledVariant | null | undefined,\n): TVariant | 'default' | null | undefined {\n return variant === 'filled' ? 'default' : (variant as TVariant | null | undefined);\n}\n\n// Unstyled variant baseline — strips all chrome but still suppresses the\n// browser default focus ring so the field sits cleanly inside a styled parent.\nexport const unstyledFormElementStyle = 'border-0 bg-transparent outline-hidden focus-visible:outline-hidden';\n"],"names":[],"mappings":"AAIO,MAAM,8BAAA,GAAiC;AAQvC,MAAM,uBAAA,GAA0B;AAChC,MAAM,sBAAA,GAAyB;AAO/B,MAAM,yBAAA,GAA4B,+CAA+C,uBAAuB,CAAA;AA0B/G,MAAM,gBAAA,GACJ,yGAAA;AACK,MAAM,eAAA,GAAkB;AAI/B,MAAM,sBAAA,GAAyB,uFAAA;AAC/B,MAAM,aAAA,GAAgB,mFAAA;AACtB,MAAM,mBAAA,GAAsB,qDAAA;AACrB,MAAM,aAAA,GACX;AACK,MAAM,mBAAA,GACX;AACK,SAAS,oBAAoB,KAAA,EAAuD;AACzF,EAAA,OAAO,KAAA,GAAQ,EAAE,cAAA,EAAgB,IAAA,KAAS,EAAC;AAC7C;AACO,MAAM,uBAAA,GACX;AACK,MAAM,iBAAA,GACX,2BACA,aAAA,GACA;AAKK,MAAM,sBAAA,GAAyB;AAE/B,MAAM,yBAAA,GACX,mEAAA,GACA,gBAAA,GACA,+CAAA,GACA;AAEK,MAAM,+BAAA,GACX,0EAAA,GACA,sBAAA,GACA,8CAAA,GACA;AAaF,MAAM,gBAAA,GACJ,kGAAA;AACF,MAAM,iBAAA,GAAoB,wDAAA;AAEnB,MAAM,yBAAA,GACX,wCAAA,GAA2C,gBAAA,GAAmB,GAAA,GAAM,oBAAoB,GAAA,GAAM;AAQzF,SAAS,oBACd,OAAA,EACyC;AACzC,EAAA,OAAO,OAAA,KAAY,WAAW,SAAA,GAAa,OAAA;AAC7C;AAIO,MAAM,wBAAA,GAA2B;;;;"}
@@ -1,8 +1,8 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Brain } from 'lucide-react';
3
- import { g as ActivityItem } from './activity-BoXbE4Kz.js';
3
+ import { g as ActivityItem } from './activity-D0SefV4r.js';
4
4
  import { h as hasVisibleReasoning } from './reasoning-visibility-B9rA0AIj.js';
5
- import { M as MarkdownRenderer } from './markdown-renderer-zvB6a8uj.js';
5
+ import { M as MarkdownRenderer } from './markdown-renderer-XfWPF-B7.js';
6
6
 
7
7
  function ReasoningActivity({ defaultOpen = true, ...content }) {
8
8
  if (!hasVisibleReasoning(content)) return null;
@@ -29,4 +29,4 @@ function ReasoningActivity({ defaultOpen = true, ...content }) {
29
29
  }
30
30
 
31
31
  export { ReasoningActivity as R };
32
- //# sourceMappingURL=reasoning-activity-6VkIbDT4.js.map
32
+ //# sourceMappingURL=reasoning-activity-DTmKCDZ-.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reasoning-activity-6VkIbDT4.js","sources":["../src/ds/components/ai/activity/presets/reasoning-activity.tsx"],"sourcesContent":["import { Brain } from 'lucide-react';\nimport { ActivityItem } from '../activity';\nimport { hasVisibleReasoning } from './reasoning-visibility';\nimport type { ReasoningContent } from './reasoning-visibility';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\n\nexport interface ReasoningActivityProps extends ReasoningContent {\n defaultOpen?: boolean;\n}\n\nexport function ReasoningActivity({ defaultOpen = true, ...content }: ReasoningActivityProps) {\n if (!hasVisibleReasoning(content)) return null;\n\n const { text, redacted, streaming } = content;\n const body = redacted ? 'Reasoning was redacted by the provider.' : text;\n\n return (\n <ActivityItem\n icon={<Brain aria-hidden />}\n label=\"Reasoning\"\n status={streaming ? 'running' : 'idle'}\n defaultOpen={defaultOpen}\n aria-label=\"Reasoning\"\n >\n {body.trim().length > 0 && (\n <MarkdownRenderer\n className=\"text-caption text-muted-foreground [&_p]:my-0.5\"\n streaming={streaming && !redacted}\n >\n {body}\n </MarkdownRenderer>\n )}\n </ActivityItem>\n );\n}\n"],"names":[],"mappings":";;;;;;AAUO,SAAS,kBAAkB,EAAE,WAAA,GAAc,IAAA,EAAM,GAAG,SAAQ,EAA2B;AAC5F,EAAA,IAAI,CAAC,mBAAA,CAAoB,OAAO,CAAA,EAAG,OAAO,IAAA;AAE1C,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAU,GAAI,OAAA;AACtC,EAAA,MAAM,IAAA,GAAO,WAAW,yCAAA,GAA4C,IAAA;AAEpE,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,IAAA,kBAAM,GAAA,CAAC,KAAA,EAAA,EAAM,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,MACzB,KAAA,EAAM,WAAA;AAAA,MACN,MAAA,EAAQ,YAAY,SAAA,GAAY,MAAA;AAAA,MAChC,WAAA;AAAA,MACA,YAAA,EAAW,WAAA;AAAA,MAEV,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,oBACpB,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,iDAAA;AAAA,UACV,SAAA,EAAW,aAAa,CAAC,QAAA;AAAA,UAExB,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GAEJ;AAEJ;;;;"}
1
+ {"version":3,"file":"reasoning-activity-DTmKCDZ-.js","sources":["../src/ds/components/ai/activity/presets/reasoning-activity.tsx"],"sourcesContent":["import { Brain } from 'lucide-react';\nimport { ActivityItem } from '../activity';\nimport { hasVisibleReasoning } from './reasoning-visibility';\nimport type { ReasoningContent } from './reasoning-visibility';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\n\nexport interface ReasoningActivityProps extends ReasoningContent {\n defaultOpen?: boolean;\n}\n\nexport function ReasoningActivity({ defaultOpen = true, ...content }: ReasoningActivityProps) {\n if (!hasVisibleReasoning(content)) return null;\n\n const { text, redacted, streaming } = content;\n const body = redacted ? 'Reasoning was redacted by the provider.' : text;\n\n return (\n <ActivityItem\n icon={<Brain aria-hidden />}\n label=\"Reasoning\"\n status={streaming ? 'running' : 'idle'}\n defaultOpen={defaultOpen}\n aria-label=\"Reasoning\"\n >\n {body.trim().length > 0 && (\n <MarkdownRenderer\n className=\"text-caption text-muted-foreground [&_p]:my-0.5\"\n streaming={streaming && !redacted}\n >\n {body}\n </MarkdownRenderer>\n )}\n </ActivityItem>\n );\n}\n"],"names":[],"mappings":";;;;;;AAUO,SAAS,kBAAkB,EAAE,WAAA,GAAc,IAAA,EAAM,GAAG,SAAQ,EAA2B;AAC5F,EAAA,IAAI,CAAC,mBAAA,CAAoB,OAAO,CAAA,EAAG,OAAO,IAAA;AAE1C,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAU,GAAI,OAAA;AACtC,EAAA,MAAM,IAAA,GAAO,WAAW,yCAAA,GAA4C,IAAA;AAEpE,EAAA,uBACE,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,IAAA,kBAAM,GAAA,CAAC,KAAA,EAAA,EAAM,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,MACzB,KAAA,EAAM,WAAA;AAAA,MACN,MAAA,EAAQ,YAAY,SAAA,GAAY,MAAA;AAAA,MAChC,WAAA;AAAA,MACA,YAAA,EAAW,WAAA;AAAA,MAEV,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,oBACpB,GAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,iDAAA;AAAA,UACV,SAAA,EAAW,aAAa,CAAC,QAAA;AAAA,UAExB,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GAEJ;AAEJ;;;;"}
@@ -2,9 +2,9 @@
2
2
 
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
4
  const lucideReact = require('lucide-react');
5
- const activity = require('./activity-CbQG59Oc.cjs');
5
+ const activity = require('./activity-ClKZR5_o.cjs');
6
6
  const reasoningVisibility = require('./reasoning-visibility-DXho4jGC.cjs');
7
- const markdownRenderer = require('./markdown-renderer-DPwN7Vtm.cjs');
7
+ const markdownRenderer = require('./markdown-renderer-DRo-Hcuu.cjs');
8
8
 
9
9
  function ReasoningActivity({ defaultOpen = true, ...content }) {
10
10
  if (!reasoningVisibility.hasVisibleReasoning(content)) return null;
@@ -31,4 +31,4 @@ function ReasoningActivity({ defaultOpen = true, ...content }) {
31
31
  }
32
32
 
33
33
  exports.ReasoningActivity = ReasoningActivity;
34
- //# sourceMappingURL=reasoning-activity-DaXMgyr3.cjs.map
34
+ //# sourceMappingURL=reasoning-activity-Dc6VbiMr.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"reasoning-activity-DaXMgyr3.cjs","sources":["../src/ds/components/ai/activity/presets/reasoning-activity.tsx"],"sourcesContent":["import { Brain } from 'lucide-react';\nimport { ActivityItem } from '../activity';\nimport { hasVisibleReasoning } from './reasoning-visibility';\nimport type { ReasoningContent } from './reasoning-visibility';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\n\nexport interface ReasoningActivityProps extends ReasoningContent {\n defaultOpen?: boolean;\n}\n\nexport function ReasoningActivity({ defaultOpen = true, ...content }: ReasoningActivityProps) {\n if (!hasVisibleReasoning(content)) return null;\n\n const { text, redacted, streaming } = content;\n const body = redacted ? 'Reasoning was redacted by the provider.' : text;\n\n return (\n <ActivityItem\n icon={<Brain aria-hidden />}\n label=\"Reasoning\"\n status={streaming ? 'running' : 'idle'}\n defaultOpen={defaultOpen}\n aria-label=\"Reasoning\"\n >\n {body.trim().length > 0 && (\n <MarkdownRenderer\n className=\"text-caption text-muted-foreground [&_p]:my-0.5\"\n streaming={streaming && !redacted}\n >\n {body}\n </MarkdownRenderer>\n )}\n </ActivityItem>\n );\n}\n"],"names":["hasVisibleReasoning","jsx","ActivityItem","Brain","MarkdownRenderer"],"mappings":";;;;;;;;AAUO,SAAS,kBAAkB,EAAE,WAAA,GAAc,IAAA,EAAM,GAAG,SAAQ,EAA2B;AAC5F,EAAA,IAAI,CAACA,uCAAA,CAAoB,OAAO,CAAA,EAAG,OAAO,IAAA;AAE1C,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAU,GAAI,OAAA;AACtC,EAAA,MAAM,IAAA,GAAO,WAAW,yCAAA,GAA4C,IAAA;AAEpE,EAAA,uBACEC,cAAA;AAAA,IAACC,qBAAA;AAAA,IAAA;AAAA,MACC,IAAA,kBAAMD,cAAA,CAACE,iBAAA,EAAA,EAAM,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,MACzB,KAAA,EAAM,WAAA;AAAA,MACN,MAAA,EAAQ,YAAY,SAAA,GAAY,MAAA;AAAA,MAChC,WAAA;AAAA,MACA,YAAA,EAAW,WAAA;AAAA,MAEV,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,oBACpBF,cAAA;AAAA,QAACG,iCAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,iDAAA;AAAA,UACV,SAAA,EAAW,aAAa,CAAC,QAAA;AAAA,UAExB,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GAEJ;AAEJ;;;;"}
1
+ {"version":3,"file":"reasoning-activity-Dc6VbiMr.cjs","sources":["../src/ds/components/ai/activity/presets/reasoning-activity.tsx"],"sourcesContent":["import { Brain } from 'lucide-react';\nimport { ActivityItem } from '../activity';\nimport { hasVisibleReasoning } from './reasoning-visibility';\nimport type { ReasoningContent } from './reasoning-visibility';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\n\nexport interface ReasoningActivityProps extends ReasoningContent {\n defaultOpen?: boolean;\n}\n\nexport function ReasoningActivity({ defaultOpen = true, ...content }: ReasoningActivityProps) {\n if (!hasVisibleReasoning(content)) return null;\n\n const { text, redacted, streaming } = content;\n const body = redacted ? 'Reasoning was redacted by the provider.' : text;\n\n return (\n <ActivityItem\n icon={<Brain aria-hidden />}\n label=\"Reasoning\"\n status={streaming ? 'running' : 'idle'}\n defaultOpen={defaultOpen}\n aria-label=\"Reasoning\"\n >\n {body.trim().length > 0 && (\n <MarkdownRenderer\n className=\"text-caption text-muted-foreground [&_p]:my-0.5\"\n streaming={streaming && !redacted}\n >\n {body}\n </MarkdownRenderer>\n )}\n </ActivityItem>\n );\n}\n"],"names":["hasVisibleReasoning","jsx","ActivityItem","Brain","MarkdownRenderer"],"mappings":";;;;;;;;AAUO,SAAS,kBAAkB,EAAE,WAAA,GAAc,IAAA,EAAM,GAAG,SAAQ,EAA2B;AAC5F,EAAA,IAAI,CAACA,uCAAA,CAAoB,OAAO,CAAA,EAAG,OAAO,IAAA;AAE1C,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,SAAA,EAAU,GAAI,OAAA;AACtC,EAAA,MAAM,IAAA,GAAO,WAAW,yCAAA,GAA4C,IAAA;AAEpE,EAAA,uBACEC,cAAA;AAAA,IAACC,qBAAA;AAAA,IAAA;AAAA,MACC,IAAA,kBAAMD,cAAA,CAACE,iBAAA,EAAA,EAAM,aAAA,EAAW,IAAA,EAAC,CAAA;AAAA,MACzB,KAAA,EAAM,WAAA;AAAA,MACN,MAAA,EAAQ,YAAY,SAAA,GAAY,MAAA;AAAA,MAChC,WAAA;AAAA,MACA,YAAA,EAAW,WAAA;AAAA,MAEV,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAE,MAAA,GAAS,CAAA,oBACpBF,cAAA;AAAA,QAACG,iCAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,iDAAA;AAAA,UACV,SAAA,EAAW,aAAa,CAAC,QAAA;AAAA,UAExB,QAAA,EAAA;AAAA;AAAA;AACH;AAAA,GAEJ;AAEJ;;;;"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
4
  const React = require('react');
5
- const Badge = require('./Badge-D3EctKQo.cjs');
5
+ const Badge = require('./Badge-DB59RxT5.cjs');
6
6
  const tooltip = require('./tooltip-DIZ5oqjV.cjs');
7
7
  const primitives_transitions = require('./primitives/transitions.cjs.js');
8
8
  const utils_cn = require('./cn-DG0X1KEP.cjs');
@@ -117,4 +117,4 @@ function RelativeTimestamp({ value, label, className }) {
117
117
  }
118
118
 
119
119
  exports.RelativeTimestamp = RelativeTimestamp;
120
- //# sourceMappingURL=relative-timestamp-BlmN8Vjn.cjs.map
120
+ //# sourceMappingURL=relative-timestamp-Nnwtw7Rp.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"relative-timestamp-BlmN8Vjn.cjs","sources":["../src/ds/components/RelativeTimestamp/relative-timestamp.tsx"],"sourcesContent":["import { useSyncExternalStore } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\nimport { formatDate, toDate } from '@/utils/date-format';\nimport type { DateInput } from '@/utils/date-format';\nimport { formatRelativeTime } from '@/utils/relative-time';\n\nexport interface RelativeTimestampProps {\n value: DateInput;\n label?: string;\n className?: string;\n}\n\nconst listeners = new Set<() => void>();\nlet ticker: ReturnType<typeof setInterval> | undefined;\nlet now = Date.now();\n\nfunction subscribe(listener: () => void) {\n listeners.add(listener);\n if (!ticker) {\n now = Date.now();\n ticker = setInterval(() => {\n now = Date.now();\n listeners.forEach(notify => notify());\n }, 1000);\n }\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0) {\n clearInterval(ticker);\n ticker = undefined;\n }\n };\n}\n\nfunction useNow() {\n const read = () => (ticker ? now : Date.now());\n return useSyncExternalStore(subscribe, read, read);\n}\n\nconst SINCE_UNITS = [\n ['day', 86_400_000],\n ['hour', 3_600_000],\n ['minute', 60_000],\n ['second', 1_000],\n] as const;\n\nfunction formatUnit(count: number, unit: (typeof SINCE_UNITS)[number][0]) {\n return new Intl.NumberFormat(undefined, { style: 'unit', unit, unitDisplay: 'long' }).format(count);\n}\n\nfunction formatSince(date: Date, at: number) {\n const diff = at - date.getTime();\n let rest = Math.abs(diff);\n const parts: string[] = [];\n for (const [unit, size] of SINCE_UNITS) {\n const count = Math.floor(rest / size);\n rest %= size;\n if (parts.length > 0) {\n if (count > 0) parts.push(formatUnit(count, unit));\n break;\n }\n if (count > 0 || unit === 'second') parts.push(formatUnit(count, unit));\n }\n const label = parts.join(' ');\n return diff < 0 ? `${label} from now` : `${label} ago`;\n}\n\nfunction Relative({ date }: { date: Date }) {\n return <>{formatRelativeTime(date, { now: useNow() })}</>;\n}\n\nfunction Since({ date }: { date: Date }) {\n return <>{formatSince(date, useNow())}</>;\n}\n\nfunction zoneName(date: Date, timeZone?: string) {\n return new Intl.DateTimeFormat(undefined, { timeZone, timeZoneName: 'short' })\n .formatToParts(date)\n .find(part => part.type === 'timeZoneName')?.value;\n}\n\nfunction zoneRow(date: Date, timeZone?: string) {\n return {\n zone: zoneName(date, timeZone) ?? 'Local',\n day: new Intl.DateTimeFormat(undefined, { timeZone, month: 'short', day: 'numeric', year: 'numeric' }).format(date),\n time: new Intl.DateTimeFormat(undefined, {\n timeZone,\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n }).format(date),\n };\n}\n\nexport function RelativeTimestamp({ value, label, className }: RelativeTimestampProps) {\n const date = toDate(value);\n if (!date) return null;\n\n const local = zoneRow(date);\n const rows = local.zone === 'UTC' ? [local] : [local, zoneRow(date, 'UTC')];\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <time\n dateTime={date.toISOString()}\n tabIndex={0}\n className={cn('rounded-sm font-mono whitespace-nowrap tabular-nums', focusRing, className)}\n />\n }\n >\n <span aria-hidden=\"true\">\n <Relative date={date} />\n </span>\n <span className=\"sr-only\">{[label, formatDate(date, 'date-time-seconds')].filter(Boolean).join(' ')}</span>\n </TooltipTrigger>\n <TooltipContent>\n <span className=\"text-muted-foreground\">\n {label ? `${label} ` : null}\n <Since date={date} />\n </span>\n <table className=\"mt-1.5 border-t border-border font-mono tabular-nums\">\n <tbody>\n {rows.map(row => (\n <tr key={row.zone}>\n <td className=\"pt-1.5 pr-3\">\n <Badge size=\"xs\">{row.zone}</Badge>\n </td>\n <td className=\"pt-1.5 pr-3\">{row.day}</td>\n <td className=\"pt-1.5 text-right\">{row.time}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </TooltipContent>\n </Tooltip>\n );\n}\n"],"names":["useSyncExternalStore","jsx","Fragment","toDate","Tooltip","jsxs","TooltipTrigger","cn","focusRing","formatDate","TooltipContent","Badge"],"mappings":"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"}
1
+ {"version":3,"file":"relative-timestamp-Nnwtw7Rp.cjs","sources":["../src/ds/components/RelativeTimestamp/relative-timestamp.tsx"],"sourcesContent":["import { useSyncExternalStore } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\nimport { formatDate, toDate } from '@/utils/date-format';\nimport type { DateInput } from '@/utils/date-format';\nimport { formatRelativeTime } from '@/utils/relative-time';\n\nexport interface RelativeTimestampProps {\n value: DateInput;\n label?: string;\n className?: string;\n}\n\nconst listeners = new Set<() => void>();\nlet ticker: ReturnType<typeof setInterval> | undefined;\nlet now = Date.now();\n\nfunction subscribe(listener: () => void) {\n listeners.add(listener);\n if (!ticker) {\n now = Date.now();\n ticker = setInterval(() => {\n now = Date.now();\n listeners.forEach(notify => notify());\n }, 1000);\n }\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0) {\n clearInterval(ticker);\n ticker = undefined;\n }\n };\n}\n\nfunction useNow() {\n const read = () => (ticker ? now : Date.now());\n return useSyncExternalStore(subscribe, read, read);\n}\n\nconst SINCE_UNITS = [\n ['day', 86_400_000],\n ['hour', 3_600_000],\n ['minute', 60_000],\n ['second', 1_000],\n] as const;\n\nfunction formatUnit(count: number, unit: (typeof SINCE_UNITS)[number][0]) {\n return new Intl.NumberFormat(undefined, { style: 'unit', unit, unitDisplay: 'long' }).format(count);\n}\n\nfunction formatSince(date: Date, at: number) {\n const diff = at - date.getTime();\n let rest = Math.abs(diff);\n const parts: string[] = [];\n for (const [unit, size] of SINCE_UNITS) {\n const count = Math.floor(rest / size);\n rest %= size;\n if (parts.length > 0) {\n if (count > 0) parts.push(formatUnit(count, unit));\n break;\n }\n if (count > 0 || unit === 'second') parts.push(formatUnit(count, unit));\n }\n const label = parts.join(' ');\n return diff < 0 ? `${label} from now` : `${label} ago`;\n}\n\nfunction Relative({ date }: { date: Date }) {\n return <>{formatRelativeTime(date, { now: useNow() })}</>;\n}\n\nfunction Since({ date }: { date: Date }) {\n return <>{formatSince(date, useNow())}</>;\n}\n\nfunction zoneName(date: Date, timeZone?: string) {\n return new Intl.DateTimeFormat(undefined, { timeZone, timeZoneName: 'short' })\n .formatToParts(date)\n .find(part => part.type === 'timeZoneName')?.value;\n}\n\nfunction zoneRow(date: Date, timeZone?: string) {\n return {\n zone: zoneName(date, timeZone) ?? 'Local',\n day: new Intl.DateTimeFormat(undefined, { timeZone, month: 'short', day: 'numeric', year: 'numeric' }).format(date),\n time: new Intl.DateTimeFormat(undefined, {\n timeZone,\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n }).format(date),\n };\n}\n\nexport function RelativeTimestamp({ value, label, className }: RelativeTimestampProps) {\n const date = toDate(value);\n if (!date) return null;\n\n const local = zoneRow(date);\n const rows = local.zone === 'UTC' ? [local] : [local, zoneRow(date, 'UTC')];\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <time\n dateTime={date.toISOString()}\n tabIndex={0}\n className={cn('rounded-sm font-mono whitespace-nowrap tabular-nums', focusRing, className)}\n />\n }\n >\n <span aria-hidden=\"true\">\n <Relative date={date} />\n </span>\n <span className=\"sr-only\">{[label, formatDate(date, 'date-time-seconds')].filter(Boolean).join(' ')}</span>\n </TooltipTrigger>\n <TooltipContent>\n <span className=\"text-muted-foreground\">\n {label ? `${label} ` : null}\n <Since date={date} />\n </span>\n <table className=\"mt-1.5 border-t border-border font-mono tabular-nums\">\n <tbody>\n {rows.map(row => (\n <tr key={row.zone}>\n <td className=\"pt-1.5 pr-3\">\n <Badge size=\"xs\">{row.zone}</Badge>\n </td>\n <td className=\"pt-1.5 pr-3\">{row.day}</td>\n <td className=\"pt-1.5 text-right\">{row.time}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </TooltipContent>\n </Tooltip>\n );\n}\n"],"names":["useSyncExternalStore","jsx","Fragment","toDate","Tooltip","jsxs","TooltipTrigger","cn","focusRing","formatDate","TooltipContent","Badge"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { useSyncExternalStore } from 'react';
3
- import { B as Badge } from './Badge-DmOqFpXW.js';
3
+ import { B as Badge } from './Badge-DId-8rYY.js';
4
4
  import { T as Tooltip, c as TooltipTrigger, a as TooltipContent } from './tooltip-DsQPiynb.js';
5
5
  import { focusRing } from './primitives/transitions.es.js';
6
6
  import { c as cn } from './cn-65Adrsfj.js';
@@ -115,4 +115,4 @@ function RelativeTimestamp({ value, label, className }) {
115
115
  }
116
116
 
117
117
  export { RelativeTimestamp as R };
118
- //# sourceMappingURL=relative-timestamp-Cnp4VeLp.js.map
118
+ //# sourceMappingURL=relative-timestamp-Rn8mAobA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relative-timestamp-Cnp4VeLp.js","sources":["../src/ds/components/RelativeTimestamp/relative-timestamp.tsx"],"sourcesContent":["import { useSyncExternalStore } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\nimport { formatDate, toDate } from '@/utils/date-format';\nimport type { DateInput } from '@/utils/date-format';\nimport { formatRelativeTime } from '@/utils/relative-time';\n\nexport interface RelativeTimestampProps {\n value: DateInput;\n label?: string;\n className?: string;\n}\n\nconst listeners = new Set<() => void>();\nlet ticker: ReturnType<typeof setInterval> | undefined;\nlet now = Date.now();\n\nfunction subscribe(listener: () => void) {\n listeners.add(listener);\n if (!ticker) {\n now = Date.now();\n ticker = setInterval(() => {\n now = Date.now();\n listeners.forEach(notify => notify());\n }, 1000);\n }\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0) {\n clearInterval(ticker);\n ticker = undefined;\n }\n };\n}\n\nfunction useNow() {\n const read = () => (ticker ? now : Date.now());\n return useSyncExternalStore(subscribe, read, read);\n}\n\nconst SINCE_UNITS = [\n ['day', 86_400_000],\n ['hour', 3_600_000],\n ['minute', 60_000],\n ['second', 1_000],\n] as const;\n\nfunction formatUnit(count: number, unit: (typeof SINCE_UNITS)[number][0]) {\n return new Intl.NumberFormat(undefined, { style: 'unit', unit, unitDisplay: 'long' }).format(count);\n}\n\nfunction formatSince(date: Date, at: number) {\n const diff = at - date.getTime();\n let rest = Math.abs(diff);\n const parts: string[] = [];\n for (const [unit, size] of SINCE_UNITS) {\n const count = Math.floor(rest / size);\n rest %= size;\n if (parts.length > 0) {\n if (count > 0) parts.push(formatUnit(count, unit));\n break;\n }\n if (count > 0 || unit === 'second') parts.push(formatUnit(count, unit));\n }\n const label = parts.join(' ');\n return diff < 0 ? `${label} from now` : `${label} ago`;\n}\n\nfunction Relative({ date }: { date: Date }) {\n return <>{formatRelativeTime(date, { now: useNow() })}</>;\n}\n\nfunction Since({ date }: { date: Date }) {\n return <>{formatSince(date, useNow())}</>;\n}\n\nfunction zoneName(date: Date, timeZone?: string) {\n return new Intl.DateTimeFormat(undefined, { timeZone, timeZoneName: 'short' })\n .formatToParts(date)\n .find(part => part.type === 'timeZoneName')?.value;\n}\n\nfunction zoneRow(date: Date, timeZone?: string) {\n return {\n zone: zoneName(date, timeZone) ?? 'Local',\n day: new Intl.DateTimeFormat(undefined, { timeZone, month: 'short', day: 'numeric', year: 'numeric' }).format(date),\n time: new Intl.DateTimeFormat(undefined, {\n timeZone,\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n }).format(date),\n };\n}\n\nexport function RelativeTimestamp({ value, label, className }: RelativeTimestampProps) {\n const date = toDate(value);\n if (!date) return null;\n\n const local = zoneRow(date);\n const rows = local.zone === 'UTC' ? [local] : [local, zoneRow(date, 'UTC')];\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <time\n dateTime={date.toISOString()}\n tabIndex={0}\n className={cn('rounded-sm font-mono whitespace-nowrap tabular-nums', focusRing, className)}\n />\n }\n >\n <span aria-hidden=\"true\">\n <Relative date={date} />\n </span>\n <span className=\"sr-only\">{[label, formatDate(date, 'date-time-seconds')].filter(Boolean).join(' ')}</span>\n </TooltipTrigger>\n <TooltipContent>\n <span className=\"text-muted-foreground\">\n {label ? `${label} ` : null}\n <Since date={date} />\n </span>\n <table className=\"mt-1.5 border-t border-border font-mono tabular-nums\">\n <tbody>\n {rows.map(row => (\n <tr key={row.zone}>\n <td className=\"pt-1.5 pr-3\">\n <Badge size=\"xs\">{row.zone}</Badge>\n </td>\n <td className=\"pt-1.5 pr-3\">{row.day}</td>\n <td className=\"pt-1.5 text-right\">{row.time}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </TooltipContent>\n </Tooltip>\n );\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relative-timestamp-Rn8mAobA.js","sources":["../src/ds/components/RelativeTimestamp/relative-timestamp.tsx"],"sourcesContent":["import { useSyncExternalStore } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\nimport { formatDate, toDate } from '@/utils/date-format';\nimport type { DateInput } from '@/utils/date-format';\nimport { formatRelativeTime } from '@/utils/relative-time';\n\nexport interface RelativeTimestampProps {\n value: DateInput;\n label?: string;\n className?: string;\n}\n\nconst listeners = new Set<() => void>();\nlet ticker: ReturnType<typeof setInterval> | undefined;\nlet now = Date.now();\n\nfunction subscribe(listener: () => void) {\n listeners.add(listener);\n if (!ticker) {\n now = Date.now();\n ticker = setInterval(() => {\n now = Date.now();\n listeners.forEach(notify => notify());\n }, 1000);\n }\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0) {\n clearInterval(ticker);\n ticker = undefined;\n }\n };\n}\n\nfunction useNow() {\n const read = () => (ticker ? now : Date.now());\n return useSyncExternalStore(subscribe, read, read);\n}\n\nconst SINCE_UNITS = [\n ['day', 86_400_000],\n ['hour', 3_600_000],\n ['minute', 60_000],\n ['second', 1_000],\n] as const;\n\nfunction formatUnit(count: number, unit: (typeof SINCE_UNITS)[number][0]) {\n return new Intl.NumberFormat(undefined, { style: 'unit', unit, unitDisplay: 'long' }).format(count);\n}\n\nfunction formatSince(date: Date, at: number) {\n const diff = at - date.getTime();\n let rest = Math.abs(diff);\n const parts: string[] = [];\n for (const [unit, size] of SINCE_UNITS) {\n const count = Math.floor(rest / size);\n rest %= size;\n if (parts.length > 0) {\n if (count > 0) parts.push(formatUnit(count, unit));\n break;\n }\n if (count > 0 || unit === 'second') parts.push(formatUnit(count, unit));\n }\n const label = parts.join(' ');\n return diff < 0 ? `${label} from now` : `${label} ago`;\n}\n\nfunction Relative({ date }: { date: Date }) {\n return <>{formatRelativeTime(date, { now: useNow() })}</>;\n}\n\nfunction Since({ date }: { date: Date }) {\n return <>{formatSince(date, useNow())}</>;\n}\n\nfunction zoneName(date: Date, timeZone?: string) {\n return new Intl.DateTimeFormat(undefined, { timeZone, timeZoneName: 'short' })\n .formatToParts(date)\n .find(part => part.type === 'timeZoneName')?.value;\n}\n\nfunction zoneRow(date: Date, timeZone?: string) {\n return {\n zone: zoneName(date, timeZone) ?? 'Local',\n day: new Intl.DateTimeFormat(undefined, { timeZone, month: 'short', day: 'numeric', year: 'numeric' }).format(date),\n time: new Intl.DateTimeFormat(undefined, {\n timeZone,\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n }).format(date),\n };\n}\n\nexport function RelativeTimestamp({ value, label, className }: RelativeTimestampProps) {\n const date = toDate(value);\n if (!date) return null;\n\n const local = zoneRow(date);\n const rows = local.zone === 'UTC' ? [local] : [local, zoneRow(date, 'UTC')];\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <time\n dateTime={date.toISOString()}\n tabIndex={0}\n className={cn('rounded-sm font-mono whitespace-nowrap tabular-nums', focusRing, className)}\n />\n }\n >\n <span aria-hidden=\"true\">\n <Relative date={date} />\n </span>\n <span className=\"sr-only\">{[label, formatDate(date, 'date-time-seconds')].filter(Boolean).join(' ')}</span>\n </TooltipTrigger>\n <TooltipContent>\n <span className=\"text-muted-foreground\">\n {label ? `${label} ` : null}\n <Since date={date} />\n </span>\n <table className=\"mt-1.5 border-t border-border font-mono tabular-nums\">\n <tbody>\n {rows.map(row => (\n <tr key={row.zone}>\n <td className=\"pt-1.5 pr-3\">\n <Badge size=\"xs\">{row.zone}</Badge>\n </td>\n <td className=\"pt-1.5 pr-3\">{row.day}</td>\n <td className=\"pt-1.5 text-right\">{row.time}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </TooltipContent>\n </Tooltip>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -3,11 +3,23 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  require('../panel-group.css');const jsxRuntime = require('react/jsx-runtime');
6
+ const React = require('react');
6
7
  const reactResizablePanels = require('react-resizable-panels');
7
8
  const utils_cn = require('../cn-DG0X1KEP.cjs');
8
9
 
9
- function PanelGroup({ className, ...props }) {
10
- return /* @__PURE__ */ jsxRuntime.jsx(reactResizablePanels.Group, { className: utils_cn.cn("panel-group-resize-transition", className), ...props });
10
+ function PanelGroup({ className, onLayoutChange, ...props }) {
11
+ const [hasLayout, setHasLayout] = React.useState(false);
12
+ return /* @__PURE__ */ jsxRuntime.jsx(
13
+ reactResizablePanels.Group,
14
+ {
15
+ className: utils_cn.cn(hasLayout && "panel-group-resize-transition", className),
16
+ onLayoutChange: (layout) => {
17
+ onLayoutChange?.(layout);
18
+ if (!hasLayout) requestAnimationFrame(() => setHasLayout(true));
19
+ },
20
+ ...props
21
+ }
22
+ );
11
23
  }
12
24
 
13
25
  exports.PanelGroup = PanelGroup;
@@ -1 +1 @@
1
- {"version":3,"file":"panel-group.cjs.js","sources":["../../src/lib/resize/panel-group.tsx"],"sourcesContent":["import type { GroupProps } from 'react-resizable-panels';\nimport { Group } from 'react-resizable-panels';\nimport { cn } from '@/lib/utils';\nimport './panel-group.css';\n\nexport type PanelGroupProps = GroupProps;\n\n/**\n * A resizable panel group with smooth programmatic resizing. CSS keeps pointer\n * dragging immediate and disables motion when the user prefers reduced motion.\n */\nexport function PanelGroup({ className, ...props }: PanelGroupProps) {\n return <Group className={cn('panel-group-resize-transition', className)} {...props} />;\n}\n"],"names":["jsx","Group","cn"],"mappings":";;;;;;;;AAWO,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAoB;AACnE,EAAA,uBAAOA,cAAA,CAACC,8BAAM,SAAA,EAAWC,WAAA,CAAG,iCAAiC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACtF;;;;"}
1
+ {"version":3,"file":"panel-group.cjs.js","sources":["../../src/lib/resize/panel-group.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { GroupProps, Layout } from 'react-resizable-panels';\nimport { Group } from 'react-resizable-panels';\nimport { cn } from '@/lib/utils';\nimport './panel-group.css';\n\nexport type PanelGroupProps = GroupProps;\n\n/**\n * A resizable panel group with smooth programmatic resizing. CSS keeps pointer\n * dragging immediate and disables motion when the user prefers reduced motion.\n * The transition is enabled only after the first layout so panels don't animate\n * from their pre-measurement size on mount.\n */\nexport function PanelGroup({ className, onLayoutChange, ...props }: PanelGroupProps) {\n const [hasLayout, setHasLayout] = useState(false);\n\n return (\n <Group\n className={cn(hasLayout && 'panel-group-resize-transition', className)}\n onLayoutChange={(layout: Layout) => {\n onLayoutChange?.(layout);\n if (!hasLayout) requestAnimationFrame(() => setHasLayout(true));\n }}\n {...props}\n />\n );\n}\n"],"names":["useState","jsx","Group","cn"],"mappings":";;;;;;;;;AAcO,SAAS,WAAW,EAAE,SAAA,EAAW,cAAA,EAAgB,GAAG,OAAM,EAAoB;AACnF,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,KAAK,CAAA;AAEhD,EAAA,uBACEC,cAAA;AAAA,IAACC,0BAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,WAAA,CAAG,SAAA,IAAa,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACrE,cAAA,EAAgB,CAAC,MAAA,KAAmB;AAClC,QAAA,cAAA,GAAiB,MAAM,CAAA;AACvB,QAAA,IAAI,CAAC,SAAA,EAAW,qBAAA,CAAsB,MAAM,YAAA,CAAa,IAAI,CAAC,CAAA;AAAA,MAChE,CAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;;;;"}
@@ -1,9 +1,21 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
+ import { useState } from 'react';
2
3
  import { Group } from 'react-resizable-panels';
3
4
  import { c as cn } from '../cn-65Adrsfj.js';
4
5
 
5
- import '../panel-group.css';function PanelGroup({ className, ...props }) {
6
- return /* @__PURE__ */ jsx(Group, { className: cn("panel-group-resize-transition", className), ...props });
6
+ import '../panel-group.css';function PanelGroup({ className, onLayoutChange, ...props }) {
7
+ const [hasLayout, setHasLayout] = useState(false);
8
+ return /* @__PURE__ */ jsx(
9
+ Group,
10
+ {
11
+ className: cn(hasLayout && "panel-group-resize-transition", className),
12
+ onLayoutChange: (layout) => {
13
+ onLayoutChange?.(layout);
14
+ if (!hasLayout) requestAnimationFrame(() => setHasLayout(true));
15
+ },
16
+ ...props
17
+ }
18
+ );
7
19
  }
8
20
 
9
21
  export { PanelGroup };
@@ -1 +1 @@
1
- {"version":3,"file":"panel-group.es.js","sources":["../../src/lib/resize/panel-group.tsx"],"sourcesContent":["import type { GroupProps } from 'react-resizable-panels';\nimport { Group } from 'react-resizable-panels';\nimport { cn } from '@/lib/utils';\nimport './panel-group.css';\n\nexport type PanelGroupProps = GroupProps;\n\n/**\n * A resizable panel group with smooth programmatic resizing. CSS keeps pointer\n * dragging immediate and disables motion when the user prefers reduced motion.\n */\nexport function PanelGroup({ className, ...props }: PanelGroupProps) {\n return <Group className={cn('panel-group-resize-transition', className)} {...props} />;\n}\n"],"names":[],"mappings":";;;;AAWO,SAAS,UAAA,CAAW,EAAE,SAAA,EAAW,GAAG,OAAM,EAAoB;AACnE,EAAA,uBAAO,GAAA,CAAC,SAAM,SAAA,EAAW,EAAA,CAAG,iCAAiC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AACtF;;;;"}
1
+ {"version":3,"file":"panel-group.es.js","sources":["../../src/lib/resize/panel-group.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { GroupProps, Layout } from 'react-resizable-panels';\nimport { Group } from 'react-resizable-panels';\nimport { cn } from '@/lib/utils';\nimport './panel-group.css';\n\nexport type PanelGroupProps = GroupProps;\n\n/**\n * A resizable panel group with smooth programmatic resizing. CSS keeps pointer\n * dragging immediate and disables motion when the user prefers reduced motion.\n * The transition is enabled only after the first layout so panels don't animate\n * from their pre-measurement size on mount.\n */\nexport function PanelGroup({ className, onLayoutChange, ...props }: PanelGroupProps) {\n const [hasLayout, setHasLayout] = useState(false);\n\n return (\n <Group\n className={cn(hasLayout && 'panel-group-resize-transition', className)}\n onLayoutChange={(layout: Layout) => {\n onLayoutChange?.(layout);\n if (!hasLayout) requestAnimationFrame(() => setHasLayout(true));\n }}\n {...props}\n />\n );\n}\n"],"names":[],"mappings":";;;;;AAcO,SAAS,WAAW,EAAE,SAAA,EAAW,cAAA,EAAgB,GAAG,OAAM,EAAoB;AACnF,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAEhD,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,SAAA,IAAa,+BAAA,EAAiC,SAAS,CAAA;AAAA,MACrE,cAAA,EAAgB,CAAC,MAAA,KAAmB;AAClC,QAAA,cAAA,GAAiB,MAAM,CAAA;AACvB,QAAA,IAAI,CAAC,SAAA,EAAW,qBAAA,CAAsB,MAAM,YAAA,CAAa,IAAI,CAAC,CAAA;AAAA,MAChE,CAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;;;;"}
@@ -1,9 +1,9 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { SearchIcon, XIcon } from 'lucide-react';
3
3
  import { useRef } from 'react';
4
- import { F as Field, e as FieldLabel } from './field-BtvEQ68O.js';
4
+ import { F as Field, e as FieldLabel } from './field-BiMIiq2Y.js';
5
5
  import './field-control-aria-DB6y41tQ.js';
6
- import { I as InputGroup, a as InputGroupAddon, c as InputGroupInput, b as InputGroupButton } from './input-group-wzirc-1k.js';
6
+ import { I as InputGroup, a as InputGroupAddon, c as InputGroupInput, b as InputGroupButton } from './input-group-D1XvzgI2.js';
7
7
  import { m as mergeRefs } from './merge-refs-DA1xt2OQ.js';
8
8
 
9
9
  function SearchInput({
@@ -45,4 +45,4 @@ function SearchInput({
45
45
  }
46
46
 
47
47
  export { SearchInput as S };
48
- //# sourceMappingURL=search-input-BKXiYeed.js.map
48
+ //# sourceMappingURL=search-input-63Y1_wgA.js.map