@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
@@ -15,29 +15,12 @@ function DataKeysAndValuesKey({ className, children }) {
15
15
  return /* @__PURE__ */ jsxRuntime.jsx("dt", { className: utils_cn.cn("shrink-0 py-0.5 text-body-sm text-placeholder", className), children });
16
16
  }
17
17
 
18
- const GRID_TEMPLATES = {
19
- 1: "auto 1fr",
20
- 2: "auto auto auto 1fr",
21
- 3: "auto auto auto auto auto 1fr"
22
- };
23
18
  const DENSITY_GAP_Y = {
24
19
  default: "gap-y-1.5",
25
20
  dense: "gap-y-0"
26
21
  };
27
- function DataKeysAndValuesRoot({
28
- className,
29
- children,
30
- numOfCol = 1,
31
- density = "default"
32
- }) {
33
- return /* @__PURE__ */ jsxRuntime.jsx(
34
- "dl",
35
- {
36
- className: utils_cn.cn("grid gap-x-4", DENSITY_GAP_Y[density], className),
37
- style: { gridTemplateColumns: GRID_TEMPLATES[numOfCol] },
38
- children
39
- }
40
- );
22
+ function DataKeysAndValuesRoot({ className, children, density = "default" }) {
23
+ return /* @__PURE__ */ jsxRuntime.jsx("dl", { className: utils_cn.cn("grid grid-cols-[auto_1fr] gap-x-4", DENSITY_GAP_Y[density], className), children });
41
24
  }
42
25
 
43
26
  const dataKeysAndValuesValueStyles = "text-body-sm text-muted-foreground min-w-0 py-0.5 pr-6";
@@ -123,4 +106,4 @@ const DataKeysAndValues = Object.assign(DataKeysAndValuesRoot, {
123
106
  });
124
107
 
125
108
  exports.DataKeysAndValues = DataKeysAndValues;
126
- //# sourceMappingURL=data-keys-and-values-BduKvvC5.cjs.map
109
+ //# sourceMappingURL=data-keys-and-values-CMJ9zHKm.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-keys-and-values-CMJ9zHKm.cjs","sources":["../src/ds/components/DataKeysAndValues/data-keys-and-values-header.tsx","../src/ds/components/DataKeysAndValues/data-keys-and-values-key.tsx","../src/ds/components/DataKeysAndValues/data-keys-and-values-root.tsx","../src/ds/components/DataKeysAndValues/shared.ts","../src/ds/components/DataKeysAndValues/data-keys-and-values-value.tsx","../src/ds/components/DataKeysAndValues/data-keys-and-values-value-link.tsx","../src/ds/components/DataKeysAndValues/data-keys-and-values-value-with-copy-btn.tsx","../src/ds/components/DataKeysAndValues/data-keys-and-values-value-with-tooltip.tsx","../src/ds/components/DataKeysAndValues/data-keys-and-values.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport interface DataKeysAndValuesHeaderProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataKeysAndValuesHeader({ className, children }: DataKeysAndValuesHeaderProps) {\n return (\n <dt className={cn('col-span-full py-3 text-caption tracking-widest text-placeholder uppercase', className)}>\n {children}\n </dt>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport interface DataKeysAndValuesKeyProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataKeysAndValuesKey({ className, children }: DataKeysAndValuesKeyProps) {\n return <dt className={cn('shrink-0 py-0.5 text-body-sm text-placeholder', className)}>{children}</dt>;\n}\n","import { cn } from '@/lib/utils';\n\nexport interface DataKeysAndValuesProps {\n className?: string;\n children: React.ReactNode;\n density?: 'default' | 'dense';\n}\n\nconst DENSITY_GAP_Y: Record<NonNullable<DataKeysAndValuesProps['density']>, string> = {\n default: 'gap-y-1.5',\n dense: 'gap-y-0',\n};\n\nexport function DataKeysAndValuesRoot({ className, children, density = 'default' }: DataKeysAndValuesProps) {\n return <dl className={cn('grid grid-cols-[auto_1fr] gap-x-4', DENSITY_GAP_Y[density], className)}>{children}</dl>;\n}\n","export const dataKeysAndValuesValueStyles = 'text-body-sm text-muted-foreground min-w-0 py-0.5 pr-6';\n","import { dataKeysAndValuesValueStyles } from './shared';\nimport { cn } from '@/lib/utils';\n\nexport interface DataKeysAndValuesValueProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataKeysAndValuesValue({ className, children }: DataKeysAndValuesValueProps) {\n return <dd className={cn(dataKeysAndValuesValueStyles, 'truncate', className)}>{children}</dd>;\n}\n","import { ExternalLinkIcon, Link2Icon } from 'lucide-react';\nimport { dataKeysAndValuesValueStyles } from './shared';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport interface DataKeysAndValuesValueLinkProps {\n className?: string;\n children: React.ReactNode;\n href: string;\n as?: React.ElementType;\n}\n\nfunction isExternalUrl(href: string) {\n return /^https?:\\/\\//.test(href);\n}\n\nexport function DataKeysAndValuesValueLink({ className, children, href, as }: DataKeysAndValuesValueLinkProps) {\n const isExternal = isExternalUrl(href);\n const Component = as || 'a';\n // Pass `to` only for custom components so React-Router's `Link` (which reads `to`) works\n // while native anchors don't get an unknown `to` attribute warning.\n const navigationProps = as ? { href, to: href } : { href };\n\n const linkClassName = cn(\n 'flex items-center gap-2 truncate hover:text-foreground',\n controlStateColorTransition,\n '[&:hover>svg]:opacity-100 [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:opacity-70',\n );\n\n if (isExternal) {\n return (\n <dd className={cn(dataKeysAndValuesValueStyles, className)}>\n <a href={href} target=\"_blank\" rel=\"noopener noreferrer\" className={linkClassName}>\n <span>{children}</span>\n <ExternalLinkIcon />\n </a>\n </dd>\n );\n }\n\n return (\n <dd className={cn(dataKeysAndValuesValueStyles, className)}>\n <Component {...navigationProps} className={linkClassName}>\n <span>{children}</span>\n <Link2Icon />\n </Component>\n </dd>\n );\n}\n","import { CheckIcon, CopyIcon } from 'lucide-react';\nimport { dataKeysAndValuesValueStyles } from './shared';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\nimport { cn } from '@/lib/utils';\n\nexport interface DataKeysAndValuesValueWithCopyBtnProps {\n className?: string;\n children: React.ReactNode;\n copyValue: string;\n copyTooltip?: string;\n}\n\nexport function DataKeysAndValuesValueWithCopyBtn({\n className,\n children,\n copyValue,\n copyTooltip = 'Copy to clipboard',\n}: DataKeysAndValuesValueWithCopyBtnProps) {\n const { isCopied, handleCopy } = useCopyToClipboard({\n text: copyValue,\n copyMessage: 'Copied!',\n });\n\n return (\n <dd className={cn(dataKeysAndValuesValueStyles, className)}>\n <Tooltip open={isCopied || undefined}>\n <TooltipTrigger asChild>\n <button\n onClick={handleCopy}\n type=\"button\"\n className={cn(\n 'flex items-center gap-2 text-left whitespace-nowrap',\n '[&:hover>svg]:opacity-100 [&>svg]:size-3 [&>svg]:shrink-0 [&>svg]:opacity-70',\n { '[&>svg]:h-4 [&>svg]:w-4 [&>svg]:text-accent1': isCopied },\n )}\n aria-label={isCopied ? 'Copied!' : copyTooltip}\n >\n <span>{children}</span>\n {isCopied ? <CheckIcon /> : <CopyIcon />}\n </button>\n </TooltipTrigger>\n <TooltipContent>{isCopied ? 'Copied!' : copyTooltip}</TooltipContent>\n </Tooltip>\n </dd>\n );\n}\n","import { dataKeysAndValuesValueStyles } from './shared';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { cn } from '@/lib/utils';\n\nexport interface DataKeysAndValuesValueWithTooltipProps {\n className?: string;\n children: React.ReactNode;\n tooltip: string;\n}\n\nexport function DataKeysAndValuesValueWithTooltip({\n className,\n children,\n tooltip,\n}: DataKeysAndValuesValueWithTooltipProps) {\n return (\n <dd className={cn(dataKeysAndValuesValueStyles, className)}>\n <Tooltip>\n <TooltipTrigger asChild>\n <div tabIndex={0} className=\"inline cursor-help truncate\">\n {children}\n </div>\n </TooltipTrigger>\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n </dd>\n );\n}\n","import { DataKeysAndValuesHeader } from './data-keys-and-values-header';\nimport { DataKeysAndValuesKey } from './data-keys-and-values-key';\nimport { DataKeysAndValuesRoot } from './data-keys-and-values-root';\nimport { DataKeysAndValuesValue } from './data-keys-and-values-value';\nimport { DataKeysAndValuesValueLink } from './data-keys-and-values-value-link';\nimport { DataKeysAndValuesValueWithCopyBtn } from './data-keys-and-values-value-with-copy-btn';\nimport { DataKeysAndValuesValueWithTooltip } from './data-keys-and-values-value-with-tooltip';\n\nexport const DataKeysAndValues = Object.assign(DataKeysAndValuesRoot, {\n Key: DataKeysAndValuesKey,\n Value: DataKeysAndValuesValue,\n ValueLink: DataKeysAndValuesValueLink,\n ValueWithTooltip: DataKeysAndValuesValueWithTooltip,\n ValueWithCopyBtn: DataKeysAndValuesValueWithCopyBtn,\n Header: DataKeysAndValuesHeader,\n});\n"],"names":["cn","jsx","controlStateColorTransition","jsxs","ExternalLinkIcon","Link2Icon","useCopyToClipboard","Tooltip","TooltipTrigger","CheckIcon","CopyIcon","TooltipContent","tooltip"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  const dataListTop = require('./data-list-top-B-gb-FY6.cjs');
4
- const dataListSpacer = require('./data-list-spacer-DUBpzv_H.cjs');
4
+ const dataListSpacer = require('./data-list-spacer-GIVW2hB1.cjs');
5
5
  const jsxRuntime = require('react/jsx-runtime');
6
6
  const lucideReact = require('lucide-react');
7
- const Button = require('./Button-MMZPEb_q.cjs');
7
+ const Button = require('./Button-BAMnPqos.cjs');
8
8
  const React = require('react');
9
9
  const utils_cn = require('./cn-DG0X1KEP.cjs');
10
10
 
@@ -16,8 +16,8 @@ function DataListPagination({ currentPage, hasMore, onNextPage, onPrevPage }) {
16
16
  /* @__PURE__ */ jsxRuntime.jsx("b", { children: currentPage ? currentPage + 1 : "1" })
17
17
  ] }),
18
18
  showNavigation && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-4", children: [
19
- typeof currentPage === "number" && currentPage > 0 && /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { type: "button", variant: "outline", size: "sm", onClick: onPrevPage, icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeftIcon, {}), children: "Previous" }),
20
- hasMore && /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { type: "button", variant: "outline", size: "sm", onClick: onNextPage, icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRightIcon, {}), children: "Next" })
19
+ typeof currentPage === "number" && currentPage > 0 && /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { type: "button", size: "sm", onClick: onPrevPage, icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeftIcon, {}), children: "Previous" }),
20
+ hasMore && /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { type: "button", size: "sm", onClick: onNextPage, icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRightIcon, {}), children: "Next" })
21
21
  ] })
22
22
  ] });
23
23
  }
