@mastra/playground-ui 57.0.0 → 58.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 (763) hide show
  1. package/README.md +25 -0
  2. package/dist/{Button-KUj0U-5I.js → Button-B8nF87ai.js} +2 -8
  3. package/dist/Button-B8nF87ai.js.map +1 -0
  4. package/dist/{Button-MMZPEb_q.cjs → Button-BAMnPqos.cjs} +1 -7
  5. package/dist/Button-BAMnPqos.cjs.map +1 -0
  6. package/dist/{Card-DwGasv0K.cjs → Card-BbwF20OW.cjs} +3 -3
  7. package/dist/Card-BbwF20OW.cjs.map +1 -0
  8. package/dist/{Card-B_buJ5yF.js → Card-DmT57Pve.js} +3 -3
  9. package/dist/Card-DmT57Pve.js.map +1 -0
  10. package/dist/{EmptyState-DiSP6UIy.cjs → EmptyState-2XQgeju6.cjs} +12 -3
  11. package/dist/EmptyState-2XQgeju6.cjs.map +1 -0
  12. package/dist/{EmptyState-B6cyZw6m.js → EmptyState-Bc4nJ9QH.js} +13 -4
  13. package/dist/EmptyState-Bc4nJ9QH.js.map +1 -0
  14. package/dist/{Notice-CPyYcX5J.cjs → Notice-AUNd8fqT.cjs} +2 -2
  15. package/dist/{Notice-CPyYcX5J.cjs.map → Notice-AUNd8fqT.cjs.map} +1 -1
  16. package/dist/{Notice-KC18b8Nd.js → Notice-WT8G4OA6.js} +2 -2
  17. package/dist/{Notice-KC18b8Nd.js.map → Notice-WT8G4OA6.js.map} +1 -1
  18. package/dist/{ask-user-DaRRR4qQ.cjs → ask-user-BPpgiE7k.cjs} +3 -3
  19. package/dist/{ask-user-DaRRR4qQ.cjs.map → ask-user-BPpgiE7k.cjs.map} +1 -1
  20. package/dist/{ask-user-C4DTzEQF.js → ask-user-jDUt7hgT.js} +3 -3
  21. package/dist/{ask-user-C4DTzEQF.js.map → ask-user-jDUt7hgT.js.map} +1 -1
  22. package/dist/buttons-group.css +2 -14
  23. package/dist/{chat-notification-DeKD1Ifx.js → chat-notification-CmdRGO_D.js} +2 -2
  24. package/dist/{chat-notification-DeKD1Ifx.js.map → chat-notification-CmdRGO_D.js.map} +1 -1
  25. package/dist/{chat-notification-C5Ox5tuS.cjs → chat-notification-DJykWtoj.cjs} +2 -2
  26. package/dist/{chat-notification-C5Ox5tuS.cjs.map → chat-notification-DJykWtoj.cjs.map} +1 -1
  27. package/dist/{chat-signal-DiAHks6_.js → chat-signal-Vg8pGXwH.js} +2 -2
  28. package/dist/{chat-signal-DiAHks6_.js.map → chat-signal-Vg8pGXwH.js.map} +1 -1
  29. package/dist/{chat-signal-ClyJeml8.cjs → chat-signal-xs3FkPts.cjs} +2 -2
  30. package/dist/{chat-signal-ClyJeml8.cjs.map → chat-signal-xs3FkPts.cjs.map} +1 -1
  31. package/dist/{code-block-D37olB3O.js → code-block-BD2N5Yi2.js} +5 -5
  32. package/dist/{code-block-D37olB3O.js.map → code-block-BD2N5Yi2.js.map} +1 -1
  33. package/dist/{code-block-BoTq0TMr.cjs → code-block-fI67m2KV.cjs} +5 -5
  34. package/dist/{code-block-BoTq0TMr.cjs.map → code-block-fI67m2KV.cjs.map} +1 -1
  35. package/dist/{code-editor-BQTDma1I.js → code-editor-C-0srcj0.js} +4 -3
  36. package/dist/code-editor-C-0srcj0.js.map +1 -0
  37. package/dist/{code-editor-BfoJXq9l.cjs → code-editor-CFu_BYpQ.cjs} +4 -3
  38. package/dist/code-editor-CFu_BYpQ.cjs.map +1 -0
  39. package/dist/{combobox-Bn_uyUSB.cjs → combobox-BoSB-muq.cjs} +17 -9
  40. package/dist/combobox-BoSB-muq.cjs.map +1 -0
  41. package/dist/{combobox-Cykfy5wc.js → combobox-Cd0JPUQW.js} +17 -9
  42. package/dist/combobox-Cd0JPUQW.js.map +1 -0
  43. package/dist/{combobox-styles-iuJUkJEQ.js → combobox-styles-BhUqhOvz.js} +4 -2
  44. package/dist/combobox-styles-BhUqhOvz.js.map +1 -0
  45. package/dist/{combobox-styles-CSsS2LEx.cjs → combobox-styles-LHrC0tU0.cjs} +4 -2
  46. package/dist/combobox-styles-LHrC0tU0.cjs.map +1 -0
  47. package/dist/{command-B7H-emho.cjs → command-AVQzLcYR.cjs} +2 -2
  48. package/dist/{command-B7H-emho.cjs.map → command-AVQzLcYR.cjs.map} +1 -1
  49. package/dist/{command-Bmy4PznC.js → command-DhiJvyMM.js} +2 -2
  50. package/dist/{command-Bmy4PznC.js.map → command-DhiJvyMM.js.map} +1 -1
  51. package/dist/components/AlertDialog.cjs.js +2 -2
  52. package/dist/components/AlertDialog.cjs.js.map +1 -1
  53. package/dist/components/AlertDialog.es.js +3 -3
  54. package/dist/components/AlertDialog.es.js.map +1 -1
  55. package/dist/components/Button.cjs.js +1 -1
  56. package/dist/components/Button.es.js +2 -2
  57. package/dist/components/Card.cjs.js +1 -1
  58. package/dist/components/Card.es.js +1 -1
  59. package/dist/components/ClampedText.cjs.js +1 -1
  60. package/dist/components/ClampedText.es.js +1 -1
  61. package/dist/components/CodeBlock.cjs.js +1 -1
  62. package/dist/components/CodeBlock.es.js +1 -1
  63. package/dist/components/CodeEditor.cjs.js +1 -1
  64. package/dist/components/CodeEditor.es.js +1 -1
  65. package/dist/components/Columns.cjs.js +2 -106
  66. package/dist/components/Columns.cjs.js.map +1 -1
  67. package/dist/components/Columns.es.js +4 -107
  68. package/dist/components/Columns.es.js.map +1 -1
  69. package/dist/components/Combobox.cjs.js +2 -2
  70. package/dist/components/Combobox.es.js +2 -2
  71. package/dist/components/Command.cjs.js +1 -1
  72. package/dist/components/Command.es.js +1 -1
  73. package/dist/components/CommandPalette.cjs.js +1 -1
  74. package/dist/components/CommandPalette.es.js +1 -1
  75. package/dist/components/Comment.cjs.js +3 -3
  76. package/dist/components/Comment.cjs.js.map +1 -1
  77. package/dist/components/Comment.es.js +3 -3
  78. package/dist/components/Comment.es.js.map +1 -1
  79. package/dist/components/CopyButton.cjs.js +1 -1
  80. package/dist/components/CopyButton.es.js +1 -1
  81. package/dist/components/DataCodeSection.cjs.js +1 -1
  82. package/dist/components/DataCodeSection.es.js +1 -1
  83. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  84. package/dist/components/DataDetailsPanel.es.js +2 -2
  85. package/dist/components/DataKeysAndValues.cjs.js +1 -1
  86. package/dist/components/DataKeysAndValues.es.js +1 -1
  87. package/dist/components/DataList.cjs.js +3 -3
  88. package/dist/components/DataList.es.js +3 -3
  89. package/dist/components/DataPanel.cjs.js +1 -1
  90. package/dist/components/DataPanel.es.js +1 -1
  91. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  92. package/dist/components/DateRangeTimeline.es.js +1 -1
  93. package/dist/components/DateTimePicker.cjs.js +10 -4
  94. package/dist/components/DateTimePicker.cjs.js.map +1 -1
  95. package/dist/components/DateTimePicker.es.js +10 -4
  96. package/dist/components/DateTimePicker.es.js.map +1 -1
  97. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  98. package/dist/components/DateTimeRangePicker.es.js +1 -1
  99. package/dist/components/Dialog.cjs.js +2 -2
  100. package/dist/components/Dialog.es.js +3 -3
  101. package/dist/components/DisabledFeatureButton.cjs.js +1 -1
  102. package/dist/components/DisabledFeatureButton.es.js +1 -1
  103. package/dist/components/Drawer.cjs.js +1 -1
  104. package/dist/components/Drawer.es.js +1 -1
  105. package/dist/components/EmptyState.cjs.js +1 -1
  106. package/dist/components/EmptyState.es.js +1 -1
  107. package/dist/components/EnvironmentVariablesEditor.cjs.js +4 -4
  108. package/dist/components/EnvironmentVariablesEditor.es.js +4 -4
  109. package/dist/components/ErrorBoundary.cjs.js +1 -1
  110. package/dist/components/ErrorBoundary.es.js +1 -1
  111. package/dist/components/FilterBar.cjs.js +3 -3
  112. package/dist/components/FilterBar.es.js +4 -4
  113. package/dist/components/FormFieldBlocks.cjs.js +4 -4
  114. package/dist/components/FormFieldBlocks.es.js +4 -4
  115. package/dist/components/Input.cjs.js +1 -1
  116. package/dist/components/Input.es.js +1 -1
  117. package/dist/components/InputGroup.cjs.js +1 -1
  118. package/dist/components/InputGroup.es.js +1 -1
  119. package/dist/components/JSONSchemaForm.cjs.js +3 -3
  120. package/dist/components/JSONSchemaForm.es.js +3 -3
  121. package/dist/components/ListSearch.cjs.js +1 -1
  122. package/dist/components/ListSearch.es.js +1 -1
  123. package/dist/components/LogsDataList.cjs.js +1 -3
  124. package/dist/components/LogsDataList.cjs.js.map +1 -1
  125. package/dist/components/LogsDataList.es.js +1 -3
  126. package/dist/components/LogsDataList.es.js.map +1 -1
  127. package/dist/components/MainSidebar.cjs.js +125 -11
  128. package/dist/components/MainSidebar.cjs.js.map +1 -1
  129. package/dist/components/MainSidebar.es.js +120 -1
  130. package/dist/components/MainSidebar.es.js.map +1 -1
  131. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  132. package/dist/components/MarkdownRenderer.es.js +1 -1
  133. package/dist/components/Message.cjs.js +1 -1
  134. package/dist/components/Message.es.js +1 -1
  135. package/dist/components/MetricsCard.cjs.js +1 -1
  136. package/dist/components/MetricsCard.es.js +1 -1
  137. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  138. package/dist/components/MetricsKpiCard.es.js +1 -1
  139. package/dist/components/Notice.cjs.js +1 -1
  140. package/dist/components/Notice.es.js +1 -1
  141. package/dist/components/PageHeader.cjs.js +1 -1
  142. package/dist/components/PageHeader.es.js +1 -1
  143. package/dist/components/PageLayout.cjs.js +26 -3
  144. package/dist/components/PageLayout.cjs.js.map +1 -1
  145. package/dist/components/PageLayout.es.js +27 -4
  146. package/dist/components/PageLayout.es.js.map +1 -1
  147. package/dist/components/PrevNextNav.cjs.js +1 -1
  148. package/dist/components/PrevNextNav.es.js +1 -1
  149. package/dist/components/PropertyFilter.cjs.js +5 -5
  150. package/dist/components/PropertyFilter.cjs.js.map +1 -1
  151. package/dist/components/PropertyFilter.es.js +6 -6
  152. package/dist/components/PropertyFilter.es.js.map +1 -1
  153. package/dist/components/RuleBuilder.cjs.js +3 -3
  154. package/dist/components/RuleBuilder.es.js +3 -3
  155. package/dist/components/Select.cjs.js +1 -1
  156. package/dist/components/Select.es.js +1 -1
  157. package/dist/components/SideDialog.cjs.js +3 -3
  158. package/dist/components/SideDialog.es.js +3 -3
  159. package/dist/components/Tabs.cjs.js +3 -3
  160. package/dist/components/Tabs.es.js +3 -3
  161. package/dist/components/Textarea.cjs.js +1 -1
  162. package/dist/components/Textarea.es.js +1 -1
  163. package/dist/components/ThreadList.cjs.js +1 -1
  164. package/dist/components/ThreadList.es.js +1 -1
  165. package/dist/components/Truncate.cjs.js +1 -1
  166. package/dist/components/Truncate.es.js +1 -1
  167. package/dist/components/Workflow.cjs.js +4 -4
  168. package/dist/components/Workflow.es.js +4 -4
  169. package/dist/components/ai/ask-user.cjs.js +1 -1
  170. package/dist/components/ai/ask-user.es.js +1 -1
  171. package/dist/components/ai/chat-event.cjs.js +3 -3
  172. package/dist/components/ai/chat-event.es.js +4 -4
  173. package/dist/components/ai/plan.cjs.js +2 -2
  174. package/dist/components/ai/plan.es.js +2 -2
  175. package/dist/components/ai/tool-approval.cjs.js +1 -1
  176. package/dist/components/ai/tool-approval.es.js +1 -1
  177. package/dist/components/ai/tool-call.cjs.js +2 -2
  178. package/dist/components/ai/tool-call.es.js +3 -3
  179. package/dist/{copy-button-B5ZCtnTb.cjs → copy-button-D2MTGxq_.cjs} +2 -2
  180. package/dist/{copy-button-B5ZCtnTb.cjs.map → copy-button-D2MTGxq_.cjs.map} +1 -1
  181. package/dist/{copy-button-DZqxEuiE.js → copy-button-DcZ1mdw4.js} +2 -2
  182. package/dist/{copy-button-DZqxEuiE.js.map → copy-button-DcZ1mdw4.js.map} +1 -1
  183. package/dist/{data-code-section-DJRr65hS.js → data-code-section-C75shCII.js} +5 -5
  184. package/dist/{data-code-section-DJRr65hS.js.map → data-code-section-C75shCII.js.map} +1 -1
  185. package/dist/{data-code-section-iXzoOYMX.cjs → data-code-section-DzLc9O0B.cjs} +5 -5
  186. package/dist/{data-code-section-iXzoOYMX.cjs.map → data-code-section-DzLc9O0B.cjs.map} +1 -1
  187. package/dist/{data-keys-and-values-DhC4U4Yl.js → data-keys-and-values-BTYDB-K2.js} +3 -20
  188. package/dist/data-keys-and-values-BTYDB-K2.js.map +1 -0
  189. package/dist/{data-keys-and-values-BduKvvC5.cjs → data-keys-and-values-CMJ9zHKm.cjs} +3 -20
  190. package/dist/data-keys-and-values-CMJ9zHKm.cjs.map +1 -0
  191. package/dist/{data-list-DSbuTWLI.cjs → data-list-CH3HAhK5.cjs} +5 -5
  192. package/dist/data-list-CH3HAhK5.cjs.map +1 -0
  193. package/dist/{data-list-Cn0Ls4l2.js → data-list-DXjH5wkB.js} +5 -5
  194. package/dist/data-list-DXjH5wkB.js.map +1 -0
  195. package/dist/{data-list-spacer-C0YimRXC.js → data-list-spacer-BQ4_YeyT.js} +2 -2
  196. package/dist/{data-list-spacer-C0YimRXC.js.map → data-list-spacer-BQ4_YeyT.js.map} +1 -1
  197. package/dist/{data-list-spacer-DUBpzv_H.cjs → data-list-spacer-GIVW2hB1.cjs} +2 -2
  198. package/dist/{data-list-spacer-DUBpzv_H.cjs.map → data-list-spacer-GIVW2hB1.cjs.map} +1 -1
  199. package/dist/{data-panel-Bd_Xsz-W.cjs → data-panel-CIu6JToM.cjs} +3 -3
  200. package/dist/{data-panel-Bd_Xsz-W.cjs.map → data-panel-CIu6JToM.cjs.map} +1 -1
  201. package/dist/{data-panel-Y7wD0xlR.js → data-panel-CPZ2GuZN.js} +3 -3
  202. package/dist/{data-panel-Y7wD0xlR.js.map → data-panel-CPZ2GuZN.js.map} +1 -1
  203. package/dist/{date-time-range-picker-D2g3RU5B.cjs → date-time-range-picker-BCzvSYx3.cjs} +3 -3
  204. package/dist/{date-time-range-picker-D2g3RU5B.cjs.map → date-time-range-picker-BCzvSYx3.cjs.map} +1 -1
  205. package/dist/{date-time-range-picker-Cb86jLFc.js → date-time-range-picker-C-t3Kdpk.js} +3 -3
  206. package/dist/{date-time-range-picker-Cb86jLFc.js.map → date-time-range-picker-C-t3Kdpk.js.map} +1 -1
  207. package/dist/{dialog-DMOXPT0N.js → dialog-Dtfe1ylw.js} +5 -5
  208. package/dist/dialog-Dtfe1ylw.js.map +1 -0
  209. package/dist/{dialog-Bilo4jEU.cjs → dialog-Vvcjm0rZ.cjs} +4 -4
  210. package/dist/dialog-Vvcjm0rZ.cjs.map +1 -0
  211. package/dist/domains/auth/components/permission-denied.cjs.js +22 -0
  212. package/dist/domains/auth/components/permission-denied.cjs.js.map +1 -0
  213. package/dist/domains/auth/components/permission-denied.d.ts +2 -0
  214. package/dist/domains/auth/components/permission-denied.es.js +18 -0
  215. package/dist/domains/auth/components/permission-denied.es.js.map +1 -0
  216. package/dist/domains/auth/components/session-expired.cjs.js +40 -0
  217. package/dist/domains/auth/components/session-expired.cjs.js.map +1 -0
  218. package/dist/domains/auth/components/session-expired.d.ts +2 -0
  219. package/dist/domains/auth/components/session-expired.es.js +36 -0
  220. package/dist/domains/auth/components/session-expired.es.js.map +1 -0
  221. package/dist/domains/auth/services/sso-login.cjs.js +28 -0
  222. package/dist/domains/auth/services/sso-login.cjs.js.map +1 -0
  223. package/dist/domains/auth/services/sso-login.d.ts +2 -0
  224. package/dist/domains/auth/services/sso-login.es.js +24 -0
  225. package/dist/domains/auth/services/sso-login.es.js.map +1 -0
  226. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -3
  227. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js.map +1 -1
  228. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -3
  229. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js.map +1 -1
  230. package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -2
  231. package/dist/domains/chat/attachments/composer-attachment.cjs.js.map +1 -1
  232. package/dist/domains/chat/attachments/composer-attachment.es.js +1 -2
  233. package/dist/domains/chat/attachments/composer-attachment.es.js.map +1 -1
  234. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  235. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  236. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +3 -3
  237. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +3 -3
  238. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  239. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  240. package/dist/domains/chat/messages/reasoning.cjs.js +1 -1
  241. package/dist/domains/chat/messages/reasoning.es.js +1 -1
  242. package/dist/domains/chat/messages/renderers/message-text.cjs.js +2 -2
  243. package/dist/domains/chat/messages/renderers/message-text.es.js +2 -2
  244. package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
  245. package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
  246. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  247. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  248. package/dist/domains/chat/messages/tripwire-notice.cjs.js +1 -1
  249. package/dist/domains/chat/messages/tripwire-notice.es.js +1 -1
  250. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  251. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  252. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
  253. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  254. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
  255. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
  256. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  257. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  258. package/dist/domains/chat/tools/badges/tool-approval-buttons.cjs.js +1 -1
  259. package/dist/domains/chat/tools/badges/tool-approval-buttons.es.js +1 -1
  260. package/dist/domains/logs/components/log-details-view.cjs.js +2 -2
  261. package/dist/domains/logs/components/log-details-view.es.js +2 -2
  262. package/dist/domains/logs/components/logs-error-content.cjs.js +6 -7
  263. package/dist/domains/logs/components/logs-error-content.cjs.js.map +1 -1
  264. package/dist/domains/logs/components/logs-error-content.es.js +4 -5
  265. package/dist/domains/logs/components/logs-error-content.es.js.map +1 -1
  266. package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
  267. package/dist/domains/logs/components/logs-list-view.es.js +1 -1
  268. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  269. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  270. package/dist/domains/logs/components/no-logs-info.cjs.js +2 -2
  271. package/dist/domains/logs/components/no-logs-info.es.js +2 -2
  272. package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
  273. package/dist/domains/memory/components/flame-graph.es.js +1 -1
  274. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  275. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  276. package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -1
  277. package/dist/domains/memory/components/observation-detail-view.es.js +1 -1
  278. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  279. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  280. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  281. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  282. package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
  283. package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
  284. package/dist/domains/metrics/components/latency-card-view.cjs.js +4 -4
  285. package/dist/domains/metrics/components/latency-card-view.es.js +4 -4
  286. package/dist/domains/metrics/components/memory-card-view.cjs.js +5 -5
  287. package/dist/domains/metrics/components/memory-card-view.es.js +5 -5
  288. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +2 -2
  289. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +2 -2
  290. package/dist/domains/metrics/components/scores-card-view.cjs.js +5 -5
  291. package/dist/domains/metrics/components/scores-card-view.es.js +5 -5
  292. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +4 -4
  293. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +4 -4
  294. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +4 -4
  295. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +4 -4
  296. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +4 -4
  297. package/dist/domains/metrics/components/traces-volume-card-view.es.js +4 -4
  298. package/dist/domains/traces/components/no-traces-info.cjs.js +1 -1
  299. package/dist/domains/traces/components/no-traces-info.es.js +1 -1
  300. package/dist/domains/traces/components/span-data-panel-view.cjs.js +19 -8
  301. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  302. package/dist/domains/traces/components/span-data-panel-view.es.js +20 -9
  303. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  304. package/dist/domains/traces/components/span-details-view.cjs.js +5 -3
  305. package/dist/domains/traces/components/span-details-view.cjs.js.map +1 -1
  306. package/dist/domains/traces/components/span-details-view.es.js +6 -4
  307. package/dist/domains/traces/components/span-details-view.es.js.map +1 -1
  308. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +3 -3
  309. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +3 -3
  310. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +5 -3
  311. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js.map +1 -1
  312. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +5 -3
  313. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js.map +1 -1
  314. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +13 -12
  315. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js.map +1 -1
  316. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +7 -6
  317. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js.map +1 -1
  318. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +1 -1
  319. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +1 -1
  320. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  321. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  322. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +79 -0
  323. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js.map +1 -0
  324. package/dist/domains/traces/components/span-payload/span-payload-processor.d.ts +2 -0
  325. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +75 -0
  326. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js.map +1 -0
  327. package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js +2 -0
  328. package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js.map +1 -1
  329. package/dist/domains/traces/components/span-payload/span-payload-registry.es.js +2 -1
  330. package/dist/domains/traces/components/span-payload/span-payload-registry.es.js.map +1 -1
  331. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +2 -2
  332. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +2 -2
  333. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  334. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  335. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +85 -0
  336. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js.map +1 -0
  337. package/dist/domains/traces/components/span-payload/span-processor-attributes.d.ts +2 -0
  338. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +81 -0
  339. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js.map +1 -0
  340. package/dist/domains/traces/components/span-payload.cjs.js +4 -0
  341. package/dist/domains/traces/components/span-payload.cjs.js.map +1 -1
  342. package/dist/domains/traces/components/span-payload.es.js +2 -0
  343. package/dist/domains/traces/components/span-payload.es.js.map +1 -1
  344. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  345. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  346. package/dist/domains/traces/components/span-timing-hover-card.cjs.js +1 -1
  347. package/dist/domains/traces/components/span-timing-hover-card.es.js +1 -1
  348. package/dist/domains/traces/components/span-token-usage.cjs.js +1 -1
  349. package/dist/domains/traces/components/span-token-usage.es.js +1 -1
  350. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  351. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  352. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +4 -4
  353. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +4 -4
  354. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +1 -1
  355. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +1 -1
  356. package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
  357. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  358. package/dist/domains/traces/components/trace-columns-menu.es.js +4 -4
  359. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  360. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +12 -16
  361. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  362. package/dist/domains/traces/components/trace-data-panel-view.es.js +12 -16
  363. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  364. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  365. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  366. package/dist/domains/traces/components/trace-summary-description.cjs.js +8 -1
  367. package/dist/domains/traces/components/trace-summary-description.cjs.js.map +1 -1
  368. package/dist/domains/traces/components/trace-summary-description.es.js +8 -1
  369. package/dist/domains/traces/components/trace-summary-description.es.js.map +1 -1
  370. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  371. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  372. package/dist/domains/traces/components/traces-error-content.cjs.js +6 -6
  373. package/dist/domains/traces/components/traces-error-content.cjs.js.map +1 -1
  374. package/dist/domains/traces/components/traces-error-content.es.js +4 -4
  375. package/dist/domains/traces/components/traces-error-content.es.js.map +1 -1
  376. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
  377. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
  378. package/dist/domains/traces/components/traces-list-view.cjs.js +2 -2
  379. package/dist/domains/traces/components/traces-list-view.es.js +2 -2
  380. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +0 -2
  381. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  382. package/dist/domains/traces/components/traces-page-skeleton.es.js +0 -2
  383. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  384. package/dist/domains/traces/components.cjs.js +4 -2
  385. package/dist/domains/traces/components.cjs.js.map +1 -1
  386. package/dist/domains/traces/components.es.js +2 -1
  387. package/dist/domains/traces/components.es.js.map +1 -1
  388. package/dist/domains/traces.cjs.js +4 -2
  389. package/dist/domains/traces.cjs.js.map +1 -1
  390. package/dist/domains/traces.es.js +2 -1
  391. package/dist/domains/traces.es.js.map +1 -1
  392. package/dist/{drawer-CnCsgToD.js → drawer-DZnqDb9H.js} +4 -4
  393. package/dist/drawer-DZnqDb9H.js.map +1 -0
  394. package/dist/{drawer-B6Ftum77.cjs → drawer-DpldATv1.cjs} +3 -3
  395. package/dist/drawer-DpldATv1.cjs.map +1 -0
  396. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +1 -1
  397. package/dist/ee/signals/components/entity-index-compact-grid.es.js +1 -1
  398. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -3
  399. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  400. package/dist/ee/signals/components/entity-index-list.es.js +1 -3
  401. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  402. package/dist/ee/signals/components/signals-empty-state.cjs.js +2 -3
  403. package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -1
  404. package/dist/ee/signals/components/signals-empty-state.es.js +2 -3
  405. package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -1
  406. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +1 -1
  407. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +1 -1
  408. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +11 -13
  409. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  410. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +9 -11
  411. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  412. package/dist/ee/signals/examples-pager.cjs.js +1 -3
  413. package/dist/ee/signals/examples-pager.cjs.js.map +1 -1
  414. package/dist/ee/signals/examples-pager.es.js +1 -3
  415. package/dist/ee/signals/examples-pager.es.js.map +1 -1
  416. package/dist/ee/signals/flow-card.cjs.js +1 -1
  417. package/dist/ee/signals/flow-card.es.js +1 -1
  418. package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
  419. package/dist/ee/signals/noise-detail-panel.es.js +1 -1
  420. package/dist/ee/signals/sankey-signals.cjs.js +1 -1
  421. package/dist/ee/signals/sankey-signals.es.js +1 -1
  422. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +5 -5
  423. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +5 -5
  424. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +2 -2
  425. package/dist/ee/signals/settings/trace-signal-settings.es.js +2 -2
  426. package/dist/ee/signals/signals-error-state.cjs.js +2 -2
  427. package/dist/ee/signals/signals-error-state.cjs.js.map +1 -1
  428. package/dist/ee/signals/signals-error-state.es.js +2 -2
  429. package/dist/ee/signals/signals-error-state.es.js.map +1 -1
  430. package/dist/ee/signals/snapshot-timeline.cjs.js +1 -2
  431. package/dist/ee/signals/snapshot-timeline.cjs.js.map +1 -1
  432. package/dist/ee/signals/snapshot-timeline.es.js +1 -2
  433. package/dist/ee/signals/snapshot-timeline.es.js.map +1 -1
  434. package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
  435. package/dist/ee/signals/theme-detail-panel.es.js +1 -1
  436. package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
  437. package/dist/ee/signals/theme-filter-banner.es.js +1 -1
  438. package/dist/ee/signals/trace-insight-view.cjs.js +3 -12
  439. package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -1
  440. package/dist/ee/signals/trace-insight-view.es.js +3 -12
  441. package/dist/ee/signals/trace-insight-view.es.js.map +1 -1
  442. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  443. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  444. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +10 -19
  445. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js.map +1 -1
  446. package/dist/ee/topics/components/topic-trace-summary-list.es.js +10 -19
  447. package/dist/ee/topics/components/topic-trace-summary-list.es.js.map +1 -1
  448. package/dist/{filter-bar-chip-BlvuAPve.js → filter-bar-chip-7X4Aw_WH.js} +3 -3
  449. package/dist/{filter-bar-chip-BlvuAPve.js.map → filter-bar-chip-7X4Aw_WH.js.map} +1 -1
  450. package/dist/{filter-bar-chip-B_k_vbip.cjs → filter-bar-chip-BdZHI76J.cjs} +3 -3
  451. package/dist/{filter-bar-chip-B_k_vbip.cjs.map → filter-bar-chip-BdZHI76J.cjs.map} +1 -1
  452. package/dist/hooks/use-fluid-hover.cjs.js +2 -4
  453. package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
  454. package/dist/hooks/use-fluid-hover.es.js +2 -4
  455. package/dist/hooks/use-fluid-hover.es.js.map +1 -1
  456. package/dist/{input-B1RysHyq.js → input-CHghVv3k.js} +3 -3
  457. package/dist/input-CHghVv3k.js.map +1 -0
  458. package/dist/{input-CDLMprJS.cjs → input-bd223EJW.cjs} +2 -2
  459. package/dist/input-bd223EJW.cjs.map +1 -0
  460. package/dist/{input-group-DaIV9Orp.cjs → input-group-BfnJ0RIj.cjs} +3 -3
  461. package/dist/input-group-BfnJ0RIj.cjs.map +1 -0
  462. package/dist/{input-group-B-pskRGt.js → input-group-Jt7lZsN9.js} +4 -4
  463. package/dist/input-group-Jt7lZsN9.js.map +1 -0
  464. package/dist/layout/tabbed-container.cjs.js +6 -6
  465. package/dist/layout/tabbed-container.es.js +6 -6
  466. package/dist/{list-search-DK2yMiME.js → list-search-FJ1O5F3S.js} +2 -2
  467. package/dist/{list-search-DK2yMiME.js.map → list-search-FJ1O5F3S.js.map} +1 -1
  468. package/dist/{list-search-DhReauU5.cjs → list-search-S1mco9Bl.cjs} +2 -2
  469. package/dist/{list-search-DhReauU5.cjs.map → list-search-S1mco9Bl.cjs.map} +1 -1
  470. package/dist/{logs-data-list-DgoCLb6k.cjs → logs-data-list-BGJTRyO_.cjs} +2 -2
  471. package/dist/{logs-data-list-DgoCLb6k.cjs.map → logs-data-list-BGJTRyO_.cjs.map} +1 -1
  472. package/dist/{logs-data-list-B24gfDle.js → logs-data-list-XU1hCwI5.js} +2 -2
  473. package/dist/{logs-data-list-B24gfDle.js.map → logs-data-list-XU1hCwI5.js.map} +1 -1
  474. package/dist/{main-sidebar-Cf5G9iaC.js → main-sidebar-link-active-C9QPj3D6.js} +7 -119
  475. package/dist/main-sidebar-link-active-C9QPj3D6.js.map +1 -0
  476. package/dist/{main-sidebar-DYfRxFn4.cjs → main-sidebar-link-active-UEuukSeT.cjs} +5 -118
  477. package/dist/main-sidebar-link-active-UEuukSeT.cjs.map +1 -0
  478. package/dist/{markdown-renderer-BUqHHH4y.js → markdown-renderer-BBYgxsXL.js} +3 -3
  479. package/dist/{markdown-renderer-BUqHHH4y.js.map → markdown-renderer-BBYgxsXL.js.map} +1 -1
  480. package/dist/{markdown-renderer-CZLwgva-.cjs → markdown-renderer-Du_Zd1T-.cjs} +3 -3
  481. package/dist/{markdown-renderer-CZLwgva-.cjs.map → markdown-renderer-Du_Zd1T-.cjs.map} +1 -1
  482. package/dist/{metrics-card-CN4VRQQJ.js → metrics-card-Bzm6m1dy.js} +3 -3
  483. package/dist/{metrics-card-CN4VRQQJ.js.map → metrics-card-Bzm6m1dy.js.map} +1 -1
  484. package/dist/{metrics-card-DStXI6yn.cjs → metrics-card-DCCHIG-z.cjs} +3 -3
  485. package/dist/{metrics-card-DStXI6yn.cjs.map → metrics-card-DCCHIG-z.cjs.map} +1 -1
  486. package/dist/{metrics-kpi-card-CvOXyEGn.cjs → metrics-kpi-card-Bhb4R4z0.cjs} +2 -2
  487. package/dist/{metrics-kpi-card-CvOXyEGn.cjs.map → metrics-kpi-card-Bhb4R4z0.cjs.map} +1 -1
  488. package/dist/{metrics-kpi-card-C-XLN_Us.js → metrics-kpi-card-BrnFhFQm.js} +2 -2
  489. package/dist/{metrics-kpi-card-C-XLN_Us.js.map → metrics-kpi-card-BrnFhFQm.js.map} +1 -1
  490. package/dist/new/layout/app-shell.cjs.js +13 -0
  491. package/dist/new/layout/app-shell.cjs.js.map +1 -1
  492. package/dist/new/layout/app-shell.es.js +13 -1
  493. package/dist/new/layout/app-shell.es.js.map +1 -1
  494. package/dist/new/layout/page-header.cjs.js +1 -1
  495. package/dist/new/layout/page-header.es.js +1 -1
  496. package/dist/new/settings.cjs.js +42 -2
  497. package/dist/new/settings.cjs.js.map +1 -1
  498. package/dist/new/settings.es.js +43 -3
  499. package/dist/new/settings.es.js.map +1 -1
  500. package/dist/new/sidebar.cjs.js +33 -33
  501. package/dist/new/sidebar.cjs.js.map +1 -1
  502. package/dist/new/sidebar.es.js +3 -3
  503. package/dist/new/sidebar.es.js.map +1 -1
  504. package/dist/{page-header-CSigVThQ.js → page-header-CyXAezlZ.js} +25 -26
  505. package/dist/page-header-CyXAezlZ.js.map +1 -0
  506. package/dist/{page-header-DzEEkOca.cjs → page-header-Dk3s3XtC.cjs} +25 -26
  507. package/dist/page-header-Dk3s3XtC.cjs.map +1 -0
  508. package/dist/primitives/control-size.cjs.js +1 -2
  509. package/dist/primitives/control-size.cjs.js.map +1 -1
  510. package/dist/primitives/control-size.es.js +1 -2
  511. package/dist/primitives/control-size.es.js.map +1 -1
  512. package/dist/primitives/form-element.cjs.js +10 -5
  513. package/dist/primitives/form-element.cjs.js.map +1 -1
  514. package/dist/primitives/form-element.es.js +8 -5
  515. package/dist/primitives/form-element.es.js.map +1 -1
  516. package/dist/primitives/menu-item.cjs.js +1 -1
  517. package/dist/primitives/menu-item.cjs.js.map +1 -1
  518. package/dist/primitives/menu-item.es.js +1 -1
  519. package/dist/primitives/menu-item.es.js.map +1 -1
  520. package/dist/primitives/raised-surface.cjs.js +8 -3
  521. package/dist/primitives/raised-surface.cjs.js.map +1 -1
  522. package/dist/primitives/raised-surface.es.js +8 -4
  523. package/dist/primitives/raised-surface.es.js.map +1 -1
  524. package/dist/primitives/trigger-button.cjs.js +1 -1
  525. package/dist/primitives/trigger-button.es.js +1 -1
  526. package/dist/{property-filter-applied-uYr-sCdm.js → property-filter-applied-CYDiZtR7.js} +3 -3
  527. package/dist/{property-filter-applied-uYr-sCdm.js.map → property-filter-applied-CYDiZtR7.js.map} +1 -1
  528. package/dist/{property-filter-applied-DxSZN3Om.cjs → property-filter-applied-F6cN2lrX.cjs} +3 -3
  529. package/dist/{property-filter-applied-DxSZN3Om.cjs.map → property-filter-applied-F6cN2lrX.cjs.map} +1 -1
  530. package/dist/resize/panel-drawer.cjs.js +1 -1
  531. package/dist/resize/panel-drawer.es.js +1 -1
  532. package/dist/{search-field-block-Bg9GPPaA.cjs → search-field-block-7-ufp4uG.cjs} +3 -3
  533. package/dist/{search-field-block-Bg9GPPaA.cjs.map → search-field-block-7-ufp4uG.cjs.map} +1 -1
  534. package/dist/{search-field-block-B0twxGWI.js → search-field-block-fU3tStmB.js} +3 -3
  535. package/dist/{search-field-block-B0twxGWI.js.map → search-field-block-fU3tStmB.js.map} +1 -1
  536. package/dist/{select-65j5NjtJ.cjs → select-BByMAS0L.cjs} +4 -2
  537. package/dist/select-BByMAS0L.cjs.map +1 -0
  538. package/dist/{select-BiY-SoMJ.js → select-Dkmx3L5p.js} +4 -2
  539. package/dist/select-Dkmx3L5p.js.map +1 -0
  540. package/dist/{select-field-block-D_b9N7od.js → select-field-block-BfiHq9t6.js} +2 -2
  541. package/dist/{select-field-block-D_b9N7od.js.map → select-field-block-BfiHq9t6.js.map} +1 -1
  542. package/dist/{select-field-block-CZbN1w__.cjs → select-field-block-DJo2cX9Y.cjs} +2 -2
  543. package/dist/{select-field-block-CZbN1w__.cjs.map → select-field-block-DJo2cX9Y.cjs.map} +1 -1
  544. package/dist/{span-payload-primitives-DlIOpCII.js → span-payload-primitives-CzLh6axt.js} +3 -3
  545. package/dist/{span-payload-primitives-DlIOpCII.js.map → span-payload-primitives-CzLh6axt.js.map} +1 -1
  546. package/dist/{span-payload-primitives-BjBTICfq.cjs → span-payload-primitives-KEXwIaeZ.cjs} +3 -3
  547. package/dist/{span-payload-primitives-BjBTICfq.cjs.map → span-payload-primitives-KEXwIaeZ.cjs.map} +1 -1
  548. package/dist/src/domains/auth/components/permission-denied.d.ts +6 -0
  549. package/dist/src/{ds/components/PermissionDenied → domains/auth/components}/permission-denied.stories.d.ts +1 -3
  550. package/dist/src/domains/auth/components/session-expired.d.ts +5 -0
  551. package/dist/src/{ds/components/SessionExpired → domains/auth/components}/session-expired.stories.d.ts +1 -2
  552. package/dist/src/domains/auth/services/sso-login.d.ts +7 -0
  553. package/dist/src/domains/logs/components/logs-error-content.d.ts +2 -2
  554. package/dist/src/domains/traces/components/index.d.ts +0 -1
  555. package/dist/src/domains/traces/components/span-payload/index.d.ts +2 -0
  556. package/dist/src/domains/traces/components/span-payload/span-payload-processor.d.ts +10 -0
  557. package/dist/src/domains/traces/components/span-payload/span-payload-registry.d.ts +1 -0
  558. package/dist/src/domains/traces/components/span-payload/span-payload.stories.d.ts +2 -0
  559. package/dist/src/domains/traces/components/span-payload/span-processor-attributes.d.ts +10 -0
  560. package/dist/src/domains/traces/components/trace-data-panel-view.stories.d.ts +94 -0
  561. package/dist/src/domains/traces/components/trace-summary-description.d.ts +1 -0
  562. package/dist/src/domains/traces/components/traces-error-content.d.ts +2 -2
  563. package/dist/src/ds/components/Button/Button.d.ts +1 -1
  564. package/dist/src/ds/components/ButtonsGroup/buttons-group.stories.d.ts +2 -2
  565. package/dist/src/ds/components/Columns/column-root.d.ts +1 -3
  566. package/dist/src/ds/components/Columns/columns.stories.d.ts +0 -1
  567. package/dist/src/ds/components/Columns/index.d.ts +0 -1
  568. package/dist/src/ds/components/Combobox/combobox-styles.d.ts +1 -2
  569. package/dist/src/ds/components/Combobox/combobox.d.ts +3 -0
  570. package/dist/src/ds/components/Combobox/combobox.stories.d.ts +1 -0
  571. package/dist/src/ds/components/DataKeysAndValues/data-keys-and-values-root.d.ts +1 -2
  572. package/dist/src/ds/components/DataKeysAndValues/data-keys-and-values.stories.d.ts +1 -2
  573. package/dist/src/ds/components/EmptyState/EmptyState.d.ts +6 -2
  574. package/dist/src/ds/components/EmptyState/empty-state.stories.d.ts +1 -0
  575. package/dist/src/ds/components/PageLayout/page-layout.d.ts +8 -3
  576. package/dist/src/ds/components/PageLayout/page-layout.stories.d.ts +3 -0
  577. package/dist/src/ds/components/Select/select.d.ts +3 -4
  578. package/dist/src/ds/components/Select/select.stories.d.ts +2 -2
  579. package/dist/src/ds/new/layout/app-shell/index.d.ts +1 -0
  580. package/dist/src/ds/new/layout/app-shell/main-card.d.ts +5 -0
  581. package/dist/src/ds/new/settings/index.d.ts +1 -1
  582. package/dist/src/ds/new/settings/settings.stories.d.ts +2 -0
  583. package/dist/src/ds/primitives/control-size.d.ts +1 -1
  584. package/dist/src/ds/primitives/fields-on-surfaces.stories.d.ts +6 -0
  585. package/dist/src/ds/primitives/form-element.d.ts +3 -1
  586. package/dist/src/ds/primitives/raised-surface.d.ts +4 -31
  587. package/dist/src/ds/tokens/colors.d.ts +3 -0
  588. package/dist/src/ds/tokens/shadows.d.ts +1 -0
  589. package/dist/src/{ds/components/IntegrationDialog/integration-dialog.stories.d.ts → hooks/stories/browser/use-autoscroll.stories.d.ts} +6 -8
  590. package/dist/src/hooks/stories/browser/use-copy-to-clipboard.stories.d.ts +22 -0
  591. package/dist/src/hooks/stories/browser/use-fluid-hover.stories.d.ts +17 -0
  592. package/dist/src/hooks/stories/browser/use-in-view.stories.d.ts +17 -0
  593. package/dist/src/hooks/stories/browser/use-is-apple-platform.stories.d.ts +17 -0
  594. package/dist/src/hooks/stories/browser/use-is-mobile.stories.d.ts +32 -0
  595. package/dist/src/hooks/stories/browser/use-isomorphic-layout-effect.stories.d.ts +32 -0
  596. package/dist/src/hooks/stories/browser/use-keyboard-shortcut-label.stories.d.ts +22 -0
  597. package/dist/src/hooks/stories/browser/use-register-fluid-hover-item.stories.d.ts +17 -0
  598. package/dist/src/hooks/stories/environment/use-custom-environment-variables-editor.stories.d.ts +17 -0
  599. package/dist/src/hooks/stories/environment/use-environment-variables-editor.stories.d.ts +17 -0
  600. package/dist/src/hooks/stories/state/use-debounced-value.stories.d.ts +32 -0
  601. package/dist/src/hooks/stories/state/use-expiring-local-storage-state.stories.d.ts +17 -0
  602. package/dist/src/hooks/stories/state/use-local-storage-state.stories.d.ts +17 -0
  603. package/dist/src/hooks/stories/text/use-is-clamped.stories.d.ts +17 -0
  604. package/dist/src/hooks/stories/text/use-measured-auto-height.stories.d.ts +17 -0
  605. package/dist/src/hooks/stories/text/use-scroll-to-first-highlight.stories.d.ts +17 -0
  606. package/dist/src/hooks/stories/text/use-text-highlight.stories.d.ts +17 -0
  607. package/dist/src/lib/keyboard/use-keyboard-scope-depth.stories.d.ts +17 -0
  608. package/dist/src/lib/keyboard/use-keyboard-shortcuts-context.stories.d.ts +17 -0
  609. package/dist/src/lib/keyboard/use-table-keydown.stories.d.ts +15 -0
  610. package/dist/style.css +147 -107
  611. package/dist/{tabs-content-DMrffE9p.js → tabs-content-7ODUUdQ0.js} +2 -2
  612. package/dist/{tabs-content-DMrffE9p.js.map → tabs-content-7ODUUdQ0.js.map} +1 -1
  613. package/dist/{tabs-content-CuUlcS67.cjs → tabs-content-DlCJoQUW.cjs} +2 -2
  614. package/dist/{tabs-content-CuUlcS67.cjs.map → tabs-content-DlCJoQUW.cjs.map} +1 -1
  615. package/dist/{tabs-root-DrK1hxeV.cjs → tabs-root-COCL6jcx.cjs} +2 -2
  616. package/dist/{tabs-root-DrK1hxeV.cjs.map → tabs-root-COCL6jcx.cjs.map} +1 -1
  617. package/dist/{tabs-root-B2sdkQ3A.js → tabs-root-UNPxoGhW.js} +2 -2
  618. package/dist/{tabs-root-B2sdkQ3A.js.map → tabs-root-UNPxoGhW.js.map} +1 -1
  619. package/dist/{tabs-tab-ClmulJmM.cjs → tabs-tab-DFmRMdi3.cjs} +2 -2
  620. package/dist/{tabs-tab-ClmulJmM.cjs.map → tabs-tab-DFmRMdi3.cjs.map} +1 -1
  621. package/dist/{tabs-tab-u6LS5twu.js → tabs-tab-DluwCnDF.js} +2 -2
  622. package/dist/{tabs-tab-u6LS5twu.js.map → tabs-tab-DluwCnDF.js.map} +1 -1
  623. package/dist/{text-field-block-Cihf0IRw.js → text-field-block-DGIM1i3Z.js} +2 -2
  624. package/dist/{text-field-block-Cihf0IRw.js.map → text-field-block-DGIM1i3Z.js.map} +1 -1
  625. package/dist/{text-field-block-BmWGMw3a.cjs → text-field-block-DePCgDOh.cjs} +2 -2
  626. package/dist/{text-field-block-BmWGMw3a.cjs.map → text-field-block-DePCgDOh.cjs.map} +1 -1
  627. package/dist/{textarea-DdnzLrI9.js → textarea-B6wvS_CQ.js} +3 -3
  628. package/dist/textarea-B6wvS_CQ.js.map +1 -0
  629. package/dist/{textarea-5b6XcMrq.cjs → textarea-gUBUqpol.cjs} +2 -2
  630. package/dist/textarea-gUBUqpol.cjs.map +1 -0
  631. package/dist/{time-picker-PXFCgAuR.cjs → time-picker-BNhe7Zpb.cjs} +2 -2
  632. package/dist/{time-picker-PXFCgAuR.cjs.map → time-picker-BNhe7Zpb.cjs.map} +1 -1
  633. package/dist/{time-picker-DMroqHbw.js → time-picker-kvCsW78V.js} +2 -2
  634. package/dist/{time-picker-DMroqHbw.js.map → time-picker-kvCsW78V.js.map} +1 -1
  635. package/dist/tokens.cjs.js +4 -0
  636. package/dist/tokens.cjs.js.map +1 -1
  637. package/dist/tokens.es.js +4 -0
  638. package/dist/tokens.es.js.map +1 -1
  639. package/dist/{tool-approval-DzOGIKRh.js → tool-approval-DXUFyrSl.js} +2 -2
  640. package/dist/{tool-approval-DzOGIKRh.js.map → tool-approval-DXUFyrSl.js.map} +1 -1
  641. package/dist/{tool-approval-DYX_ZNWc.cjs → tool-approval-LIy1nZZJ.cjs} +2 -2
  642. package/dist/{tool-approval-DYX_ZNWc.cjs.map → tool-approval-LIy1nZZJ.cjs.map} +1 -1
  643. package/dist/{tool-call-HNNRcirD.js → tool-call-Bs-9Cah5.js} +2 -2
  644. package/dist/{tool-call-HNNRcirD.js.map → tool-call-Bs-9Cah5.js.map} +1 -1
  645. package/dist/{tool-call-vZeZ5XT5.cjs → tool-call-C0JeHe8Z.cjs} +2 -2
  646. package/dist/{tool-call-vZeZ5XT5.cjs.map → tool-call-C0JeHe8Z.cjs.map} +1 -1
  647. package/dist/{traces-data-list-DHrC158-.js → traces-data-list-Cjy5a-1f.js} +3 -3
  648. package/dist/{traces-data-list-DHrC158-.js.map → traces-data-list-Cjy5a-1f.js.map} +1 -1
  649. package/dist/{traces-data-list-DNOtQze4.cjs → traces-data-list-DLeKSbaZ.cjs} +3 -3
  650. package/dist/{traces-data-list-DNOtQze4.cjs.map → traces-data-list-DLeKSbaZ.cjs.map} +1 -1
  651. package/package.json +13 -13
  652. package/theme/surfaces.css +8 -0
  653. package/theme.css +7 -0
  654. package/dist/Button-KUj0U-5I.js.map +0 -1
  655. package/dist/Button-MMZPEb_q.cjs.map +0 -1
  656. package/dist/Card-B_buJ5yF.js.map +0 -1
  657. package/dist/Card-DwGasv0K.cjs.map +0 -1
  658. package/dist/EmptyState-B6cyZw6m.js.map +0 -1
  659. package/dist/EmptyState-DiSP6UIy.cjs.map +0 -1
  660. package/dist/ErrorState-B0839u-q.cjs +0 -21
  661. package/dist/ErrorState-B0839u-q.cjs.map +0 -1
  662. package/dist/ErrorState-HyRJdaA2.js +0 -19
  663. package/dist/ErrorState-HyRJdaA2.js.map +0 -1
  664. package/dist/PermissionDenied-CTqnE57B.js +0 -27
  665. package/dist/PermissionDenied-CTqnE57B.js.map +0 -1
  666. package/dist/PermissionDenied-fdVmTjjf.cjs +0 -29
  667. package/dist/PermissionDenied-fdVmTjjf.cjs.map +0 -1
  668. package/dist/SessionExpired-B9e1Kx4I.js +0 -44
  669. package/dist/SessionExpired-B9e1Kx4I.js.map +0 -1
  670. package/dist/SessionExpired-GSQkcV9f.cjs +0 -46
  671. package/dist/SessionExpired-GSQkcV9f.cjs.map +0 -1
  672. package/dist/code-editor-BQTDma1I.js.map +0 -1
  673. package/dist/code-editor-BfoJXq9l.cjs.map +0 -1
  674. package/dist/combobox-Bn_uyUSB.cjs.map +0 -1
  675. package/dist/combobox-Cykfy5wc.js.map +0 -1
  676. package/dist/combobox-styles-CSsS2LEx.cjs.map +0 -1
  677. package/dist/combobox-styles-iuJUkJEQ.js.map +0 -1
  678. package/dist/components/DataFilter.cjs.js +0 -173
  679. package/dist/components/DataFilter.cjs.js.map +0 -1
  680. package/dist/components/DataFilter.d.ts +0 -2
  681. package/dist/components/DataFilter.es.js +0 -169
  682. package/dist/components/DataFilter.es.js.map +0 -1
  683. package/dist/components/ErrorState.cjs.js +0 -10
  684. package/dist/components/ErrorState.cjs.js.map +0 -1
  685. package/dist/components/ErrorState.d.ts +0 -2
  686. package/dist/components/ErrorState.es.js +0 -2
  687. package/dist/components/ErrorState.es.js.map +0 -1
  688. package/dist/components/IntegrationDialog.cjs.js +0 -104
  689. package/dist/components/IntegrationDialog.cjs.js.map +0 -1
  690. package/dist/components/IntegrationDialog.d.ts +0 -2
  691. package/dist/components/IntegrationDialog.es.js +0 -100
  692. package/dist/components/IntegrationDialog.es.js.map +0 -1
  693. package/dist/components/PermissionDenied.cjs.js +0 -10
  694. package/dist/components/PermissionDenied.cjs.js.map +0 -1
  695. package/dist/components/PermissionDenied.d.ts +0 -2
  696. package/dist/components/PermissionDenied.es.js +0 -2
  697. package/dist/components/PermissionDenied.es.js.map +0 -1
  698. package/dist/components/Sections.cjs.js +0 -13
  699. package/dist/components/Sections.cjs.js.map +0 -1
  700. package/dist/components/Sections.d.ts +0 -2
  701. package/dist/components/Sections.es.js +0 -9
  702. package/dist/components/Sections.es.js.map +0 -1
  703. package/dist/components/SessionExpired.cjs.js +0 -10
  704. package/dist/components/SessionExpired.cjs.js.map +0 -1
  705. package/dist/components/SessionExpired.d.ts +0 -2
  706. package/dist/components/SessionExpired.es.js +0 -2
  707. package/dist/components/SessionExpired.es.js.map +0 -1
  708. package/dist/components/SettingsLayout.cjs.js +0 -10
  709. package/dist/components/SettingsLayout.cjs.js.map +0 -1
  710. package/dist/components/SettingsLayout.d.ts +0 -2
  711. package/dist/components/SettingsLayout.es.js +0 -2
  712. package/dist/components/SettingsLayout.es.js.map +0 -1
  713. package/dist/data-keys-and-values-BduKvvC5.cjs.map +0 -1
  714. package/dist/data-keys-and-values-DhC4U4Yl.js.map +0 -1
  715. package/dist/data-list-Cn0Ls4l2.js.map +0 -1
  716. package/dist/data-list-DSbuTWLI.cjs.map +0 -1
  717. package/dist/dialog-Bilo4jEU.cjs.map +0 -1
  718. package/dist/dialog-DMOXPT0N.js.map +0 -1
  719. package/dist/domains/traces/components/trace-keys-and-values.cjs.js +0 -70
  720. package/dist/domains/traces/components/trace-keys-and-values.cjs.js.map +0 -1
  721. package/dist/domains/traces/components/trace-keys-and-values.d.ts +0 -2
  722. package/dist/domains/traces/components/trace-keys-and-values.es.js +0 -66
  723. package/dist/domains/traces/components/trace-keys-and-values.es.js.map +0 -1
  724. package/dist/drawer-B6Ftum77.cjs.map +0 -1
  725. package/dist/drawer-CnCsgToD.js.map +0 -1
  726. package/dist/input-B1RysHyq.js.map +0 -1
  727. package/dist/input-CDLMprJS.cjs.map +0 -1
  728. package/dist/input-group-B-pskRGt.js.map +0 -1
  729. package/dist/input-group-DaIV9Orp.cjs.map +0 -1
  730. package/dist/main-sidebar-Cf5G9iaC.js.map +0 -1
  731. package/dist/main-sidebar-DYfRxFn4.cjs.map +0 -1
  732. package/dist/page-header-CSigVThQ.js.map +0 -1
  733. package/dist/page-header-DzEEkOca.cjs.map +0 -1
  734. package/dist/select-65j5NjtJ.cjs.map +0 -1
  735. package/dist/select-BiY-SoMJ.js.map +0 -1
  736. package/dist/settings-layout-BGvMSClL.cjs +0 -49
  737. package/dist/settings-layout-BGvMSClL.cjs.map +0 -1
  738. package/dist/settings-layout-DA-JWqW3.js +0 -47
  739. package/dist/settings-layout-DA-JWqW3.js.map +0 -1
  740. package/dist/src/domains/traces/components/trace-keys-and-values.d.ts +0 -24
  741. package/dist/src/domains/traces/components/trace-keys-and-values.stories.d.ts +0 -28
  742. package/dist/src/ds/components/Columns/multi-column.d.ts +0 -7
  743. package/dist/src/ds/components/DataFilter/index.d.ts +0 -2
  744. package/dist/src/ds/components/DataFilter/select-data-filter.d.ts +0 -40
  745. package/dist/src/ds/components/DataFilter/select-data-filter.stories.d.ts +0 -8
  746. package/dist/src/ds/components/ErrorState/ErrorState.d.ts +0 -8
  747. package/dist/src/ds/components/ErrorState/error-state.stories.d.ts +0 -8
  748. package/dist/src/ds/components/ErrorState/index.d.ts +0 -2
  749. package/dist/src/ds/components/IntegrationDialog/__fixtures__/integrations-catalog.d.ts +0 -2
  750. package/dist/src/ds/components/IntegrationDialog/index.d.ts +0 -2
  751. package/dist/src/ds/components/IntegrationDialog/integration-dialog.d.ts +0 -28
  752. package/dist/src/ds/components/PermissionDenied/PermissionDenied.d.ts +0 -16
  753. package/dist/src/ds/components/PermissionDenied/index.d.ts +0 -2
  754. package/dist/src/ds/components/Sections/index.d.ts +0 -1
  755. package/dist/src/ds/components/Sections/sections.d.ts +0 -5
  756. package/dist/src/ds/components/Sections/sections.stories.d.ts +0 -8
  757. package/dist/src/ds/components/SessionExpired/SessionExpired.d.ts +0 -11
  758. package/dist/src/ds/components/SessionExpired/index.d.ts +0 -2
  759. package/dist/src/ds/components/SettingsLayout/index.d.ts +0 -1
  760. package/dist/src/ds/components/SettingsLayout/settings-layout.stories.d.ts +0 -52
  761. package/dist/textarea-5b6XcMrq.cjs.map +0 -1
  762. package/dist/textarea-DdnzLrI9.js.map +0 -1
  763. /package/dist/src/ds/{components/SettingsLayout → new/settings}/settings-layout.d.ts +0 -0
@@ -1,15 +1,9 @@
1
1
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { c as cn } from './cn-65Adrsfj.js';
3
+ import { Children, isValidElement } from 'react';
3
4
 
4
5
  function PageHeaderAction({ className, ...props }) {
5
- return /* @__PURE__ */ jsx(
6
- "div",
7
- {
8
- "data-slot": "page-header-action",
9
- className: cn("col-start-[action] row-start-1 self-center justify-self-end", className),
10
- ...props
11
- }
12
- );
6
+ return /* @__PURE__ */ jsx("div", { "data-slot": "page-header-action", className: cn("ml-auto shrink-0 self-start pt-0.5", className), ...props });
13
7
  }
14
8
 
15
9
  function PageHeaderDescription({ children, className, isLoading, ...props }) {
@@ -34,7 +28,7 @@ function PageHeaderIcon({ className, ...props }) {
34
28
  {
35
29
  "data-slot": "page-header-icon",
36
30
  className: cn(
37
- "col-start-[icon] row-start-1 flex items-center self-center text-muted-foreground [&>svg]:size-6",
31
+ "col-start-[icon] row-start-1 flex items-center self-center text-muted-foreground [&>svg]:size-5",
38
32
  className
39
33
  ),
40
34
  ...props
@@ -86,22 +80,27 @@ function PageHeaderRoot({
86
80
  ...props
87
81
  }) {
88
82
  const useLegacyApi = children === void 0 && title !== void 0;
89
- return /* @__PURE__ */ jsx(
90
- "header",
91
- {
92
- className: cn(
93
- "relative grid w-full grid-cols-[[title]_auto_[meta]_minmax(0,1fr)_[action]_auto_[end]] gap-x-3 gap-y-1",
94
- "has-[>[data-slot=page-header-icon]]:grid-cols-[[icon]_auto_[title]_auto_[meta]_minmax(0,1fr)_[action]_auto_[end]]",
95
- className
96
- ),
97
- ...props,
98
- children: useLegacyApi ? /* @__PURE__ */ jsxs(Fragment, { children: [
99
- !isLoading && icon !== void 0 && /* @__PURE__ */ jsx(PageHeaderIcon, { children: icon }),
100
- /* @__PURE__ */ jsx(PageHeaderTitle, { isLoading, children: title }),
101
- description !== void 0 && /* @__PURE__ */ jsx(PageHeaderDescription, { isLoading, children: description })
102
- ] }) : children
103
- }
104
- );
83
+ const items = Children.toArray(children);
84
+ const actions = items.filter((child) => isValidElement(child) && child.type === PageHeaderAction);
85
+ const content = items.filter((child) => !actions.includes(child));
86
+ return /* @__PURE__ */ jsxs("header", { className: cn("relative flex w-full items-start gap-3", className), ...props, children: [
87
+ /* @__PURE__ */ jsx(
88
+ "div",
89
+ {
90
+ "data-slot": "page-header-grid",
91
+ className: cn(
92
+ "grid min-w-0 flex-1 grid-cols-[[title]_auto_[meta]_minmax(0,1fr)_[end]] gap-x-3 gap-y-1",
93
+ "has-[>[data-slot=page-header-icon]]:grid-cols-[[icon]_auto_[title]_auto_[meta]_minmax(0,1fr)_[end]]"
94
+ ),
95
+ children: useLegacyApi ? /* @__PURE__ */ jsxs(Fragment, { children: [
96
+ !isLoading && icon !== void 0 && /* @__PURE__ */ jsx(PageHeaderIcon, { children: icon }),
97
+ /* @__PURE__ */ jsx(PageHeaderTitle, { isLoading, children: title }),
98
+ description !== void 0 && /* @__PURE__ */ jsx(PageHeaderDescription, { isLoading, children: description })
99
+ ] }) : content
100
+ }
101
+ ),
102
+ actions
103
+ ] });
105
104
  }
106
105
 
107
106
  const PageHeader = Object.assign(PageHeaderRoot, {
@@ -113,4 +112,4 @@ const PageHeader = Object.assign(PageHeaderRoot, {
113
112
  });
114
113
 
115
114
  export { PageHeader as P };
116
- //# sourceMappingURL=page-header-CSigVThQ.js.map
115
+ //# sourceMappingURL=page-header-CyXAezlZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-header-CyXAezlZ.js","sources":["../src/ds/new/layout/page-header/page-header-action.tsx","../src/ds/new/layout/page-header/page-header-description.tsx","../src/ds/new/layout/page-header/page-header-icon.tsx","../src/ds/new/layout/page-header/page-header-meta.tsx","../src/ds/new/layout/page-header/page-header-title.tsx","../src/ds/new/layout/page-header/page-header-root.tsx","../src/ds/new/layout/page-header/page-header.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport type PageHeaderActionProps = ComponentPropsWithoutRef<'div'>;\n\nexport function PageHeaderAction({ className, ...props }: PageHeaderActionProps) {\n return (\n <div data-slot=\"page-header-action\" className={cn('ml-auto shrink-0 self-start pt-0.5', className)} {...props} />\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderDescriptionProps extends ComponentPropsWithoutRef<'p'> {\n isLoading?: boolean;\n}\n\nexport function PageHeaderDescription({ children, className, isLoading, ...props }: PageHeaderDescriptionProps) {\n return (\n <p\n data-slot=\"page-header-description\"\n className={cn(\n 'col-[title/end] flex max-w-140 flex-wrap gap-x-4 gap-y-1 text-caption text-muted-foreground',\n isLoading && 'w-160 max-w-[80%] animate-pulse rounded-md bg-muted',\n className,\n )}\n {...props}\n >\n {isLoading ? <>&nbsp;</> : children}\n </p>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport type PageHeaderIconProps = ComponentPropsWithoutRef<'div'>;\n\nexport function PageHeaderIcon({ className, ...props }: PageHeaderIconProps) {\n return (\n <div\n data-slot=\"page-header-icon\"\n className={cn(\n 'col-start-[icon] row-start-1 flex items-center self-center text-muted-foreground [&>svg]:size-5',\n className,\n )}\n {...props}\n />\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderMetaProps extends ComponentPropsWithoutRef<'div'> {\n beside?: boolean;\n}\n\nexport function PageHeaderMeta({ beside = false, className, ...props }: PageHeaderMetaProps) {\n return (\n <div\n data-slot=\"page-header-meta\"\n data-placement={beside ? 'beside' : 'below'}\n className={cn(\n 'flex min-w-0 flex-wrap items-center gap-2',\n beside ? 'col-start-[meta] row-start-1 self-center justify-self-start' : 'col-[title/end]',\n className,\n )}\n {...props}\n />\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderTitleProps extends ComponentPropsWithoutRef<'h1'> {\n isLoading?: boolean;\n}\n\nexport function PageHeaderTitle({ children, className, isLoading, ...props }: PageHeaderTitleProps) {\n return (\n <h1\n data-slot=\"page-header-title\"\n className={cn(\n 'col-start-[title] row-start-1 flex min-w-0 items-center gap-2 self-start',\n 'text-heading text-foreground',\n '[&>svg]:size-[1.25em] [&>svg]:opacity-50',\n isLoading && 'w-60 max-w-[50%] animate-pulse rounded-md bg-fill',\n className,\n )}\n {...props}\n >\n {isLoading ? <>&nbsp;</> : children}\n </h1>\n );\n}\n","import { Children, isValidElement } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\n\nimport { PageHeaderAction } from './page-header-action';\nimport { PageHeaderDescription } from './page-header-description';\nimport { PageHeaderIcon } from './page-header-icon';\nimport { PageHeaderTitle } from './page-header-title';\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderRootProps extends Omit<ComponentPropsWithoutRef<'header'>, 'title'> {\n title?: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n isLoading?: boolean;\n}\n\nexport function PageHeaderRoot({\n children,\n className,\n title,\n description,\n icon,\n isLoading,\n ...props\n}: PageHeaderRootProps) {\n const useLegacyApi = children === undefined && title !== undefined;\n\n // Actions sit outside the title grid so their height never affects title/meta/description alignment.\n const items = Children.toArray(children);\n const actions = items.filter(child => isValidElement(child) && child.type === PageHeaderAction);\n const content = items.filter(child => !actions.includes(child));\n\n return (\n <header className={cn('relative flex w-full items-start gap-3', className)} {...props}>\n <div\n data-slot=\"page-header-grid\"\n className={cn(\n 'grid min-w-0 flex-1 grid-cols-[[title]_auto_[meta]_minmax(0,1fr)_[end]] gap-x-3 gap-y-1',\n 'has-[>[data-slot=page-header-icon]]:grid-cols-[[icon]_auto_[title]_auto_[meta]_minmax(0,1fr)_[end]]',\n )}\n >\n {useLegacyApi ? (\n <>\n {!isLoading && icon !== undefined && <PageHeaderIcon>{icon}</PageHeaderIcon>}\n <PageHeaderTitle isLoading={isLoading}>{title}</PageHeaderTitle>\n {description !== undefined && (\n <PageHeaderDescription isLoading={isLoading}>{description}</PageHeaderDescription>\n )}\n </>\n ) : (\n content\n )}\n </div>\n {actions}\n </header>\n );\n}\n","import { PageHeaderAction } from './page-header-action';\nimport { PageHeaderDescription } from './page-header-description';\nimport { PageHeaderIcon } from './page-header-icon';\nimport { PageHeaderMeta } from './page-header-meta';\nimport { PageHeaderRoot } from './page-header-root';\nimport { PageHeaderTitle } from './page-header-title';\n\nexport type { PageHeaderActionProps } from './page-header-action';\nexport type { PageHeaderDescriptionProps } from './page-header-description';\nexport type { PageHeaderIconProps } from './page-header-icon';\nexport type { PageHeaderMetaProps } from './page-header-meta';\nexport type { PageHeaderRootProps } from './page-header-root';\nexport type { PageHeaderTitleProps } from './page-header-title';\n\nexport const PageHeader = Object.assign(PageHeaderRoot, {\n Icon: PageHeaderIcon,\n Title: PageHeaderTitle,\n Meta: PageHeaderMeta,\n Description: PageHeaderDescription,\n Action: PageHeaderAction,\n});\n"],"names":[],"mappings":";;;;AAMO,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA0B;AAC/E,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,oBAAA,EAAqB,SAAA,EAAW,GAAG,oCAAA,EAAsC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAEnH;;ACFO,SAAS,sBAAsB,EAAE,QAAA,EAAU,WAAW,SAAA,EAAW,GAAG,OAAM,EAA+B;AAC9G,EAAA,uBACE,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,yBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,6FAAA;AAAA,QACA,SAAA,IAAa,qDAAA;AAAA,QACb;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,SAAA,mBAAY,GAAA,CAAA,QAAA,EAAA,EAAE,QAAA,EAAA,GAAA,EAAM,CAAA,GAAM;AAAA;AAAA,GAC7B;AAEJ;;AChBO,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAAwB;AAC3E,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,iGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;;ACTO,SAAS,eAAe,EAAE,MAAA,GAAS,OAAO,SAAA,EAAW,GAAG,OAAM,EAAwB;AAC3F,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,gBAAA,EAAgB,SAAS,QAAA,GAAW,OAAA;AAAA,MACpC,SAAA,EAAW,EAAA;AAAA,QACT,2CAAA;AAAA,QACA,SAAS,6DAAA,GAAgE,iBAAA;AAAA,QACzE;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;;ACbO,SAAS,gBAAgB,EAAE,QAAA,EAAU,WAAW,SAAA,EAAW,GAAG,OAAM,EAAyB;AAClG,EAAA,uBACE,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,0EAAA;AAAA,QACA,8BAAA;AAAA,QACA,0CAAA;AAAA,QACA,SAAA,IAAa,mDAAA;AAAA,QACb;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,SAAA,mBAAY,GAAA,CAAA,QAAA,EAAA,EAAE,QAAA,EAAA,GAAA,EAAM,CAAA,GAAM;AAAA;AAAA,GAC7B;AAEJ;;ACRO,SAAS,cAAA,CAAe;AAAA,EAC7B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,MAAM,YAAA,GAAe,QAAA,KAAa,MAAA,IAAa,KAAA,KAAU,MAAA;AAGzD,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA;AACvC,EAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,CAAA,KAAA,KAAS,eAAe,KAAK,CAAA,IAAK,KAAA,CAAM,IAAA,KAAS,gBAAgB,CAAA;AAC9F,EAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,CAAA,KAAA,KAAS,CAAC,OAAA,CAAQ,QAAA,CAAS,KAAK,CAAC,CAAA;AAE9D,EAAA,uBACE,IAAA,CAAC,YAAO,SAAA,EAAW,EAAA,CAAG,0CAA0C,SAAS,CAAA,EAAI,GAAG,KAAA,EAC9E,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAU,kBAAA;AAAA,QACV,SAAA,EAAW,EAAA;AAAA,UACT,yFAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC,yCACC,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,CAAC,SAAA,IAAa,IAAA,KAAS,MAAA,oBAAa,GAAA,CAAC,kBAAgB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,0BAC3D,GAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAuB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAC7C,WAAA,KAAgB,MAAA,oBACf,GAAA,CAAC,qBAAA,EAAA,EAAsB,WAAuB,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EAE9D,CAAA,GAEA;AAAA;AAAA,KAEJ;AAAA,IACC;AAAA,GAAA,EACH,CAAA;AAEJ;;AC1CO,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,cAAA,EAAgB;AAAA,EACtD,IAAA,EAAM,cAAA;AAAA,EACN,KAAA,EAAO,eAAA;AAAA,EACP,IAAA,EAAM,cAAA;AAAA,EACN,WAAA,EAAa,qBAAA;AAAA,EACb,MAAA,EAAQ;AACV,CAAC;;;;"}
@@ -2,16 +2,10 @@
2
2
 
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
4
  const utils_cn = require('./cn-DG0X1KEP.cjs');
5
+ const React = require('react');
5
6
 
6
7
  function PageHeaderAction({ className, ...props }) {
7
- return /* @__PURE__ */ jsxRuntime.jsx(
8
- "div",
9
- {
10
- "data-slot": "page-header-action",
11
- className: utils_cn.cn("col-start-[action] row-start-1 self-center justify-self-end", className),
12
- ...props
13
- }
14
- );
8
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "page-header-action", className: utils_cn.cn("ml-auto shrink-0 self-start pt-0.5", className), ...props });
15
9
  }
16
10
 
17
11
  function PageHeaderDescription({ children, className, isLoading, ...props }) {
@@ -36,7 +30,7 @@ function PageHeaderIcon({ className, ...props }) {
36
30
  {
37
31
  "data-slot": "page-header-icon",
38
32
  className: utils_cn.cn(
39
- "col-start-[icon] row-start-1 flex items-center self-center text-muted-foreground [&>svg]:size-6",
33
+ "col-start-[icon] row-start-1 flex items-center self-center text-muted-foreground [&>svg]:size-5",
40
34
  className
41
35
  ),
42
36
  ...props
@@ -88,22 +82,27 @@ function PageHeaderRoot({
88
82
  ...props
89
83
  }) {
90
84
  const useLegacyApi = children === void 0 && title !== void 0;
91
- return /* @__PURE__ */ jsxRuntime.jsx(
92
- "header",
93
- {
94
- className: utils_cn.cn(
95
- "relative grid w-full grid-cols-[[title]_auto_[meta]_minmax(0,1fr)_[action]_auto_[end]] gap-x-3 gap-y-1",
96
- "has-[>[data-slot=page-header-icon]]:grid-cols-[[icon]_auto_[title]_auto_[meta]_minmax(0,1fr)_[action]_auto_[end]]",
97
- className
98
- ),
99
- ...props,
100
- children: useLegacyApi ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
101
- !isLoading && icon !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(PageHeaderIcon, { children: icon }),
102
- /* @__PURE__ */ jsxRuntime.jsx(PageHeaderTitle, { isLoading, children: title }),
103
- description !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(PageHeaderDescription, { isLoading, children: description })
104
- ] }) : children
105
- }
106
- );
85
+ const items = React.Children.toArray(children);
86
+ const actions = items.filter((child) => React.isValidElement(child) && child.type === PageHeaderAction);
87
+ const content = items.filter((child) => !actions.includes(child));
88
+ return /* @__PURE__ */ jsxRuntime.jsxs("header", { className: utils_cn.cn("relative flex w-full items-start gap-3", className), ...props, children: [
89
+ /* @__PURE__ */ jsxRuntime.jsx(
90
+ "div",
91
+ {
92
+ "data-slot": "page-header-grid",
93
+ className: utils_cn.cn(
94
+ "grid min-w-0 flex-1 grid-cols-[[title]_auto_[meta]_minmax(0,1fr)_[end]] gap-x-3 gap-y-1",
95
+ "has-[>[data-slot=page-header-icon]]:grid-cols-[[icon]_auto_[title]_auto_[meta]_minmax(0,1fr)_[end]]"
96
+ ),
97
+ children: useLegacyApi ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
98
+ !isLoading && icon !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(PageHeaderIcon, { children: icon }),
99
+ /* @__PURE__ */ jsxRuntime.jsx(PageHeaderTitle, { isLoading, children: title }),
100
+ description !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(PageHeaderDescription, { isLoading, children: description })
101
+ ] }) : content
102
+ }
103
+ ),
104
+ actions
105
+ ] });
107
106
  }