@@ -122,4 +122,4 @@ const DataList = Object.assign(dataListTop.DataListRoot, {
122
122
  exports.DataList = DataList;
123
123
  exports.DataListSubHeading = DataListSubHeading;
124
124
  exports.DataListSubheader = DataListSubheader;
125
- //# sourceMappingURL=data-list-DSbuTWLI.cjs.map
125
+ //# sourceMappingURL=data-list-CH3HAhK5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-list-CH3HAhK5.cjs","sources":["../src/ds/components/DataList/data-list-pagination.tsx","../src/ds/components/DataList/data-list-row-static.tsx","../src/ds/components/DataList/data-list-subheader.tsx","../src/ds/components/DataList/data-list-subheading.tsx","../src/ds/components/DataList/data-list-top-cells.tsx","../src/ds/components/DataList/data-list.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\n\nexport type DataListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function DataListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: DataListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className=\"col-span-full flex items-center justify-center gap-4 py-3 text-body text-muted-foreground\">\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div className=\"flex gap-4\">\n {typeof currentPage === 'number' && currentPage > 0 && (\n <Button type=\"button\" size=\"sm\" onClick={onPrevPage} icon={<ArrowLeftIcon />}>\n Previous\n </Button>\n )}\n {hasMore && (\n <Button type=\"button\" size=\"sm\" onClick={onNextPage} icon={<ArrowRightIcon />}>\n Next\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowStaticStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowStaticProps = ComponentPropsWithoutRef<'div'> & DataListRowSharedProps;\n\n/**\n * Non-interactive row. Use when a row should *display* like a regular row but\n * has no link target or click handler\n */\nexport const DataListRowStatic = forwardRef<HTMLDivElement, DataListRowStaticProps>(\n ({ children, className, colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <div\n ref={ref}\n className={cn(isWrapped ? 'grid grid-cols-subgrid gap-4 px-3' : dataListRowStaticStyles, className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListRowStatic.displayName = 'DataListRowStatic';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubheaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const DataListSubheader = forwardRef<HTMLDivElement, DataListSubheaderProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'data-list-subheader relative isolate col-span-full px-3 py-2 text-subheading text-muted-foreground',\n 'bg-(--data-list-background)',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListSubheader.displayName = 'DataListSubheader';\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubHeadingProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function DataListSubHeading({ children, className }: DataListSubHeadingProps) {\n return <span className={cn('text-caption text-placeholder', className)}>{children}</span>;\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopCellsProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Drop the group's default left margin. Use when this sits as the second\n * child of a gap-0 `DataList.Top`, beside a `DataList.TopSelectCell` that\n * owns the leading column.\n */\n flushLeft?: boolean;\n /**\n * Place the group starting at this column line, spanning through to the\n * last column. Defaults to the full grid (`col-span-full`). Use when this\n * sits beside a leading cell that owns column 1.\n */\n colStart?: number;\n};\n\n/**\n * Non-interactive header equivalent of `DataList.RowButton`. Groups a set of\n * `DataList.TopCell`s with the same horizontal layout (gap, mx, px) as\n * `RowButton`, so columns inside a wrapped `Top` line up cell-for-cell with the\n * columns inside a wrapped `Row`.\n */\nexport const DataListTopCells = forwardRef<HTMLDivElement, DataListTopCellsProps>(\n ({ children, className, flushLeft, colStart, style, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'pointer-events-none grid grid-cols-subgrid gap-4 px-3 [&>*]:pointer-events-auto',\n !colStart && 'col-span-full',\n flushLeft && 'pl-0!',\n className,\n )}\n style={colStart ? { ...style, gridColumn: `${colStart} / -1` } : style}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListTopCells.displayName = 'DataListTopCells';\n","import {\n DataListActionsCell,\n DataListCell,\n DataListTextCell,\n DataListNameCell,\n DataListDescriptionCell,\n DataListIdCell,\n DataListRowHeaderCell,\n DataListNumberCell,\n DataListSelectCell,\n DataListDateCell,\n DataListCreatedCell,\n DataListTimeCell,\n} from './data-list-cells';\nimport { DataListNextPageLoading } from './data-list-next-page-loading';\nimport { DataListNoMatch } from './data-list-no-match';\nimport { DataListPagination } from './data-list-pagination';\nimport { DataListRoot } from './data-list-root';\nimport { DataListRowButton } from './data-list-row-button';\nimport { DataListRowLink } from './data-list-row-link';\nimport { DataListRowStatic } from './data-list-row-static';\nimport { DataListRowWrapper } from './data-list-row-wrapper';\nimport { DataListSortableTopCell } from './data-list-sortable-top-cell';\nimport { DataListSpacer } from './data-list-spacer';\nimport { DataListSubheader } from './data-list-subheader';\nimport { DataListSubHeading } from './data-list-subheading';\nimport { DataListTop } from './data-list-top';\nimport {\n DataListTopCell,\n DataListTopCellWithTooltip,\n DataListTopCellSmart,\n DataListTopSelectCell,\n} from './data-list-top-cell';\nimport { DataListTopCells } from './data-list-top-cells';\n\nexport type { DataListRootProps, DataListVariant } from './data-list-root';\nexport type { DataListSortableTopCellProps, DataListSort } from './data-list-sortable-top-cell';\n\nexport const DataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCells: DataListTopCells,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n RowStatic: DataListRowStatic,\n Cell: DataListCell,\n ActionsCell: DataListActionsCell,\n TextCell: DataListTextCell,\n NameCell: DataListNameCell,\n DescriptionCell: DataListDescriptionCell,\n IdCell: DataListIdCell,\n RowHeaderCell: DataListRowHeaderCell,\n NumberCell: DataListNumberCell,\n DateCell: DataListDateCell,\n CreatedCell: DataListCreatedCell,\n TimeCell: DataListTimeCell,\n SelectCell: DataListSelectCell,\n TopSelectCell: DataListTopSelectCell,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n NextPageLoading: DataListNextPageLoading,\n Pagination: DataListPagination,\n});\n"],"names":["jsxs","jsx","Button","ArrowLeftIcon","ArrowRightIcon","forwardRef","useDataListRowWrapperContext","cn","dataListRowStaticStyles","DataListRoot","DataListTop","DataListTopCell","DataListSortableTopCell","DataListTopCellWithTooltip","DataListTopCellSmart","DataListRowWrapper","DataListRowButton","DataListRowLink","DataListCell","DataListActionsCell","DataListTextCell","DataListNameCell","DataListDescriptionCell","DataListIdCell","DataListRowHeaderCell","DataListNumberCell","DataListDateCell","DataListCreatedCell","DataListTimeCell","DataListSelectCell","DataListTopSelectCell","DataListNoMatch","DataListSpacer","DataListNextPageLoading"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { l as dataListRowStaticStyles, D as DataListRoot, m as DataListTopSelectCell, n as DataListSelectCell, f as DataListTimeCell, j as DataListCreatedCell, g as DataListDateCell, o as DataListNumberCell, p as DataListRowHeaderCell, k as DataListIdCell, q as DataListDescriptionCell, r as DataListNameCell, e as DataListTextCell, t as DataListActionsCell, c as DataListCell, h as DataListTopCellSmart, i as DataListTopCellWithTooltip, b as DataListTopCell, a as DataListTop } from './data-list-top-LiaWUw5P.js';
2
- import { u as useDataListRowWrapperContext, D as DataListNextPageLoading, b as DataListSpacer, a as DataListNoMatch, c as DataListRowLink, d as DataListRowButton, e as DataListRowWrapper, f as DataListSortableTopCell } from './data-list-spacer-C0YimRXC.js';
2
+ import { u as useDataListRowWrapperContext, D as DataListNextPageLoading, b as DataListSpacer, a as DataListNoMatch, c as DataListRowLink, d as DataListRowButton, e as DataListRowWrapper, f as DataListSortableTopCell } from './data-list-spacer-BQ4_YeyT.js';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
  import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';
5
- import { B as Button } from './Button-KUj0U-5I.js';
5
+ import { B as Button } from './Button-B8nF87ai.js';
6
6
  import { forwardRef } from 'react';
7
7
  import { c as cn } from './cn-65Adrsfj.js';
8
8
 
@@ -14,8 +14,8 @@ function DataListPagination({ currentPage, hasMore, onNextPage, onPrevPage }) {
14
14
  /* @__PURE__ */ jsx("b", { children: currentPage ? currentPage + 1 : "1" })
15
15
  ] }),
16
16
  showNavigation && /* @__PURE__ */ jsxs("div", { className: "flex gap-4", children: [
17
- typeof currentPage === "number" && currentPage > 0 && /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: onPrevPage, icon: /* @__PURE__ */ jsx(ArrowLeftIcon, {}), children: "Previous" }),
18
- hasMore && /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: onNextPage, icon: /* @__PURE__ */ jsx(ArrowRightIcon, {}), children: "Next" })
17
+ typeof currentPage === "number" && currentPage > 0 && /* @__PURE__ */ jsx(Button, { type: "button", size: "sm", onClick: onPrevPage, icon: /* @__PURE__ */ jsx(ArrowLeftIcon, {}), children: "Previous" }),
18
+ hasMore && /* @__PURE__ */ jsx(Button, { type: "button", size: "sm", onClick: onNextPage, icon: /* @__PURE__ */ jsx(ArrowRightIcon, {}), children: "Next" })
19
19
  ] })
20
20
  ] });
21
21
  }
@@ -118,4 +118,4 @@ const DataList = Object.assign(DataListRoot, {
118
118
  });
119
119
 
120
120
  export { DataList as D, DataListSubHeading as a, DataListSubheader as b };
121
- //# sourceMappingURL=data-list-Cn0Ls4l2.js.map
121
+ //# sourceMappingURL=data-list-DXjH5wkB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-list-DXjH5wkB.js","sources":["../src/ds/components/DataList/data-list-pagination.tsx","../src/ds/components/DataList/data-list-row-static.tsx","../src/ds/components/DataList/data-list-subheader.tsx","../src/ds/components/DataList/data-list-subheading.tsx","../src/ds/components/DataList/data-list-top-cells.tsx","../src/ds/components/DataList/data-list.tsx"],"sourcesContent":["import { ArrowLeftIcon, ArrowRightIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\n\nexport type DataListPaginationProps = {\n currentPage?: number;\n hasMore?: boolean;\n onNextPage?: () => void;\n onPrevPage?: () => void;\n};\n\nexport function DataListPagination({ currentPage, hasMore, onNextPage, onPrevPage }: DataListPaginationProps) {\n const showNavigation = (typeof currentPage === 'number' && currentPage > 0) || hasMore;\n\n return (\n <div className=\"col-span-full flex items-center justify-center gap-4 py-3 text-body text-muted-foreground\">\n <span>\n Page <b>{currentPage ? currentPage + 1 : '1'}</b>\n </span>\n {showNavigation && (\n <div className=\"flex gap-4\">\n {typeof currentPage === 'number' && currentPage > 0 && (\n <Button type=\"button\" size=\"sm\" onClick={onPrevPage} icon={<ArrowLeftIcon />}>\n Previous\n </Button>\n )}\n {hasMore && (\n <Button type=\"button\" size=\"sm\" onClick={onNextPage} icon={<ArrowRightIcon />}>\n Next\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowStaticStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowStaticProps = ComponentPropsWithoutRef<'div'> & DataListRowSharedProps;\n\n/**\n * Non-interactive row. Use when a row should *display* like a regular row but\n * has no link target or click handler\n */\nexport const DataListRowStatic = forwardRef<HTMLDivElement, DataListRowStaticProps>(\n ({ children, className, colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <div\n ref={ref}\n className={cn(isWrapped ? 'grid grid-cols-subgrid gap-4 px-3' : dataListRowStaticStyles, className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListRowStatic.displayName = 'DataListRowStatic';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubheaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const DataListSubheader = forwardRef<HTMLDivElement, DataListSubheaderProps>(\n ({ children, className, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'data-list-subheader relative isolate col-span-full px-3 py-2 text-subheading text-muted-foreground',\n 'bg-(--data-list-background)',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListSubheader.displayName = 'DataListSubheader';\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSubHeadingProps = {\n children: ReactNode;\n className?: string;\n};\n\nexport function DataListSubHeading({ children, className }: DataListSubHeadingProps) {\n return <span className={cn('text-caption text-placeholder', className)}>{children}</span>;\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListTopCellsProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Drop the group's default left margin. Use when this sits as the second\n * child of a gap-0 `DataList.Top`, beside a `DataList.TopSelectCell` that\n * owns the leading column.\n */\n flushLeft?: boolean;\n /**\n * Place the group starting at this column line, spanning through to the\n * last column. Defaults to the full grid (`col-span-full`). Use when this\n * sits beside a leading cell that owns column 1.\n */\n colStart?: number;\n};\n\n/**\n * Non-interactive header equivalent of `DataList.RowButton`. Groups a set of\n * `DataList.TopCell`s with the same horizontal layout (gap, mx, px) as\n * `RowButton`, so columns inside a wrapped `Top` line up cell-for-cell with the\n * columns inside a wrapped `Row`.\n */\nexport const DataListTopCells = forwardRef<HTMLDivElement, DataListTopCellsProps>(\n ({ children, className, flushLeft, colStart, style, ...rest }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'pointer-events-none grid grid-cols-subgrid gap-4 px-3 [&>*]:pointer-events-auto',\n !colStart && 'col-span-full',\n flushLeft && 'pl-0!',\n className,\n )}\n style={colStart ? { ...style, gridColumn: `${colStart} / -1` } : style}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n\nDataListTopCells.displayName = 'DataListTopCells';\n","import {\n DataListActionsCell,\n DataListCell,\n DataListTextCell,\n DataListNameCell,\n DataListDescriptionCell,\n DataListIdCell,\n DataListRowHeaderCell,\n DataListNumberCell,\n DataListSelectCell,\n DataListDateCell,\n DataListCreatedCell,\n DataListTimeCell,\n} from './data-list-cells';\nimport { DataListNextPageLoading } from './data-list-next-page-loading';\nimport { DataListNoMatch } from './data-list-no-match';\nimport { DataListPagination } from './data-list-pagination';\nimport { DataListRoot } from './data-list-root';\nimport { DataListRowButton } from './data-list-row-button';\nimport { DataListRowLink } from './data-list-row-link';\nimport { DataListRowStatic } from './data-list-row-static';\nimport { DataListRowWrapper } from './data-list-row-wrapper';\nimport { DataListSortableTopCell } from './data-list-sortable-top-cell';\nimport { DataListSpacer } from './data-list-spacer';\nimport { DataListSubheader } from './data-list-subheader';\nimport { DataListSubHeading } from './data-list-subheading';\nimport { DataListTop } from './data-list-top';\nimport {\n DataListTopCell,\n DataListTopCellWithTooltip,\n DataListTopCellSmart,\n DataListTopSelectCell,\n} from './data-list-top-cell';\nimport { DataListTopCells } from './data-list-top-cells';\n\nexport type { DataListRootProps, DataListVariant } from './data-list-root';\nexport type { DataListSortableTopCellProps, DataListSort } from './data-list-sortable-top-cell';\n\nexport const DataList = Object.assign(DataListRoot, {\n Top: DataListTop,\n TopCells: DataListTopCells,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n TopCellSmart: DataListTopCellSmart,\n RowWrapper: DataListRowWrapper,\n RowButton: DataListRowButton,\n RowLink: DataListRowLink,\n RowStatic: DataListRowStatic,\n Cell: DataListCell,\n ActionsCell: DataListActionsCell,\n TextCell: DataListTextCell,\n NameCell: DataListNameCell,\n DescriptionCell: DataListDescriptionCell,\n IdCell: DataListIdCell,\n RowHeaderCell: DataListRowHeaderCell,\n NumberCell: DataListNumberCell,\n DateCell: DataListDateCell,\n CreatedCell: DataListCreatedCell,\n TimeCell: DataListTimeCell,\n SelectCell: DataListSelectCell,\n TopSelectCell: DataListTopSelectCell,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n NextPageLoading: DataListNextPageLoading,\n Pagination: DataListPagination,\n});\n"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { useContext, createContext, forwardRef } from 'react';
4
4
  import { u as dataListRowInteractiveStyles, v as dataListRowStyles, d as dataListRowOuterStyles, w as dataListRowStateStyles, b as DataListTopCell } from './data-list-top-LiaWUw5P.js';
5
5
  import { useFluidMenuItemRef } from './primitives/fluid-menu.es.js';
6
6
  import { ArrowUpDown, ArrowDown, ArrowUp } from 'lucide-react';
7
- import { B as Button } from './Button-KUj0U-5I.js';
7
+ import { B as Button } from './Button-B8nF87ai.js';
8
8
 