108
107
 
109
108
  const PageHeader = Object.assign(PageHeaderRoot, {
@@ -115,4 +114,4 @@ const PageHeader = Object.assign(PageHeaderRoot, {
115
114
  });
116
115
 
117
116
  exports.PageHeader = PageHeader;
118
- //# sourceMappingURL=page-header-DzEEkOca.cjs.map
117
+ //# sourceMappingURL=page-header-Dk3s3XtC.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-header-Dk3s3XtC.cjs","sources":["../src/ds/new/layout/page-header/page-header-action.tsx","../src/ds/new/layout/page-header/page-header-description.tsx","../src/ds/new/layout/page-header/page-header-icon.tsx","../src/ds/new/layout/page-header/page-header-meta.tsx","../src/ds/new/layout/page-header/page-header-title.tsx","../src/ds/new/layout/page-header/page-header-root.tsx","../src/ds/new/layout/page-header/page-header.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport type PageHeaderActionProps = ComponentPropsWithoutRef<'div'>;\n\nexport function PageHeaderAction({ className, ...props }: PageHeaderActionProps) {\n return (\n <div data-slot=\"page-header-action\" className={cn('ml-auto shrink-0 self-start pt-0.5', className)} {...props} />\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderDescriptionProps extends ComponentPropsWithoutRef<'p'> {\n isLoading?: boolean;\n}\n\nexport function PageHeaderDescription({ children, className, isLoading, ...props }: PageHeaderDescriptionProps) {\n return (\n <p\n data-slot=\"page-header-description\"\n className={cn(\n 'col-[title/end] flex max-w-140 flex-wrap gap-x-4 gap-y-1 text-caption text-muted-foreground',\n isLoading && 'w-160 max-w-[80%] animate-pulse rounded-md bg-muted',\n className,\n )}\n {...props}\n >\n {isLoading ? <>&nbsp;</> : children}\n </p>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport type PageHeaderIconProps = ComponentPropsWithoutRef<'div'>;\n\nexport function PageHeaderIcon({ className, ...props }: PageHeaderIconProps) {\n return (\n <div\n data-slot=\"page-header-icon\"\n className={cn(\n 'col-start-[icon] row-start-1 flex items-center self-center text-muted-foreground [&>svg]:size-5',\n className,\n )}\n {...props}\n />\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderMetaProps extends ComponentPropsWithoutRef<'div'> {\n beside?: boolean;\n}\n\nexport function PageHeaderMeta({ beside = false, className, ...props }: PageHeaderMetaProps) {\n return (\n <div\n data-slot=\"page-header-meta\"\n data-placement={beside ? 'beside' : 'below'}\n className={cn(\n 'flex min-w-0 flex-wrap items-center gap-2',\n beside ? 'col-start-[meta] row-start-1 self-center justify-self-start' : 'col-[title/end]',\n className,\n )}\n {...props}\n />\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderTitleProps extends ComponentPropsWithoutRef<'h1'> {\n isLoading?: boolean;\n}\n\nexport function PageHeaderTitle({ children, className, isLoading, ...props }: PageHeaderTitleProps) {\n return (\n <h1\n data-slot=\"page-header-title\"\n className={cn(\n 'col-start-[title] row-start-1 flex min-w-0 items-center gap-2 self-start',\n 'text-heading text-foreground',\n '[&>svg]:size-[1.25em] [&>svg]:opacity-50',\n isLoading && 'w-60 max-w-[50%] animate-pulse rounded-md bg-fill',\n className,\n )}\n {...props}\n >\n {isLoading ? <>&nbsp;</> : children}\n </h1>\n );\n}\n","import { Children, isValidElement } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\n\nimport { PageHeaderAction } from './page-header-action';\nimport { PageHeaderDescription } from './page-header-description';\nimport { PageHeaderIcon } from './page-header-icon';\nimport { PageHeaderTitle } from './page-header-title';\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderRootProps extends Omit<ComponentPropsWithoutRef<'header'>, 'title'> {\n title?: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n isLoading?: boolean;\n}\n\nexport function PageHeaderRoot({\n children,\n className,\n title,\n description,\n icon,\n isLoading,\n ...props\n}: PageHeaderRootProps) {\n const useLegacyApi = children === undefined && title !== undefined;\n\n // Actions sit outside the title grid so their height never affects title/meta/description alignment.\n const items = Children.toArray(children);\n const actions = items.filter(child => isValidElement(child) && child.type === PageHeaderAction);\n const content = items.filter(child => !actions.includes(child));\n\n return (\n <header className={cn('relative flex w-full items-start gap-3', className)} {...props}>\n <div\n data-slot=\"page-header-grid\"\n className={cn(\n 'grid min-w-0 flex-1 grid-cols-[[title]_auto_[meta]_minmax(0,1fr)_[end]] gap-x-3 gap-y-1',\n 'has-[>[data-slot=page-header-icon]]:grid-cols-[[icon]_auto_[title]_auto_[meta]_minmax(0,1fr)_[end]]',\n )}\n >\n {useLegacyApi ? (\n <>\n {!isLoading && icon !== undefined && <PageHeaderIcon>{icon}</PageHeaderIcon>}\n <PageHeaderTitle isLoading={isLoading}>{title}</PageHeaderTitle>\n {description !== undefined && (\n <PageHeaderDescription isLoading={isLoading}>{description}</PageHeaderDescription>\n )}\n </>\n ) : (\n content\n )}\n </div>\n {actions}\n </header>\n );\n}\n","import { PageHeaderAction } from './page-header-action';\nimport { PageHeaderDescription } from './page-header-description';\nimport { PageHeaderIcon } from './page-header-icon';\nimport { PageHeaderMeta } from './page-header-meta';\nimport { PageHeaderRoot } from './page-header-root';\nimport { PageHeaderTitle } from './page-header-title';\n\nexport type { PageHeaderActionProps } from './page-header-action';\nexport type { PageHeaderDescriptionProps } from './page-header-description';\nexport type { PageHeaderIconProps } from './page-header-icon';\nexport type { PageHeaderMetaProps } from './page-header-meta';\nexport type { PageHeaderRootProps } from './page-header-root';\nexport type { PageHeaderTitleProps } from './page-header-title';\n\nexport const PageHeader = Object.assign(PageHeaderRoot, {\n Icon: PageHeaderIcon,\n Title: PageHeaderTitle,\n Meta: PageHeaderMeta,\n Description: PageHeaderDescription,\n Action: PageHeaderAction,\n});\n"],"names":["jsx","cn","Fragment","Children","isValidElement","jsxs"],"mappings":";;;;;;AAMO,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAW,GAAG,OAAM,EAA0B;AAC/E,EAAA,uBACEA,cAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,oBAAA,EAAqB,SAAA,EAAWC,YAAG,oCAAA,EAAsC,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CAAA;AAEnH;;ACFO,SAAS,sBAAsB,EAAE,QAAA,EAAU,WAAW,SAAA,EAAW,GAAG,OAAM,EAA+B;AAC9G,EAAA,uBACED,cAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,yBAAA;AAAA,MACV,SAAA,EAAWC,WAAA;AAAA,QACT,6FAAA;AAAA,QACA,SAAA,IAAa,qDAAA;AAAA,QACb;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,SAAA,mBAAYD,cAAA,CAAAE,mBAAA,EAAA,EAAE,QAAA,EAAA,GAAA,EAAM,CAAA,GAAM;AAAA;AAAA,GAC7B;AAEJ;;AChBO,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAAwB;AAC3E,EAAA,uBACEF,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,SAAA,EAAWC,WAAA;AAAA,QACT,iGAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;;ACTO,SAAS,eAAe,EAAE,MAAA,GAAS,OAAO,SAAA,EAAW,GAAG,OAAM,EAAwB;AAC3F,EAAA,uBACED,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,gBAAA,EAAgB,SAAS,QAAA,GAAW,OAAA;AAAA,MACpC,SAAA,EAAWC,WAAA;AAAA,QACT,2CAAA;AAAA,QACA,SAAS,6DAAA,GAAgE,iBAAA;AAAA,QACzE;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;;ACbO,SAAS,gBAAgB,EAAE,QAAA,EAAU,WAAW,SAAA,EAAW,GAAG,OAAM,EAAyB;AAClG,EAAA,uBACED,cAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,mBAAA;AAAA,MACV,SAAA,EAAWC,WAAA;AAAA,QACT,0EAAA;AAAA,QACA,8BAAA;AAAA,QACA,0CAAA;AAAA,QACA,SAAA,IAAa,mDAAA;AAAA,QACb;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,SAAA,mBAAYD,cAAA,CAAAE,mBAAA,EAAA,EAAE,QAAA,EAAA,GAAA,EAAM,CAAA,GAAM;AAAA;AAAA,GAC7B;AAEJ;;ACRO,SAAS,cAAA,CAAe;AAAA,EAC7B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,MAAM,YAAA,GAAe,QAAA,KAAa,MAAA,IAAa,KAAA,KAAU,MAAA;AAGzD,EAAA,MAAM,KAAA,GAAQC,cAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA;AACvC,EAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,CAAA,KAAA,KAASC,qBAAe,KAAK,CAAA,IAAK,KAAA,CAAM,IAAA,KAAS,gBAAgB,CAAA;AAC9F,EAAA,MAAM,OAAA,GAAU,MAAM,MAAA,CAAO,CAAA,KAAA,KAAS,CAAC,OAAA,CAAQ,QAAA,CAAS,KAAK,CAAC,CAAA;AAE9D,EAAA,uBACEC,eAAA,CAAC,YAAO,SAAA,EAAWJ,WAAA,CAAG,0CAA0C,SAAS,CAAA,EAAI,GAAG,KAAA,EAC9E,QAAA,EAAA;AAAA,oBAAAD,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAU,kBAAA;AAAA,QACV,SAAA,EAAWC,WAAA;AAAA,UACT,yFAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC,yCACCI,eAAA,CAAAH,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,CAAC,SAAA,IAAa,IAAA,KAAS,MAAA,oBAAaF,cAAA,CAAC,kBAAgB,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,0BAC3DA,cAAA,CAAC,eAAA,EAAA,EAAgB,SAAA,EAAuB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,UAC7C,WAAA,KAAgB,MAAA,oBACfA,cAAA,CAAC,qBAAA,EAAA,EAAsB,WAAuB,QAAA,EAAA,WAAA,EAAY;AAAA,SAAA,EAE9D,CAAA,GAEA;AAAA;AAAA,KAEJ;AAAA,IACC;AAAA,GAAA,EACH,CAAA;AAEJ;;AC1CO,MAAM,UAAA,GAAa,MAAA,CAAO,MAAA,CAAO,cAAA,EAAgB;AAAA,EACtD,IAAA,EAAM,cAAA;AAAA,EACN,KAAA,EAAO,eAAA;AAAA,EACP,IAAA,EAAM,cAAA;AAAA,EACN,WAAA,EAAa,qBAAA;AAAA,EACb,MAAA,EAAQ;AACV,CAAC;;;;"}
@@ -36,11 +36,10 @@ const controlSizeClasses = {
36
36
  };
37
37
  const controlTriggerOpenState = {
38
38
  default: "data-[popup-open]:[--surface-tint:var(--fill)] data-[popup-open]:text-foreground",
39
- outline: "data-[popup-open]:bg-fill-subtle data-[popup-open]:text-foreground data-[popup-open]:border-border-hover",
40
39
  ghost: "data-[popup-open]:bg-fill-subtle data-[popup-open]:text-foreground"
41
40
  };
42
41
  function controlTriggerOpenStateFor(variant) {
43
- return variant === "default" || variant === "outline" || variant === "ghost" ? controlTriggerOpenState[variant] : void 0;
42
+ return variant === "default" || variant === "ghost" ? controlTriggerOpenState[variant] : void 0;
44
43
  }
45
44
 
46
45
  exports.ControlSizeContext = ControlSizeContext;
@@ -1 +1 @@
1
- {"version":3,"file":"control-size.cjs.js","sources":["../../src/ds/primitives/control-size.ts"],"sourcesContent":["import * as React from 'react';\n\n// Shared size rhythm for interactive controls (Button, Input, Select trigger,\n// InputGroup, and other form-shaped triggers). These height + text-size classes\n// are the single source of truth so controls line up pixel-for-pixel when placed\n// in the same row or composed inside a ButtonsGroup / InputGroup. Horizontal\n// padding stays per-component (a button hugs its label tighter than an input\n// hugs its text), so it deliberately lives in each component, not here.\n\nexport type ControlSize = 'sm' | 'md' | 'lg';\n\n// The rung a wrapper imposes on the controls inside it (ButtonsGroup). A control's box is\n// forced by the wrapper's stylesheet, which reaches segments a provider cannot name — Base\n// UI renders a trigger as its own child. This carries what a stylesheet cannot reach\n// instead: the type role and adornment scale a field keys off its own `data-size`.\nexport const ControlSizeContext = React.createContext<ControlSize | undefined>(undefined);\n\n// Height only — for square/icon controls and wrappers that own height on the\n// border-box while their inner control inherits it.\nexport const controlHeight: Record<ControlSize, string> = {\n sm: 'h-control-sm',\n md: 'h-control-md',\n lg: 'h-control-lg',\n};\n\n// Controls centre their label with flex, not with the line box, so `text-box-trim`\n// is inert here: it trims line boxes in a block container, and a control's label is\n// an anonymous flex item. Measured centring error is at most 0.6px, so the em box\n// and its paired leading token carry this. Revisit only if a label moves to a\n// block-level wrapper.\n\n// Height + text role. Heights: sm 28px / md 30px / lg 32px. `md` is the default\n// everywhere, and a control's label is a label at every height — the box grows, the\n// type does not, which is why all three share `text-label` (13px/500, measured from\n// Linear, whose buttons are 13px regardless of height). The 20px rung is gone: a\n// control that small cannot hold a 13px label, and the pages here carry few enough\n// items that they never needed it.\n// The role carries the weight, so no control adds `font-medium` on top.\nexport const controlSizeClasses: Record<ControlSize, string> = {\n sm: 'h-control-sm text-label',\n md: 'h-control-md text-label',\n lg: 'h-control-lg text-label',\n};\n\nexport type ControlTriggerVisualVariant = 'default' | 'outline' | 'ghost';\n\n// Open (\"popup-open\") state per variant. `default` washes through `--surface-tint`, the\n// layer its raised material expresses every other state in: its fill is a pinned card\n// colour, and swapping that would drop the control out of the material it shares with a\n// field. The transparent variants have no material to wash, so they take a fill rung.\nexport const controlTriggerOpenState: Record<ControlTriggerVisualVariant, string> = {\n default: 'data-[popup-open]:[--surface-tint:var(--fill)] data-[popup-open]:text-foreground',\n outline: 'data-[popup-open]:bg-fill-subtle data-[popup-open]:text-foreground data-[popup-open]:border-border-hover',\n ghost: 'data-[popup-open]:bg-fill-subtle data-[popup-open]:text-foreground',\n};\n\n// Open-state classes for a trigger rendered with any Button variant; only the\n// form-style variants have one (a `primary`/`destructive` trigger keeps its look).\nexport function controlTriggerOpenStateFor(variant: string | null | undefined): string | undefined {\n return variant === 'default' || variant === 'outline' || variant === 'ghost'\n ? controlTriggerOpenState[variant]\n : undefined;\n}\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAeO,MAAM,kBAAA,GAAqBA,gBAAA,CAAM,aAAA,CAAuC,MAAS;AAIjF,MAAM,aAAA,GAA6C;AAAA,EACxD,EAAA,EAAI,cAAA;AAAA,EACJ,EAAA,EAAI,cAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAeO,MAAM,kBAAA,GAAkD;AAAA,EAC7D,EAAA,EAAI,yBAAA;AAAA,EACJ,EAAA,EAAI,yBAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAQO,MAAM,uBAAA,GAAuE;AAAA,EAClF,OAAA,EAAS,kFAAA;AAAA,EACT,OAAA,EAAS,0GAAA;AAAA,EACT,KAAA,EAAO;AACT;AAIO,SAAS,2BAA2B,OAAA,EAAwD;AACjG,EAAA,OAAO,OAAA,KAAY,aAAa,OAAA,KAAY,SAAA,IAAa,YAAY,OAAA,GACjE,uBAAA,CAAwB,OAAO,CAAA,GAC/B,MAAA;AACN;;;;;;;;"}
1
+ {"version":3,"file":"control-size.cjs.js","sources":["../../src/ds/primitives/control-size.ts"],"sourcesContent":["import * as React from 'react';\n\n// Shared size rhythm for interactive controls (Button, Input, Select trigger,\n// InputGroup, and other form-shaped triggers). These height + text-size classes\n// are the single source of truth so controls line up pixel-for-pixel when placed\n// in the same row or composed inside a ButtonsGroup / InputGroup. Horizontal\n// padding stays per-component (a button hugs its label tighter than an input\n// hugs its text), so it deliberately lives in each component, not here.\n\nexport type ControlSize = 'sm' | 'md' | 'lg';\n\n// The rung a wrapper imposes on the controls inside it (ButtonsGroup). A control's box is\n// forced by the wrapper's stylesheet, which reaches segments a provider cannot name — Base\n// UI renders a trigger as its own child. This carries what a stylesheet cannot reach\n// instead: the type role and adornment scale a field keys off its own `data-size`.\nexport const ControlSizeContext = React.createContext<ControlSize | undefined>(undefined);\n\n// Height only — for square/icon controls and wrappers that own height on the\n// border-box while their inner control inherits it.\nexport const controlHeight: Record<ControlSize, string> = {\n sm: 'h-control-sm',\n md: 'h-control-md',\n lg: 'h-control-lg',\n};\n\n// Controls centre their label with flex, not with the line box, so `text-box-trim`\n// is inert here: it trims line boxes in a block container, and a control's label is\n// an anonymous flex item. Measured centring error is at most 0.6px, so the em box\n// and its paired leading token carry this. Revisit only if a label moves to a\n// block-level wrapper.\n\n// Height + text role. Heights: sm 28px / md 30px / lg 32px. `md` is the default\n// everywhere, and a control's label is a label at every height — the box grows, the\n// type does not, which is why all three share `text-label` (13px/500, measured from\n// Linear, whose buttons are 13px regardless of height). The 20px rung is gone: a\n// control that small cannot hold a 13px label, and the pages here carry few enough\n// items that they never needed it.\n// The role carries the weight, so no control adds `font-medium` on top.\nexport const controlSizeClasses: Record<ControlSize, string> = {\n sm: 'h-control-sm text-label',\n md: 'h-control-md text-label',\n lg: 'h-control-lg text-label',\n};\n\nexport type ControlTriggerVisualVariant = 'default' | 'ghost';\n\n// Open (\"popup-open\") state per variant. `default` washes through `--surface-tint`, the\n// layer its raised material expresses every other state in: its fill is a pinned card\n// colour, and swapping that would drop the control out of the material it shares with a\n// field. `ghost` has no material to wash, so it takes a fill rung.\nexport const controlTriggerOpenState: Record<ControlTriggerVisualVariant, string> = {\n default: 'data-[popup-open]:[--surface-tint:var(--fill)] data-[popup-open]:text-foreground',\n ghost: 'data-[popup-open]:bg-fill-subtle data-[popup-open]:text-foreground',\n};\n\n// Open-state classes for a trigger rendered with any Button variant; only the\n// form-style variants have one (a `primary`/`destructive` trigger keeps its look).\nexport function controlTriggerOpenStateFor(variant: string | null | undefined): string | undefined {\n return variant === 'default' || variant === 'ghost' ? controlTriggerOpenState[variant] : undefined;\n}\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAeO,MAAM,kBAAA,GAAqBA,gBAAA,CAAM,aAAA,CAAuC,MAAS;AAIjF,MAAM,aAAA,GAA6C;AAAA,EACxD,EAAA,EAAI,cAAA;AAAA,EACJ,EAAA,EAAI,cAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAeO,MAAM,kBAAA,GAAkD;AAAA,EAC7D,EAAA,EAAI,yBAAA;AAAA,EACJ,EAAA,EAAI,yBAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAQO,MAAM,uBAAA,GAAuE;AAAA,EAClF,OAAA,EAAS,kFAAA;AAAA,EACT,KAAA,EAAO;AACT;AAIO,SAAS,2BAA2B,OAAA,EAAwD;AACjG,EAAA,OAAO,YAAY,SAAA,IAAa,OAAA,KAAY,OAAA,GAAU,uBAAA,CAAwB,OAAO,CAAA,GAAI,MAAA;AAC3F;;;;;;;;"}
@@ -13,11 +13,10 @@ const controlSizeClasses = {
13
13
  };
14
14
  const controlTriggerOpenState = {
15
15
  default: "data-[popup-open]:[--surface-tint:var(--fill)] data-[popup-open]:text-foreground",
16
- outline: "data-[popup-open]:bg-fill-subtle data-[popup-open]:text-foreground data-[popup-open]:border-border-hover",
17
16
  ghost: "data-[popup-open]:bg-fill-subtle data-[popup-open]:text-foreground"
18
17
  };
19
18
  function controlTriggerOpenStateFor(variant) {
20
- return variant === "default" || variant === "outline" || variant === "ghost" ? controlTriggerOpenState[variant] : void 0;
19
+ return variant === "default" || variant === "ghost" ? controlTriggerOpenState[variant] : void 0;
21
20
  }
22
21
 
23
22
  export { ControlSizeContext, controlHeight, controlSizeClasses, controlTriggerOpenState, controlTriggerOpenStateFor };
@@ -1 +1 @@
1
- {"version":3,"file":"control-size.es.js","sources":["../../src/ds/primitives/control-size.ts"],"sourcesContent":["import * as React from 'react';\n\n// Shared size rhythm for interactive controls (Button, Input, Select trigger,\n// InputGroup, and other form-shaped triggers). These height + text-size classes\n// are the single source of truth so controls line up pixel-for-pixel when placed\n// in the same row or composed inside a ButtonsGroup / InputGroup. Horizontal\n// padding stays per-component (a button hugs its label tighter than an input\n// hugs its text), so it deliberately lives in each component, not here.\n\nexport type ControlSize = 'sm' | 'md' | 'lg';\n\n// The rung a wrapper imposes on the controls inside it (ButtonsGroup). A control's box is\n// forced by the wrapper's stylesheet, which reaches segments a provider cannot name — Base\n// UI renders a trigger as its own child. This carries what a stylesheet cannot reach\n// instead: the type role and adornment scale a field keys off its own `data-size`.\nexport const ControlSizeContext = React.createContext<ControlSize | undefined>(undefined);\n\n// Height only — for square/icon controls and wrappers that own height on the\n// border-box while their inner control inherits it.\nexport const controlHeight: Record<ControlSize, string> = {\n sm: 'h-control-sm',\n md: 'h-control-md',\n lg: 'h-control-lg',\n};\n\n// Controls centre their label with flex, not with the line box, so `text-box-trim`\n// is inert here: it trims line boxes in a block container, and a control's label is\n// an anonymous flex item. Measured centring error is at most 0.6px, so the em box\n// and its paired leading token carry this. Revisit only if a label moves to a\n// block-level wrapper.\n\n// Height + text role. Heights: sm 28px / md 30px / lg 32px. `md` is the default\n// everywhere, and a control's label is a label at every height — the box grows, the\n// type does not, which is why all three share `text-label` (13px/500, measured from\n// Linear, whose buttons are 13px regardless of height). The 20px rung is gone: a\n// control that small cannot hold a 13px label, and the pages here carry few enough\n// items that they never needed it.\n// The role carries the weight, so no control adds `font-medium` on top.\nexport const controlSizeClasses: Record<ControlSize, string> = {\n sm: 'h-control-sm text-label',\n md: 'h-control-md text-label',\n lg: 'h-control-lg text-label',\n};\n\nexport type ControlTriggerVisualVariant = 'default' | 'outline' | 'ghost';\n\n// Open (\"popup-open\") state per variant. `default` washes through `--surface-tint`, the\n// layer its raised material expresses every other state in: its fill is a pinned card\n// colour, and swapping that would drop the control out of the material it shares with a\n// field. The transparent variants have no material to wash, so they take a fill rung.\nexport const controlTriggerOpenState: Record<ControlTriggerVisualVariant, string> = {\n default: 'data-[popup-open]:[--surface-tint:var(--fill)] data-[popup-open]:text-foreground',\n outline: 'data-[popup-open]:bg-fill-subtle data-[popup-open]:text-foreground data-[popup-open]:border-border-hover',\n ghost: 'data-[popup-open]:bg-fill-subtle data-[popup-open]:text-foreground',\n};\n\n// Open-state classes for a trigger rendered with any Button variant; only the\n// form-style variants have one (a `primary`/`destructive` trigger keeps its look).\nexport function controlTriggerOpenStateFor(variant: string | null | undefined): string | undefined {\n return variant === 'default' || variant === 'outline' || variant === 'ghost'\n ? controlTriggerOpenState[variant]\n : undefined;\n}\n"],"names":[],"mappings":";;AAeO,MAAM,kBAAA,GAAqB,KAAA,CAAM,aAAA,CAAuC,MAAS;AAIjF,MAAM,aAAA,GAA6C;AAAA,EACxD,EAAA,EAAI,cAAA;AAAA,EACJ,EAAA,EAAI,cAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAeO,MAAM,kBAAA,GAAkD;AAAA,EAC7D,EAAA,EAAI,yBAAA;AAAA,EACJ,EAAA,EAAI,yBAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAQO,MAAM,uBAAA,GAAuE;AAAA,EAClF,OAAA,EAAS,kFAAA;AAAA,EACT,OAAA,EAAS,0GAAA;AAAA,EACT,KAAA,EAAO;AACT;AAIO,SAAS,2BAA2B,OAAA,EAAwD;AACjG,EAAA,OAAO,OAAA,KAAY,aAAa,OAAA,KAAY,SAAA,IAAa,YAAY,OAAA,GACjE,uBAAA,CAAwB,OAAO,CAAA,GAC/B,MAAA;AACN;;;;"}
1
+ {"version":3,"file":"control-size.es.js","sources":["../../src/ds/primitives/control-size.ts"],"sourcesContent":["import * as React from 'react';\n\n// Shared size rhythm for interactive controls (Button, Input, Select trigger,\n// InputGroup, and other form-shaped triggers). These height + text-size classes\n// are the single source of truth so controls line up pixel-for-pixel when placed\n// in the same row or composed inside a ButtonsGroup / InputGroup. Horizontal\n// padding stays per-component (a button hugs its label tighter than an input\n// hugs its text), so it deliberately lives in each component, not here.\n\nexport type ControlSize = 'sm' | 'md' | 'lg';\n\n// The rung a wrapper imposes on the controls inside it (ButtonsGroup). A control's box is\n// forced by the wrapper's stylesheet, which reaches segments a provider cannot name — Base\n// UI renders a trigger as its own child. This carries what a stylesheet cannot reach\n// instead: the type role and adornment scale a field keys off its own `data-size`.\nexport const ControlSizeContext = React.createContext<ControlSize | undefined>(undefined);\n\n// Height only — for square/icon controls and wrappers that own height on the\n// border-box while their inner control inherits it.\nexport const controlHeight: Record<ControlSize, string> = {\n sm: 'h-control-sm',\n md: 'h-control-md',\n lg: 'h-control-lg',\n};\n\n// Controls centre their label with flex, not with the line box, so `text-box-trim`\n// is inert here: it trims line boxes in a block container, and a control's label is\n// an anonymous flex item. Measured centring error is at most 0.6px, so the em box\n// and its paired leading token carry this. Revisit only if a label moves to a\n// block-level wrapper.\n\n// Height + text role. Heights: sm 28px / md 30px / lg 32px. `md` is the default\n// everywhere, and a control's label is a label at every height — the box grows, the\n// type does not, which is why all three share `text-label` (13px/500, measured from\n// Linear, whose buttons are 13px regardless of height). The 20px rung is gone: a\n// control that small cannot hold a 13px label, and the pages here carry few enough\n// items that they never needed it.\n// The role carries the weight, so no control adds `font-medium` on top.\nexport const controlSizeClasses: Record<ControlSize, string> = {\n sm: 'h-control-sm text-label',\n md: 'h-control-md text-label',\n lg: 'h-control-lg text-label',\n};\n\nexport type ControlTriggerVisualVariant = 'default' | 'ghost';\n\n// Open (\"popup-open\") state per variant. `default` washes through `--surface-tint`, the\n// layer its raised material expresses every other state in: its fill is a pinned card\n// colour, and swapping that would drop the control out of the material it shares with a\n// field. `ghost` has no material to wash, so it takes a fill rung.\nexport const controlTriggerOpenState: Record<ControlTriggerVisualVariant, string> = {\n default: 'data-[popup-open]:[--surface-tint:var(--fill)] data-[popup-open]:text-foreground',\n ghost: 'data-[popup-open]:bg-fill-subtle data-[popup-open]:text-foreground',\n};\n\n// Open-state classes for a trigger rendered with any Button variant; only the\n// form-style variants have one (a `primary`/`destructive` trigger keeps its look).\nexport function controlTriggerOpenStateFor(variant: string | null | undefined): string | undefined {\n return variant === 'default' || variant === 'ghost' ? controlTriggerOpenState[variant] : undefined;\n}\n"],"names":[],"mappings":";;AAeO,MAAM,kBAAA,GAAqB,KAAA,CAAM,aAAA,CAAuC,MAAS;AAIjF,MAAM,aAAA,GAA6C;AAAA,EACxD,EAAA,EAAI,cAAA;AAAA,EACJ,EAAA,EAAI,cAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAeO,MAAM,kBAAA,GAAkD;AAAA,EAC7D,EAAA,EAAI,yBAAA;AAAA,EACJ,EAAA,EAAI,yBAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAQO,MAAM,uBAAA,GAAuE;AAAA,EAClF,OAAA,EAAS,kFAAA;AAAA,EACT,KAAA,EAAO;AACT;AAIO,SAAS,2BAA2B,OAAA,EAAwD;AACjG,EAAA,OAAO,YAAY,SAAA,IAAa,OAAA,KAAY,OAAA,GAAU,uBAAA,CAAwB,OAAO,CAAA,GAAI,MAAA;AAC3F;;;;"}
@@ -3,16 +3,19 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  const sharedFormElementDisabledStyle = "disabled:cursor-not-allowed disabled:text-muted-foreground";
6
- const disabledOutlineSurfaceStyle = "disabled:border-border disabled:bg-transparent";
7
6
  const inputFocusBorderVisible = "focus-visible:border-border-focus";
8
7
  const inputFocusBorderWithin = "focus-within:border-border-focus";
9
8
  const controlFocusBorderVisible = `outline-hidden focus-visible:outline-hidden ${inputFocusBorderVisible}`;
10
9
  const surfaceTintHover = "[&:hover:not(:focus-visible):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]";
11
10
  const surfaceRimFocus = "focus-visible:[--surface-rim:var(--surface-rim-focus)]";
12
11
  const surfaceTintHoverWithin = "[&:hover:not(:focus-within):not(:has(:disabled))]:[--surface-tint:var(--fill-subtle)]";
13
- const surfaceRimFocusWithin = "focus-within:[--surface-rim:var(--surface-rim-focus)]";
14
- const inputSurfaceAndFocusStyle = "bg-card shadow-raised text-foreground disabled:bg-fill-subtle " + surfaceTintHover + " outline-hidden focus-visible:outline-hidden " + surfaceRimFocus;
15
- const inputSurfaceAndFocusWithinStyle = "bg-card shadow-raised text-foreground has-[:disabled]:bg-fill-subtle " + surfaceTintHoverWithin + " outline-hidden focus-within:outline-hidden " + surfaceRimFocusWithin;
12
+ const fieldRimFocus = "focus-visible:[--surface-rim:var(--field-rim-focus)]";
13
+ const fieldRimFocusWithin = "focus-within:[--surface-rim:var(--field-rim-focus)]";
14
+ const fieldErrorRim = "[--field-rim:var(--destructive)] [--field-rim-focus:var(--destructive)]";
15
+ const fieldErrorRimWithin = "has-[[aria-invalid=true]]:[--field-rim:var(--destructive)] has-[[aria-invalid=true]]:[--field-rim-focus:var(--destructive)]";
16
+ const fieldTriggerStyle = "bg-field shadow-input " + fieldRimFocus + " disabled:bg-field-disabled aria-disabled:bg-field-disabled data-[disabled]:bg-field-disabled aria-invalid:[--field-rim:var(--destructive)] aria-invalid:[--field-rim-focus:var(--destructive)]";
17
+ const inputSurfaceAndFocusStyle = "bg-field shadow-input text-foreground disabled:bg-field-disabled " + surfaceTintHover + " outline-hidden focus-visible:outline-hidden " + fieldRimFocus;
18
+ const inputSurfaceAndFocusWithinStyle = "bg-field shadow-input text-foreground has-[:disabled]:bg-field-disabled " + surfaceTintHoverWithin + " outline-hidden focus-within:outline-hidden " + fieldRimFocusWithin;
16
19
  const controlTintHover = "[&:hover:not(:active):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]";
17
20
  const controlTintActive = "[&:active:not(:disabled)]:[--surface-tint:var(--fill)]";
18
21
  const raisedControlSurfaceStyle = "bg-card shadow-raised text-foreground " + controlTintHover + " " + controlTintActive + " " + surfaceRimFocus;
@@ -22,7 +25,9 @@ function resolveFieldVariant(variant) {
22
25
  const unstyledFormElementStyle = "border-0 bg-transparent outline-hidden focus-visible:outline-hidden";
23
26
 
24
27
  exports.controlFocusBorderVisible = controlFocusBorderVisible;
25
- exports.disabledOutlineSurfaceStyle = disabledOutlineSurfaceStyle;
28
+ exports.fieldErrorRim = fieldErrorRim;
29
+ exports.fieldErrorRimWithin = fieldErrorRimWithin;
30
+ exports.fieldTriggerStyle = fieldTriggerStyle;
26
31
  exports.inputFocusBorderVisible = inputFocusBorderVisible;
27
32
  exports.inputFocusBorderWithin = inputFocusBorderWithin;
28
33
  exports.inputSurfaceAndFocusStyle = inputSurfaceAndFocusStyle;
@@ -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// Surface half of the disabled language, for neutral controls that carry a fill.\n// It recesses to the lowest rung of the fill ladder, one step below the resting\n// `--fill`, so a disabled field reads quieter than an enabled one on every\n// surface. Variants with their own hue (primary, destructive) keep that hue at\n// reduced emphasis instead, so a disabled destructive action still reads as\n// destructive. Transparent variants (ghost) opt out entirely: a disabled icon\n// button in a toolbar should stay invisible rather than resolve into a pill.\nexport const disabledOutlineSurfaceStyle = 'disabled:border-border disabled:bg-transparent';\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 sits at `--surface-rim-focus` rather than the `--border-focus` weight a bare\n// outline needs, because the edge here bounds a surface that already reads as raised.\n// Wrappers whose focus lives on a nested control (InputGroup, a chip) take the\n// `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)]';\nconst surfaceRimFocus = 'focus-visible:[--surface-rim:var(--surface-rim-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 surfaceRimFocusWithin = 'focus-within:[--surface-rim:var(--surface-rim-focus)]';\n\nexport const inputSurfaceAndFocusStyle =\n 'bg-card shadow-raised text-foreground disabled:bg-fill-subtle ' +\n surfaceTintHover +\n ' outline-hidden focus-visible:outline-hidden ' +\n surfaceRimFocus;\n\nexport const inputSurfaceAndFocusWithinStyle =\n 'bg-card shadow-raised text-foreground has-[:disabled]:bg-fill-subtle ' +\n surfaceTintHoverWithin +\n ' outline-hidden focus-within:outline-hidden ' +\n surfaceRimFocusWithin;\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;AASvC,MAAM,2BAAA,GAA8B;AAQpC,MAAM,uBAAA,GAA0B;AAChC,MAAM,sBAAA,GAAyB;AAO/B,MAAM,yBAAA,GAA4B,+CAA+C,uBAAuB,CAAA;AA2B/G,MAAM,gBAAA,GACJ,yGAAA;AACF,MAAM,eAAA,GAAkB,wDAAA;AAIxB,MAAM,sBAAA,GAAyB,uFAAA;AAC/B,MAAM,qBAAA,GAAwB,uDAAA;AAEvB,MAAM,yBAAA,GACX,gEAAA,GACA,gBAAA,GACA,+CAAA,GACA;AAEK,MAAM,+BAAA,GACX,uEAAA,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 sits at `--surface-rim-focus` rather than the `--border-focus` weight a bare\n// outline needs, because the edge here bounds a surface that already reads as raised.\n// Wrappers whose focus lives on a nested control (InputGroup, a chip) take the\n// `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)]';\nconst surfaceRimFocus = 'focus-visible:[--surface-rim:var(--surface-rim-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:[--surface-rim:var(--field-rim-focus)]';\nconst fieldRimFocusWithin = 'focus-within:[--surface-rim:var(--field-rim-focus)]';\nexport const fieldErrorRim = '[--field-rim:var(--destructive)] [--field-rim-focus:var(--destructive)]';\nexport const fieldErrorRimWithin =\n 'has-[[aria-invalid=true]]:[--field-rim:var(--destructive)] has-[[aria-invalid=true]]:[--field-rim-focus:var(--destructive)]';\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)] aria-invalid:[--field-rim-focus:var(--destructive)]';\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;AA2B/G,MAAM,gBAAA,GACJ,yGAAA;AACF,MAAM,eAAA,GAAkB,wDAAA;AAIxB,MAAM,sBAAA,GAAyB,uFAAA;AAC/B,MAAM,aAAA,GAAgB,sDAAA;AACtB,MAAM,mBAAA,GAAsB,qDAAA;AACrB,MAAM,aAAA,GAAgB;AACtB,MAAM,mBAAA,GACX;AACK,MAAM,iBAAA,GACX,2BACA,aAAA,GACA;AAEK,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,14 +1,17 @@
1
1
  const sharedFormElementDisabledStyle = "disabled:cursor-not-allowed disabled:text-muted-foreground";
2
- const disabledOutlineSurfaceStyle = "disabled:border-border disabled:bg-transparent";
3
2
  const inputFocusBorderVisible = "focus-visible:border-border-focus";
4
3
  const inputFocusBorderWithin = "focus-within:border-border-focus";
5
4
  const controlFocusBorderVisible = `outline-hidden focus-visible:outline-hidden ${inputFocusBorderVisible}`;
6
5
  const surfaceTintHover = "[&:hover:not(:focus-visible):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]";
7
6
  const surfaceRimFocus = "focus-visible:[--surface-rim:var(--surface-rim-focus)]";
8
7
  const surfaceTintHoverWithin = "[&:hover:not(:focus-within):not(:has(:disabled))]:[--surface-tint:var(--fill-subtle)]";
9
- const surfaceRimFocusWithin = "focus-within:[--surface-rim:var(--surface-rim-focus)]";
10
- const inputSurfaceAndFocusStyle = "bg-card shadow-raised text-foreground disabled:bg-fill-subtle " + surfaceTintHover + " outline-hidden focus-visible:outline-hidden " + surfaceRimFocus;
11
- const inputSurfaceAndFocusWithinStyle = "bg-card shadow-raised text-foreground has-[:disabled]:bg-fill-subtle " + surfaceTintHoverWithin + " outline-hidden focus-within:outline-hidden " + surfaceRimFocusWithin;
8
+ const fieldRimFocus = "focus-visible:[--surface-rim:var(--field-rim-focus)]";
9
+ const fieldRimFocusWithin = "focus-within:[--surface-rim:var(--field-rim-focus)]";
10
+ const fieldErrorRim = "[--field-rim:var(--destructive)] [--field-rim-focus:var(--destructive)]";
11
+ const fieldErrorRimWithin = "has-[[aria-invalid=true]]:[--field-rim:var(--destructive)] has-[[aria-invalid=true]]:[--field-rim-focus:var(--destructive)]";
12
+ const fieldTriggerStyle = "bg-field shadow-input " + fieldRimFocus + " disabled:bg-field-disabled aria-disabled:bg-field-disabled data-[disabled]:bg-field-disabled aria-invalid:[--field-rim:var(--destructive)] aria-invalid:[--field-rim-focus:var(--destructive)]";
13
+ const inputSurfaceAndFocusStyle = "bg-field shadow-input text-foreground disabled:bg-field-disabled " + surfaceTintHover + " outline-hidden focus-visible:outline-hidden " + fieldRimFocus;
14
+ const inputSurfaceAndFocusWithinStyle = "bg-field shadow-input text-foreground has-[:disabled]:bg-field-disabled " + surfaceTintHoverWithin + " outline-hidden focus-within:outline-hidden " + fieldRimFocusWithin;
12
15
  const controlTintHover = "[&:hover:not(:active):not(:disabled):not([data-popup-open])]:[--surface-tint:var(--fill-subtle)]";
13
16
  const controlTintActive = "[&:active:not(:disabled)]:[--surface-tint:var(--fill)]";
14
17
  const raisedControlSurfaceStyle = "bg-card shadow-raised text-foreground " + controlTintHover + " " + controlTintActive + " " + surfaceRimFocus;
@@ -17,5 +20,5 @@ function resolveFieldVariant(variant) {
17
20
  }
18
21
  const unstyledFormElementStyle = "border-0 bg-transparent outline-hidden focus-visible:outline-hidden";
19
22
 
20
- export { controlFocusBorderVisible, disabledOutlineSurfaceStyle, inputFocusBorderVisible, inputFocusBorderWithin, inputSurfaceAndFocusStyle, inputSurfaceAndFocusWithinStyle, raisedControlSurfaceStyle, resolveFieldVariant, sharedFormElementDisabledStyle, unstyledFormElementStyle };
23
+ export { controlFocusBorderVisible, fieldErrorRim, fieldErrorRimWithin, fieldTriggerStyle, inputFocusBorderVisible, inputFocusBorderWithin, inputSurfaceAndFocusStyle, inputSurfaceAndFocusWithinStyle, raisedControlSurfaceStyle, resolveFieldVariant, sharedFormElementDisabledStyle, unstyledFormElementStyle };
21
24
  //# sourceMappingURL=form-element.es.js.map
@@ -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// Surface half of the disabled language, for neutral controls that carry a fill.\n// It recesses to the lowest rung of the fill ladder, one step below the resting\n// `--fill`, so a disabled field reads quieter than an enabled one on every\n// surface. Variants with their own hue (primary, destructive) keep that hue at\n// reduced emphasis instead, so a disabled destructive action still reads as\n// destructive. Transparent variants (ghost) opt out entirely: a disabled icon\n// button in a toolbar should stay invisible rather than resolve into a pill.\nexport const disabledOutlineSurfaceStyle = 'disabled:border-border disabled:bg-transparent';\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 sits at `--surface-rim-focus` rather than the `--border-focus` weight a bare\n// outline needs, because the edge here bounds a surface that already reads as raised.\n// Wrappers whose focus lives on a nested control (InputGroup, a chip) take the\n// `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)]';\nconst surfaceRimFocus = 'focus-visible:[--surface-rim:var(--surface-rim-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 surfaceRimFocusWithin = 'focus-within:[--surface-rim:var(--surface-rim-focus)]';\n\nexport const inputSurfaceAndFocusStyle =\n 'bg-card shadow-raised text-foreground disabled:bg-fill-subtle ' +\n surfaceTintHover +\n ' outline-hidden focus-visible:outline-hidden ' +\n surfaceRimFocus;\n\nexport const inputSurfaceAndFocusWithinStyle =\n 'bg-card shadow-raised text-foreground has-[:disabled]:bg-fill-subtle ' +\n surfaceTintHoverWithin +\n ' outline-hidden focus-within:outline-hidden ' +\n surfaceRimFocusWithin;\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;AASvC,MAAM,2BAAA,GAA8B;AAQpC,MAAM,uBAAA,GAA0B;AAChC,MAAM,sBAAA,GAAyB;AAO/B,MAAM,yBAAA,GAA4B,+CAA+C,uBAAuB,CAAA;AA2B/G,MAAM,gBAAA,GACJ,yGAAA;AACF,MAAM,eAAA,GAAkB,wDAAA;AAIxB,MAAM,sBAAA,GAAyB,uFAAA;AAC/B,MAAM,qBAAA,GAAwB,uDAAA;AAEvB,MAAM,yBAAA,GACX,gEAAA,GACA,gBAAA,GACA,+CAAA,GACA;AAEK,MAAM,+BAAA,GACX,uEAAA,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 sits at `--surface-rim-focus` rather than the `--border-focus` weight a bare\n// outline needs, because the edge here bounds a surface that already reads as raised.\n// Wrappers whose focus lives on a nested control (InputGroup, a chip) take the\n// `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)]';\nconst surfaceRimFocus = 'focus-visible:[--surface-rim:var(--surface-rim-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:[--surface-rim:var(--field-rim-focus)]';\nconst fieldRimFocusWithin = 'focus-within:[--surface-rim:var(--field-rim-focus)]';\nexport const fieldErrorRim = '[--field-rim:var(--destructive)] [--field-rim-focus:var(--destructive)]';\nexport const fieldErrorRimWithin =\n 'has-[[aria-invalid=true]]:[--field-rim:var(--destructive)] has-[[aria-invalid=true]]:[--field-rim-focus:var(--destructive)]';\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)] aria-invalid:[--field-rim-focus:var(--destructive)]';\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;AA2B/G,MAAM,gBAAA,GACJ,yGAAA;AACF,MAAM,eAAA,GAAkB,wDAAA;AAIxB,MAAM,sBAAA,GAAyB,uFAAA;AAC/B,MAAM,aAAA,GAAgB,sDAAA;AACtB,MAAM,mBAAA,GAAsB,qDAAA;AACrB,MAAM,aAAA,GAAgB;AACtB,MAAM,mBAAA,GACX;AACK,MAAM,iBAAA,GACX,2BACA,aAAA,GACA;AAEK,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;;;;"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const Button = require('../Button-MMZPEb_q.cjs');
5
+ const Button = require('../Button-BAMnPqos.cjs');
6
6
  const primitives_raisedSurface = require('./raised-surface.cjs.js');
7
7
  const utils_cn = require('../cn-DG0X1KEP.cjs');
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"menu-item.cjs.js","sources":["../../src/ds/primitives/menu-item.ts"],"sourcesContent":["import { buttonVariants } from '@/ds/components/Button/Button';\nimport { overlaySurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\n// Shared recipe for items rendered inside floating menus (DropdownMenu, ContextMenu,\n// Select, Combobox, PropertyFilter, DataFilter). An item is a ghost/md Button laid out\n// left-aligned, with `rounded-lg` instead of the pill radius so stacked items sit\n// concentrically inside a `rounded-xl p-1` popup. Base UI drives keyboard/pointer\n// highlight via `data-highlighted`, which `:hover` alone does not cover.\n// `flex` (not Button's `inline-flex`): popups size to their content (`w-max`), and\n// inline-level items would be measured side by side on one line, stretching the popup\n// to the full available width instead of the widest item.\nconst MENU_ITEM_OVERRIDES = cn(\n 'flex w-full justify-start rounded-lg text-left select-none',\n // An item may carry a second line (a name over its description). The Button\n // height becomes the floor so single-line rows keep the control rhythm and a\n // taller item grows instead of overflowing into its neighbour.\n 'h-auto min-h-control-md py-1',\n // Button brightens its border on focus-visible; inside a menu the highlight is the focus cue.\n 'focus-visible:border-transparent',\n // No row background: the popup's FluidMenuItems highlight travels between rows;\n // the row only lifts its text color. Same modifiers as Button's ghost fills so\n // tailwind-merge drops them; any other spelling leaves both surfaces painted.\n 'not-disabled:hover:bg-transparent not-disabled:active:bg-transparent data-highlighted:text-foreground',\n 'data-selected:text-foreground',\n 'data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50',\n '[&>span]:truncate',\n);\n\nexport const menuItemClass = cn(buttonVariants({ variant: 'ghost', size: 'md' }), MENU_ITEM_OVERRIDES);\n\nexport const menuItemDestructiveClass = cn(\n buttonVariants({ variant: 'destructive-ghost', size: 'md' }),\n MENU_ITEM_OVERRIDES,\n 'data-highlighted:text-destructive',\n);\n\n// Trailing indicator (check / submenu chevron) — applied to a wrapper element, not the\n// svg itself, because the Button recipe's `[&>svg]:mx-[-.3em]` would beat `ml-auto`.\nexport const menuItemTrailingIconClass =\n 'ml-auto flex size-[1.1em] shrink-0 items-center justify-center [&>svg]:size-full';\n\nexport const menuItemCheckClass = cn(menuItemTrailingIconClass, 'text-foreground');\n\n// Left padding matching icon width + gap, for items aligned with iconed siblings.\nexport const menuItemInsetClass = 'pl-[calc(.9em+1.1em+.75em)]';\n\nexport const MENU_SIDE_OFFSET = 4;\n\n// A hidden anchor makes Floating UI fall back to the top-left corner, so the popup goes with it.\nexport const menuPositionerClass = 'z-50 outline-none data-[anchor-hidden]:hidden';\n\n// Width: at least the anchor (or 11rem), otherwise as wide as the widest item, never\n// wider than the space Floating UI reports. Shared by every menu-like popup.\nexport const menuPopupClass = cn(\n 'z-50 max-h-[min(var(--spacing-dropdown),var(--available-height))]',\n 'w-max max-w-(--available-width) min-w-[max(11rem,var(--anchor-width))]',\n 'origin-[var(--transform-origin)] overflow-x-hidden overflow-y-auto',\n cn('rounded-xl p-1 text-foreground/90 outline-none', overlaySurfaceStyle),\n // A destructive row tints the travelling highlight instead of painting its own.\n '[&:has([data-variant=destructive][data-fluid-hover-active])_[data-slot=fluid-hover-highlight]]:bg-destructive/20',\n 'data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95 data-[open]:animate-in data-[open]:fade-in-0 data-[open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1',\n);\n\nexport const menuLabelClass = 'px-[.9em] pt-1.5 pb-1 text-meta tracking-wider text-muted-foreground uppercase';\n\nexport const menuSeparatorClass = '-mx-1 my-1 h-px bg-border';\n\nexport const menuShortcutClass = 'ml-auto text-meta tracking-wider text-muted-foreground tabular-nums';\n\n/** Non-interactive row (empty / loading) on the same size grid as an item. */\nexport const menuEmptyClass =\n 'flex h-control-md items-center gap-[.75em] px-[.9em] py-0.5 text-body-sm text-muted-foreground box-content';\n\nexport const menuSearchClasses = {\n // The input is a full control rung and the row adds `py-0.5` on top, so the search\n // row sits one notch taller than an item: the divider does not crowd the first\n // option while the text stays on the item grid.\n container:\n 'flex items-center gap-[.75em] border-b border-border px-[.9em] py-0.5 text-body-sm focus-within:bg-fill-subtle',\n icon: 'size-[1.1em] shrink-0 text-muted-foreground',\n input:\n 'h-control-md w-full bg-transparent text-body-sm text-foreground outline-hidden placeholder:text-muted-foreground',\n};\n"],"names":["cn","buttonVariants","overlaySurfaceStyle"],"mappings":";;;;;;;;AAYA,MAAM,mBAAA,GAAsBA,WAAA;AAAA,EAC1B,4DAAA;AAAA;AAAA;AAAA;AAAA,EAIA,8BAAA;AAAA;AAAA,EAEA,kCAAA;AAAA;AAAA;AAAA;AAAA,EAIA,uGAAA;AAAA,EACA,+BAAA;AAAA,EACA,6FAAA;AAAA,EACA;AACF,CAAA;AAEO,MAAM,aAAA,GAAgBA,WAAA,CAAGC,qBAAA,CAAe,EAAE,OAAA,EAAS,SAAS,IAAA,EAAM,IAAA,EAAM,CAAA,EAAG,mBAAmB;AAE9F,MAAM,wBAAA,GAA2BD,WAAA;AAAA,EACtCC,sBAAe,EAAE,OAAA,EAAS,mBAAA,EAAqB,IAAA,EAAM,MAAM,CAAA;AAAA,EAC3D,mBAAA;AAAA,EACA;AACF;AAIO,MAAM,yBAAA,GACX;AAEK,MAAM,kBAAA,GAAqBD,WAAA,CAAG,yBAAA,EAA2B,iBAAiB;AAG1E,MAAM,kBAAA,GAAqB;AAE3B,MAAM,gBAAA,GAAmB;AAGzB,MAAM,mBAAA,GAAsB;AAI5B,MAAM,cAAA,GAAiBA,WAAA;AAAA,EAC5B,mEAAA;AAAA,EACA,wEAAA;AAAA,EACA,oEAAA;AAAA,EACAA,WAAA,CAAG,kDAAkDE,4CAAmB,CAAA;AAAA;AAAA,EAExE,kHAAA;AAAA,EACA,kJAAA;AAAA,EACA;AACF;AAEO,MAAM,cAAA,GAAiB;AAEvB,MAAM,kBAAA,GAAqB;AAE3B,MAAM,iBAAA,GAAoB;AAG1B,MAAM,cAAA,GACX;AAEK,MAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA,EAI/B,SAAA,EACE,gHAAA;AAAA,EACF,IAAA,EAAM,6CAAA;AAAA,EACN,KAAA,EACE;AACJ;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"menu-item.cjs.js","sources":["../../src/ds/primitives/menu-item.ts"],"sourcesContent":["import { buttonVariants } from '@/ds/components/Button/Button';\nimport { overlaySurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\n// Shared recipe for items rendered inside floating menus (DropdownMenu, ContextMenu,\n// Select, Combobox, PropertyFilter). An item is a ghost/md Button laid out\n// left-aligned, with `rounded-lg` instead of the pill radius so stacked items sit\n// concentrically inside a `rounded-xl p-1` popup. Base UI drives keyboard/pointer\n// highlight via `data-highlighted`, which `:hover` alone does not cover.\n// `flex` (not Button's `inline-flex`): popups size to their content (`w-max`), and\n// inline-level items would be measured side by side on one line, stretching the popup\n// to the full available width instead of the widest item.\nconst MENU_ITEM_OVERRIDES = cn(\n 'flex w-full justify-start rounded-lg text-left select-none',\n // An item may carry a second line (a name over its description). The Button\n // height becomes the floor so single-line rows keep the control rhythm and a\n // taller item grows instead of overflowing into its neighbour.\n 'h-auto min-h-control-md py-1',\n // Button brightens its border on focus-visible; inside a menu the highlight is the focus cue.\n 'focus-visible:border-transparent',\n // No row background: the popup's FluidMenuItems highlight travels between rows;\n // the row only lifts its text color. Same modifiers as Button's ghost fills so\n // tailwind-merge drops them; any other spelling leaves both surfaces painted.\n 'not-disabled:hover:bg-transparent not-disabled:active:bg-transparent data-highlighted:text-foreground',\n 'data-selected:text-foreground',\n 'data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50',\n '[&>span]:truncate',\n);\n\nexport const menuItemClass = cn(buttonVariants({ variant: 'ghost', size: 'md' }), MENU_ITEM_OVERRIDES);\n\nexport const menuItemDestructiveClass = cn(\n buttonVariants({ variant: 'destructive-ghost', size: 'md' }),\n MENU_ITEM_OVERRIDES,\n 'data-highlighted:text-destructive',\n);\n\n// Trailing indicator (check / submenu chevron) — applied to a wrapper element, not the\n// svg itself, because the Button recipe's `[&>svg]:mx-[-.3em]` would beat `ml-auto`.\nexport const menuItemTrailingIconClass =\n 'ml-auto flex size-[1.1em] shrink-0 items-center justify-center [&>svg]:size-full';\n\nexport const menuItemCheckClass = cn(menuItemTrailingIconClass, 'text-foreground');\n\n// Left padding matching icon width + gap, for items aligned with iconed siblings.\nexport const menuItemInsetClass = 'pl-[calc(.9em+1.1em+.75em)]';\n\nexport const MENU_SIDE_OFFSET = 4;\n\n// A hidden anchor makes Floating UI fall back to the top-left corner, so the popup goes with it.\nexport const menuPositionerClass = 'z-50 outline-none data-[anchor-hidden]:hidden';\n\n// Width: at least the anchor (or 11rem), otherwise as wide as the widest item, never\n// wider than the space Floating UI reports. Shared by every menu-like popup.\nexport const menuPopupClass = cn(\n 'z-50 max-h-[min(var(--spacing-dropdown),var(--available-height))]',\n 'w-max max-w-(--available-width) min-w-[max(11rem,var(--anchor-width))]',\n 'origin-[var(--transform-origin)] overflow-x-hidden overflow-y-auto',\n cn('rounded-xl p-1 text-foreground/90 outline-none', overlaySurfaceStyle),\n // A destructive row tints the travelling highlight instead of painting its own.\n '[&:has([data-variant=destructive][data-fluid-hover-active])_[data-slot=fluid-hover-highlight]]:bg-destructive/20',\n 'data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95 data-[open]:animate-in data-[open]:fade-in-0 data-[open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1',\n);\n\nexport const menuLabelClass = 'px-[.9em] pt-1.5 pb-1 text-meta tracking-wider text-muted-foreground uppercase';\n\nexport const menuSeparatorClass = '-mx-1 my-1 h-px bg-border';\n\nexport const menuShortcutClass = 'ml-auto text-meta tracking-wider text-muted-foreground tabular-nums';\n\n/** Non-interactive row (empty / loading) on the same size grid as an item. */\nexport const menuEmptyClass =\n 'flex h-control-md items-center gap-[.75em] px-[.9em] py-0.5 text-body-sm text-muted-foreground box-content';\n\nexport const menuSearchClasses = {\n // The input is a full control rung and the row adds `py-0.5` on top, so the search\n // row sits one notch taller than an item: the divider does not crowd the first\n // option while the text stays on the item grid.\n container:\n 'flex items-center gap-[.75em] border-b border-border px-[.9em] py-0.5 text-body-sm focus-within:bg-fill-subtle',\n icon: 'size-[1.1em] shrink-0 text-muted-foreground',\n input:\n 'h-control-md w-full bg-transparent text-body-sm text-foreground outline-hidden placeholder:text-muted-foreground',\n};\n"],"names":["cn","buttonVariants","overlaySurfaceStyle"],"mappings":";;;;;;;;AAYA,MAAM,mBAAA,GAAsBA,WAAA;AAAA,EAC1B,4DAAA;AAAA;AAAA;AAAA;AAAA,EAIA,8BAAA;AAAA;AAAA,EAEA,kCAAA;AAAA;AAAA;AAAA;AAAA,EAIA,uGAAA;AAAA,EACA,+BAAA;AAAA,EACA,6FAAA;AAAA,EACA;AACF,CAAA;AAEO,MAAM,aAAA,GAAgBA,WAAA,CAAGC,qBAAA,CAAe,EAAE,OAAA,EAAS,SAAS,IAAA,EAAM,IAAA,EAAM,CAAA,EAAG,mBAAmB;AAE9F,MAAM,wBAAA,GAA2BD,WAAA;AAAA,EACtCC,sBAAe,EAAE,OAAA,EAAS,mBAAA,EAAqB,IAAA,EAAM,MAAM,CAAA;AAAA,EAC3D,mBAAA;AAAA,EACA;AACF;AAIO,MAAM,yBAAA,GACX;AAEK,MAAM,kBAAA,GAAqBD,WAAA,CAAG,yBAAA,EAA2B,iBAAiB;AAG1E,MAAM,kBAAA,GAAqB;AAE3B,MAAM,gBAAA,GAAmB;AAGzB,MAAM,mBAAA,GAAsB;AAI5B,MAAM,cAAA,GAAiBA,WAAA;AAAA,EAC5B,mEAAA;AAAA,EACA,wEAAA;AAAA,EACA,oEAAA;AAAA,EACAA,WAAA,CAAG,kDAAkDE,4CAAmB,CAAA;AAAA;AAAA,EAExE,kHAAA;AAAA,EACA,kJAAA;AAAA,EACA;AACF;AAEO,MAAM,cAAA,GAAiB;AAEvB,MAAM,kBAAA,GAAqB;AAE3B,MAAM,iBAAA,GAAoB;AAG1B,MAAM,cAAA,GACX;AAEK,MAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA,EAI/B,SAAA,EACE,gHAAA;AAAA,EACF,IAAA,EAAM,6CAAA;AAAA,EACN,KAAA,EACE;AACJ;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { b as buttonVariants } from '../Button-KUj0U-5I.js';
1
+ import { b as buttonVariants } from '../Button-B8nF87ai.js';
2
2
  import { overlaySurfaceStyle } from './raised-surface.es.js';
3
3
  import { c as cn } from '../cn-65Adrsfj.js';
4
4
 
@@ -1 +1 @@
1
- {"version":3,"file":"menu-item.es.js","sources":["../../src/ds/primitives/menu-item.ts"],"sourcesContent":["import { buttonVariants } from '@/ds/components/Button/Button';\nimport { overlaySurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\n// Shared recipe for items rendered inside floating menus (DropdownMenu, ContextMenu,\n// Select, Combobox, PropertyFilter, DataFilter). An item is a ghost/md Button laid out\n// left-aligned, with `rounded-lg` instead of the pill radius so stacked items sit\n// concentrically inside a `rounded-xl p-1` popup. Base UI drives keyboard/pointer\n// highlight via `data-highlighted`, which `:hover` alone does not cover.\n// `flex` (not Button's `inline-flex`): popups size to their content (`w-max`), and\n// inline-level items would be measured side by side on one line, stretching the popup\n// to the full available width instead of the widest item.\nconst MENU_ITEM_OVERRIDES = cn(\n 'flex w-full justify-start rounded-lg text-left select-none',\n // An item may carry a second line (a name over its description). The Button\n // height becomes the floor so single-line rows keep the control rhythm and a\n // taller item grows instead of overflowing into its neighbour.\n 'h-auto min-h-control-md py-1',\n // Button brightens its border on focus-visible; inside a menu the highlight is the focus cue.\n 'focus-visible:border-transparent',\n // No row background: the popup's FluidMenuItems highlight travels between rows;\n // the row only lifts its text color. Same modifiers as Button's ghost fills so\n // tailwind-merge drops them; any other spelling leaves both surfaces painted.\n 'not-disabled:hover:bg-transparent not-disabled:active:bg-transparent data-highlighted:text-foreground',\n 'data-selected:text-foreground',\n 'data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50',\n '[&>span]:truncate',\n);\n\nexport const menuItemClass = cn(buttonVariants({ variant: 'ghost', size: 'md' }), MENU_ITEM_OVERRIDES);\n\nexport const menuItemDestructiveClass = cn(\n buttonVariants({ variant: 'destructive-ghost', size: 'md' }),\n MENU_ITEM_OVERRIDES,\n 'data-highlighted:text-destructive',\n);\n\n// Trailing indicator (check / submenu chevron) — applied to a wrapper element, not the\n// svg itself, because the Button recipe's `[&>svg]:mx-[-.3em]` would beat `ml-auto`.\nexport const menuItemTrailingIconClass =\n 'ml-auto flex size-[1.1em] shrink-0 items-center justify-center [&>svg]:size-full';\n\nexport const menuItemCheckClass = cn(menuItemTrailingIconClass, 'text-foreground');\n\n// Left padding matching icon width + gap, for items aligned with iconed siblings.\nexport const menuItemInsetClass = 'pl-[calc(.9em+1.1em+.75em)]';\n\nexport const MENU_SIDE_OFFSET = 4;\n\n// A hidden anchor makes Floating UI fall back to the top-left corner, so the popup goes with it.\nexport const menuPositionerClass = 'z-50 outline-none data-[anchor-hidden]:hidden';\n\n// Width: at least the anchor (or 11rem), otherwise as wide as the widest item, never\n// wider than the space Floating UI reports. Shared by every menu-like popup.\nexport const menuPopupClass = cn(\n 'z-50 max-h-[min(var(--spacing-dropdown),var(--available-height))]',\n 'w-max max-w-(--available-width) min-w-[max(11rem,var(--anchor-width))]',\n 'origin-[var(--transform-origin)] overflow-x-hidden overflow-y-auto',\n cn('rounded-xl p-1 text-foreground/90 outline-none', overlaySurfaceStyle),\n // A destructive row tints the travelling highlight instead of painting its own.\n '[&:has([data-variant=destructive][data-fluid-hover-active])_[data-slot=fluid-hover-highlight]]:bg-destructive/20',\n 'data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95 data-[open]:animate-in data-[open]:fade-in-0 data-[open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1',\n);\n\nexport const menuLabelClass = 'px-[.9em] pt-1.5 pb-1 text-meta tracking-wider text-muted-foreground uppercase';\n\nexport const menuSeparatorClass = '-mx-1 my-1 h-px bg-border';\n\nexport const menuShortcutClass = 'ml-auto text-meta tracking-wider text-muted-foreground tabular-nums';\n\n/** Non-interactive row (empty / loading) on the same size grid as an item. */\nexport const menuEmptyClass =\n 'flex h-control-md items-center gap-[.75em] px-[.9em] py-0.5 text-body-sm text-muted-foreground box-content';\n\nexport const menuSearchClasses = {\n // The input is a full control rung and the row adds `py-0.5` on top, so the search\n // row sits one notch taller than an item: the divider does not crowd the first\n // option while the text stays on the item grid.\n container:\n 'flex items-center gap-[.75em] border-b border-border px-[.9em] py-0.5 text-body-sm focus-within:bg-fill-subtle',\n icon: 'size-[1.1em] shrink-0 text-muted-foreground',\n input:\n 'h-control-md w-full bg-transparent text-body-sm text-foreground outline-hidden placeholder:text-muted-foreground',\n};\n"],"names":[],"mappings":";;;;AAYA,MAAM,mBAAA,GAAsB,EAAA;AAAA,EAC1B,4DAAA;AAAA;AAAA;AAAA;AAAA,EAIA,8BAAA;AAAA;AAAA,EAEA,kCAAA;AAAA;AAAA;AAAA;AAAA,EAIA,uGAAA;AAAA,EACA,+BAAA;AAAA,EACA,6FAAA;AAAA,EACA;AACF,CAAA;AAEO,MAAM,aAAA,GAAgB,EAAA,CAAG,cAAA,CAAe,EAAE,OAAA,EAAS,SAAS,IAAA,EAAM,IAAA,EAAM,CAAA,EAAG,mBAAmB;AAE9F,MAAM,wBAAA,GAA2B,EAAA;AAAA,EACtC,eAAe,EAAE,OAAA,EAAS,mBAAA,EAAqB,IAAA,EAAM,MAAM,CAAA;AAAA,EAC3D,mBAAA;AAAA,EACA;AACF;AAIO,MAAM,yBAAA,GACX;AAEK,MAAM,kBAAA,GAAqB,EAAA,CAAG,yBAAA,EAA2B,iBAAiB;AAG1E,MAAM,kBAAA,GAAqB;AAE3B,MAAM,gBAAA,GAAmB;AAGzB,MAAM,mBAAA,GAAsB;AAI5B,MAAM,cAAA,GAAiB,EAAA;AAAA,EAC5B,mEAAA;AAAA,EACA,wEAAA;AAAA,EACA,oEAAA;AAAA,EACA,EAAA,CAAG,kDAAkD,mBAAmB,CAAA;AAAA;AAAA,EAExE,kHAAA;AAAA,EACA,kJAAA;AAAA,EACA;AACF;AAEO,MAAM,cAAA,GAAiB;AAEvB,MAAM,kBAAA,GAAqB;AAE3B,MAAM,iBAAA,GAAoB;AAG1B,MAAM,cAAA,GACX;AAEK,MAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA,EAI/B,SAAA,EACE,gHAAA;AAAA,EACF,IAAA,EAAM,6CAAA;AAAA,EACN,KAAA,EACE;AACJ;;;;"}
1
+ {"version":3,"file":"menu-item.es.js","sources":["../../src/ds/primitives/menu-item.ts"],"sourcesContent":["import { buttonVariants } from '@/ds/components/Button/Button';\nimport { overlaySurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\n// Shared recipe for items rendered inside floating menus (DropdownMenu, ContextMenu,\n// Select, Combobox, PropertyFilter). An item is a ghost/md Button laid out\n// left-aligned, with `rounded-lg` instead of the pill radius so stacked items sit\n// concentrically inside a `rounded-xl p-1` popup. Base UI drives keyboard/pointer\n// highlight via `data-highlighted`, which `:hover` alone does not cover.\n// `flex` (not Button's `inline-flex`): popups size to their content (`w-max`), and\n// inline-level items would be measured side by side on one line, stretching the popup\n// to the full available width instead of the widest item.\nconst MENU_ITEM_OVERRIDES = cn(\n 'flex w-full justify-start rounded-lg text-left select-none',\n // An item may carry a second line (a name over its description). The Button\n // height becomes the floor so single-line rows keep the control rhythm and a\n // taller item grows instead of overflowing into its neighbour.\n 'h-auto min-h-control-md py-1',\n // Button brightens its border on focus-visible; inside a menu the highlight is the focus cue.\n 'focus-visible:border-transparent',\n // No row background: the popup's FluidMenuItems highlight travels between rows;\n // the row only lifts its text color. Same modifiers as Button's ghost fills so\n // tailwind-merge drops them; any other spelling leaves both surfaces painted.\n 'not-disabled:hover:bg-transparent not-disabled:active:bg-transparent data-highlighted:text-foreground',\n 'data-selected:text-foreground',\n 'data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50',\n '[&>span]:truncate',\n);\n\nexport const menuItemClass = cn(buttonVariants({ variant: 'ghost', size: 'md' }), MENU_ITEM_OVERRIDES);\n\nexport const menuItemDestructiveClass = cn(\n buttonVariants({ variant: 'destructive-ghost', size: 'md' }),\n MENU_ITEM_OVERRIDES,\n 'data-highlighted:text-destructive',\n);\n\n// Trailing indicator (check / submenu chevron) — applied to a wrapper element, not the\n// svg itself, because the Button recipe's `[&>svg]:mx-[-.3em]` would beat `ml-auto`.\nexport const menuItemTrailingIconClass =\n 'ml-auto flex size-[1.1em] shrink-0 items-center justify-center [&>svg]:size-full';\n\nexport const menuItemCheckClass = cn(menuItemTrailingIconClass, 'text-foreground');\n\n// Left padding matching icon width + gap, for items aligned with iconed siblings.\nexport const menuItemInsetClass = 'pl-[calc(.9em+1.1em+.75em)]';\n\nexport const MENU_SIDE_OFFSET = 4;\n\n// A hidden anchor makes Floating UI fall back to the top-left corner, so the popup goes with it.\nexport const menuPositionerClass = 'z-50 outline-none data-[anchor-hidden]:hidden';\n\n// Width: at least the anchor (or 11rem), otherwise as wide as the widest item, never\n// wider than the space Floating UI reports. Shared by every menu-like popup.\nexport const menuPopupClass = cn(\n 'z-50 max-h-[min(var(--spacing-dropdown),var(--available-height))]',\n 'w-max max-w-(--available-width) min-w-[max(11rem,var(--anchor-width))]',\n 'origin-[var(--transform-origin)] overflow-x-hidden overflow-y-auto',\n cn('rounded-xl p-1 text-foreground/90 outline-none', overlaySurfaceStyle),\n // A destructive row tints the travelling highlight instead of painting its own.\n '[&:has([data-variant=destructive][data-fluid-hover-active])_[data-slot=fluid-hover-highlight]]:bg-destructive/20',\n 'data-[closed]:animate-out data-[closed]:fade-out-0 data-[closed]:zoom-out-95 data-[open]:animate-in data-[open]:fade-in-0 data-[open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1',\n);\n\nexport const menuLabelClass = 'px-[.9em] pt-1.5 pb-1 text-meta tracking-wider text-muted-foreground uppercase';\n\nexport const menuSeparatorClass = '-mx-1 my-1 h-px bg-border';\n\nexport const menuShortcutClass = 'ml-auto text-meta tracking-wider text-muted-foreground tabular-nums';\n\n/** Non-interactive row (empty / loading) on the same size grid as an item. */\nexport const menuEmptyClass =\n 'flex h-control-md items-center gap-[.75em] px-[.9em] py-0.5 text-body-sm text-muted-foreground box-content';\n\nexport const menuSearchClasses = {\n // The input is a full control rung and the row adds `py-0.5` on top, so the search\n // row sits one notch taller than an item: the divider does not crowd the first\n // option while the text stays on the item grid.\n container:\n 'flex items-center gap-[.75em] border-b border-border px-[.9em] py-0.5 text-body-sm focus-within:bg-fill-subtle',\n icon: 'size-[1.1em] shrink-0 text-muted-foreground',\n input:\n 'h-control-md w-full bg-transparent text-body-sm text-foreground outline-hidden placeholder:text-muted-foreground',\n};\n"],"names":[],"mappings":";;;;AAYA,MAAM,mBAAA,GAAsB,EAAA;AAAA,EAC1B,4DAAA;AAAA;AAAA;AAAA;AAAA,EAIA,8BAAA;AAAA;AAAA,EAEA,kCAAA;AAAA;AAAA;AAAA;AAAA,EAIA,uGAAA;AAAA,EACA,+BAAA;AAAA,EACA,6FAAA;AAAA,EACA;AACF,CAAA;AAEO,MAAM,aAAA,GAAgB,EAAA,CAAG,cAAA,CAAe,EAAE,OAAA,EAAS,SAAS,IAAA,EAAM,IAAA,EAAM,CAAA,EAAG,mBAAmB;AAE9F,MAAM,wBAAA,GAA2B,EAAA;AAAA,EACtC,eAAe,EAAE,OAAA,EAAS,mBAAA,EAAqB,IAAA,EAAM,MAAM,CAAA;AAAA,EAC3D,mBAAA;AAAA,EACA;AACF;AAIO,MAAM,yBAAA,GACX;AAEK,MAAM,kBAAA,GAAqB,EAAA,CAAG,yBAAA,EAA2B,iBAAiB;AAG1E,MAAM,kBAAA,GAAqB;AAE3B,MAAM,gBAAA,GAAmB;AAGzB,MAAM,mBAAA,GAAsB;AAI5B,MAAM,cAAA,GAAiB,EAAA;AAAA,EAC5B,mEAAA;AAAA,EACA,wEAAA;AAAA,EACA,oEAAA;AAAA,EACA,EAAA,CAAG,kDAAkD,mBAAmB,CAAA;AAAA;AAAA,EAExE,kHAAA;AAAA,EACA,kJAAA;AAAA,EACA;AACF;AAEO,MAAM,cAAA,GAAiB;AAEvB,MAAM,kBAAA,GAAqB;AAE3B,MAAM,iBAAA,GAAoB;AAG1B,MAAM,cAAA,GACX;AAEK,MAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA,EAI/B,SAAA,EACE,gHAAA;AAAA,EACF,IAAA,EAAM,6CAAA;AAAA,EACN,KAAA,EACE;AACJ;;;;"}
@@ -2,12 +2,17 @@
2
2
 
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
- const raisedSurfaceStyle = "bg-card hover:bg-card active:bg-card shadow-raised";
6
- const overlaySurfaceStyle = "bg-card shadow-overlay";
7
- const frameSurfaceStyle = "bg-background shadow-raised";
5
+ const fieldsOnSurface = "[--field:var(--field-on-surface)] [--field-disabled:var(--field-on-surface)] [--field-rim:var(--field-rim-on-surface)] [--field-rim-focus:var(--field-rim-focus-on-surface)]";
6
+ const fieldsOnDialog = "[--field:var(--field-on-surface)] [--field-disabled:var(--field-on-surface)] [--field-rim:var(--surface-rim)] [--field-rim-focus:var(--surface-rim-focus)]";
7
+ const fieldsOnPage = "[--field:var(--card)] [--field-disabled:var(--fill-subtle)] [--field-rim:var(--surface-rim)] [--field-rim-focus:var(--surface-rim-focus)]";
8
+ const raisedSurfaceStyle = "bg-card hover:bg-card active:bg-card shadow-raised " + fieldsOnSurface;
9
+ const overlaySurfaceStyle = "bg-card shadow-overlay " + fieldsOnSurface;
10
+ const dialogSurfaceStyle = "bg-dialog shadow-overlay " + fieldsOnDialog;
11
+ const frameSurfaceStyle = "bg-background shadow-raised " + fieldsOnPage;
8
12
  const surfaceStateLayerStyle = "state-layer";
9
13
  const surfaceGroupStateLayerStyle = "relative isolate before:pointer-events-none before:absolute before:-z-1 before:inset-px before:rounded-[inherit] before:transition-colors before:duration-fast motion-reduce:before:transition-none group-hover:before:bg-fill-subtle group-focus-visible:before:bg-fill-subtle";
10
14
 
15
+ exports.dialogSurfaceStyle = dialogSurfaceStyle;
11
16
  exports.frameSurfaceStyle = frameSurfaceStyle;
12
17
  exports.overlaySurfaceStyle = overlaySurfaceStyle;
13
18
  exports.raisedSurfaceStyle = raisedSurfaceStyle;
@@ -1 +1 @@
1
- {"version":3,"file":"raised-surface.cjs.js","sources":["../../src/ds/primitives/raised-surface.ts"],"sourcesContent":["/**\n * Two recipes, because elevation encodes distance from the canvas and there are\n * only two distances in this product.\n *\n * A *raised* surface sits in the flow — card, list panel, settings container,\n * table head, app frame. It lifts a couple of pixels, which is also what keeps\n * it honest: a tile in a grid inside a scroller is clipped by that scroller, so\n * a shadow that bleeds further than the tile's own clearance gets sliced into a\n * hard line along the container edge.\n *\n * An *overlay* is detached — popover, dropdown, dialog, drawer, tooltip. It is\n * never clipped, has to separate from arbitrary content beneath it, and so\n * carries the long falloff.\n *\n * Both tokens carry the rim as well as the elevation (the rim is `--border`\n * itself, plus a top inset highlight in dark), so neither draws a border of its\n * own: adding `border` on top doubles the edge.\n *\n * Radius is deliberately absent — it belongs to the family (`rounded-xl` for a\n * popup, `rounded-studio-frame` for the app frame).\n *\n * A raised surface pins its own fill across states. Interaction is expressed by\n * the state layer below, never by swapping the background: `Button`'s variants\n * all drive `background-color` on hover, and a raised surface wearing one would\n * otherwise turn translucent mid-hover and composite over the canvas. A call\n * site that genuinely wants another fill still overrides it, since its own\n * classes come after these.\n */\nexport const raisedSurfaceStyle = 'bg-card hover:bg-card active:bg-card shadow-raised';\n\nexport const overlaySurfaceStyle = 'bg-card shadow-overlay';\n\n/**\n * The app frame and the panels docked beside it. Same elevation as a card, one\n * step lower fill: a frame is a hole cut in the rail, and what sits inside it —\n * cards, fields, tables — needs a step to rise above. `Card` is for that\n * content, never for the frame around it.\n */\nexport const frameSurfaceStyle = 'bg-background shadow-raised';\n\n/**\n * Interaction states for a surface that already carries an opaque fill. The\n * `state-layer` utility in `src/index.css` holds the reasoning and the measured\n * numbers: the rung has to be layered, never swapped into `background-color`.\n */\nexport const surfaceStateLayerStyle = 'state-layer';\n\n/**\n * Same layer, driven by an ancestor marked `group` rather than the surface\n * itself. A utility cannot read an ancestor's state, so this one stays composed\n * from variants — `isolate` and the negative z-index do the same job as the\n * utility's, and `inset-px` likewise keeps the inset rim visible.\n */\nexport const surfaceGroupStateLayerStyle =\n 'relative isolate before:pointer-events-none before:absolute before:-z-1 before:inset-px before:rounded-[inherit] before:transition-colors before:duration-fast motion-reduce:before:transition-none group-hover:before:bg-fill-subtle group-focus-visible:before:bg-fill-subtle';\n"],"names":[],"mappings":";;;;AA4BO,MAAM,kBAAA,GAAqB;AAE3B,MAAM,mBAAA,GAAsB;AAQ5B,MAAM,iBAAA,GAAoB;AAO1B,MAAM,sBAAA,GAAyB;AAQ/B,MAAM,2BAAA,GACX;;;;;;;;"}
1
+ {"version":3,"file":"raised-surface.cjs.js","sources":["../../src/ds/primitives/raised-surface.ts"],"sourcesContent":["/**\n * Two recipes, because elevation encodes distance from the canvas and there are\n * only two distances in this product.\n *\n * A *raised* surface sits in the flow — card, list panel, settings container,\n * table head, app frame. It lifts a couple of pixels, which is also what keeps\n * it honest: a tile in a grid inside a scroller is clipped by that scroller, so\n * a shadow that bleeds further than the tile's own clearance gets sliced into a\n * hard line along the container edge.\n *\n * An *overlay* is detached — popover, dropdown, dialog, drawer, tooltip. It is\n * never clipped, has to separate from arbitrary content beneath it, and so\n * carries the long falloff.\n *\n * Both tokens carry the rim as well as the elevation (the rim is `--border`\n * itself, plus a top inset highlight in dark), so neither draws a border of its\n * own: adding `border` on top doubles the edge.\n *\n * Radius is deliberately absent — it belongs to the family (`rounded-xl` for a\n * popup, `rounded-studio-frame` for the app frame).\n *\n * A raised surface pins its own fill across states. Interaction is expressed by\n * the state layer below, never by swapping the background: `Button`'s variants\n * all drive `background-color` on hover, and a raised surface wearing one would\n * otherwise turn translucent mid-hover and composite over the canvas. A call\n * site that genuinely wants another fill still overrides it, since its own\n * classes come after these.\n */\nconst fieldsOnSurface =\n '[--field:var(--field-on-surface)] [--field-disabled:var(--field-on-surface)] [--field-rim:var(--field-rim-on-surface)] [--field-rim-focus:var(--field-rim-focus-on-surface)]';\nconst fieldsOnDialog =\n '[--field:var(--field-on-surface)] [--field-disabled:var(--field-on-surface)] [--field-rim:var(--surface-rim)] [--field-rim-focus:var(--surface-rim-focus)]';\nconst fieldsOnPage =\n '[--field:var(--card)] [--field-disabled:var(--fill-subtle)] [--field-rim:var(--surface-rim)] [--field-rim-focus:var(--surface-rim-focus)]';\n\nexport const raisedSurfaceStyle = 'bg-card hover:bg-card active:bg-card shadow-raised ' + fieldsOnSurface;\n\nexport const overlaySurfaceStyle = 'bg-card shadow-overlay ' + fieldsOnSurface;\n\nexport const dialogSurfaceStyle = 'bg-dialog shadow-overlay ' + fieldsOnDialog;\n\n/**\n * The app frame and the panels docked beside it. Same elevation as a card, one\n * step lower fill: a frame is a hole cut in the rail, and what sits inside it —\n * cards, fields, tables — needs a step to rise above. `Card` is for that\n * content, never for the frame around it.\n */\nexport const frameSurfaceStyle = 'bg-background shadow-raised ' + fieldsOnPage;\n\n/**\n * Interaction states for a surface that already carries an opaque fill. The\n * `state-layer` utility in `src/index.css` holds the reasoning and the measured\n * numbers: the rung has to be layered, never swapped into `background-color`.\n */\nexport const surfaceStateLayerStyle = 'state-layer';\n\n/**\n * Same layer, driven by an ancestor marked `group` rather than the surface\n * itself. A utility cannot read an ancestor's state, so this one stays composed\n * from variants — `isolate` and the negative z-index do the same job as the\n * utility's, and `inset-px` likewise keeps the inset rim visible.\n */\nexport const surfaceGroupStateLayerStyle =\n 'relative isolate before:pointer-events-none before:absolute before:-z-1 before:inset-px before:rounded-[inherit] before:transition-colors before:duration-fast motion-reduce:before:transition-none group-hover:before:bg-fill-subtle group-focus-visible:before:bg-fill-subtle';\n"],"names":[],"mappings":";;;;AA4BA,MAAM,eAAA,GACJ,8KAAA;AACF,MAAM,cAAA,GACJ,4JAAA;AACF,MAAM,YAAA,GACJ,2IAAA;AAEK,MAAM,qBAAqB,qDAAA,GAAwD;AAEnF,MAAM,sBAAsB,yBAAA,GAA4B;AAExD,MAAM,qBAAqB,2BAAA,GAA8B;AAQzD,MAAM,oBAAoB,8BAAA,GAAiC;AAO3D,MAAM,sBAAA,GAAyB;AAQ/B,MAAM,2BAAA,GACX;;;;;;;;;"}