9
9
  function DataListNextPageLoading({
10
10
  isLoading,
@@ -197,4 +197,4 @@ function DataListSpacer({ height }) {
197
197
  }
198
198
 
199
199
  export { DataListNextPageLoading as D, DataListNoMatch as a, DataListSpacer as b, DataListRowLink as c, DataListRowButton as d, DataListRowWrapper as e, DataListSortableTopCell as f, useDataListRowWrapperContext as u };
200
- //# sourceMappingURL=data-list-spacer-C0YimRXC.js.map
200
+ //# sourceMappingURL=data-list-spacer-BQ4_YeyT.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-spacer-C0YimRXC.js","sources":["../src/ds/components/DataList/data-list-next-page-loading.tsx","../src/ds/components/DataList/data-list-no-match.tsx","../src/ds/components/DataList/data-list-row-wrapper-context.ts","../src/ds/components/DataList/data-list-row-button.tsx","../src/ds/components/DataList/data-list-row-link.tsx","../src/ds/components/DataList/data-list-row-wrapper.tsx","../src/ds/components/DataList/data-list-sortable-top-cell.tsx","../src/ds/components/DataList/data-list-spacer.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type DataListNextPageLoadingProps = {\n isLoading?: boolean;\n hasMore?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n loadingText?: string;\n};\n\nexport function DataListNextPageLoading({\n isLoading,\n setEndOfListElement,\n hasMore,\n loadingText = 'Loading more data...',\n}: DataListNextPageLoadingProps) {\n if (!setEndOfListElement) {\n return null;\n }\n\n return (\n <div\n ref={setEndOfListElement}\n // Zero-height when idle so it adds no trailing space below the last row;\n // IntersectionObserver still fires for a zero-area target at the viewport edge.\n className={cn('col-span-full -mt-px flex justify-center text-body text-muted-foreground opacity-50', {\n 'py-4': isLoading,\n })}\n >\n {isLoading && loadingText}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListNoMatchProps = ComponentPropsWithoutRef<'div'> & {\n message?: string;\n};\n\nexport function DataListNoMatch({\n message = 'Nothing matches your search',\n className,\n ...props\n}: DataListNoMatchProps) {\n return (\n <div\n className={cn(\n 'col-span-full flex flex-col items-center justify-center gap-2 rounded-lg bg-background py-8 text-muted-foreground',\n className,\n )}\n {...props}\n >\n <p className=\"text-body\">{message}</p>\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\n\nexport const DataListRowWrapperContext = createContext(false);\n\nexport function useDataListRowWrapperContext() {\n return useContext(DataListRowWrapperContext);\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowButtonProps = ComponentPropsWithoutRef<'button'> & DataListRowSharedProps;\n\n/**\n * Forwarded ref + spread props so virtualizers (`useVirtualizer.measureElement`)\n * can attach a ref and `data-index` to each rendered row.\n */\nexport const DataListRowButton = forwardRef<HTMLButtonElement, DataListRowButtonProps>(\n ({ children, className, type = 'button', colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <button\n ref={isWrapped ? ref : fluidRef}\n type={type}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), 'text-left', className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nDataListRowButton.displayName = 'DataListRowButton';\n","import { forwardRef } from 'react';\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowLinkProps = DataListRowSharedProps & {\n children: ReactNode;\n to: string;\n className?: string;\n style?: CSSProperties;\n LinkComponent?: LinkComponent;\n} & Omit<ComponentPropsWithoutRef<'a'>, 'href' | 'children' | 'className' | 'style'>;\n\nexport const DataListRowLink = forwardRef<HTMLAnchorElement, DataListRowLinkProps>(\n (\n { children, to, className, style, LinkComponent: Link = 'a', colStart, colEnd, featured, variant, ...rest },\n ref,\n ) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <Link\n ref={isWrapped ? ref : fluidRef}\n href={to}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </Link>\n );\n },\n);\n\nDataListRowLink.displayName = 'DataListRowLink';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef, KeyboardEvent, MouseEvent } from 'react';\nimport { DataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowOuterStyles, dataListRowStateStyles } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowWrapperProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Makes the whole wrapper the row's activation target: it becomes focusable\n * (`tabIndex=0` unless overridden, e.g. by `getRowProps`), and a click or\n * Enter on the wrapper itself calls this. Descendants that must not activate\n * the row (the inner link, popover triggers, action buttons) should call\n * `event.stopPropagation()` on their click.\n */\n onSelectRow?: () => void;\n};\n\n/**\n * Grid wrapper used to host a leading or trailing cell (e.g. a selection\n * checkbox or row actions) alongside a `DataList.RowButton` / `RowLink`.\n *\n * Without `onSelectRow` it is non-interactive: hover/focus/click only apply to\n * the nested row primitive. With `onSelectRow` the wrapper itself becomes the\n * click / Enter target so the entire row (including trailing cells) activates.\n * For standalone interactive rows, use `DataList.RowButton` directly.\n *\n * Carries the `.data-list-row` marker so root-level row styling behaves the\n * same in wrapped and standalone rows.\n */\nexport const DataListRowWrapper = forwardRef<HTMLDivElement, DataListRowWrapperProps>(\n ({ children, className, onSelectRow, onClick, onKeyDown, tabIndex, ...rest }, ref) => {\n const isSelectable = onSelectRow !== undefined;\n // The wrapper is the `.data-list-row` element, so it (not the nested\n // RowButton/RowLink) registers with the root's fluid hover.\n const rowRef = useFluidMenuItemRef(ref);\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n onSelectRow();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n // Only when the wrapper itself is focused. A focused descendant (the\n // link) receiving Enter fires its own native click; handling it here too\n // would activate the row twice.\n if (event.key === 'Enter' && event.target === event.currentTarget) {\n event.preventDefault();\n onSelectRow();\n }\n };\n\n return (\n <DataListRowWrapperContext.Provider value>\n <div\n ref={rowRef}\n tabIndex={tabIndex ?? (isSelectable ? 0 : undefined)}\n className={cn(\n 'grid grid-cols-subgrid gap-0',\n ...dataListRowOuterStyles,\n ...dataListRowStateStyles,\n isSelectable &&\n 'cursor-pointer outline-none focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:ring-inset',\n className,\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </div>\n </DataListRowWrapperContext.Provider>\n );\n },\n);\n\nDataListRowWrapper.displayName = 'DataListRowWrapper';\n","import { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { DataListTopCell } from './data-list-top-cell';\nimport type { DataListTopCellProps } from './data-list-top-cell';\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSort = 'asc' | 'desc';\n\nconst sortIcons = {\n asc: ArrowUp,\n desc: ArrowDown,\n none: ArrowUpDown,\n};\n\nconst sortLabels = {\n asc: 'ascending',\n desc: 'descending',\n};\n\nconst sortAnimations = {\n asc: 'animate-sort-arrow-up',\n desc: 'animate-sort-arrow-down',\n};\n\nconst sortTooltips = {\n asc: 'Asc',\n desc: 'Desc',\n none: 'Sort',\n};\n\nexport type DataListSortableTopCellProps<K extends string = string> = Omit<\n DataListTopCellProps,\n 'aria-sort' | 'as' | 'children' | 'onClick'\n> & {\n children: ReactNode;\n sortKey: K;\n sort?: DataListSort;\n onSortChange: (sort: DataListSort, key: K) => void;\n align?: 'start' | 'end';\n};\n\nexport function DataListSortableTopCell<K extends string = string>({\n children,\n sortKey,\n sort,\n onSortChange,\n align = 'start',\n className,\n ...props\n}: DataListSortableTopCellProps<K>) {\n const next: DataListSort = sort === 'asc' ? 'desc' : 'asc';\n const SortIcon = sortIcons[sort ?? 'none'];\n const label = typeof children === 'string' ? children : sortKey;\n const current = sort ? `sorted ${sortLabels[sort]}` : 'not sorted';\n\n return (\n <DataListTopCell\n data-sort={sort ?? 'none'}\n className={cn('gap-1 overflow-visible', align === 'end' && 'flex-row-reverse', className)}\n {...props}\n >\n <span className=\"min-w-0 truncate\">{children}</span>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={`${label}, ${current}, sort ${sortLabels[next]}`}\n tooltip={sortTooltips[sort ?? 'none']}\n onClick={() => onSortChange(next, sortKey)}\n className={cn('shrink-0', sort ? 'text-foreground' : 'text-muted-foreground')}\n >\n <SortIcon key={sort ?? 'none'} className={sort && sortAnimations[sort]} />\n </Button>\n </DataListTopCell>\n );\n}\n","export type DataListSpacerProps = {\n /** Pixel height of the spacer. Pass 0 to render nothing. */\n height: number;\n};\n\n/**\n * Pads top/bottom of the visible window when virtualizing — preserves the\n * grid's total scroll height for the rows that aren't currently rendered.\n * Spans the full grid width so it doesn't disturb column layout.\n */\nexport function DataListSpacer({ height }: DataListSpacerProps) {\n if (height <= 0) return null;\n return <div className=\"col-span-full\" style={{ height }} />;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-list-spacer-BQ4_YeyT.js","sources":["../src/ds/components/DataList/data-list-next-page-loading.tsx","../src/ds/components/DataList/data-list-no-match.tsx","../src/ds/components/DataList/data-list-row-wrapper-context.ts","../src/ds/components/DataList/data-list-row-button.tsx","../src/ds/components/DataList/data-list-row-link.tsx","../src/ds/components/DataList/data-list-row-wrapper.tsx","../src/ds/components/DataList/data-list-sortable-top-cell.tsx","../src/ds/components/DataList/data-list-spacer.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type DataListNextPageLoadingProps = {\n isLoading?: boolean;\n hasMore?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n loadingText?: string;\n};\n\nexport function DataListNextPageLoading({\n isLoading,\n setEndOfListElement,\n hasMore,\n loadingText = 'Loading more data...',\n}: DataListNextPageLoadingProps) {\n if (!setEndOfListElement) {\n return null;\n }\n\n return (\n <div\n ref={setEndOfListElement}\n // Zero-height when idle so it adds no trailing space below the last row;\n // IntersectionObserver still fires for a zero-area target at the viewport edge.\n className={cn('col-span-full -mt-px flex justify-center text-body text-muted-foreground opacity-50', {\n 'py-4': isLoading,\n })}\n >\n {isLoading && loadingText}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListNoMatchProps = ComponentPropsWithoutRef<'div'> & {\n message?: string;\n};\n\nexport function DataListNoMatch({\n message = 'Nothing matches your search',\n className,\n ...props\n}: DataListNoMatchProps) {\n return (\n <div\n className={cn(\n 'col-span-full flex flex-col items-center justify-center gap-2 rounded-lg bg-background py-8 text-muted-foreground',\n className,\n )}\n {...props}\n >\n <p className=\"text-body\">{message}</p>\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\n\nexport const DataListRowWrapperContext = createContext(false);\n\nexport function useDataListRowWrapperContext() {\n return useContext(DataListRowWrapperContext);\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowButtonProps = ComponentPropsWithoutRef<'button'> & DataListRowSharedProps;\n\n/**\n * Forwarded ref + spread props so virtualizers (`useVirtualizer.measureElement`)\n * can attach a ref and `data-index` to each rendered row.\n */\nexport const DataListRowButton = forwardRef<HTMLButtonElement, DataListRowButtonProps>(\n ({ children, className, type = 'button', colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <button\n ref={isWrapped ? ref : fluidRef}\n type={type}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), 'text-left', className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nDataListRowButton.displayName = 'DataListRowButton';\n","import { forwardRef } from 'react';\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowLinkProps = DataListRowSharedProps & {\n children: ReactNode;\n to: string;\n className?: string;\n style?: CSSProperties;\n LinkComponent?: LinkComponent;\n} & Omit<ComponentPropsWithoutRef<'a'>, 'href' | 'children' | 'className' | 'style'>;\n\nexport const DataListRowLink = forwardRef<HTMLAnchorElement, DataListRowLinkProps>(\n (\n { children, to, className, style, LinkComponent: Link = 'a', colStart, colEnd, featured, variant, ...rest },\n ref,\n ) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <Link\n ref={isWrapped ? ref : fluidRef}\n href={to}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </Link>\n );\n },\n);\n\nDataListRowLink.displayName = 'DataListRowLink';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef, KeyboardEvent, MouseEvent } from 'react';\nimport { DataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowOuterStyles, dataListRowStateStyles } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowWrapperProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Makes the whole wrapper the row's activation target: it becomes focusable\n * (`tabIndex=0` unless overridden, e.g. by `getRowProps`), and a click or\n * Enter on the wrapper itself calls this. Descendants that must not activate\n * the row (the inner link, popover triggers, action buttons) should call\n * `event.stopPropagation()` on their click.\n */\n onSelectRow?: () => void;\n};\n\n/**\n * Grid wrapper used to host a leading or trailing cell (e.g. a selection\n * checkbox or row actions) alongside a `DataList.RowButton` / `RowLink`.\n *\n * Without `onSelectRow` it is non-interactive: hover/focus/click only apply to\n * the nested row primitive. With `onSelectRow` the wrapper itself becomes the\n * click / Enter target so the entire row (including trailing cells) activates.\n * For standalone interactive rows, use `DataList.RowButton` directly.\n *\n * Carries the `.data-list-row` marker so root-level row styling behaves the\n * same in wrapped and standalone rows.\n */\nexport const DataListRowWrapper = forwardRef<HTMLDivElement, DataListRowWrapperProps>(\n ({ children, className, onSelectRow, onClick, onKeyDown, tabIndex, ...rest }, ref) => {\n const isSelectable = onSelectRow !== undefined;\n // The wrapper is the `.data-list-row` element, so it (not the nested\n // RowButton/RowLink) registers with the root's fluid hover.\n const rowRef = useFluidMenuItemRef(ref);\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n onSelectRow();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n // Only when the wrapper itself is focused. A focused descendant (the\n // link) receiving Enter fires its own native click; handling it here too\n // would activate the row twice.\n if (event.key === 'Enter' && event.target === event.currentTarget) {\n event.preventDefault();\n onSelectRow();\n }\n };\n\n return (\n <DataListRowWrapperContext.Provider value>\n <div\n ref={rowRef}\n tabIndex={tabIndex ?? (isSelectable ? 0 : undefined)}\n className={cn(\n 'grid grid-cols-subgrid gap-0',\n ...dataListRowOuterStyles,\n ...dataListRowStateStyles,\n isSelectable &&\n 'cursor-pointer outline-none focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:ring-inset',\n className,\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </div>\n </DataListRowWrapperContext.Provider>\n );\n },\n);\n\nDataListRowWrapper.displayName = 'DataListRowWrapper';\n","import { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { DataListTopCell } from './data-list-top-cell';\nimport type { DataListTopCellProps } from './data-list-top-cell';\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSort = 'asc' | 'desc';\n\nconst sortIcons = {\n asc: ArrowUp,\n desc: ArrowDown,\n none: ArrowUpDown,\n};\n\nconst sortLabels = {\n asc: 'ascending',\n desc: 'descending',\n};\n\nconst sortAnimations = {\n asc: 'animate-sort-arrow-up',\n desc: 'animate-sort-arrow-down',\n};\n\nconst sortTooltips = {\n asc: 'Asc',\n desc: 'Desc',\n none: 'Sort',\n};\n\nexport type DataListSortableTopCellProps<K extends string = string> = Omit<\n DataListTopCellProps,\n 'aria-sort' | 'as' | 'children' | 'onClick'\n> & {\n children: ReactNode;\n sortKey: K;\n sort?: DataListSort;\n onSortChange: (sort: DataListSort, key: K) => void;\n align?: 'start' | 'end';\n};\n\nexport function DataListSortableTopCell<K extends string = string>({\n children,\n sortKey,\n sort,\n onSortChange,\n align = 'start',\n className,\n ...props\n}: DataListSortableTopCellProps<K>) {\n const next: DataListSort = sort === 'asc' ? 'desc' : 'asc';\n const SortIcon = sortIcons[sort ?? 'none'];\n const label = typeof children === 'string' ? children : sortKey;\n const current = sort ? `sorted ${sortLabels[sort]}` : 'not sorted';\n\n return (\n <DataListTopCell\n data-sort={sort ?? 'none'}\n className={cn('gap-1 overflow-visible', align === 'end' && 'flex-row-reverse', className)}\n {...props}\n >\n <span className=\"min-w-0 truncate\">{children}</span>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={`${label}, ${current}, sort ${sortLabels[next]}`}\n tooltip={sortTooltips[sort ?? 'none']}\n onClick={() => onSortChange(next, sortKey)}\n className={cn('shrink-0', sort ? 'text-foreground' : 'text-muted-foreground')}\n >\n <SortIcon key={sort ?? 'none'} className={sort && sortAnimations[sort]} />\n </Button>\n </DataListTopCell>\n );\n}\n","export type DataListSpacerProps = {\n /** Pixel height of the spacer. Pass 0 to render nothing. */\n height: number;\n};\n\n/**\n * Pads top/bottom of the visible window when virtualizing — preserves the\n * grid's total scroll height for the rows that aren't currently rendered.\n * Spans the full grid width so it doesn't disturb column layout.\n */\nexport function DataListSpacer({ height }: DataListSpacerProps) {\n if (height <= 0) return null;\n return <div className=\"col-span-full\" style={{ height }} />;\n}\n"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ const React = require('react');
6
6
  const dataListTop = require('./data-list-top-B-gb-FY6.cjs');
7
7
  const primitives_fluidMenu = require('./primitives/fluid-menu.cjs.js');
8
8
  const lucideReact = require('lucide-react');
9
- const Button = require('./Button-MMZPEb_q.cjs');
9
+ const Button = require('./Button-BAMnPqos.cjs');
10
10
 
11
11
  function DataListNextPageLoading({
12
12
  isLoading,
@@ -206,4 +206,4 @@ exports.DataListRowWrapper = DataListRowWrapper;
206
206
  exports.DataListSortableTopCell = DataListSortableTopCell;
207
207
  exports.DataListSpacer = DataListSpacer;
208
208
  exports.useDataListRowWrapperContext = useDataListRowWrapperContext;
209
- //# sourceMappingURL=data-list-spacer-DUBpzv_H.cjs.map
209
+ //# sourceMappingURL=data-list-spacer-GIVW2hB1.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-list-spacer-DUBpzv_H.cjs","sources":["../src/ds/components/DataList/data-list-next-page-loading.tsx","../src/ds/components/DataList/data-list-no-match.tsx","../src/ds/components/DataList/data-list-row-wrapper-context.ts","../src/ds/components/DataList/data-list-row-button.tsx","../src/ds/components/DataList/data-list-row-link.tsx","../src/ds/components/DataList/data-list-row-wrapper.tsx","../src/ds/components/DataList/data-list-sortable-top-cell.tsx","../src/ds/components/DataList/data-list-spacer.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type DataListNextPageLoadingProps = {\n isLoading?: boolean;\n hasMore?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n loadingText?: string;\n};\n\nexport function DataListNextPageLoading({\n isLoading,\n setEndOfListElement,\n hasMore,\n loadingText = 'Loading more data...',\n}: DataListNextPageLoadingProps) {\n if (!setEndOfListElement) {\n return null;\n }\n\n return (\n <div\n ref={setEndOfListElement}\n // Zero-height when idle so it adds no trailing space below the last row;\n // IntersectionObserver still fires for a zero-area target at the viewport edge.\n className={cn('col-span-full -mt-px flex justify-center text-body text-muted-foreground opacity-50', {\n 'py-4': isLoading,\n })}\n >\n {isLoading && loadingText}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListNoMatchProps = ComponentPropsWithoutRef<'div'> & {\n message?: string;\n};\n\nexport function DataListNoMatch({\n message = 'Nothing matches your search',\n className,\n ...props\n}: DataListNoMatchProps) {\n return (\n <div\n className={cn(\n 'col-span-full flex flex-col items-center justify-center gap-2 rounded-lg bg-background py-8 text-muted-foreground',\n className,\n )}\n {...props}\n >\n <p className=\"text-body\">{message}</p>\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\n\nexport const DataListRowWrapperContext = createContext(false);\n\nexport function useDataListRowWrapperContext() {\n return useContext(DataListRowWrapperContext);\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowButtonProps = ComponentPropsWithoutRef<'button'> & DataListRowSharedProps;\n\n/**\n * Forwarded ref + spread props so virtualizers (`useVirtualizer.measureElement`)\n * can attach a ref and `data-index` to each rendered row.\n */\nexport const DataListRowButton = forwardRef<HTMLButtonElement, DataListRowButtonProps>(\n ({ children, className, type = 'button', colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <button\n ref={isWrapped ? ref : fluidRef}\n type={type}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), 'text-left', className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nDataListRowButton.displayName = 'DataListRowButton';\n","import { forwardRef } from 'react';\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowLinkProps = DataListRowSharedProps & {\n children: ReactNode;\n to: string;\n className?: string;\n style?: CSSProperties;\n LinkComponent?: LinkComponent;\n} & Omit<ComponentPropsWithoutRef<'a'>, 'href' | 'children' | 'className' | 'style'>;\n\nexport const DataListRowLink = forwardRef<HTMLAnchorElement, DataListRowLinkProps>(\n (\n { children, to, className, style, LinkComponent: Link = 'a', colStart, colEnd, featured, variant, ...rest },\n ref,\n ) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <Link\n ref={isWrapped ? ref : fluidRef}\n href={to}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </Link>\n );\n },\n);\n\nDataListRowLink.displayName = 'DataListRowLink';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef, KeyboardEvent, MouseEvent } from 'react';\nimport { DataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowOuterStyles, dataListRowStateStyles } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowWrapperProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Makes the whole wrapper the row's activation target: it becomes focusable\n * (`tabIndex=0` unless overridden, e.g. by `getRowProps`), and a click or\n * Enter on the wrapper itself calls this. Descendants that must not activate\n * the row (the inner link, popover triggers, action buttons) should call\n * `event.stopPropagation()` on their click.\n */\n onSelectRow?: () => void;\n};\n\n/**\n * Grid wrapper used to host a leading or trailing cell (e.g. a selection\n * checkbox or row actions) alongside a `DataList.RowButton` / `RowLink`.\n *\n * Without `onSelectRow` it is non-interactive: hover/focus/click only apply to\n * the nested row primitive. With `onSelectRow` the wrapper itself becomes the\n * click / Enter target so the entire row (including trailing cells) activates.\n * For standalone interactive rows, use `DataList.RowButton` directly.\n *\n * Carries the `.data-list-row` marker so root-level row styling behaves the\n * same in wrapped and standalone rows.\n */\nexport const DataListRowWrapper = forwardRef<HTMLDivElement, DataListRowWrapperProps>(\n ({ children, className, onSelectRow, onClick, onKeyDown, tabIndex, ...rest }, ref) => {\n const isSelectable = onSelectRow !== undefined;\n // The wrapper is the `.data-list-row` element, so it (not the nested\n // RowButton/RowLink) registers with the root's fluid hover.\n const rowRef = useFluidMenuItemRef(ref);\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n onSelectRow();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n // Only when the wrapper itself is focused. A focused descendant (the\n // link) receiving Enter fires its own native click; handling it here too\n // would activate the row twice.\n if (event.key === 'Enter' && event.target === event.currentTarget) {\n event.preventDefault();\n onSelectRow();\n }\n };\n\n return (\n <DataListRowWrapperContext.Provider value>\n <div\n ref={rowRef}\n tabIndex={tabIndex ?? (isSelectable ? 0 : undefined)}\n className={cn(\n 'grid grid-cols-subgrid gap-0',\n ...dataListRowOuterStyles,\n ...dataListRowStateStyles,\n isSelectable &&\n 'cursor-pointer outline-none focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:ring-inset',\n className,\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </div>\n </DataListRowWrapperContext.Provider>\n );\n },\n);\n\nDataListRowWrapper.displayName = 'DataListRowWrapper';\n","import { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { DataListTopCell } from './data-list-top-cell';\nimport type { DataListTopCellProps } from './data-list-top-cell';\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSort = 'asc' | 'desc';\n\nconst sortIcons = {\n asc: ArrowUp,\n desc: ArrowDown,\n none: ArrowUpDown,\n};\n\nconst sortLabels = {\n asc: 'ascending',\n desc: 'descending',\n};\n\nconst sortAnimations = {\n asc: 'animate-sort-arrow-up',\n desc: 'animate-sort-arrow-down',\n};\n\nconst sortTooltips = {\n asc: 'Asc',\n desc: 'Desc',\n none: 'Sort',\n};\n\nexport type DataListSortableTopCellProps<K extends string = string> = Omit<\n DataListTopCellProps,\n 'aria-sort' | 'as' | 'children' | 'onClick'\n> & {\n children: ReactNode;\n sortKey: K;\n sort?: DataListSort;\n onSortChange: (sort: DataListSort, key: K) => void;\n align?: 'start' | 'end';\n};\n\nexport function DataListSortableTopCell<K extends string = string>({\n children,\n sortKey,\n sort,\n onSortChange,\n align = 'start',\n className,\n ...props\n}: DataListSortableTopCellProps<K>) {\n const next: DataListSort = sort === 'asc' ? 'desc' : 'asc';\n const SortIcon = sortIcons[sort ?? 'none'];\n const label = typeof children === 'string' ? children : sortKey;\n const current = sort ? `sorted ${sortLabels[sort]}` : 'not sorted';\n\n return (\n <DataListTopCell\n data-sort={sort ?? 'none'}\n className={cn('gap-1 overflow-visible', align === 'end' && 'flex-row-reverse', className)}\n {...props}\n >\n <span className=\"min-w-0 truncate\">{children}</span>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={`${label}, ${current}, sort ${sortLabels[next]}`}\n tooltip={sortTooltips[sort ?? 'none']}\n onClick={() => onSortChange(next, sortKey)}\n className={cn('shrink-0', sort ? 'text-foreground' : 'text-muted-foreground')}\n >\n <SortIcon key={sort ?? 'none'} className={sort && sortAnimations[sort]} />\n </Button>\n </DataListTopCell>\n );\n}\n","export type DataListSpacerProps = {\n /** Pixel height of the spacer. Pass 0 to render nothing. */\n height: number;\n};\n\n/**\n * Pads top/bottom of the visible window when virtualizing — preserves the\n * grid's total scroll height for the rows that aren't currently rendered.\n * Spans the full grid width so it doesn't disturb column layout.\n */\nexport function DataListSpacer({ height }: DataListSpacerProps) {\n if (height <= 0) return null;\n return <div className=\"col-span-full\" style={{ height }} />;\n}\n"],"names":["jsx","cn","createContext","useContext","forwardRef","useFluidMenuItemRef","dataListRowInteractiveStyles","dataListRowStyles","dataListRowOuterStyles","dataListRowStateStyles","ArrowUp","ArrowDown","ArrowUpDown","jsxs","DataListTopCell","Button"],"mappings":"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"}
1
+ {"version":3,"file":"data-list-spacer-GIVW2hB1.cjs","sources":["../src/ds/components/DataList/data-list-next-page-loading.tsx","../src/ds/components/DataList/data-list-no-match.tsx","../src/ds/components/DataList/data-list-row-wrapper-context.ts","../src/ds/components/DataList/data-list-row-button.tsx","../src/ds/components/DataList/data-list-row-link.tsx","../src/ds/components/DataList/data-list-row-wrapper.tsx","../src/ds/components/DataList/data-list-sortable-top-cell.tsx","../src/ds/components/DataList/data-list-spacer.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type DataListNextPageLoadingProps = {\n isLoading?: boolean;\n hasMore?: boolean;\n setEndOfListElement?: (element: HTMLDivElement | null) => void;\n loadingText?: string;\n};\n\nexport function DataListNextPageLoading({\n isLoading,\n setEndOfListElement,\n hasMore,\n loadingText = 'Loading more data...',\n}: DataListNextPageLoadingProps) {\n if (!setEndOfListElement) {\n return null;\n }\n\n return (\n <div\n ref={setEndOfListElement}\n // Zero-height when idle so it adds no trailing space below the last row;\n // IntersectionObserver still fires for a zero-area target at the viewport edge.\n className={cn('col-span-full -mt-px flex justify-center text-body text-muted-foreground opacity-50', {\n 'py-4': isLoading,\n })}\n >\n {isLoading && loadingText}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type DataListNoMatchProps = ComponentPropsWithoutRef<'div'> & {\n message?: string;\n};\n\nexport function DataListNoMatch({\n message = 'Nothing matches your search',\n className,\n ...props\n}: DataListNoMatchProps) {\n return (\n <div\n className={cn(\n 'col-span-full flex flex-col items-center justify-center gap-2 rounded-lg bg-background py-8 text-muted-foreground',\n className,\n )}\n {...props}\n >\n <p className=\"text-body\">{message}</p>\n </div>\n );\n}\n","import { createContext, useContext } from 'react';\n\nexport const DataListRowWrapperContext = createContext(false);\n\nexport function useDataListRowWrapperContext() {\n return useContext(DataListRowWrapperContext);\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowButtonProps = ComponentPropsWithoutRef<'button'> & DataListRowSharedProps;\n\n/**\n * Forwarded ref + spread props so virtualizers (`useVirtualizer.measureElement`)\n * can attach a ref and `data-index` to each rendered row.\n */\nexport const DataListRowButton = forwardRef<HTMLButtonElement, DataListRowButtonProps>(\n ({ children, className, type = 'button', colStart, colEnd, featured, variant, style, ...rest }, ref) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <button\n ref={isWrapped ? ref : fluidRef}\n type={type}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), 'text-left', className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nDataListRowButton.displayName = 'DataListRowButton';\n","import { forwardRef } from 'react';\nimport type { CSSProperties, ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useDataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowInteractiveStyles, dataListRowStyles } from './shared';\nimport type { DataListRowSharedProps } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowLinkProps = DataListRowSharedProps & {\n children: ReactNode;\n to: string;\n className?: string;\n style?: CSSProperties;\n LinkComponent?: LinkComponent;\n} & Omit<ComponentPropsWithoutRef<'a'>, 'href' | 'children' | 'className' | 'style'>;\n\nexport const DataListRowLink = forwardRef<HTMLAnchorElement, DataListRowLinkProps>(\n (\n { children, to, className, style, LinkComponent: Link = 'a', colStart, colEnd, featured, variant, ...rest },\n ref,\n ) => {\n const isWrapped = useDataListRowWrapperContext();\n // Standalone rows register with the root's fluid hover; wrapped ones let the wrapper do it.\n const fluidRef = useFluidMenuItemRef(ref);\n const hasColumnOverride = colStart !== undefined || colEnd !== undefined;\n const resolvedStyle = hasColumnOverride ? { ...style, gridColumn: `${colStart ?? 1} / ${colEnd ?? -1}` } : style;\n return (\n <Link\n ref={isWrapped ? ref : fluidRef}\n href={to}\n className={cn(...(isWrapped ? dataListRowInteractiveStyles : dataListRowStyles), className)}\n style={resolvedStyle}\n data-featured={featured || undefined}\n data-variant={variant ?? 'default'}\n {...rest}\n >\n {children}\n </Link>\n );\n },\n);\n\nDataListRowLink.displayName = 'DataListRowLink';\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef, KeyboardEvent, MouseEvent } from 'react';\nimport { DataListRowWrapperContext } from './data-list-row-wrapper-context';\nimport { dataListRowOuterStyles, dataListRowStateStyles } from './shared';\nimport { useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type DataListRowWrapperProps = ComponentPropsWithoutRef<'div'> & {\n /**\n * Makes the whole wrapper the row's activation target: it becomes focusable\n * (`tabIndex=0` unless overridden, e.g. by `getRowProps`), and a click or\n * Enter on the wrapper itself calls this. Descendants that must not activate\n * the row (the inner link, popover triggers, action buttons) should call\n * `event.stopPropagation()` on their click.\n */\n onSelectRow?: () => void;\n};\n\n/**\n * Grid wrapper used to host a leading or trailing cell (e.g. a selection\n * checkbox or row actions) alongside a `DataList.RowButton` / `RowLink`.\n *\n * Without `onSelectRow` it is non-interactive: hover/focus/click only apply to\n * the nested row primitive. With `onSelectRow` the wrapper itself becomes the\n * click / Enter target so the entire row (including trailing cells) activates.\n * For standalone interactive rows, use `DataList.RowButton` directly.\n *\n * Carries the `.data-list-row` marker so root-level row styling behaves the\n * same in wrapped and standalone rows.\n */\nexport const DataListRowWrapper = forwardRef<HTMLDivElement, DataListRowWrapperProps>(\n ({ children, className, onSelectRow, onClick, onKeyDown, tabIndex, ...rest }, ref) => {\n const isSelectable = onSelectRow !== undefined;\n // The wrapper is the `.data-list-row` element, so it (not the nested\n // RowButton/RowLink) registers with the root's fluid hover.\n const rowRef = useFluidMenuItemRef(ref);\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n onSelectRow();\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (!isSelectable || event.defaultPrevented) return;\n // Only when the wrapper itself is focused. A focused descendant (the\n // link) receiving Enter fires its own native click; handling it here too\n // would activate the row twice.\n if (event.key === 'Enter' && event.target === event.currentTarget) {\n event.preventDefault();\n onSelectRow();\n }\n };\n\n return (\n <DataListRowWrapperContext.Provider value>\n <div\n ref={rowRef}\n tabIndex={tabIndex ?? (isSelectable ? 0 : undefined)}\n className={cn(\n 'grid grid-cols-subgrid gap-0',\n ...dataListRowOuterStyles,\n ...dataListRowStateStyles,\n isSelectable &&\n 'cursor-pointer outline-none focus-visible:ring-1 focus-visible:ring-accent1 focus-visible:ring-inset',\n className,\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </div>\n </DataListRowWrapperContext.Provider>\n );\n },\n);\n\nDataListRowWrapper.displayName = 'DataListRowWrapper';\n","import { ArrowDown, ArrowUp, ArrowUpDown } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { DataListTopCell } from './data-list-top-cell';\nimport type { DataListTopCellProps } from './data-list-top-cell';\nimport { Button } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nexport type DataListSort = 'asc' | 'desc';\n\nconst sortIcons = {\n asc: ArrowUp,\n desc: ArrowDown,\n none: ArrowUpDown,\n};\n\nconst sortLabels = {\n asc: 'ascending',\n desc: 'descending',\n};\n\nconst sortAnimations = {\n asc: 'animate-sort-arrow-up',\n desc: 'animate-sort-arrow-down',\n};\n\nconst sortTooltips = {\n asc: 'Asc',\n desc: 'Desc',\n none: 'Sort',\n};\n\nexport type DataListSortableTopCellProps<K extends string = string> = Omit<\n DataListTopCellProps,\n 'aria-sort' | 'as' | 'children' | 'onClick'\n> & {\n children: ReactNode;\n sortKey: K;\n sort?: DataListSort;\n onSortChange: (sort: DataListSort, key: K) => void;\n align?: 'start' | 'end';\n};\n\nexport function DataListSortableTopCell<K extends string = string>({\n children,\n sortKey,\n sort,\n onSortChange,\n align = 'start',\n className,\n ...props\n}: DataListSortableTopCellProps<K>) {\n const next: DataListSort = sort === 'asc' ? 'desc' : 'asc';\n const SortIcon = sortIcons[sort ?? 'none'];\n const label = typeof children === 'string' ? children : sortKey;\n const current = sort ? `sorted ${sortLabels[sort]}` : 'not sorted';\n\n return (\n <DataListTopCell\n data-sort={sort ?? 'none'}\n className={cn('gap-1 overflow-visible', align === 'end' && 'flex-row-reverse', className)}\n {...props}\n >\n <span className=\"min-w-0 truncate\">{children}</span>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={`${label}, ${current}, sort ${sortLabels[next]}`}\n tooltip={sortTooltips[sort ?? 'none']}\n onClick={() => onSortChange(next, sortKey)}\n className={cn('shrink-0', sort ? 'text-foreground' : 'text-muted-foreground')}\n >\n <SortIcon key={sort ?? 'none'} className={sort && sortAnimations[sort]} />\n </Button>\n </DataListTopCell>\n );\n}\n","export type DataListSpacerProps = {\n /** Pixel height of the spacer. Pass 0 to render nothing. */\n height: number;\n};\n\n/**\n * Pads top/bottom of the visible window when virtualizing — preserves the\n * grid's total scroll height for the rows that aren't currently rendered.\n * Spans the full grid width so it doesn't disturb column layout.\n */\nexport function DataListSpacer({ height }: DataListSpacerProps) {\n if (height <= 0) return null;\n return <div className=\"col-span-full\" style={{ height }} />;\n}\n"],"names":["jsx","cn","createContext","useContext","forwardRef","useFluidMenuItemRef","dataListRowInteractiveStyles","dataListRowStyles","dataListRowOuterStyles","dataListRowStateStyles","ArrowUp","ArrowDown","ArrowUpDown","jsxs","DataListTopCell","Button"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./drawer.css');const jsxRuntime = require('react/jsx-runtime');
4
4
  const lucideReact = require('lucide-react');
5
- const Button = require('./Button-MMZPEb_q.cjs');
5
+ const Button = require('./Button-BAMnPqos.cjs');
6
6
  const utils_cn = require('./cn-DG0X1KEP.cjs');
7
7
  const drawer = require('@base-ui/react/drawer');
8
8
  const React = require('react');
@@ -17,7 +17,7 @@ const primitives_typography = require('./primitives/typography.cjs.js');
17
17
  const primitives_portalContainer = require('./primitives/portal-container.cjs.js');
18
18
  ;/* empty css */
19
19
  const dataPanelSectionHeading = require('./data-panel-section-heading-V86Awzqg.cjs');
20
- const dataCodeSection = require('./data-code-section-iXzoOYMX.cjs');
20
+ const dataCodeSection = require('./data-code-section-DzLc9O0B.cjs');
21
21
 
22
22
  function _interopNamespaceDefault(e) {
23
23
  const n = Object.create(null, { [Symbol.toStringTag]: { value: 'Module' } });
@@ -267,4 +267,4 @@ const DataPanel = Object.assign(DataPanelRoot, {
267
267
  });
268
268
 
269
269
  exports.DataPanel = DataPanel;
270
- //# sourceMappingURL=data-panel-Bd_Xsz-W.cjs.map
270
+ //# sourceMappingURL=data-panel-CIu6JToM.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-panel-Bd_Xsz-W.cjs","sources":["../src/ds/components/DataPanel/data-panel-close-button.tsx","../src/ds/components/DataPanel/data-panel-content.tsx","../src/ds/components/DataPanel/data-panel-copy-id.tsx","../src/ds/components/DataPanel/data-panel-header.tsx","../src/ds/components/DataPanel/data-panel-header-actions.tsx","../src/ds/components/DataPanel/data-panel-header-content.tsx","../src/ds/components/DataPanel/data-panel-heading.tsx","../src/ds/components/DataPanel/data-panel-loading-data.tsx","../src/ds/components/DataPanel/data-panel-metadata.tsx","../src/ds/components/DataPanel/data-panel-next-prev-nav.tsx","../src/ds/components/DataPanel/data-panel-no-data.tsx","../src/ds/components/DataPanel/data-panel-root.tsx","../src/ds/components/DataPanel/data-panel.tsx"],"sourcesContent":["import { ArrowLeftIcon, XIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelCloseButtonProps {\n onClick: () => void;\n tooltip?: string;\n /** Accessible name; override it when the arrow leads somewhere other than \"closed\" (e.g. back to a parent view). */\n label?: string;\n /**\n * `arrow` (default) is the leading \"leave this panel\" control, rendered first in the header.\n * `x` dismisses a nested column in place and belongs in `HeaderActions`, on the right.\n */\n icon?: 'arrow' | 'x';\n className?: string;\n variant?: ButtonProps['variant'];\n}\n\nexport function DataPanelCloseButton({\n onClick,\n tooltip = 'Close panel',\n label = 'Close Panel',\n icon = 'arrow',\n className,\n variant = 'ghost',\n}: DataPanelCloseButtonProps) {\n return (\n <Button\n size=\"sm\"\n variant={variant}\n onClick={onClick}\n aria-label={label}\n tooltip={tooltip}\n className={cn('shrink-0', className)}\n >\n {icon === 'x' ? <XIcon /> : <ArrowLeftIcon />}\n </Button>\n );\n}\n","import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';\nimport type { ReactNode, Ref } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelContentProps {\n children: ReactNode;\n ref?: Ref<HTMLDivElement>;\n /** Layout overrides (e.g. padding) for the scroll container. */\n className?: string;\n}\n\n// `DrawerPrimitive.Content` marks the region as swipe-exempt so scrolling or\n// selecting text inside the panel body doesn't start a swipe-to-dismiss.\nexport function DataPanelContent({ children, ref, className }: DataPanelContentProps) {\n return (\n <DrawerPrimitive.Content ref={ref} className={cn('min-h-0 flex-1 overflow-y-auto px-2 py-3', className)}>\n {children}\n </DrawerPrimitive.Content>\n );\n}\n","import { useState } from 'react';\nimport { Button } from '@/ds/components/Button';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\nimport { truncateString } from '@/lib/truncate-string';\n\nexport interface DataPanelCopyIdProps {\n id: string;\n /** Characters kept before the ellipsis. Defaults to 12. */\n maxLength?: number;\n}\n\n/**\n * Truncated identifier rendered inline in a `DataPanel.Heading`; clicking copies the full value.\n */\nexport function DataPanelCopyId({ id, maxLength = 12 }: DataPanelCopyIdProps) {\n const { isCopied, handleCopy } = useCopyToClipboard({ text: id, showToast: false });\n const [open, setOpen] = useState(false);\n\n return (\n <Tooltip open={isCopied || open} onOpenChange={setOpen}>\n <TooltipTrigger\n render={\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={handleCopy}>\n {truncateString(id, maxLength)}\n </Button>\n }\n />\n <TooltipContent>{isCopied ? 'Copied to clipboard' : 'Copy to clipboard'}</TooltipContent>\n </Tooltip>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport interface DataPanelHeaderProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataPanelHeader({ className, children }: DataPanelHeaderProps) {\n return (\n <div\n className={cn(\n // Same box as the app `Header`. Single row: leading `CloseButton`, then the heading\n // (+ inline metadata via `HeaderContent`), then `HeaderActions` pushed to the right edge.\n // `gap-0.5` is the slight gap between the close arrow and the heading.\n 'flex min-h-header-default w-full items-center gap-0.5 px-2 py-1.5',\n // Bottom border only when something follows the header (i.e. the panel is expanded).\n // When the panel is collapsed and the header is the only child, the border auto-hides.\n 'not-last:border-b not-last:border-border',\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","export interface DataPanelHeaderActionsProps {\n children: React.ReactNode;\n}\n\n/**\n * Right-side action slot of a `DataPanel.Header`. Mirrors `HeaderAction` with `gap-2`\n * (these are `size=\"sm\"` controls, like the page header actions) and wraps when the panel is too narrow.\n */\nexport function DataPanelHeaderActions({ children }: DataPanelHeaderActionsProps) {\n return <div className=\"ml-auto flex shrink-0 flex-wrap items-center justify-end gap-2 self-center\">{children}</div>;\n}\n","import { Children } from 'react';\n\nexport interface DataPanelHeaderContentProps {\n children: React.ReactNode;\n}\n\n/**\n * Left block of a `DataPanel.Header`: heading followed inline by optional `Metadata`, truncated when too long.\n * A vertical separator is rendered between the heading and the metadata when both are present.\n */\nexport function DataPanelHeaderContent({ children }: DataPanelHeaderContentProps) {\n const [heading, ...metadata] = Children.toArray(children);\n\n return (\n <div className=\"flex min-w-0 flex-1 items-center gap-1 overflow-hidden\">\n {heading}\n {metadata.length > 0 && (\n <>\n <div role=\"separator\" aria-orientation=\"vertical\" className=\"mx-1 h-4 w-px shrink-0 bg-border-strong\" />\n {metadata}\n </>\n )}\n </div>\n );\n}\n","import { controlSizeClasses } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelHeadingProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataPanelHeading({ className, children }: DataPanelHeadingProps) {\n return (\n <h3\n className={cn(\n // Same recipe as a current `Crumb` in the page header, with tight horizontal spacing:\n // inline children like `TraceIdButton` carry their own padding, so `gap-1` + `px-1`\n // is enough to keep the title close to the leading close arrow and the inline metadata.\n // `shrink-0`: the heading keeps its text; the inline `Metadata` row is what gets clipped.\n 'inline-flex max-w-full min-w-0 shrink-0 items-center gap-1 rounded-full px-1',\n controlSizeClasses.sm,\n 'cursor-default text-foreground [&>b]:text-caption [&>b]:text-muted-foreground',\n className,\n )}\n >\n {children}\n </h3>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Spinner } from '@/ds/components/Spinner';\n\nexport interface DataPanelLoadingDataProps {\n children?: ReactNode;\n}\n\nexport function DataPanelLoadingData({ children }: DataPanelLoadingDataProps) {\n return (\n <div className=\"flex min-h-32 items-center justify-center gap-2 px-3 py-4 text-caption text-placeholder\">\n <Spinner size=\"sm\" variant=\"pulse\" className=\"text-placeholder\" /> {children ?? 'Loading...'}\n </div>\n );\n}\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Icon } from '@/ds/icons/Icon';\nimport { controlSizeClasses } from '@/ds/primitives/control-size';\nimport { controlStateColorTransition, transitions } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelMetadataProps {\n children: React.ReactNode;\n}\n\n/** Row of `Meta` pills next to a `DataPanel.Heading`. Never wraps; overflowing pills are clipped. */\nexport function DataPanelMetadata({ children }: DataPanelMetadataProps) {\n return <ul className=\"flex min-w-0 flex-nowrap items-center gap-0.5 overflow-hidden\">{children}</ul>;\n}\n\nexport interface DataPanelMetaProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'title'> {\n /** Element/component to render as (e.g. a router `Link`). Defaults to `span`. */\n as?: React.ElementType;\n href?: string;\n to?: string;\n /** Prefix icon (bare SVG). */\n icon?: React.ReactNode;\n /** Shown on hover/focus; for a static (non-link) meta a string tooltip also becomes the accessible name. */\n tooltip?: React.ReactNode;\n children: React.ReactNode;\n 'data-testid'?: string;\n}\n\nexport function DataPanelMeta({ as, icon, tooltip, children, className, ...props }: DataPanelMetaProps) {\n const Root = as ?? 'span';\n const isInteractive = Boolean(as || props.href || props.to || props.onClick);\n\n const hasTooltip = tooltip != null;\n const root = (\n <Root\n aria-label={!isInteractive && typeof tooltip === 'string' ? tooltip : undefined}\n tabIndex={!isInteractive && hasTooltip ? 0 : undefined}\n className={cn(\n // Same box as a `size=\"sm\"` ghost `Button` (e.g. `TraceIdButton`), so pills line up\n // with the heading and the trace ID on the same header row.\n 'inline-flex min-w-0 items-center gap-1.5 overflow-hidden rounded-full px-2',\n controlSizeClasses.sm,\n controlStateColorTransition,\n isInteractive\n ? cn(quietTextHover, 'cursor-pointer hover:bg-fill-subtle active:bg-fill')\n : cn('text-muted-foreground', hasTooltip && 'cursor-help'),\n className,\n )}\n {...props}\n >\n {icon && (\n <Icon size=\"xs\" className={cn('shrink-0 opacity-50 group-hover:opacity-100', transitions.opacity)}>\n {icon}\n </Icon>\n )}\n <span className=\"min-w-0 truncate\">{children}</span>\n </Root>\n );\n\n return (\n <li className=\"group flex h-control-sm min-w-0 shrink-0 items-center\">\n {!hasTooltip ? (\n root\n ) : (\n <Tooltip>\n <TooltipTrigger render={root} />\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n )}\n </li>\n );\n}\n","import { ArrowDownIcon, ArrowUpIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\n\nexport interface DataPanelNextPrevNavProps {\n onPrevious?: () => void;\n onNext?: () => void;\n previousLabel?: string;\n nextLabel?: string;\n variant?: ButtonProps['variant'];\n}\n\n/** Two independent previous/next buttons, laid out by the parent `HeaderActions` gap. */\nexport function DataPanelNextPrevNav({\n onPrevious,\n onNext,\n previousLabel = 'Go to previous',\n nextLabel = 'Go to next',\n variant = 'ghost',\n}: DataPanelNextPrevNavProps) {\n return (\n <>\n <Button size=\"sm\" variant={variant} tooltip={previousLabel} onClick={onPrevious} disabled={!onPrevious}>\n <ArrowUpIcon />\n </Button>\n <Button size=\"sm\" variant={variant} tooltip={nextLabel} onClick={onNext} disabled={!onNext}>\n <ArrowDownIcon />\n </Button>\n </>\n );\n}\n","export interface DataPanelNoDataProps {\n children?: React.ReactNode;\n}\n\nexport function DataPanelNoData({ children }: DataPanelNoDataProps) {\n return <p className=\"px-3 py-4 text-caption text-placeholder\">{children ?? 'No data found.'}</p>;\n}\n","import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';\nimport * as React from 'react';\n\nimport { PortalContainerProvider } from '@/ds/primitives/portal-container';\nimport { cn } from '@/lib/utils';\n\n// `drawer-popup` / `drawer-backdrop` carry the slide + fade transitions.\nimport '../Drawer/drawer.css';\n\nexport interface DataPanelProps {\n /** Whether the panel is shown. The panel is always a modal Drawer dialog. */\n open: boolean;\n /** Called when the user dismisses the panel (close button, Escape, backdrop, swipe). */\n onClose?: () => void;\n /** Accessible dialog name (screen-reader only; the visible title comes from `DataPanel.Heading`). */\n title: string;\n /** Accessible dialog description (screen-reader only). */\n description?: string;\n /**\n * Elevation level when several sibling panels are open at once (not nested in\n * the React tree, so Base UI's own stacking doesn't apply). A deeper panel is\n * narrower so the one beneath peeks out on the left. Siblings stack in mount\n * order: render the deeper panel after the shallower one.\n */\n depth?: 1 | 2 | 3;\n /**\n * Drawer width. `md` (default) is a narrow detail panel whose width shrinks\n * with `depth`. `half`/`wide`/`full` are for multi-column content (e.g. the\n * trace panel); each `depth` level trims them by a small fixed amount so a\n * same-size parent still peeks out beneath. Changing `size` while open\n * animates the width.\n */\n size?: 'md' | 'half' | 'wide' | 'full';\n children: React.ReactNode;\n className?: string;\n}\n\nconst DEPTH_WIDTH = { 1: 'w-xl', 2: 'w-lg', 3: 'w-md' } as const;\nconst SIZE_WIDTH = { half: 'w-1/2', wide: 'w-4/5', full: 'w-full' } as const;\nconst SIZE_PERCENT = { half: '50%', wide: '80%', full: '100%' } as const;\n// Each extra depth level trims a stacked non-`md` panel so the parent peeks out beneath it.\nconst DEPTH_PEEK_REM = 1.5;\n\nexport function DataPanelRoot({\n open,\n onClose,\n title,\n description,\n depth = 1,\n size = 'md',\n children,\n className,\n}: DataPanelProps) {\n // Swipe-exempt mount point for nested popups (Select, DropdownMenu, …) so they\n // stay inside Base UI's modal focus region and don't start a drawer swipe on\n // pointerdown. Same pattern as `SideDialogRoot`; see `portal-container.tsx`.\n const [portalHost, setPortalHost] = React.useState<HTMLDivElement | null>(null);\n\n return (\n <DrawerPrimitive.Root\n open={open}\n onOpenChange={nextOpen => {\n if (!nextOpen) onClose?.();\n }}\n swipeDirection=\"right\"\n >\n <DrawerPrimitive.Portal>\n {/* Lighter than the shared `--scrim`: a side panel should keep the page beneath readable. */}\n <DrawerPrimitive.Backdrop className=\"drawer-backdrop fixed inset-0 z-50 bg-scrim/30\" />\n <DrawerPrimitive.Viewport className=\"fixed inset-0 z-50\">\n <DrawerPrimitive.Popup\n data-slot=\"data-panel-popup\"\n data-depth={depth}\n data-size={size}\n className={cn(\n 'drawer-popup fixed inset-y-0 right-0 z-50 flex max-w-full p-4 outline-none',\n size === 'md' ? DEPTH_WIDTH[depth] : SIZE_WIDTH[size],\n )}\n style={\n size !== 'md' && depth > 1\n ? { width: `calc(${SIZE_PERCENT[size]} - ${(depth - 1) * DEPTH_PEEK_REM}rem)` }\n : undefined\n }\n >\n {/* Not a heading: the visible `DataPanel.Heading` already is one; this only names the dialog. */}\n <DrawerPrimitive.Title render={<span />} className=\"sr-only\">\n {title}\n </DrawerPrimitive.Title>\n {description && (\n <DrawerPrimitive.Description className=\"sr-only\">{description}</DrawerPrimitive.Description>\n )}\n\n <DrawerPrimitive.Content render={<div ref={setPortalHost} className=\"absolute\" />} />\n\n <PortalContainerProvider container={portalHost}>\n {/* Whole card is swipe-exempt: pointerdown on tabs/buttons/text must not start a dismiss gesture. */}\n <DrawerPrimitive.Content\n render={<section />}\n className={cn(\n 'flex max-h-full w-full flex-col overflow-hidden rounded-xl border border-border bg-background',\n className,\n )}\n >\n {children}\n </DrawerPrimitive.Content>\n </PortalContainerProvider>\n </DrawerPrimitive.Popup>\n </DrawerPrimitive.Viewport>\n </DrawerPrimitive.Portal>\n </DrawerPrimitive.Root>\n );\n}\n","import { DataPanelCloseButton } from './data-panel-close-button';\nimport { DataPanelContent } from './data-panel-content';\nimport { DataPanelCopyId } from './data-panel-copy-id';\nimport { DataPanelHeader } from './data-panel-header';\nimport { DataPanelHeaderActions } from './data-panel-header-actions';\nimport { DataPanelHeaderContent } from './data-panel-header-content';\nimport { DataPanelHeading } from './data-panel-heading';\nimport { DataPanelLoadingData } from './data-panel-loading-data';\nimport { DataPanelMeta, DataPanelMetadata } from './data-panel-metadata';\nimport { DataPanelNextPrevNav } from './data-panel-next-prev-nav';\nimport { DataPanelNoData } from './data-panel-no-data';\nimport { DataPanelRoot } from './data-panel-root';\nimport { DataPanelSectionHeading } from './data-panel-section-heading';\nimport { DataCodeSection } from '@/ds/components/DataCodeSection';\n\nexport const DataPanel = Object.assign(DataPanelRoot, {\n Header: DataPanelHeader,\n HeaderContent: DataPanelHeaderContent,\n HeaderActions: DataPanelHeaderActions,\n Heading: DataPanelHeading,\n Metadata: DataPanelMetadata,\n Meta: DataPanelMeta,\n CloseButton: DataPanelCloseButton,\n CopyId: DataPanelCopyId,\n NextPrevNav: DataPanelNextPrevNav,\n LoadingData: DataPanelLoadingData,\n NoData: DataPanelNoData,\n Content: DataPanelContent,\n CodeSection: DataCodeSection,\n SectionHeading: DataPanelSectionHeading,\n});\n"],"names":["jsx","Button","cn","XIcon","ArrowLeftIcon","DrawerPrimitive","useCopyToClipboard","useState","Tooltip","TooltipTrigger","truncateString","TooltipContent","Children","jsxs","Fragment","controlSizeClasses","Spinner","tooltip","controlStateColorTransition","quietTextHover","Icon","transitions","ArrowUpIcon","ArrowDownIcon","React","PortalContainerProvider","DataCodeSection","DataPanelSectionHeading"],"mappings":"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"}
1
+ {"version":3,"file":"data-panel-CIu6JToM.cjs","sources":["../src/ds/components/DataPanel/data-panel-close-button.tsx","../src/ds/components/DataPanel/data-panel-content.tsx","../src/ds/components/DataPanel/data-panel-copy-id.tsx","../src/ds/components/DataPanel/data-panel-header.tsx","../src/ds/components/DataPanel/data-panel-header-actions.tsx","../src/ds/components/DataPanel/data-panel-header-content.tsx","../src/ds/components/DataPanel/data-panel-heading.tsx","../src/ds/components/DataPanel/data-panel-loading-data.tsx","../src/ds/components/DataPanel/data-panel-metadata.tsx","../src/ds/components/DataPanel/data-panel-next-prev-nav.tsx","../src/ds/components/DataPanel/data-panel-no-data.tsx","../src/ds/components/DataPanel/data-panel-root.tsx","../src/ds/components/DataPanel/data-panel.tsx"],"sourcesContent":["import { ArrowLeftIcon, XIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelCloseButtonProps {\n onClick: () => void;\n tooltip?: string;\n /** Accessible name; override it when the arrow leads somewhere other than \"closed\" (e.g. back to a parent view). */\n label?: string;\n /**\n * `arrow` (default) is the leading \"leave this panel\" control, rendered first in the header.\n * `x` dismisses a nested column in place and belongs in `HeaderActions`, on the right.\n */\n icon?: 'arrow' | 'x';\n className?: string;\n variant?: ButtonProps['variant'];\n}\n\nexport function DataPanelCloseButton({\n onClick,\n tooltip = 'Close panel',\n label = 'Close Panel',\n icon = 'arrow',\n className,\n variant = 'ghost',\n}: DataPanelCloseButtonProps) {\n return (\n <Button\n size=\"sm\"\n variant={variant}\n onClick={onClick}\n aria-label={label}\n tooltip={tooltip}\n className={cn('shrink-0', className)}\n >\n {icon === 'x' ? <XIcon /> : <ArrowLeftIcon />}\n </Button>\n );\n}\n","import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';\nimport type { ReactNode, Ref } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelContentProps {\n children: ReactNode;\n ref?: Ref<HTMLDivElement>;\n /** Layout overrides (e.g. padding) for the scroll container. */\n className?: string;\n}\n\n// `DrawerPrimitive.Content` marks the region as swipe-exempt so scrolling or\n// selecting text inside the panel body doesn't start a swipe-to-dismiss.\nexport function DataPanelContent({ children, ref, className }: DataPanelContentProps) {\n return (\n <DrawerPrimitive.Content ref={ref} className={cn('min-h-0 flex-1 overflow-y-auto px-2 py-3', className)}>\n {children}\n </DrawerPrimitive.Content>\n );\n}\n","import { useState } from 'react';\nimport { Button } from '@/ds/components/Button';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\nimport { truncateString } from '@/lib/truncate-string';\n\nexport interface DataPanelCopyIdProps {\n id: string;\n /** Characters kept before the ellipsis. Defaults to 12. */\n maxLength?: number;\n}\n\n/**\n * Truncated identifier rendered inline in a `DataPanel.Heading`; clicking copies the full value.\n */\nexport function DataPanelCopyId({ id, maxLength = 12 }: DataPanelCopyIdProps) {\n const { isCopied, handleCopy } = useCopyToClipboard({ text: id, showToast: false });\n const [open, setOpen] = useState(false);\n\n return (\n <Tooltip open={isCopied || open} onOpenChange={setOpen}>\n <TooltipTrigger\n render={\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={handleCopy}>\n {truncateString(id, maxLength)}\n </Button>\n }\n />\n <TooltipContent>{isCopied ? 'Copied to clipboard' : 'Copy to clipboard'}</TooltipContent>\n </Tooltip>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport interface DataPanelHeaderProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataPanelHeader({ className, children }: DataPanelHeaderProps) {\n return (\n <div\n className={cn(\n // Same box as the app `Header`. Single row: leading `CloseButton`, then the heading\n // (+ inline metadata via `HeaderContent`), then `HeaderActions` pushed to the right edge.\n // `gap-0.5` is the slight gap between the close arrow and the heading.\n 'flex min-h-header-default w-full items-center gap-0.5 px-2 py-1.5',\n // Bottom border only when something follows the header (i.e. the panel is expanded).\n // When the panel is collapsed and the header is the only child, the border auto-hides.\n 'not-last:border-b not-last:border-border',\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","export interface DataPanelHeaderActionsProps {\n children: React.ReactNode;\n}\n\n/**\n * Right-side action slot of a `DataPanel.Header`. Mirrors `HeaderAction` with `gap-2`\n * (these are `size=\"sm\"` controls, like the page header actions) and wraps when the panel is too narrow.\n */\nexport function DataPanelHeaderActions({ children }: DataPanelHeaderActionsProps) {\n return <div className=\"ml-auto flex shrink-0 flex-wrap items-center justify-end gap-2 self-center\">{children}</div>;\n}\n","import { Children } from 'react';\n\nexport interface DataPanelHeaderContentProps {\n children: React.ReactNode;\n}\n\n/**\n * Left block of a `DataPanel.Header`: heading followed inline by optional `Metadata`, truncated when too long.\n * A vertical separator is rendered between the heading and the metadata when both are present.\n */\nexport function DataPanelHeaderContent({ children }: DataPanelHeaderContentProps) {\n const [heading, ...metadata] = Children.toArray(children);\n\n return (\n <div className=\"flex min-w-0 flex-1 items-center gap-1 overflow-hidden\">\n {heading}\n {metadata.length > 0 && (\n <>\n <div role=\"separator\" aria-orientation=\"vertical\" className=\"mx-1 h-4 w-px shrink-0 bg-border-strong\" />\n {metadata}\n </>\n )}\n </div>\n );\n}\n","import { controlSizeClasses } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelHeadingProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataPanelHeading({ className, children }: DataPanelHeadingProps) {\n return (\n <h3\n className={cn(\n // Same recipe as a current `Crumb` in the page header, with tight horizontal spacing:\n // inline children like `TraceIdButton` carry their own padding, so `gap-1` + `px-1`\n // is enough to keep the title close to the leading close arrow and the inline metadata.\n // `shrink-0`: the heading keeps its text; the inline `Metadata` row is what gets clipped.\n 'inline-flex max-w-full min-w-0 shrink-0 items-center gap-1 rounded-full px-1',\n controlSizeClasses.sm,\n 'cursor-default text-foreground [&>b]:text-caption [&>b]:text-muted-foreground',\n className,\n )}\n >\n {children}\n </h3>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Spinner } from '@/ds/components/Spinner';\n\nexport interface DataPanelLoadingDataProps {\n children?: ReactNode;\n}\n\nexport function DataPanelLoadingData({ children }: DataPanelLoadingDataProps) {\n return (\n <div className=\"flex min-h-32 items-center justify-center gap-2 px-3 py-4 text-caption text-placeholder\">\n <Spinner size=\"sm\" variant=\"pulse\" className=\"text-placeholder\" /> {children ?? 'Loading...'}\n </div>\n );\n}\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Icon } from '@/ds/icons/Icon';\nimport { controlSizeClasses } from '@/ds/primitives/control-size';\nimport { controlStateColorTransition, transitions } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelMetadataProps {\n children: React.ReactNode;\n}\n\n/** Row of `Meta` pills next to a `DataPanel.Heading`. Never wraps; overflowing pills are clipped. */\nexport function DataPanelMetadata({ children }: DataPanelMetadataProps) {\n return <ul className=\"flex min-w-0 flex-nowrap items-center gap-0.5 overflow-hidden\">{children}</ul>;\n}\n\nexport interface DataPanelMetaProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'title'> {\n /** Element/component to render as (e.g. a router `Link`). Defaults to `span`. */\n as?: React.ElementType;\n href?: string;\n to?: string;\n /** Prefix icon (bare SVG). */\n icon?: React.ReactNode;\n /** Shown on hover/focus; for a static (non-link) meta a string tooltip also becomes the accessible name. */\n tooltip?: React.ReactNode;\n children: React.ReactNode;\n 'data-testid'?: string;\n}\n\nexport function DataPanelMeta({ as, icon, tooltip, children, className, ...props }: DataPanelMetaProps) {\n const Root = as ?? 'span';\n const isInteractive = Boolean(as || props.href || props.to || props.onClick);\n\n const hasTooltip = tooltip != null;\n const root = (\n <Root\n aria-label={!isInteractive && typeof tooltip === 'string' ? tooltip : undefined}\n tabIndex={!isInteractive && hasTooltip ? 0 : undefined}\n className={cn(\n // Same box as a `size=\"sm\"` ghost `Button` (e.g. `TraceIdButton`), so pills line up\n // with the heading and the trace ID on the same header row.\n 'inline-flex min-w-0 items-center gap-1.5 overflow-hidden rounded-full px-2',\n controlSizeClasses.sm,\n controlStateColorTransition,\n isInteractive\n ? cn(quietTextHover, 'cursor-pointer hover:bg-fill-subtle active:bg-fill')\n : cn('text-muted-foreground', hasTooltip && 'cursor-help'),\n className,\n )}\n {...props}\n >\n {icon && (\n <Icon size=\"xs\" className={cn('shrink-0 opacity-50 group-hover:opacity-100', transitions.opacity)}>\n {icon}\n </Icon>\n )}\n <span className=\"min-w-0 truncate\">{children}</span>\n </Root>\n );\n\n return (\n <li className=\"group flex h-control-sm min-w-0 shrink-0 items-center\">\n {!hasTooltip ? (\n root\n ) : (\n <Tooltip>\n <TooltipTrigger render={root} />\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n )}\n </li>\n );\n}\n","import { ArrowDownIcon, ArrowUpIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\n\nexport interface DataPanelNextPrevNavProps {\n onPrevious?: () => void;\n onNext?: () => void;\n previousLabel?: string;\n nextLabel?: string;\n variant?: ButtonProps['variant'];\n}\n\n/** Two independent previous/next buttons, laid out by the parent `HeaderActions` gap. */\nexport function DataPanelNextPrevNav({\n onPrevious,\n onNext,\n previousLabel = 'Go to previous',\n nextLabel = 'Go to next',\n variant = 'ghost',\n}: DataPanelNextPrevNavProps) {\n return (\n <>\n <Button size=\"sm\" variant={variant} tooltip={previousLabel} onClick={onPrevious} disabled={!onPrevious}>\n <ArrowUpIcon />\n </Button>\n <Button size=\"sm\" variant={variant} tooltip={nextLabel} onClick={onNext} disabled={!onNext}>\n <ArrowDownIcon />\n </Button>\n </>\n );\n}\n","export interface DataPanelNoDataProps {\n children?: React.ReactNode;\n}\n\nexport function DataPanelNoData({ children }: DataPanelNoDataProps) {\n return <p className=\"px-3 py-4 text-caption text-placeholder\">{children ?? 'No data found.'}</p>;\n}\n","import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';\nimport * as React from 'react';\n\nimport { PortalContainerProvider } from '@/ds/primitives/portal-container';\nimport { cn } from '@/lib/utils';\n\n// `drawer-popup` / `drawer-backdrop` carry the slide + fade transitions.\nimport '../Drawer/drawer.css';\n\nexport interface DataPanelProps {\n /** Whether the panel is shown. The panel is always a modal Drawer dialog. */\n open: boolean;\n /** Called when the user dismisses the panel (close button, Escape, backdrop, swipe). */\n onClose?: () => void;\n /** Accessible dialog name (screen-reader only; the visible title comes from `DataPanel.Heading`). */\n title: string;\n /** Accessible dialog description (screen-reader only). */\n description?: string;\n /**\n * Elevation level when several sibling panels are open at once (not nested in\n * the React tree, so Base UI's own stacking doesn't apply). A deeper panel is\n * narrower so the one beneath peeks out on the left. Siblings stack in mount\n * order: render the deeper panel after the shallower one.\n */\n depth?: 1 | 2 | 3;\n /**\n * Drawer width. `md` (default) is a narrow detail panel whose width shrinks\n * with `depth`. `half`/`wide`/`full` are for multi-column content (e.g. the\n * trace panel); each `depth` level trims them by a small fixed amount so a\n * same-size parent still peeks out beneath. Changing `size` while open\n * animates the width.\n */\n size?: 'md' | 'half' | 'wide' | 'full';\n children: React.ReactNode;\n className?: string;\n}\n\nconst DEPTH_WIDTH = { 1: 'w-xl', 2: 'w-lg', 3: 'w-md' } as const;\nconst SIZE_WIDTH = { half: 'w-1/2', wide: 'w-4/5', full: 'w-full' } as const;\nconst SIZE_PERCENT = { half: '50%', wide: '80%', full: '100%' } as const;\n// Each extra depth level trims a stacked non-`md` panel so the parent peeks out beneath it.\nconst DEPTH_PEEK_REM = 1.5;\n\nexport function DataPanelRoot({\n open,\n onClose,\n title,\n description,\n depth = 1,\n size = 'md',\n children,\n className,\n}: DataPanelProps) {\n // Swipe-exempt mount point for nested popups (Select, DropdownMenu, …) so they\n // stay inside Base UI's modal focus region and don't start a drawer swipe on\n // pointerdown. Same pattern as `SideDialogRoot`; see `portal-container.tsx`.\n const [portalHost, setPortalHost] = React.useState<HTMLDivElement | null>(null);\n\n return (\n <DrawerPrimitive.Root\n open={open}\n onOpenChange={nextOpen => {\n if (!nextOpen) onClose?.();\n }}\n swipeDirection=\"right\"\n >\n <DrawerPrimitive.Portal>\n {/* Lighter than the shared `--scrim`: a side panel should keep the page beneath readable. */}\n <DrawerPrimitive.Backdrop className=\"drawer-backdrop fixed inset-0 z-50 bg-scrim/30\" />\n <DrawerPrimitive.Viewport className=\"fixed inset-0 z-50\">\n <DrawerPrimitive.Popup\n data-slot=\"data-panel-popup\"\n data-depth={depth}\n data-size={size}\n className={cn(\n 'drawer-popup fixed inset-y-0 right-0 z-50 flex max-w-full p-4 outline-none',\n size === 'md' ? DEPTH_WIDTH[depth] : SIZE_WIDTH[size],\n )}\n style={\n size !== 'md' && depth > 1\n ? { width: `calc(${SIZE_PERCENT[size]} - ${(depth - 1) * DEPTH_PEEK_REM}rem)` }\n : undefined\n }\n >\n {/* Not a heading: the visible `DataPanel.Heading` already is one; this only names the dialog. */}\n <DrawerPrimitive.Title render={<span />} className=\"sr-only\">\n {title}\n </DrawerPrimitive.Title>\n {description && (\n <DrawerPrimitive.Description className=\"sr-only\">{description}</DrawerPrimitive.Description>\n )}\n\n <DrawerPrimitive.Content render={<div ref={setPortalHost} className=\"absolute\" />} />\n\n <PortalContainerProvider container={portalHost}>\n {/* Whole card is swipe-exempt: pointerdown on tabs/buttons/text must not start a dismiss gesture. */}\n <DrawerPrimitive.Content\n render={<section />}\n className={cn(\n 'flex max-h-full w-full flex-col overflow-hidden rounded-xl border border-border bg-background',\n className,\n )}\n >\n {children}\n </DrawerPrimitive.Content>\n </PortalContainerProvider>\n </DrawerPrimitive.Popup>\n </DrawerPrimitive.Viewport>\n </DrawerPrimitive.Portal>\n </DrawerPrimitive.Root>\n );\n}\n","import { DataPanelCloseButton } from './data-panel-close-button';\nimport { DataPanelContent } from './data-panel-content';\nimport { DataPanelCopyId } from './data-panel-copy-id';\nimport { DataPanelHeader } from './data-panel-header';\nimport { DataPanelHeaderActions } from './data-panel-header-actions';\nimport { DataPanelHeaderContent } from './data-panel-header-content';\nimport { DataPanelHeading } from './data-panel-heading';\nimport { DataPanelLoadingData } from './data-panel-loading-data';\nimport { DataPanelMeta, DataPanelMetadata } from './data-panel-metadata';\nimport { DataPanelNextPrevNav } from './data-panel-next-prev-nav';\nimport { DataPanelNoData } from './data-panel-no-data';\nimport { DataPanelRoot } from './data-panel-root';\nimport { DataPanelSectionHeading } from './data-panel-section-heading';\nimport { DataCodeSection } from '@/ds/components/DataCodeSection';\n\nexport const DataPanel = Object.assign(DataPanelRoot, {\n Header: DataPanelHeader,\n HeaderContent: DataPanelHeaderContent,\n HeaderActions: DataPanelHeaderActions,\n Heading: DataPanelHeading,\n Metadata: DataPanelMetadata,\n Meta: DataPanelMeta,\n CloseButton: DataPanelCloseButton,\n CopyId: DataPanelCopyId,\n NextPrevNav: DataPanelNextPrevNav,\n LoadingData: DataPanelLoadingData,\n NoData: DataPanelNoData,\n Content: DataPanelContent,\n CodeSection: DataCodeSection,\n SectionHeading: DataPanelSectionHeading,\n});\n"],"names":["jsx","Button","cn","XIcon","ArrowLeftIcon","DrawerPrimitive","useCopyToClipboard","useState","Tooltip","TooltipTrigger","truncateString","TooltipContent","Children","jsxs","Fragment","controlSizeClasses","Spinner","tooltip","controlStateColorTransition","quietTextHover","Icon","transitions","ArrowUpIcon","ArrowDownIcon","React","PortalContainerProvider","DataCodeSection","DataPanelSectionHeading"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBO,SAAS,oBAAA,CAAqB;AAAA,EACnC,OAAA;AAAA,EACA,OAAA,GAAU,aAAA;AAAA,EACV,KAAA,GAAQ,aAAA;AAAA,EACR,IAAA,GAAO,OAAA;AAAA,EACP,SAAA;AAAA,EACA,OAAA,GAAU;AACZ,CAAA,EAA8B;AAC5B,EAAA,uBACEA,cAAA;AAAA,IAACC,aAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,IAAA;AAAA,MACL,OAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA,EAAY,KAAA;AAAA,MACZ,OAAA;AAAA,MACA,SAAA,EAAWC,WAAA,CAAG,UAAA,EAAY,SAAS,CAAA;AAAA,MAElC,mBAAS,GAAA,mBAAMF,cAAA,CAACG,iBAAA,EAAA,EAAM,CAAA,kCAAMC,yBAAA,EAAA,EAAc;AAAA;AAAA,GAC7C;AAEJ;;ACzBO,SAAS,gBAAA,CAAiB,EAAE,QAAA,EAAU,GAAA,EAAK,WAAU,EAA0B;AACpF,EAAA,uBACEJ,cAAA,CAACK,aAAA,CAAgB,OAAA,EAAhB,EAAwB,GAAA,EAAU,WAAWH,WAAA,CAAG,0CAAA,EAA4C,SAAS,CAAA,EACnG,QAAA,EACH,CAAA;AAEJ;;ACLO,SAAS,eAAA,CAAgB,EAAE,EAAA,EAAI,SAAA,GAAY,IAAG,EAAyB;AAC5E,EAAA,MAAM,EAAE,QAAA,EAAU,UAAA,EAAW,GAAII,2CAAA,CAAmB,EAAE,IAAA,EAAM,EAAA,EAAI,SAAA,EAAW,KAAA,EAAO,CAAA;AAClF,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,eAAS,KAAK,CAAA;AAEtC,EAAA,uCACGC,eAAA,EAAA,EAAQ,IAAA,EAAM,QAAA,IAAY,IAAA,EAAM,cAAc,OAAA,EAC7C,QAAA,EAAA;AAAA,oBAAAR,cAAA;AAAA,MAACS,sBAAA;AAAA,MAAA;AAAA,QACC,MAAA,kBACET,cAAA,CAACC,aAAA,EAAA,EAAO,IAAA,EAAK,UAAS,OAAA,EAAQ,OAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,UAAA,EACtD,QAAA,EAAAS,mCAAA,CAAe,EAAA,EAAI,SAAS,CAAA,EAC/B;AAAA;AAAA,KAEJ;AAAA,oBACAV,cAAA,CAACW,sBAAA,EAAA,EAAgB,QAAA,EAAA,QAAA,GAAW,qBAAA,GAAwB,mBAAA,EAAoB;AAAA,GAAA,EAC1E,CAAA;AAEJ;;ACxBO,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,QAAA,EAAS,EAAyB;AAC7E,EAAA,uBACEX,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWE,WAAA;AAAA;AAAA;AAAA;AAAA,QAIT,mEAAA;AAAA;AAAA;AAAA,QAGA,0CAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;;AChBO,SAAS,sBAAA,CAAuB,EAAE,QAAA,EAAS,EAAgC;AAChF,EAAA,uBAAOF,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4EAAA,EAA8E,QAAA,EAAS,CAAA;AAC/G;;ACAO,SAAS,sBAAA,CAAuB,EAAE,QAAA,EAAS,EAAgC;AAChF,EAAA,MAAM,CAAC,OAAA,EAAS,GAAG,QAAQ,CAAA,GAAIY,cAAA,CAAS,QAAQ,QAAQ,CAAA;AAExD,EAAA,uBACEC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wDAAA,EACZ,QAAA,EAAA;AAAA,IAAA,OAAA;AAAA,IACA,QAAA,CAAS,MAAA,GAAS,CAAA,oBACjBA,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAAd,cAAA,CAAC,SAAI,IAAA,EAAK,WAAA,EAAY,kBAAA,EAAiB,UAAA,EAAW,WAAU,yCAAA,EAA0C,CAAA;AAAA,MACrG;AAAA,KAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;;AChBO,SAAS,gBAAA,CAAiB,EAAE,SAAA,EAAW,QAAA,EAAS,EAA0B;AAC/E,EAAA,uBACEA,cAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWE,WAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAKT,8EAAA;AAAA,QACAa,yCAAA,CAAmB,EAAA;AAAA,QACnB,+EAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;;AClBO,SAAS,oBAAA,CAAqB,EAAE,QAAA,EAAS,EAA8B;AAC5E,EAAA,uBACEF,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yFAAA,EACb,QAAA,EAAA;AAAA,oBAAAb,cAAA,CAACgB,mBAAQ,IAAA,EAAK,IAAA,EAAK,OAAA,EAAQ,OAAA,EAAQ,WAAU,kBAAA,EAAmB,CAAA;AAAA,IAAE,GAAA;AAAA,IAAE,QAAA,IAAY;AAAA,GAAA,EAClF,CAAA;AAEJ;;ACDO,SAAS,iBAAA,CAAkB,EAAE,QAAA,EAAS,EAA2B;AACtE,EAAA,uBAAOhB,cAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,+DAAA,EAAiE,QAAA,EAAS,CAAA;AACjG;AAeO,SAAS,aAAA,CAAc,EAAE,EAAA,EAAI,IAAA,WAAMiB,WAAS,QAAA,EAAU,SAAA,EAAW,GAAG,KAAA,EAAM,EAAuB;AACtG,EAAA,MAAM,OAAO,EAAA,IAAM,MAAA;AACnB,EAAA,MAAM,aAAA,GAAgB,QAAQ,EAAA,IAAM,KAAA,CAAM,QAAQ,KAAA,CAAM,EAAA,IAAM,MAAM,OAAO,CAAA;AAE3E,EAAA,MAAM,aAAaA,SAAA,IAAW,IAAA;AAC9B,EAAA,MAAM,IAAA,mBACJJ,eAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,cAAY,CAAC,aAAA,IAAiB,OAAOI,SAAA,KAAY,WAAWA,SAAA,GAAU,MAAA;AAAA,MACtE,QAAA,EAAU,CAAC,aAAA,IAAiB,UAAA,GAAa,CAAA,GAAI,MAAA;AAAA,MAC7C,SAAA,EAAWf,WAAA;AAAA;AAAA;AAAA,QAGT,4EAAA;AAAA,QACAa,yCAAA,CAAmB,EAAA;AAAA,QACnBG,kDAAA;AAAA,QACA,aAAA,GACIhB,YAAGiB,oCAAA,EAAgB,oDAAoD,IACvEjB,WAAA,CAAG,uBAAA,EAAyB,cAAc,aAAa,CAAA;AAAA,QAC3D;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,IAAA,oBACCF,cAAA,CAACoB,eAAA,EAAA,EAAK,IAAA,EAAK,IAAA,EAAK,SAAA,EAAWlB,YAAG,6CAAA,EAA+CmB,kCAAA,CAAY,OAAO,CAAA,EAC7F,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,wBAEFrB,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAoB,QAAA,EAAS;AAAA;AAAA;AAAA,GAC/C;AAGF,EAAA,uBACEA,cAAA,CAAC,QAAG,SAAA,EAAU,uDAAA,EACX,WAAC,UAAA,GACA,IAAA,mCAECQ,eAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAAR,cAAA,CAACS,sBAAA,EAAA,EAAe,QAAQ,IAAA,EAAM,CAAA;AAAA,oBAC9BT,cAAA,CAACW,0BAAgB,QAAA,EAAAM,SAAA,EAAQ;AAAA,GAAA,EAC3B,CAAA,EAEJ,CAAA;AAEJ;;AC3DO,SAAS,oBAAA,CAAqB;AAAA,EACnC,UAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA,GAAgB,gBAAA;AAAA,EAChB,SAAA,GAAY,YAAA;AAAA,EACZ,OAAA,GAAU;AACZ,CAAA,EAA8B;AAC5B,EAAA,uBACEJ,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAd,cAAA,CAACC,aAAA,EAAA,EAAO,IAAA,EAAK,IAAA,EAAK,OAAA,EAAkB,OAAA,EAAS,aAAA,EAAe,OAAA,EAAS,UAAA,EAAY,QAAA,EAAU,CAAC,UAAA,EAC1F,QAAA,kBAAAD,cAAA,CAACsB,2BAAY,CAAA,EACf,CAAA;AAAA,oBACAtB,cAAA,CAACC,aAAA,EAAA,EAAO,IAAA,EAAK,IAAA,EAAK,SAAkB,OAAA,EAAS,SAAA,EAAW,OAAA,EAAS,MAAA,EAAQ,QAAA,EAAU,CAAC,MAAA,EAClF,QAAA,kBAAAD,cAAA,CAACuB,6BAAc,CAAA,EACjB;AAAA,GAAA,EACF,CAAA;AAEJ;;AC1BO,SAAS,eAAA,CAAgB,EAAE,QAAA,EAAS,EAAyB;AAClE,EAAA,uBAAOvB,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,yCAAA,EAA2C,sBAAY,gBAAA,EAAiB,CAAA;AAC9F;;AC+BA,MAAM,cAAc,EAAE,CAAA,EAAG,QAAQ,CAAA,EAAG,MAAA,EAAQ,GAAG,MAAA,EAAO;AACtD,MAAM,aAAa,EAAE,IAAA,EAAM,SAAS,IAAA,EAAM,OAAA,EAAS,MAAM,QAAA,EAAS;AAClE,MAAM,eAAe,EAAE,IAAA,EAAM,OAAO,IAAA,EAAM,KAAA,EAAO,MAAM,MAAA,EAAO;AAE9D,MAAM,cAAA,GAAiB,GAAA;AAEhB,SAAS,aAAA,CAAc;AAAA,EAC5B,IAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA,GAAQ,CAAA;AAAA,EACR,IAAA,GAAO,IAAA;AAAA,EACP,QAAA;AAAA,EACA;AACF,CAAA,EAAmB;AAIjB,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIwB,gBAAA,CAAM,SAAgC,IAAI,CAAA;AAE9E,EAAA,uBACExB,cAAA;AAAA,IAACK,aAAA,CAAgB,IAAA;AAAA,IAAhB;AAAA,MACC,IAAA;AAAA,MACA,cAAc,CAAA,QAAA,KAAY;AACxB,QAAA,IAAI,CAAC,UAAU,OAAA,IAAU;AAAA,MAC3B,CAAA;AAAA,MACA,cAAA,EAAe,OAAA;AAAA,MAEf,QAAA,kBAAAQ,eAAA,CAACR,aAAA,CAAgB,MAAA,EAAhB,EAEC,QAAA,EAAA;AAAA,wBAAAL,cAAA,CAACK,aAAA,CAAgB,QAAA,EAAhB,EAAyB,SAAA,EAAU,gDAAA,EAAiD,CAAA;AAAA,wBACrFL,cAAA,CAACK,aAAA,CAAgB,QAAA,EAAhB,EAAyB,WAAU,oBAAA,EAClC,QAAA,kBAAAQ,eAAA;AAAA,UAACR,aAAA,CAAgB,KAAA;AAAA,UAAhB;AAAA,YACC,WAAA,EAAU,kBAAA;AAAA,YACV,YAAA,EAAY,KAAA;AAAA,YACZ,WAAA,EAAW,IAAA;AAAA,YACX,SAAA,EAAWH,WAAA;AAAA,cACT,4EAAA;AAAA,cACA,SAAS,IAAA,GAAO,WAAA,CAAY,KAAK,CAAA,GAAI,WAAW,IAAI;AAAA,aACtD;AAAA,YACA,OACE,IAAA,KAAS,IAAA,IAAQ,KAAA,GAAQ,CAAA,GACrB,EAAE,KAAA,EAAO,CAAA,KAAA,EAAQ,YAAA,CAAa,IAAI,CAAC,CAAA,GAAA,EAAA,CAAO,KAAA,GAAQ,CAAA,IAAK,cAAc,QAAO,GAC5E,MAAA;AAAA,YAIN,QAAA,EAAA;AAAA,8BAAAF,cAAA,CAACK,aAAA,CAAgB,OAAhB,EAAsB,MAAA,iCAAS,MAAA,EAAA,EAAK,CAAA,EAAI,SAAA,EAAU,SAAA,EAChD,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,cACC,+BACCL,cAAA,CAACK,aAAA,CAAgB,aAAhB,EAA4B,SAAA,EAAU,WAAW,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,8BAGhEL,cAAA,CAACK,aAAA,CAAgB,OAAA,EAAhB,EAAwB,MAAA,kBAAQL,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,aAAA,EAAe,SAAA,EAAU,UAAA,EAAW,CAAA,EAAI,CAAA;AAAA,8BAEnFA,cAAA,CAACyB,kDAAA,EAAA,EAAwB,SAAA,EAAW,UAAA,EAElC,QAAA,kBAAAzB,cAAA;AAAA,gBAACK,aAAA,CAAgB,OAAA;AAAA,gBAAhB;AAAA,kBACC,MAAA,iCAAS,SAAA,EAAA,EAAQ,CAAA;AAAA,kBACjB,SAAA,EAAWH,WAAA;AAAA,oBACT,+FAAA;AAAA,oBACA;AAAA,mBACF;AAAA,kBAEC;AAAA;AAAA,eACH,EACF;AAAA;AAAA;AAAA,SACF,EACF;AAAA,OAAA,EACF;AAAA;AAAA,GACF;AAEJ;;AChGO,MAAM,SAAA,GAAY,MAAA,CAAO,MAAA,CAAO,aAAA,EAAe;AAAA,EACpD,MAAA,EAAQ,eAAA;AAAA,EACR,aAAA,EAAe,sBAAA;AAAA,EACf,aAAA,EAAe,sBAAA;AAAA,EACf,OAAA,EAAS,gBAAA;AAAA,EACT,QAAA,EAAU,iBAAA;AAAA,EACV,IAAA,EAAM,aAAA;AAAA,EACN,WAAA,EAAa,oBAAA;AAAA,EACb,MAAA,EAAQ,eAAA;AAAA,EACR,WAAA,EAAa,oBAAA;AAAA,EACb,WAAA,EAAa,oBAAA;AAAA,EACb,MAAA,EAAQ,eAAA;AAAA,EACR,OAAA,EAAS,gBAAA;AAAA,EACT,WAAA,EAAawB,+BAAA;AAAA,EACb,cAAA,EAAgBC;AAClB,CAAC;;;;"}