@mastra/playground-ui 63.0.0-alpha.2 → 63.0.0-alpha.4

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 (708) hide show
  1. package/README.md +98 -0
  2. package/dist/{Avatar-D6ybWljK.cjs → Avatar-0u68PVfu.cjs} +34 -42
  3. package/dist/Avatar-0u68PVfu.cjs.map +1 -0
  4. package/dist/{Avatar-C2Sz53u5.js → Avatar-BwkyFiED.js} +20 -28
  5. package/dist/Avatar-BwkyFiED.js.map +1 -0
  6. package/dist/{Button-C8QDEN9j.js → Button-60jVnaHt.js} +10 -4
  7. package/dist/Button-60jVnaHt.js.map +1 -0
  8. package/dist/{Button-BfZzgZrA.cjs → Button-CAVPKK09.cjs} +10 -4
  9. package/dist/Button-CAVPKK09.cjs.map +1 -0
  10. package/dist/{ErrorBoundary-3wDeQWo0.js → ErrorBoundary-BqNfJHRT.js} +2 -2
  11. package/dist/{ErrorBoundary-3wDeQWo0.js.map → ErrorBoundary-BqNfJHRT.js.map} +1 -1
  12. package/dist/{ErrorBoundary-BLsO6xv6.cjs → ErrorBoundary-SRNDrd4h.cjs} +2 -2
  13. package/dist/{ErrorBoundary-BLsO6xv6.cjs.map → ErrorBoundary-SRNDrd4h.cjs.map} +1 -1
  14. package/dist/{alert-dialog-j626w-Qb.cjs → alert-dialog-C-ODvRWT.cjs} +3 -3
  15. package/dist/{alert-dialog-j626w-Qb.cjs.map → alert-dialog-C-ODvRWT.cjs.map} +1 -1
  16. package/dist/{alert-dialog-R9z2SJLl.js → alert-dialog-DVAC9zdj.js} +3 -3
  17. package/dist/{alert-dialog-R9z2SJLl.js.map → alert-dialog-DVAC9zdj.js.map} +1 -1
  18. package/dist/{ask-user-card-40a18Qea.cjs → ask-user-card-BMiCYmFY.cjs} +2 -2
  19. package/dist/{ask-user-card-40a18Qea.cjs.map → ask-user-card-BMiCYmFY.cjs.map} +1 -1
  20. package/dist/{ask-user-card-xR8YiiQa.js → ask-user-card-CmfZg1wt.js} +2 -2
  21. package/dist/{ask-user-card-xR8YiiQa.js.map → ask-user-card-CmfZg1wt.js.map} +1 -1
  22. package/dist/avatar-size-CNR0U-LW.js +27 -0
  23. package/dist/avatar-size-CNR0U-LW.js.map +1 -0
  24. package/dist/avatar-size-DxStOo5A.cjs +32 -0
  25. package/dist/avatar-size-DxStOo5A.cjs.map +1 -0
  26. package/dist/{code-block-DQJ3NHRf.cjs → code-block-BuGosknt.cjs} +4 -4
  27. package/dist/{code-block-DQJ3NHRf.cjs.map → code-block-BuGosknt.cjs.map} +1 -1
  28. package/dist/{code-block-BQZUoOfS.js → code-block-vvYFcnqm.js} +4 -4
  29. package/dist/{code-block-BQZUoOfS.js.map → code-block-vvYFcnqm.js.map} +1 -1
  30. package/dist/{code-editor-D69saH4C.js → code-editor-B_v1EfzX.js} +2 -2
  31. package/dist/{code-editor-D69saH4C.js.map → code-editor-B_v1EfzX.js.map} +1 -1
  32. package/dist/{code-editor-Dg6Y6Q8z.cjs → code-editor-CH8c-KF1.cjs} +2 -2
  33. package/dist/{code-editor-Dg6Y6Q8z.cjs.map → code-editor-CH8c-KF1.cjs.map} +1 -1
  34. package/dist/{collapsible-box-B7YQWv7L.js → collapsible-box-CMmJEn3f.js} +2 -2
  35. package/dist/{collapsible-box-B7YQWv7L.js.map → collapsible-box-CMmJEn3f.js.map} +1 -1
  36. package/dist/{collapsible-box-Bu2jHdsK.cjs → collapsible-box-oUO65pxW.cjs} +2 -2
  37. package/dist/{collapsible-box-Bu2jHdsK.cjs.map → collapsible-box-oUO65pxW.cjs.map} +1 -1
  38. package/dist/{combobox-D9CFzzx8.cjs → combobox-fEMKH9nJ.cjs} +3 -3
  39. package/dist/{combobox-D9CFzzx8.cjs.map → combobox-fEMKH9nJ.cjs.map} +1 -1
  40. package/dist/{combobox-DDUIREaG.js → combobox-so2V71F7.js} +3 -3
  41. package/dist/{combobox-DDUIREaG.js.map → combobox-so2V71F7.js.map} +1 -1
  42. package/dist/{combobox-styles-BGCZADLP.cjs → combobox-styles-BJPT0TpQ.cjs} +2 -2
  43. package/dist/{combobox-styles-BGCZADLP.cjs.map → combobox-styles-BJPT0TpQ.cjs.map} +1 -1
  44. package/dist/{combobox-styles-wLpeTjOR.js → combobox-styles-BQnNIOpr.js} +2 -2
  45. package/dist/{combobox-styles-wLpeTjOR.js.map → combobox-styles-BQnNIOpr.js.map} +1 -1
  46. package/dist/{command-DbZ6CSAy.cjs → command-B_C36ppQ.cjs} +2 -2
  47. package/dist/{command-DbZ6CSAy.cjs.map → command-B_C36ppQ.cjs.map} +1 -1
  48. package/dist/{command-DtIlcv-t.js → command-DMqzDhzs.js} +2 -2
  49. package/dist/{command-DtIlcv-t.js.map → command-DMqzDhzs.js.map} +1 -1
  50. package/dist/components/AlertDialog.cjs.js +1 -1
  51. package/dist/components/AlertDialog.es.js +1 -1
  52. package/dist/components/Avatar.cjs.js +1 -1
  53. package/dist/components/Avatar.es.js +1 -1
  54. package/dist/components/Button.cjs.js +1 -1
  55. package/dist/components/Button.es.js +2 -2
  56. package/dist/components/ClampedText.cjs.js +1 -1
  57. package/dist/components/ClampedText.es.js +1 -1
  58. package/dist/components/CodeBlock.cjs.js +1 -1
  59. package/dist/components/CodeBlock.es.js +1 -1
  60. package/dist/components/CodeEditor.cjs.js +1 -1
  61. package/dist/components/CodeEditor.es.js +1 -1
  62. package/dist/components/CollapsibleBox.cjs.js +1 -1
  63. package/dist/components/CollapsibleBox.es.js +1 -1
  64. package/dist/components/Combobox.cjs.js +2 -2
  65. package/dist/components/Combobox.es.js +2 -2
  66. package/dist/components/Command.cjs.js +1 -1
  67. package/dist/components/Command.es.js +1 -1
  68. package/dist/components/CommandPalette.cjs.js +1 -1
  69. package/dist/components/CommandPalette.es.js +1 -1
  70. package/dist/components/Comment.cjs.js +2 -2
  71. package/dist/components/Comment.es.js +2 -2
  72. package/dist/components/CopyButton.cjs.js +1 -1
  73. package/dist/components/CopyButton.es.js +1 -1
  74. package/dist/components/DataCodeSection.cjs.js +1 -1
  75. package/dist/components/DataCodeSection.es.js +1 -1
  76. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  77. package/dist/components/DataDetailsPanel.es.js +2 -2
  78. package/dist/components/DataList.cjs.js +15 -17
  79. package/dist/components/DataList.cjs.js.map +1 -1
  80. package/dist/components/DataList.es.js +4 -5
  81. package/dist/components/DataList.es.js.map +1 -1
  82. package/dist/components/DataPanel.cjs.js +1 -1
  83. package/dist/components/DataPanel.es.js +1 -1
  84. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  85. package/dist/components/DateRangeTimeline.es.js +1 -1
  86. package/dist/components/DateTimePicker.cjs.js +2 -2
  87. package/dist/components/DateTimePicker.es.js +2 -2
  88. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  89. package/dist/components/DateTimeRangePicker.es.js +1 -1
  90. package/dist/components/Dialog.cjs.js +2 -2
  91. package/dist/components/Dialog.es.js +2 -2
  92. package/dist/components/DisabledFeatureButton.cjs.js +1 -1
  93. package/dist/components/DisabledFeatureButton.es.js +1 -1
  94. package/dist/components/Drawer.cjs.js +1 -1
  95. package/dist/components/Drawer.es.js +1 -1
  96. package/dist/components/EnvironmentVariablesEditor.cjs.js +3 -3
  97. package/dist/components/EnvironmentVariablesEditor.es.js +3 -3
  98. package/dist/components/ErrorBoundary.cjs.js +1 -1
  99. package/dist/components/ErrorBoundary.es.js +1 -1
  100. package/dist/components/FilterBar.cjs.js +3 -3
  101. package/dist/components/FilterBar.es.js +4 -4
  102. package/dist/components/FormFieldBlocks.cjs.js +2 -2
  103. package/dist/components/FormFieldBlocks.es.js +2 -2
  104. package/dist/components/InputGroup.cjs.js +1 -1
  105. package/dist/components/InputGroup.es.js +1 -1
  106. package/dist/components/InputNumber.cjs.js +2 -2
  107. package/dist/components/InputNumber.es.js +2 -2
  108. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  109. package/dist/components/JSONSchemaForm.es.js +2 -2
  110. package/dist/components/ListSearch.cjs.js +1 -1
  111. package/dist/components/ListSearch.es.js +1 -1
  112. package/dist/components/LogsDataList.cjs.js +5 -2
  113. package/dist/components/LogsDataList.cjs.js.map +1 -1
  114. package/dist/components/LogsDataList.es.js +5 -2
  115. package/dist/components/LogsDataList.es.js.map +1 -1
  116. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  117. package/dist/components/MarkdownRenderer.es.js +1 -1
  118. package/dist/components/Message.cjs.js +1 -1
  119. package/dist/components/Message.es.js +1 -1
  120. package/dist/components/MetricsCard.cjs.js +1 -1
  121. package/dist/components/MetricsCard.es.js +1 -1
  122. package/dist/components/PageHeader.cjs.js +1 -1
  123. package/dist/components/PageHeader.es.js +1 -1
  124. package/dist/components/PageLayout.cjs.js +1 -1
  125. package/dist/components/PageLayout.cjs.js.map +1 -1
  126. package/dist/components/PageLayout.es.js +1 -1
  127. package/dist/components/PageLayout.es.js.map +1 -1
  128. package/dist/components/Pagination.cjs.js +17 -0
  129. package/dist/components/Pagination.cjs.js.map +1 -0
  130. package/dist/components/Pagination.d.ts +2 -0
  131. package/dist/components/Pagination.es.js +2 -0
  132. package/dist/components/Pagination.es.js.map +1 -0
  133. package/dist/components/PrevNextNav.cjs.js +1 -1
  134. package/dist/components/PrevNextNav.es.js +1 -1
  135. package/dist/components/ProductAvatar.cjs.js +19 -2
  136. package/dist/components/ProductAvatar.cjs.js.map +1 -1
  137. package/dist/components/ProductAvatar.es.js +19 -2
  138. package/dist/components/ProductAvatar.es.js.map +1 -1
  139. package/dist/components/PropertyFilter.cjs.js +3 -3
  140. package/dist/components/PropertyFilter.es.js +4 -4
  141. package/dist/components/RuleBuilder.cjs.js +2 -2
  142. package/dist/components/RuleBuilder.es.js +2 -2
  143. package/dist/components/SavedViews.cjs.js +2 -2
  144. package/dist/components/SavedViews.es.js +2 -2
  145. package/dist/components/SearchInput.cjs.js +1 -1
  146. package/dist/components/SearchInput.es.js +1 -1
  147. package/dist/components/Select.cjs.js +1 -1
  148. package/dist/components/Select.es.js +1 -1
  149. package/dist/components/SideDialog.cjs.js +1 -1
  150. package/dist/components/SideDialog.es.js +1 -1
  151. package/dist/components/Sidebar.cjs.js +3 -3
  152. package/dist/components/Sidebar.es.js +3 -3
  153. package/dist/components/Table.cjs.js +286 -47
  154. package/dist/components/Table.cjs.js.map +1 -1
  155. package/dist/components/Table.es.js +284 -49
  156. package/dist/components/Table.es.js.map +1 -1
  157. package/dist/components/Tabs.cjs.js +1 -1
  158. package/dist/components/Tabs.es.js +1 -1
  159. package/dist/components/ThreadList.cjs.js +1 -1
  160. package/dist/components/ThreadList.es.js +1 -1
  161. package/dist/components/Truncate.cjs.js +1 -1
  162. package/dist/components/Truncate.es.js +1 -1
  163. package/dist/components/Workflow.cjs.js +6 -6
  164. package/dist/components/Workflow.es.js +6 -6
  165. package/dist/components/ai/activity.cjs.js +1 -1
  166. package/dist/components/ai/activity.es.js +1 -1
  167. package/dist/components/ai/ask-user.cjs.js +1 -1
  168. package/dist/components/ai/ask-user.es.js +1 -1
  169. package/dist/components/ai/plan.cjs.js +1 -1
  170. package/dist/components/ai/plan.es.js +1 -1
  171. package/dist/components/ai/tool-approval.cjs.js +1 -1
  172. package/dist/components/ai/tool-approval.es.js +1 -1
  173. package/dist/components/ai/tool-call.cjs.js +3 -3
  174. package/dist/components/ai/tool-call.es.js +3 -3
  175. package/dist/{copy-button-CUVxXN4H.cjs → copy-button-5tVWqoTk.cjs} +2 -2
  176. package/dist/{copy-button-CUVxXN4H.cjs.map → copy-button-5tVWqoTk.cjs.map} +1 -1
  177. package/dist/{copy-button-CDyuUYUr.js → copy-button-Af_Qt7G1.js} +2 -2
  178. package/dist/{copy-button-CDyuUYUr.js.map → copy-button-Af_Qt7G1.js.map} +1 -1
  179. package/dist/{data-code-section-B2Ea7FwM.cjs → data-code-section-Bs8sHDux.cjs} +5 -5
  180. package/dist/{data-code-section-B2Ea7FwM.cjs.map → data-code-section-Bs8sHDux.cjs.map} +1 -1
  181. package/dist/{data-code-section-DrJYy1dR.js → data-code-section-CqdjmClK.js} +5 -5
  182. package/dist/{data-code-section-DrJYy1dR.js.map → data-code-section-CqdjmClK.js.map} +1 -1
  183. package/dist/{data-list-top-BJCC62oy.js → data-list-B2ArWwsJ.js} +332 -5
  184. package/dist/data-list-B2ArWwsJ.js.map +1 -0
  185. package/dist/{data-list-top-Ds-NWyPO.cjs → data-list-BLfHObw8.cjs} +339 -13
  186. package/dist/data-list-BLfHObw8.cjs.map +1 -0
  187. package/dist/{data-list-skeleton-CfVsXhx1.cjs → data-list-skeleton-BGJD4qMF.cjs} +6 -6
  188. package/dist/{data-list-skeleton-CfVsXhx1.cjs.map → data-list-skeleton-BGJD4qMF.cjs.map} +1 -1
  189. package/dist/{data-list-skeleton-BmsDYJrA.js → data-list-skeleton-BNsWWamC.js} +2 -2
  190. package/dist/{data-list-skeleton-BmsDYJrA.js.map → data-list-skeleton-BNsWWamC.js.map} +1 -1
  191. package/dist/{data-panel-COU5dbUJ.js → data-panel-BdCw3F_h.js} +46 -23
  192. package/dist/data-panel-BdCw3F_h.js.map +1 -0
  193. package/dist/{data-panel-CTqb-0qN.cjs → data-panel-Wjgbl6zx.cjs} +45 -22
  194. package/dist/data-panel-Wjgbl6zx.cjs.map +1 -0
  195. package/dist/{date-time-range-picker-BvRPfy1i.cjs → date-time-range-picker-ByNvjYuV.cjs} +3 -3
  196. package/dist/{date-time-range-picker-BvRPfy1i.cjs.map → date-time-range-picker-ByNvjYuV.cjs.map} +1 -1
  197. package/dist/{date-time-range-picker-CIfaXUuy.js → date-time-range-picker-SU1Q1h1h.js} +3 -3
  198. package/dist/{date-time-range-picker-CIfaXUuy.js.map → date-time-range-picker-SU1Q1h1h.js.map} +1 -1
  199. package/dist/{dialog-DQI9ChYf.cjs → dialog-B5nLi0ER.cjs} +3 -3
  200. package/dist/{dialog-DQI9ChYf.cjs.map → dialog-B5nLi0ER.cjs.map} +1 -1
  201. package/dist/{dialog-DlZmNahd.js → dialog-Jz2ZfO-z.js} +3 -3
  202. package/dist/{dialog-DlZmNahd.js.map → dialog-Jz2ZfO-z.js.map} +1 -1
  203. package/dist/{dialog-action-c4nfPomF.js → dialog-action-BxXhAz-P.js} +3 -3
  204. package/dist/{dialog-action-c4nfPomF.js.map → dialog-action-BxXhAz-P.js.map} +1 -1
  205. package/dist/{dialog-action-gdo9CwUv.cjs → dialog-action-DdkbsKfP.cjs} +3 -3
  206. package/dist/{dialog-action-gdo9CwUv.cjs.map → dialog-action-DdkbsKfP.cjs.map} +1 -1
  207. package/dist/domains/auth/components/session-expired.cjs.js +1 -1
  208. package/dist/domains/auth/components/session-expired.es.js +1 -1
  209. package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -2
  210. package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -2
  211. package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -1
  212. package/dist/domains/chat/attachments/composer-attachment.es.js +1 -1
  213. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +3 -3
  214. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +3 -3
  215. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +2 -2
  216. package/dist/domains/chat/messages/assistant-message-actions.es.js +2 -2
  217. package/dist/domains/chat/messages/dataset-save-action.cjs.js +6 -5
  218. package/dist/domains/chat/messages/dataset-save-action.cjs.js.map +1 -1
  219. package/dist/domains/chat/messages/dataset-save-action.es.js +6 -5
  220. package/dist/domains/chat/messages/dataset-save-action.es.js.map +1 -1
  221. package/dist/domains/chat/messages/message-row.cjs.js +3 -3
  222. package/dist/domains/chat/messages/message-row.es.js +3 -3
  223. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  224. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  225. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  226. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  227. package/dist/domains/chat/messages/skill-message.cjs.js +1 -1
  228. package/dist/domains/chat/messages/skill-message.es.js +1 -1
  229. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  230. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  231. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +4 -4
  232. package/dist/domains/chat/tools/badges/agent-badge.es.js +4 -4
  233. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  234. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  235. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +3 -3
  236. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +3 -3
  237. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
  238. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  239. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
  240. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
  241. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
  242. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
  243. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +1 -1
  244. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
  245. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  246. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  247. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +1 -1
  248. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +1 -1
  249. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  250. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  251. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +3 -3
  252. package/dist/domains/chat/tools/badges/tool-badge.es.js +3 -3
  253. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +5 -4
  254. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  255. package/dist/domains/chat/tools/badges/workflow-badge.es.js +5 -4
  256. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  257. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +2 -2
  258. package/dist/domains/chat/tools/submit-plan-tool.es.js +2 -2
  259. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  260. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  261. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +11 -6
  262. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js.map +1 -1
  263. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +11 -6
  264. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js.map +1 -1
  265. package/dist/domains/logs/components/log-data-panel.cjs.js +3 -3
  266. package/dist/domains/logs/components/log-data-panel.es.js +3 -3
  267. package/dist/domains/logs/components/logs-list-view.cjs.js +3 -2
  268. package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
  269. package/dist/domains/logs/components/logs-list-view.es.js +3 -2
  270. package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
  271. package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
  272. package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
  273. package/dist/domains/logs/components/no-logs-info.cjs.js +1 -1
  274. package/dist/domains/logs/components/no-logs-info.es.js +1 -1
  275. package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
  276. package/dist/domains/memory/components/flame-graph.es.js +1 -1
  277. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  278. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  279. package/dist/domains/metrics/components/agent-runs-card.cjs.js +1 -1
  280. package/dist/domains/metrics/components/agent-runs-card.es.js +1 -1
  281. package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
  282. package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
  283. package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
  284. package/dist/domains/metrics/components/chart-area.es.js +1 -1
  285. package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
  286. package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
  287. package/dist/domains/metrics/components/chart-card.cjs.js +1 -1
  288. package/dist/domains/metrics/components/chart-card.es.js +1 -1
  289. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  290. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  291. package/dist/domains/metrics/components/failure-rate-card.cjs.js +1 -1
  292. package/dist/domains/metrics/components/failure-rate-card.es.js +1 -1
  293. package/dist/domains/metrics/components/latency-card.cjs.js +1 -1
  294. package/dist/domains/metrics/components/latency-card.es.js +1 -1
  295. package/dist/domains/metrics/components/scores-card.cjs.js +1 -1
  296. package/dist/domains/metrics/components/scores-card.es.js +1 -1
  297. package/dist/domains/metrics/components/token-usage-card.cjs.js +1 -1
  298. package/dist/domains/metrics/components/token-usage-card.es.js +1 -1
  299. package/dist/domains/metrics/components/trace-volume-card.cjs.js +1 -1
  300. package/dist/domains/metrics/components/trace-volume-card.es.js +1 -1
  301. package/dist/domains/metrics/components/usage-card.cjs.js +1 -1
  302. package/dist/domains/metrics/components/usage-card.es.js +1 -1
  303. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +5 -4
  304. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js.map +1 -1
  305. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +5 -4
  306. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js.map +1 -1
  307. package/dist/domains/scores/components/score-data-panel.cjs.js +2 -2
  308. package/dist/domains/scores/components/score-data-panel.es.js +2 -2
  309. package/dist/domains/scores/components/span-scoring.cjs.js +3 -3
  310. package/dist/domains/scores/components/span-scoring.es.js +3 -3
  311. package/dist/domains/scores/components/trace-scores-tab.cjs.js +2 -1
  312. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  313. package/dist/domains/scores/components/trace-scores-tab.es.js +2 -1
  314. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  315. package/dist/domains/traces/components/feedback-thread.cjs.js +4 -4
  316. package/dist/domains/traces/components/feedback-thread.es.js +4 -4
  317. package/dist/domains/traces/components/span-data-panel-view.cjs.js +3 -3
  318. package/dist/domains/traces/components/span-data-panel-view.es.js +3 -3
  319. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  320. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  321. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  322. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  323. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  324. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  325. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  326. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  327. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  328. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  329. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  330. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  331. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  332. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  333. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +3 -3
  334. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +3 -3
  335. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  336. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  337. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
  338. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
  339. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  340. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  341. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  342. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  343. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
  344. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
  345. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +2 -2
  346. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +2 -2
  347. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +1 -2
  348. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  349. package/dist/domains/traces/components/thread-view-by-trace.es.js +1 -2
  350. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  351. package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
  352. package/dist/domains/traces/components/trace-columns-menu.es.js +4 -4
  353. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +4 -4
  354. package/dist/domains/traces/components/trace-data-panel-view.es.js +4 -4
  355. package/dist/domains/traces/components/trace-data-panel.cjs.js +4 -3
  356. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  357. package/dist/domains/traces/components/trace-data-panel.es.js +4 -3
  358. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  359. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  360. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  361. package/dist/domains/traces/components/trace-span-panel.cjs.js +1 -1
  362. package/dist/domains/traces/components/trace-span-panel.es.js +1 -1
  363. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  364. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  365. package/dist/domains/traces/components/trace-thread-item-view.cjs.js +1 -1
  366. package/dist/domains/traces/components/trace-thread-item-view.es.js +1 -1
  367. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  368. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  369. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  370. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  371. package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
  372. package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
  373. package/dist/domains/traces/components/traces-list-view.cjs.js +4 -5
  374. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  375. package/dist/domains/traces/components/traces-list-view.es.js +3 -4
  376. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  377. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +4 -1
  378. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  379. package/dist/domains/traces/components/traces-page-skeleton.es.js +4 -1
  380. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  381. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  382. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  383. package/dist/domains/workflows/components/workflow-information.cjs.js +1 -1
  384. package/dist/domains/workflows/components/workflow-information.es.js +1 -1
  385. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +3 -3
  386. package/dist/domains/workflows/components/workflow-step-detail.es.js +3 -3
  387. package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +1 -1
  388. package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +1 -1
  389. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  390. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  391. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +2 -2
  392. package/dist/domains/workflows/runs/workflow-run-list.es.js +2 -2
  393. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  394. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  395. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +2 -2
  396. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +2 -2
  397. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  398. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  399. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +1 -1
  400. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +1 -1
  401. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  402. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  403. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  404. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  405. package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
  406. package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
  407. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  408. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  409. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  410. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  411. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +3 -3
  412. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +3 -3
  413. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  414. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  415. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  416. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  417. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
  418. package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
  419. package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +3 -3
  420. package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +3 -3
  421. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +3 -3
  422. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +3 -3
  423. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +2 -2
  424. package/dist/domains/workflows/workflow/workflow-run-data.es.js +2 -2
  425. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +1 -1
  426. package/dist/domains/workflows/workflow/workflow-run-header.es.js +1 -1
  427. package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
  428. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  429. package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +3 -3
  430. package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +3 -3
  431. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +1 -1
  432. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
  433. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -1
  434. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +1 -1
  435. package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +1 -1
  436. package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +1 -1
  437. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +1 -1
  438. package/dist/domains/workflows/workflow/workflow-timeline.es.js +1 -1
  439. package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +1 -1
  440. package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +1 -1
  441. package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +1 -1
  442. package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +1 -1
  443. package/dist/domains/workspace/components/workspace-active-file.cjs.js +1 -1
  444. package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
  445. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +5 -5
  446. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +5 -5
  447. package/dist/domains/workspace/components/workspace-add-skill.cjs.js +1 -1
  448. package/dist/domains/workspace/components/workspace-add-skill.es.js +1 -1
  449. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +2 -2
  450. package/dist/domains/workspace/components/workspace-create-directory.es.js +2 -2
  451. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
  452. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  453. package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
  454. package/dist/domains/workspace/components/workspace-search.es.js +1 -1
  455. package/dist/domains/workspace/components/workspace-tree.cjs.js +2 -2
  456. package/dist/domains/workspace/components/workspace-tree.es.js +2 -2
  457. package/dist/{drawer-CeUYCG-S.cjs → drawer-C6PBqg__.cjs} +2 -2
  458. package/dist/{drawer-CeUYCG-S.cjs.map → drawer-C6PBqg__.cjs.map} +1 -1
  459. package/dist/{drawer-CZlqOjd2.js → drawer-CwVDeB8H.js} +2 -2
  460. package/dist/{drawer-CZlqOjd2.js.map → drawer-CwVDeB8H.js.map} +1 -1
  461. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +4 -6
  462. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js.map +1 -1
  463. package/dist/ee/signals/components/entity-index-compact-grid.es.js +6 -8
  464. package/dist/ee/signals/components/entity-index-compact-grid.es.js.map +1 -1
  465. package/dist/ee/signals/components/entity-index-list.cjs.js +33 -32
  466. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  467. package/dist/ee/signals/components/entity-index-list.es.js +35 -34
  468. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  469. package/dist/ee/signals/components/entity-index-model.cjs.js +7 -0
  470. package/dist/ee/signals/components/entity-index-model.cjs.js.map +1 -1
  471. package/dist/ee/signals/components/entity-index-model.es.js +7 -1
  472. package/dist/ee/signals/components/entity-index-model.es.js.map +1 -1
  473. package/dist/ee/signals/components/entity-index-status.cjs.js +26 -0
  474. package/dist/ee/signals/components/entity-index-status.cjs.js.map +1 -0
  475. package/dist/ee/signals/components/entity-index-status.d.ts +2 -0
  476. package/dist/ee/signals/components/entity-index-status.es.js +22 -0
  477. package/dist/ee/signals/components/entity-index-status.es.js.map +1 -0
  478. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  479. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  480. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +15 -13
  481. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  482. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +15 -13
  483. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  484. package/dist/ee/signals/examples-pager.cjs.js +1 -1
  485. package/dist/ee/signals/examples-pager.es.js +1 -1
  486. package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
  487. package/dist/ee/signals/noise-detail-panel.es.js +1 -1
  488. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -2
  489. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
  490. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +1 -1
  491. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  492. package/dist/ee/signals/signals-error-state.cjs.js +1 -1
  493. package/dist/ee/signals/signals-error-state.es.js +1 -1
  494. package/dist/ee/signals/snapshot-timeline.cjs.js +1 -1
  495. package/dist/ee/signals/snapshot-timeline.es.js +1 -1
  496. package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
  497. package/dist/ee/signals/theme-detail-panel.es.js +1 -1
  498. package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
  499. package/dist/ee/signals/theme-filter-banner.es.js +1 -1
  500. package/dist/ee/signals/trace-insight-view.cjs.js +1 -1
  501. package/dist/ee/signals/trace-insight-view.es.js +1 -1
  502. package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
  503. package/dist/ee/signals/view-mode-tab.es.js +1 -1
  504. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +3 -3
  505. package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
  506. package/dist/{filter-bar-chip-C_371aon.cjs → filter-bar-chip-BBErw_aR.cjs} +3 -3
  507. package/dist/{filter-bar-chip-C_371aon.cjs.map → filter-bar-chip-BBErw_aR.cjs.map} +1 -1
  508. package/dist/{filter-bar-chip-Dc6phYqZ.js → filter-bar-chip-DvRTWRwT.js} +3 -3
  509. package/dist/{filter-bar-chip-Dc6phYqZ.js.map → filter-bar-chip-DvRTWRwT.js.map} +1 -1
  510. package/dist/{input-group-BWsGYnES.js → input-group-CIIwoggO.js} +2 -2
  511. package/dist/{input-group-BWsGYnES.js.map → input-group-CIIwoggO.js.map} +1 -1
  512. package/dist/{input-group-Cy7k5JRg.cjs → input-group-DQuyC9Pz.cjs} +2 -2
  513. package/dist/{input-group-Cy7k5JRg.cjs.map → input-group-DQuyC9Pz.cjs.map} +1 -1
  514. package/dist/layout/tabbed-container.cjs.js +4 -4
  515. package/dist/layout/tabbed-container.es.js +4 -4
  516. package/dist/lib/form/components/array-element-wrapper.cjs.js +1 -1
  517. package/dist/lib/form/components/array-element-wrapper.es.js +1 -1
  518. package/dist/lib/form/components/array-wrapper.cjs.js +1 -1
  519. package/dist/lib/form/components/array-wrapper.es.js +1 -1
  520. package/dist/lib/form/components/date-field.cjs.js +1 -1
  521. package/dist/lib/form/components/date-field.es.js +1 -1
  522. package/dist/lib/form/components/form-submit-row.cjs.js +1 -1
  523. package/dist/lib/form/components/form-submit-row.es.js +1 -1
  524. package/dist/lib/form/components/record-field.cjs.js +1 -1
  525. package/dist/lib/form/components/record-field.es.js +1 -1
  526. package/dist/lib/form/components/select-field.cjs.js +1 -1
  527. package/dist/lib/form/components/select-field.es.js +1 -1
  528. package/dist/lib/form/components/submit-button.cjs.js +1 -1
  529. package/dist/lib/form/components/submit-button.es.js +1 -1
  530. package/dist/{list-search-xHadeMHl.cjs → list-search-C5j3HYkb.cjs} +2 -2
  531. package/dist/{list-search-xHadeMHl.cjs.map → list-search-C5j3HYkb.cjs.map} +1 -1
  532. package/dist/{list-search-BNnMwbpv.js → list-search-Cwp-OPvC.js} +2 -2
  533. package/dist/{list-search-BNnMwbpv.js.map → list-search-Cwp-OPvC.js.map} +1 -1
  534. package/dist/{logs-data-list-C262Be3o.js → logs-data-list-B-gmgU74.js} +2 -3
  535. package/dist/{logs-data-list-C262Be3o.js.map → logs-data-list-B-gmgU74.js.map} +1 -1
  536. package/dist/{logs-data-list-DfuVMd6f.cjs → logs-data-list-CaXnNnC5.cjs} +21 -22
  537. package/dist/{logs-data-list-DfuVMd6f.cjs.map → logs-data-list-CaXnNnC5.cjs.map} +1 -1
  538. package/dist/{markdown-renderer-DaXAim8y.cjs → markdown-renderer-BXTNiZbz.cjs} +3 -3
  539. package/dist/{markdown-renderer-DaXAim8y.cjs.map → markdown-renderer-BXTNiZbz.cjs.map} +1 -1
  540. package/dist/{markdown-renderer-D5Wjk1Cs.js → markdown-renderer-Ct-q_KTF.js} +3 -3
  541. package/dist/{markdown-renderer-D5Wjk1Cs.js.map → markdown-renderer-Ct-q_KTF.js.map} +1 -1
  542. package/dist/{message-copy-button-CREuo4t5.cjs → message-copy-button-Cni-zv0j.cjs} +2 -2
  543. package/dist/{message-copy-button-CREuo4t5.cjs.map → message-copy-button-Cni-zv0j.cjs.map} +1 -1
  544. package/dist/{message-copy-button-BlwQej7y.js → message-copy-button-DDgqbtbv.js} +2 -2
  545. package/dist/{message-copy-button-BlwQej7y.js.map → message-copy-button-DDgqbtbv.js.map} +1 -1
  546. package/dist/{metrics-card-oEbbYDo7.js → metrics-card-C33VsuXf.js} +2 -2
  547. package/dist/{metrics-card-oEbbYDo7.js.map → metrics-card-C33VsuXf.js.map} +1 -1
  548. package/dist/{metrics-card-Bv2A5G41.cjs → metrics-card-CxOVpP1t.cjs} +2 -2
  549. package/dist/{metrics-card-Bv2A5G41.cjs.map → metrics-card-CxOVpP1t.cjs.map} +1 -1
  550. package/dist/new/layout/app-shell.cjs.js +9 -4
  551. package/dist/new/layout/app-shell.cjs.js.map +1 -1
  552. package/dist/new/layout/app-shell.es.js +10 -5
  553. package/dist/new/layout/app-shell.es.js.map +1 -1
  554. package/dist/new/layout/page-header.cjs.js +1 -1
  555. package/dist/new/layout/page-header.es.js +1 -1
  556. package/dist/{page-header-CLxPq7T5.cjs → page-header-9Q9vOrh-.cjs} +3 -9
  557. package/dist/page-header-9Q9vOrh-.cjs.map +1 -0
  558. package/dist/{page-header-Bf0zLkyY.js → page-header-d2cK2zOg.js} +3 -9
  559. package/dist/page-header-d2cK2zOg.js.map +1 -0
  560. package/dist/pagination-range-BlUsZjqD.js +191 -0
  561. package/dist/pagination-range-BlUsZjqD.js.map +1 -0
  562. package/dist/pagination-range-C0i6gunh.cjs +200 -0
  563. package/dist/pagination-range-C0i6gunh.cjs.map +1 -0
  564. package/dist/{plan-CdtX72kw.cjs → plan-CL-lbDuy.cjs} +4 -4
  565. package/dist/{plan-CdtX72kw.cjs.map → plan-CL-lbDuy.cjs.map} +1 -1
  566. package/dist/{plan-Cl3-JgbI.js → plan-TXWANP1R.js} +4 -4
  567. package/dist/{plan-Cl3-JgbI.js.map → plan-TXWANP1R.js.map} +1 -1
  568. package/dist/primitives/menu-item.cjs.js +1 -1
  569. package/dist/primitives/menu-item.es.js +1 -1
  570. package/dist/primitives/raised-surface.cjs.js +2 -0
  571. package/dist/primitives/raised-surface.cjs.js.map +1 -1
  572. package/dist/primitives/raised-surface.es.js +2 -1
  573. package/dist/primitives/raised-surface.es.js.map +1 -1
  574. package/dist/primitives/trigger-button.cjs.js +1 -1
  575. package/dist/primitives/trigger-button.es.js +1 -1
  576. package/dist/{property-filter-applied-BeLCh3zo.cjs → property-filter-applied-BBvaTC4B.cjs} +2 -2
  577. package/dist/{property-filter-applied-BeLCh3zo.cjs.map → property-filter-applied-BBvaTC4B.cjs.map} +1 -1
  578. package/dist/{property-filter-applied-CZLzY0OH.js → property-filter-applied-Ru3OQoGo.js} +2 -2
  579. package/dist/{property-filter-applied-CZLzY0OH.js.map → property-filter-applied-Ru3OQoGo.js.map} +1 -1
  580. package/dist/{reasoning-activity-DehWtcyc.cjs → reasoning-activity-CFEaSv4J.cjs} +2 -2
  581. package/dist/{reasoning-activity-DehWtcyc.cjs.map → reasoning-activity-CFEaSv4J.cjs.map} +1 -1
  582. package/dist/{reasoning-activity-CIuVSAGA.js → reasoning-activity-CHlEe011.js} +2 -2
  583. package/dist/{reasoning-activity-CIuVSAGA.js.map → reasoning-activity-CHlEe011.js.map} +1 -1
  584. package/dist/resize/panel-drawer.cjs.js +1 -1
  585. package/dist/resize/panel-drawer.es.js +1 -1
  586. package/dist/{search-input-UtTJMjJu.cjs → search-input-2DhcUIvn.cjs} +2 -2
  587. package/dist/{search-input-UtTJMjJu.cjs.map → search-input-2DhcUIvn.cjs.map} +1 -1
  588. package/dist/{search-input-fqSrRTLU.js → search-input-RybUdqzg.js} +2 -2
  589. package/dist/{search-input-fqSrRTLU.js.map → search-input-RybUdqzg.js.map} +1 -1
  590. package/dist/{select-N2lgBRsg.js → select-BvYdi3X0.js} +2 -2
  591. package/dist/{select-N2lgBRsg.js.map → select-BvYdi3X0.js.map} +1 -1
  592. package/dist/{select-Cdz5I0A5.cjs → select-D5cu0K7R.cjs} +2 -2
  593. package/dist/{select-Cdz5I0A5.cjs.map → select-D5cu0K7R.cjs.map} +1 -1
  594. package/dist/{side-dialog-DldgOJIk.cjs → side-dialog-CUQGSSLs.cjs} +4 -4
  595. package/dist/{side-dialog-DldgOJIk.cjs.map → side-dialog-CUQGSSLs.cjs.map} +1 -1
  596. package/dist/{side-dialog-CWQL33WR.js → side-dialog-DSxU1To7.js} +4 -4
  597. package/dist/{side-dialog-CWQL33WR.js.map → side-dialog-DSxU1To7.js.map} +1 -1
  598. package/dist/{span-payload-primitives-sEGOgFlX.cjs → span-payload-primitives-DIxmotnO.cjs} +2 -2
  599. package/dist/{span-payload-primitives-sEGOgFlX.cjs.map → span-payload-primitives-DIxmotnO.cjs.map} +1 -1
  600. package/dist/{span-payload-primitives-WqYTBiGx.js → span-payload-primitives-dTs5UrjA.js} +2 -2
  601. package/dist/{span-payload-primitives-WqYTBiGx.js.map → span-payload-primitives-dTs5UrjA.js.map} +1 -1
  602. package/dist/src/ds/components/Avatar/avatar-group.d.ts +1 -1
  603. package/dist/src/ds/components/DataPanel/data-panel-context.d.ts +3 -0
  604. package/dist/src/ds/components/DataPanel/data-panel-root.d.ts +28 -9
  605. package/dist/src/ds/components/DataPanel/index.d.ts +1 -1
  606. package/dist/src/ds/components/Pagination/index.d.ts +2 -0
  607. package/dist/src/ds/components/Pagination/pagination-context.d.ts +10 -0
  608. package/dist/src/ds/components/Pagination/pagination-range.d.ts +8 -0
  609. package/dist/src/ds/components/Pagination/pagination.d.ts +23 -0
  610. package/dist/src/ds/components/ProductAvatar/ProductAvatar.d.ts +3 -1
  611. package/dist/src/ds/components/ProductAvatar/product-avatar-size.d.ts +3 -0
  612. package/dist/src/ds/components/Table/Cells.d.ts +6 -2
  613. package/dist/src/ds/components/Table/Table.d.ts +30 -7
  614. package/dist/src/ds/components/Table/index.d.ts +10 -0
  615. package/dist/src/ds/components/Table/table-align.d.ts +7 -0
  616. package/dist/src/ds/components/Table/table-context.d.ts +4 -0
  617. package/dist/src/ds/components/Table/table-pagination.d.ts +7 -0
  618. package/dist/src/ds/components/Table/table-row-button.d.ts +3 -0
  619. package/dist/src/ds/components/Table/table-row-link.d.ts +3 -0
  620. package/dist/src/ds/components/Table/table-row-target.d.ts +2 -0
  621. package/dist/src/ds/components/Table/table-sort-button.d.ts +6 -0
  622. package/dist/src/ds/primitives/raised-surface.d.ts +5 -0
  623. package/dist/src/ee/signals/components/entity-index-model.d.ts +5 -0
  624. package/dist/src/ee/signals/components/entity-index-status.d.ts +4 -0
  625. package/dist/style.css +200 -24
  626. package/dist/{tabs-tab-D9ndsGQu.cjs → tabs-tab-CqcY4tHE.cjs} +2 -2
  627. package/dist/{tabs-tab-D9ndsGQu.cjs.map → tabs-tab-CqcY4tHE.cjs.map} +1 -1
  628. package/dist/{tabs-tab-BchiQf0E.js → tabs-tab-CzpXzpf-.js} +2 -2
  629. package/dist/{tabs-tab-BchiQf0E.js.map → tabs-tab-CzpXzpf-.js.map} +1 -1
  630. package/dist/{thread-list-D6tyuO1M.cjs → thread-list-D-VuTZnC.cjs} +2 -2
  631. package/dist/{thread-list-D6tyuO1M.cjs.map → thread-list-D-VuTZnC.cjs.map} +1 -1
  632. package/dist/{thread-list-2YHnS82L.js → thread-list-Duf5N74Z.js} +2 -2
  633. package/dist/{thread-list-2YHnS82L.js.map → thread-list-Duf5N74Z.js.map} +1 -1
  634. package/dist/{time-picker-J7GaNaEd.js → time-picker-CF6_miti.js} +2 -2
  635. package/dist/{time-picker-J7GaNaEd.js.map → time-picker-CF6_miti.js.map} +1 -1
  636. package/dist/{time-picker-D7hr3X0_.cjs → time-picker-DbDeIg8E.cjs} +2 -2
  637. package/dist/{time-picker-D7hr3X0_.cjs.map → time-picker-DbDeIg8E.cjs.map} +1 -1
  638. package/dist/{tool-approval-BpskZTWy.cjs → tool-approval-S6ml_xyU.cjs} +3 -3
  639. package/dist/{tool-approval-BpskZTWy.cjs.map → tool-approval-S6ml_xyU.cjs.map} +1 -1
  640. package/dist/{tool-approval-nsbG8-qI.js → tool-approval-TB8r2U_c.js} +3 -3
  641. package/dist/{tool-approval-nsbG8-qI.js.map → tool-approval-TB8r2U_c.js.map} +1 -1
  642. package/dist/{tool-call-arguments-RKyYP3xh.js → tool-call-arguments-CCkJ1btR.js} +3 -3
  643. package/dist/{tool-call-arguments-RKyYP3xh.js.map → tool-call-arguments-CCkJ1btR.js.map} +1 -1
  644. package/dist/{tool-call-arguments-Bj2MA4SW.cjs → tool-call-arguments-DyukJmhY.cjs} +3 -3
  645. package/dist/{tool-call-arguments-Bj2MA4SW.cjs.map → tool-call-arguments-DyukJmhY.cjs.map} +1 -1
  646. package/dist/{tool-call-mono-BAYC7OZl.js → tool-call-mono-CASKyxNt.js} +2 -2
  647. package/dist/{tool-call-mono-BAYC7OZl.js.map → tool-call-mono-CASKyxNt.js.map} +1 -1
  648. package/dist/{tool-call-mono-C42l0zrM.cjs → tool-call-mono-D8XffwXR.cjs} +2 -2
  649. package/dist/{tool-call-mono-C42l0zrM.cjs.map → tool-call-mono-D8XffwXR.cjs.map} +1 -1
  650. package/dist/{tool-call-output-CO6lqtGh.js → tool-call-output-qgqn19KC.js} +2 -2
  651. package/dist/{tool-call-output-CO6lqtGh.js.map → tool-call-output-qgqn19KC.js.map} +1 -1
  652. package/dist/{tool-call-output-BDua5O1z.cjs → tool-call-output-xx1drXqO.cjs} +2 -2
  653. package/dist/{tool-call-output-BDua5O1z.cjs.map → tool-call-output-xx1drXqO.cjs.map} +1 -1
  654. package/dist/{tool-card-BtPh44u6.js → tool-card-BftktBoV.js} +4 -4
  655. package/dist/{tool-card-BtPh44u6.js.map → tool-card-BftktBoV.js.map} +1 -1
  656. package/dist/{tool-card-C0pNVEva.cjs → tool-card-NFkMpChW.cjs} +4 -4
  657. package/dist/{tool-card-C0pNVEva.cjs.map → tool-card-NFkMpChW.cjs.map} +1 -1
  658. package/dist/{traces-data-list-_mFOMw0U.js → traces-data-list-1X6UBM6Y.js} +2 -4
  659. package/dist/{traces-data-list-_mFOMw0U.js.map → traces-data-list-1X6UBM6Y.js.map} +1 -1
  660. package/dist/{traces-data-list-Cf_PpmSN.cjs → traces-data-list-BXSXW3E6.cjs} +17 -19
  661. package/dist/{traces-data-list-Cf_PpmSN.cjs.map → traces-data-list-BXSXW3E6.cjs.map} +1 -1
  662. package/dist/{use-workflow-graph-runtime-CwDL7DzY.cjs → use-workflow-graph-runtime-C8TkqjvM.cjs} +3 -3
  663. package/dist/{use-workflow-graph-runtime-CwDL7DzY.cjs.map → use-workflow-graph-runtime-C8TkqjvM.cjs.map} +1 -1
  664. package/dist/{use-workflow-graph-runtime-CAyNWN_Z.js → use-workflow-graph-runtime-DX56livO.js} +3 -3
  665. package/dist/{use-workflow-graph-runtime-CAyNWN_Z.js.map → use-workflow-graph-runtime-DX56livO.js.map} +1 -1
  666. package/dist/{workflow-code-dialog-content-CNDoMFAV.js → workflow-code-dialog-content-DG-Lmvgu.js} +3 -3
  667. package/dist/{workflow-code-dialog-content-CNDoMFAV.js.map → workflow-code-dialog-content-DG-Lmvgu.js.map} +1 -1
  668. package/dist/{workflow-code-dialog-content-B7YU2kfe.cjs → workflow-code-dialog-content-vC_ddCYp.cjs} +3 -3
  669. package/dist/{workflow-code-dialog-content-B7YU2kfe.cjs.map → workflow-code-dialog-content-vC_ddCYp.cjs.map} +1 -1
  670. package/dist/{workflow-condition-card-DnSlcZ2s.js → workflow-condition-card-DMkPh5TM.js} +3 -3
  671. package/dist/{workflow-condition-card-DnSlcZ2s.js.map → workflow-condition-card-DMkPh5TM.js.map} +1 -1
  672. package/dist/{workflow-condition-card-CbaDpVa_.cjs → workflow-condition-card-bn5mrwKe.cjs} +3 -3
  673. package/dist/{workflow-condition-card-CbaDpVa_.cjs.map → workflow-condition-card-bn5mrwKe.cjs.map} +1 -1
  674. package/dist/{workflow-data-edge-view-BaA6YJye.js → workflow-data-edge-view-De0xCrVu.js} +2 -2
  675. package/dist/{workflow-data-edge-view-BaA6YJye.js.map → workflow-data-edge-view-De0xCrVu.js.map} +1 -1
  676. package/dist/{workflow-data-edge-view-BHvpuvmp.cjs → workflow-data-edge-view-kmB6j-ui.cjs} +2 -2
  677. package/dist/{workflow-data-edge-view-BHvpuvmp.cjs.map → workflow-data-edge-view-kmB6j-ui.cjs.map} +1 -1
  678. package/dist/{workflow-debug-controls-h7Q-RlJ2.js → workflow-debug-controls-CJTqoarc.js} +2 -2
  679. package/dist/{workflow-debug-controls-h7Q-RlJ2.js.map → workflow-debug-controls-CJTqoarc.js.map} +1 -1
  680. package/dist/{workflow-debug-controls-D9rmMeH-.cjs → workflow-debug-controls-CqaM7s-K.cjs} +2 -2
  681. package/dist/{workflow-debug-controls-D9rmMeH-.cjs.map → workflow-debug-controls-CqaM7s-K.cjs.map} +1 -1
  682. package/dist/{workflow-edge-data-button-6EDXzRxr.js → workflow-edge-data-button-CXbj67U9.js} +4 -4
  683. package/dist/{workflow-edge-data-button-6EDXzRxr.js.map → workflow-edge-data-button-CXbj67U9.js.map} +1 -1
  684. package/dist/{workflow-edge-data-button-Cz2rcoDr.cjs → workflow-edge-data-button-av1zCMfP.cjs} +4 -4
  685. package/dist/{workflow-edge-data-button-Cz2rcoDr.cjs.map → workflow-edge-data-button-av1zCMfP.cjs.map} +1 -1
  686. package/dist/{workflow-step-action-DmUW2AMM.js → workflow-step-action-AG05Ly8P.js} +2 -2
  687. package/dist/{workflow-step-action-DmUW2AMM.js.map → workflow-step-action-AG05Ly8P.js.map} +1 -1
  688. package/dist/{workflow-step-action-Ssz6Z2t5.cjs → workflow-step-action-BsBZk7j6.cjs} +2 -2
  689. package/dist/{workflow-step-action-Ssz6Z2t5.cjs.map → workflow-step-action-BsBZk7j6.cjs.map} +1 -1
  690. package/package.json +11 -11
  691. package/dist/Avatar-C2Sz53u5.js.map +0 -1
  692. package/dist/Avatar-D6ybWljK.cjs.map +0 -1
  693. package/dist/Button-BfZzgZrA.cjs.map +0 -1
  694. package/dist/Button-C8QDEN9j.js.map +0 -1
  695. package/dist/data-list-DkVOwk8l.cjs +0 -142
  696. package/dist/data-list-DkVOwk8l.cjs.map +0 -1
  697. package/dist/data-list-Dv2lP-dU.js +0 -138
  698. package/dist/data-list-Dv2lP-dU.js.map +0 -1
  699. package/dist/data-list-spacer-DEMquKp9.js +0 -209
  700. package/dist/data-list-spacer-DEMquKp9.js.map +0 -1
  701. package/dist/data-list-spacer-pXP8xDlg.cjs +0 -218
  702. package/dist/data-list-spacer-pXP8xDlg.cjs.map +0 -1
  703. package/dist/data-list-top-BJCC62oy.js.map +0 -1
  704. package/dist/data-list-top-Ds-NWyPO.cjs.map +0 -1
  705. package/dist/data-panel-COU5dbUJ.js.map +0 -1
  706. package/dist/data-panel-CTqb-0qN.cjs.map +0 -1
  707. package/dist/page-header-Bf0zLkyY.js.map +0 -1
  708. package/dist/page-header-CLxPq7T5.cjs.map +0 -1
package/README.md CHANGED
@@ -98,6 +98,104 @@ For a free-text prompt, replace `AskUser.Options` with `AskUser.TextAnswer` and
98
98
 
99
99
  Interactive examples live under **AI / Ask User** in Storybook, including composed layouts with the submit control outside the options.
100
100
 
101
+ ### Tables
102
+
103
+ `Table variant="inset"` renders a data table from the native `table`, `thead`, `tbody`, `tr`, `th`, and `td` elements with the same raised surface as `DataList`. Each part takes its element's props, so `colSpan` and `aria-*` work as they do in HTML, and any component can go in a cell.
104
+
105
+ ```tsx
106
+ import { Table } from '@mastra/playground-ui/components/Table';
107
+
108
+ export function CreditHistory({ credits }: { credits: Credit[] }) {
109
+ return (
110
+ <Table variant="inset" aria-labelledby="credit-history">
111
+ <Table.Header>
112
+ <Table.Row>
113
+ <Table.Head>Type</Table.Head>
114
+ <Table.Head className="w-full">Description</Table.Head>
115
+ <Table.Head align="end">Balance</Table.Head>
116
+ </Table.Row>
117
+ </Table.Header>
118
+ <Table.Body>
119
+ {credits.map(credit => (
120
+ <Table.Row key={credit.id}>
121
+ <Table.Cell>
122
+ <Table.RowLink href={`/billing/credits/${credit.id}`}>{credit.type}</Table.RowLink>
123
+ </Table.Cell>
124
+ <Table.Cell>{credit.title}</Table.Cell>
125
+ <Table.Cell align="end">{credit.balance}</Table.Cell>
126
+ </Table.Row>
127
+ ))}
128
+ </Table.Body>
129
+ </Table>
130
+ );
131
+ }
132
+ ```
133
+
134
+ - `Table` takes `variant="inset"` for the DataList surface. Omit `variant` to preserve the existing default appearance and sizing. `columnDividers` draws lines between columns in inset mode.
135
+ - `Table.Head` takes `align` (`start`, `center`, or `end`).
136
+ - `Table.Cell` takes `align` and `tone` (`ink` or `muted`).
137
+ - Every column is the same color. Use `Txt tone="muted"` only for secondary text inside a cell, such as a second line, or mute every column except the first.
138
+ - `Table.SortButton` goes inside a sortable `Table.Head` and shows the sort arrow.
139
+ - `Table.RowLink` makes the whole row a link. `Table.RowButton` makes it a button, for opening a drawer or dialog. Pass `render={<Link to="…" />}` for a router link.
140
+ - `Table.Pagination` goes below the table: Previous, numbered pages, and Next. It takes a zero-based `page`, `pageCount`, and `onPageChange`. The caller supplies the current page’s rows, from a local slice or a server query.
141
+ - Text is left-aligned; numbers are right-aligned with `align="end"` on the head and cells. Negative amounts keep their minus sign and use `tone="muted"`; never red, since usage isn't an error.
142
+ - Rows are at least 36px tall and grow with their content. Cells stay on one line unless you wrap their text in an element with `whitespace-normal`.
143
+
144
+ Use `Table` for data people read and compare, such as billing history or usage. Use `DataList` for lists of entities people click into, such as agents or traces, which need row keyboard navigation, sticky or reorderable columns, or virtualization. Search and filters go in an `ActionRow` above either one. Choose based on the rows rendered at once, not the total dataset size; large server-paginated datasets can use Table.
145
+
146
+ The full guide, with recipes for column dividers, editable cells, sorting, client-side and server-side pagination, loading, and empty states, is the **DataDisplay / Table** docs page in Storybook.
147
+
148
+ Legacy named parts remain supported. `Thead` creates its own row; `Table.Header` takes an explicit `Table.Row`. In inset mode, `className` applies to the outer surface and native props (including `ref` and `style`) apply to the `table`.
149
+
150
+ ### Pagination
151
+
152
+ `Pagination` is page navigation built from parts, shaped like shadcn's: `Pagination`, `PaginationContent`, `PaginationItem`, `PaginationLink`, `PaginationPrevious`, `PaginationNext`, and `PaginationEllipsis`. The current page wears a raised pill that slides between pages, and a fluid highlight follows the pointer. The caller owns the page.
153
+
154
+ ```tsx
155
+ import {
156
+ Pagination,
157
+ PaginationContent,
158
+ PaginationEllipsis,
159
+ PaginationItem,
160
+ PaginationLink,
161
+ PaginationNext,
162
+ PaginationPrevious,
163
+ getPaginationRange,
164
+ } from '@mastra/playground-ui/components/Pagination';
165
+
166
+ <Pagination aria-label="Credit history pages">
167
+ <PaginationContent>
168
+ <PaginationItem>
169
+ <PaginationPrevious disabled={page === 0} onClick={() => setPage(page - 1)} />
170
+ </PaginationItem>
171
+ {getPaginationRange(page, pageCount).map(item => {
172
+ if (item.kind === 'ellipsis') {
173
+ return (
174
+ <PaginationItem key={item.key}>
175
+ <PaginationEllipsis />
176
+ </PaginationItem>
177
+ );
178
+ }
179
+ return (
180
+ <PaginationItem key={item.page}>
181
+ <PaginationLink isActive={item.page === page} onClick={() => setPage(item.page)}>
182
+ {item.page + 1}
183
+ </PaginationLink>
184
+ </PaginationItem>
185
+ );
186
+ })}
187
+ <PaginationItem>
188
+ <PaginationNext disabled={page === pageCount - 1} onClick={() => setPage(page + 1)} />
189
+ </PaginationItem>
190
+ </PaginationContent>
191
+ </Pagination>;
192
+ ```
193
+
194
+ - Page indexes are zero-based. `getPaginationRange(page, pageCount)` returns the pages to show, with ellipses past seven pages.
195
+ - `PaginationLink` renders a button. Pass `render={<a href="?page=2" />}`, or a router link, when each page has a URL.
196
+ - `disabled` keeps Previous and Next in place and focusable, and ignores their clicks.
197
+ - For a table, `Table.Pagination` takes `page`, `pageCount`, and `onPageChange` and renders this composition for you.
198
+
101
199
  ### Semantic color tokens
102
200
 
103
201
  `theme.css` declares the semantic color tokens (`--background`, `--card`, `--foreground`, and friends) at the document root, so utilities such as `bg-card` and `text-foreground` resolve anywhere in the app, portalled content included. Importing `style.css` once is enough to get both the compiled utilities and those tokens.
@@ -2,34 +2,12 @@
2
2
 
3
3
  const jsxRuntime = require('react/jsx-runtime');
4
4
  const React = require('react');
5
+ const avatarSize = require('./avatar-size-DxStOo5A.cjs');
5
6
  const utils_cn = require('./cn-TqD01zH-.cjs');
6
7
  const Txt = require('./Txt-DXjXpX9r.cjs');
7
8
  const primitives_transitions = require('./primitives/transitions.cjs.js');
8
9
  const avatar = require('@base-ui/react/avatar');
9
10
 
10
- const avatarSizeClasses = {
11
- xs: "size-icon-xs",
12
- sm: "size-avatar-sm",
13
- md: "size-avatar-md",
14
- lg: "size-avatar-lg",
15
- control: "size-control-md"
16
- };
17
- const avatarTextClasses = {
18
- xs: "text-meta",
19
- sm: "text-caption",
20
- md: "text-body-sm",
21
- lg: "text-body",
22
- control: "text-body-sm"
23
- };
24
- const avatarIconClasses = {
25
- xs: "[&>svg]:hidden",
26
- sm: "[&>svg]:size-icon-xs",
27
- md: "[&>svg]:size-icon-sm",
28
- lg: "[&>svg]:size-icon-sm",
29
- control: "[&>svg]:size-icon-sm"
30
- };
31
- const AvatarSizeContext = React.createContext(void 0);
32
-
33
11
  const toneClasses = {
34
12
  neutral: "bg-fill-inverse text-background",
35
13
  success: "bg-success-indicator text-background",
@@ -45,7 +23,7 @@ const badgeSizeClasses = {
45
23
  control: "min-h-2.5 min-w-2.5 [&>svg]:size-icon-xs"
46
24
  };
47
25
  function AvatarBadge({ tone, className, children, ...props }) {
48
- const size = React.useContext(AvatarSizeContext) ?? "sm";
26
+ const size = React.useContext(avatarSize.AvatarSizeContext) ?? "sm";
49
27
  return /* @__PURE__ */ jsxRuntime.jsx(
50
28
  "span",
51
29
  {
@@ -59,13 +37,13 @@ function AvatarBadge({ tone, className, children, ...props }) {
59
37
  badgeSizeClasses[size],
60
38
  className
61
39
  ),
62
- children: /* @__PURE__ */ jsxRuntime.jsx(AvatarSizeContext.Provider, { value: "xs", children })
40
+ children: /* @__PURE__ */ jsxRuntime.jsx(avatarSize.AvatarSizeContext.Provider, { value: "xs", children })
63
41
  }
64
42
  );
65
43
  }
66
44
 
67
45
  function AvatarNamed({ src, name, size, interactive = false, color, textColor }) {
68
- const contextSize = React.useContext(AvatarSizeContext);
46
+ const contextSize = React.useContext(avatarSize.AvatarSizeContext);
69
47
  const [didError, setDidError] = React.useState(false);
70
48
  const resolvedSize = size ?? contextSize ?? "sm";
71
49
  const initial = name.trim()[0]?.toUpperCase() ?? "A";
@@ -77,7 +55,7 @@ function AvatarNamed({ src, name, size, interactive = false, color, textColor })
77
55
  "data-slot": "avatar",
78
56
  "data-size": resolvedSize,
79
57
  className: utils_cn.cn(
80
- avatarSizeClasses[resolvedSize],
58
+ avatarSize.avatarSizeClasses[resolvedSize],
81
59
  "flex shrink-0 items-center justify-center overflow-hidden rounded-full border border-border",
82
60
  !showFallbackTint && "bg-fill",
83
61
  primitives_transitions.controlStateColorTransition,
@@ -99,9 +77,9 @@ function AvatarNamed({ src, name, size, interactive = false, color, textColor })
99
77
  }
100
78
 
101
79
  function AvatarRoot({ size, className, ...props }) {
102
- const contextSize = React.useContext(AvatarSizeContext);
80
+ const contextSize = React.useContext(avatarSize.AvatarSizeContext);
103
81
  const resolvedSize = size ?? contextSize ?? "sm";
104
- return /* @__PURE__ */ jsxRuntime.jsx(AvatarSizeContext.Provider, { value: resolvedSize, children: /* @__PURE__ */ jsxRuntime.jsx(
82
+ return /* @__PURE__ */ jsxRuntime.jsx(avatarSize.AvatarSizeContext.Provider, { value: resolvedSize, children: /* @__PURE__ */ jsxRuntime.jsx(
105
83
  avatar.Avatar.Root,
106
84
  {
107
85
  ...props,
@@ -110,7 +88,7 @@ function AvatarRoot({ size, className, ...props }) {
110
88
  className: utils_cn.cn(
111
89
  "relative inline-flex shrink-0 rounded-full select-none",
112
90
  "after:pointer-events-none after:absolute after:inset-0 after:rounded-full after:border after:border-border",
113
- avatarSizeClasses[resolvedSize],
91
+ avatarSize.avatarSizeClasses[resolvedSize],
114
92
  className
115
93
  )
116
94
  }
@@ -123,7 +101,7 @@ function AvatarElement(props) {
123
101
  }
124
102
 
125
103
  function AvatarFallback({ className, ...props }) {
126
- const size = React.useContext(AvatarSizeContext) ?? "sm";
104
+ const size = React.useContext(avatarSize.AvatarSizeContext) ?? "sm";
127
105
  return /* @__PURE__ */ jsxRuntime.jsx(
128
106
  avatar.Avatar.Fallback,
129
107
  {
@@ -131,27 +109,40 @@ function AvatarFallback({ className, ...props }) {
131
109
  "data-slot": "avatar-fallback",
132
110
  className: utils_cn.cn(
133
111
  "flex size-full items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground",
134
- avatarTextClasses[size],
135
- avatarIconClasses[size],
112
+ avatarSize.avatarTextClasses[size],
113
+ avatarSize.avatarIconClasses[size],
136
114
  className
137
115
  )
138
116
  }
139
117
  );
140
118
  }
141
119
 
142
- function AvatarGroup({ size, className, ...props }) {
143
- return /* @__PURE__ */ jsxRuntime.jsx(AvatarSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsxRuntime.jsx(
120
+ const groupSizeClasses = {
121
+ xs: "[--avatar-group-size:var(--spacing-icon-xs)]",
122
+ sm: "[--avatar-group-size:var(--spacing-avatar-sm)]",
123
+ md: "[--avatar-group-size:var(--spacing-avatar-md)]",
124
+ lg: "[--avatar-group-size:var(--spacing-avatar-lg)]",
125
+ control: "[--avatar-group-size:var(--spacing-control-md)]"
126
+ };
127
+ const overlapClasses = [
128
+ "*:not-first:ml-[calc(var(--avatar-group-size)/-4)]",
129
+ "*:not-first:[mask-image:radial-gradient(circle_at_calc(var(--avatar-group-size)*-0.25)_50%,transparent_calc(var(--avatar-group-size)/2+--spacing(0.5)),black_calc(var(--avatar-group-size)/2+--spacing(0.75)))]"
130
+ ];
131
+ function AvatarGroup({ size = "sm", className, children, ...props }) {
132
+ const items = React.Children.toArray(children);
133
+ return /* @__PURE__ */ jsxRuntime.jsx(avatarSize.AvatarSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsxRuntime.jsx(
144
134
  "div",
145
135
  {
146
136
  ...props,
147
137
  "data-slot": "avatar-group",
148
- className: utils_cn.cn("flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-card", className)
138
+ className: utils_cn.cn("flex items-center", groupSizeClasses[size], overlapClasses, className),
139
+ children: items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "avatar-group-item", className: "flex", style: { zIndex: items.length - index }, children: item }, index))
149
140
  }
150
141
  ) });
151
142
  }
152
143
 
153
144
  function AvatarGroupCount({ className, ...props }) {
154
- const size = React.useContext(AvatarSizeContext) ?? "sm";
145
+ const size = React.useContext(avatarSize.AvatarSizeContext) ?? "sm";
155
146
  return /* @__PURE__ */ jsxRuntime.jsx(
156
147
  "div",
157
148
  {
@@ -159,10 +150,11 @@ function AvatarGroupCount({ className, ...props }) {
159
150
  "data-slot": "avatar-group-count",
160
151
  "data-size": size,
161
152
  className: utils_cn.cn(
162
- "relative flex shrink-0 items-center justify-center rounded-full bg-muted text-muted-foreground tabular-nums ring-2 ring-card",
163
- avatarSizeClasses[size],
164
- avatarTextClasses[size],
165
- avatarIconClasses[size],
153
+ "relative flex shrink-0 items-center justify-center rounded-full bg-muted text-muted-foreground tabular-nums",
154
+ "after:pointer-events-none after:absolute after:inset-0 after:rounded-full after:border after:border-border",
155
+ avatarSize.avatarSizeClasses[size],
156
+ avatarSize.avatarTextClasses[size],
157
+ avatarSize.avatarIconClasses[size],
166
158
  className
167
159
  )
168
160
  }
@@ -189,4 +181,4 @@ const Avatar = Object.assign(AvatarElement, {
189
181
  });
190
182
 
191
183
  exports.Avatar = Avatar;
192
- //# sourceMappingURL=Avatar-D6ybWljK.cjs.map
184
+ //# sourceMappingURL=Avatar-0u68PVfu.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar-0u68PVfu.cjs","sources":["../src/ds/components/Avatar/avatar-badge.tsx","../src/ds/components/Avatar/avatar-named.tsx","../src/ds/components/Avatar/avatar-root.tsx","../src/ds/components/Avatar/avatar-element.tsx","../src/ds/components/Avatar/avatar-fallback.tsx","../src/ds/components/Avatar/avatar-group.tsx","../src/ds/components/Avatar/avatar-group-count.tsx","../src/ds/components/Avatar/avatar-image.tsx","../src/ds/components/Avatar/Avatar.tsx"],"sourcesContent":["import { useContext, type ComponentProps } from 'react';\n\nimport { AvatarSizeContext, type AvatarSize } from './avatar-size';\nimport { cn } from '@/lib/utils';\n\nexport type AvatarBadgeTone = 'neutral' | 'success' | 'warning' | 'destructive' | 'info';\n\nexport type AvatarBadgeProps = ComponentProps<'span'> & {\n tone?: AvatarBadgeTone;\n};\n\nconst toneClasses: Record<AvatarBadgeTone, string> = {\n neutral: 'bg-fill-inverse text-background',\n success: 'bg-success-indicator text-background',\n warning: 'bg-warning-indicator text-background',\n destructive: 'bg-destructive-indicator text-background',\n info: 'bg-info-indicator text-background',\n};\n\nconst badgeSizeClasses: Record<AvatarSize, string> = {\n xs: 'min-h-1.5 min-w-1.5 [&>svg]:hidden',\n sm: 'min-h-2 min-w-2 [&>svg]:hidden',\n md: 'min-h-2.5 min-w-2.5 [&>svg]:size-icon-xs',\n lg: 'min-h-3 min-w-3 [&>svg]:size-icon-xs',\n control: 'min-h-2.5 min-w-2.5 [&>svg]:size-icon-xs',\n};\n\nexport function AvatarBadge({ tone, className, children, ...props }: AvatarBadgeProps) {\n const size = useContext(AvatarSizeContext) ?? 'sm';\n\n return (\n <span\n {...props}\n data-slot=\"avatar-badge\"\n className={cn(\n 'absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full ring-2 ring-card select-none',\n '[&>[data-slot=avatar]]:border-0 [&>[data-slot=avatar]]:after:hidden',\n 'after:pointer-events-none after:absolute after:inset-0 after:rounded-full after:shadow-inset',\n tone ? toneClasses[tone] : 'bg-card text-foreground',\n badgeSizeClasses[size],\n className,\n )}\n >\n <AvatarSizeContext.Provider value=\"xs\">{children}</AvatarSizeContext.Provider>\n </span>\n );\n}\n","import { useContext, useState } from 'react';\n\nimport { Txt } from '../Txt/Txt';\nimport { AvatarSizeContext, avatarSizeClasses, type AvatarSize } from './avatar-size';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type AvatarProps = {\n src?: string;\n name: string;\n size?: AvatarSize;\n interactive?: boolean;\n color?: string;\n textColor?: string;\n};\n\nexport function AvatarNamed({ src, name, size, interactive = false, color, textColor }: AvatarProps) {\n const contextSize = useContext(AvatarSizeContext);\n const [didError, setDidError] = useState(false);\n const resolvedSize = size ?? contextSize ?? 'sm';\n const initial = name.trim()[0]?.toUpperCase() ?? 'A';\n const showImage = Boolean(src) && !didError;\n const showFallbackTint = !showImage && Boolean(color);\n\n return (\n <div\n data-slot=\"avatar\"\n data-size={resolvedSize}\n className={cn(\n avatarSizeClasses[resolvedSize],\n 'flex shrink-0 items-center justify-center overflow-hidden rounded-full border border-border',\n !showFallbackTint && 'bg-fill',\n controlStateColorTransition,\n interactive && 'cursor-pointer hover:border-border-hover',\n )}\n style={showFallbackTint ? { backgroundColor: color } : undefined}\n >\n {showImage ? (\n <img src={src} alt={name} className=\"size-full object-cover\" onError={() => setDidError(true)} />\n ) : (\n <Txt\n variant={resolvedSize === 'xs' ? 'meta' : 'body'}\n tone={showFallbackTint ? undefined : 'muted'}\n className=\"text-center\"\n style={showFallbackTint && textColor ? { color: textColor } : undefined}\n >\n {initial}\n </Txt>\n )}\n </div>\n );\n}\n","import { Avatar as BaseAvatar } from '@base-ui/react/avatar';\nimport { useContext } from 'react';\n\nimport { AvatarSizeContext, avatarSizeClasses, type AvatarSize } from './avatar-size';\nimport { cn } from '@/lib/utils';\n\nexport type AvatarRootProps = Omit<BaseAvatar.Root.Props, 'className'> & {\n size?: AvatarSize;\n className?: string;\n name?: never;\n};\n\nexport function AvatarRoot({ size, className, ...props }: AvatarRootProps) {\n const contextSize = useContext(AvatarSizeContext);\n const resolvedSize = size ?? contextSize ?? 'sm';\n\n return (\n <AvatarSizeContext.Provider value={resolvedSize}>\n <BaseAvatar.Root\n {...props}\n data-slot=\"avatar\"\n data-size={resolvedSize}\n className={cn(\n 'relative inline-flex shrink-0 rounded-full select-none',\n 'after:pointer-events-none after:absolute after:inset-0 after:rounded-full after:border after:border-border',\n avatarSizeClasses[resolvedSize],\n className,\n )}\n />\n </AvatarSizeContext.Provider>\n );\n}\n","import { AvatarNamed, type AvatarProps } from './avatar-named';\nimport { AvatarRoot, type AvatarRootProps } from './avatar-root';\n\nexport function AvatarElement(props: AvatarProps | AvatarRootProps) {\n if (props.name === undefined) return <AvatarRoot {...props} />;\n return <AvatarNamed {...props} />;\n}\n","import { Avatar as BaseAvatar } from '@base-ui/react/avatar';\nimport { useContext } from 'react';\n\nimport { AvatarSizeContext, avatarIconClasses, avatarTextClasses } from './avatar-size';\nimport { cn } from '@/lib/utils';\n\nexport type AvatarFallbackProps = Omit<BaseAvatar.Fallback.Props, 'className'> & {\n className?: string;\n};\n\nexport function AvatarFallback({ className, ...props }: AvatarFallbackProps) {\n const size = useContext(AvatarSizeContext) ?? 'sm';\n\n return (\n <BaseAvatar.Fallback\n {...props}\n data-slot=\"avatar-fallback\"\n className={cn(\n 'flex size-full items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground',\n avatarTextClasses[size],\n avatarIconClasses[size],\n className,\n )}\n />\n );\n}\n","import { Children, type ComponentProps } from 'react';\n\nimport { AvatarSizeContext, type AvatarSize } from './avatar-size';\nimport { cn } from '@/lib/utils';\n\nexport type AvatarGroupProps = ComponentProps<'div'> & {\n size?: AvatarSize;\n};\n\nconst groupSizeClasses: Record<AvatarSize, string> = {\n xs: '[--avatar-group-size:var(--spacing-icon-xs)]',\n sm: '[--avatar-group-size:var(--spacing-avatar-sm)]',\n md: '[--avatar-group-size:var(--spacing-avatar-md)]',\n lg: '[--avatar-group-size:var(--spacing-avatar-lg)]',\n control: '[--avatar-group-size:var(--spacing-control-md)]',\n};\n\nconst overlapClasses = [\n '*:not-first:ml-[calc(var(--avatar-group-size)/-4)]',\n '*:not-first:[mask-image:radial-gradient(circle_at_calc(var(--avatar-group-size)*-0.25)_50%,transparent_calc(var(--avatar-group-size)/2+--spacing(0.5)),black_calc(var(--avatar-group-size)/2+--spacing(0.75)))]',\n];\n\nexport function AvatarGroup({ size = 'sm', className, children, ...props }: AvatarGroupProps) {\n const items = Children.toArray(children);\n\n return (\n <AvatarSizeContext.Provider value={size}>\n <div\n {...props}\n data-slot=\"avatar-group\"\n className={cn('flex items-center', groupSizeClasses[size], overlapClasses, className)}\n >\n {items.map((item, index) => (\n <div key={index} data-slot=\"avatar-group-item\" className=\"flex\" style={{ zIndex: items.length - index }}>\n {item}\n </div>\n ))}\n </div>\n </AvatarSizeContext.Provider>\n );\n}\n","import { useContext, type ComponentProps } from 'react';\n\nimport { AvatarSizeContext, avatarIconClasses, avatarSizeClasses, avatarTextClasses } from './avatar-size';\nimport { cn } from '@/lib/utils';\n\nexport type AvatarGroupCountProps = ComponentProps<'div'>;\n\nexport function AvatarGroupCount({ className, ...props }: AvatarGroupCountProps) {\n const size = useContext(AvatarSizeContext) ?? 'sm';\n\n return (\n <div\n {...props}\n data-slot=\"avatar-group-count\"\n data-size={size}\n className={cn(\n 'relative flex shrink-0 items-center justify-center rounded-full bg-muted text-muted-foreground tabular-nums',\n 'after:pointer-events-none after:absolute after:inset-0 after:rounded-full after:border after:border-border',\n avatarSizeClasses[size],\n avatarTextClasses[size],\n avatarIconClasses[size],\n className,\n )}\n />\n );\n}\n","import { Avatar as BaseAvatar } from '@base-ui/react/avatar';\n\nimport { cn } from '@/lib/utils';\n\nexport type AvatarImageProps = Omit<BaseAvatar.Image.Props, 'className' | 'alt'> & {\n alt: string;\n className?: string;\n};\n\nexport function AvatarImage({ className, ...props }: AvatarImageProps) {\n return (\n <BaseAvatar.Image\n {...props}\n data-slot=\"avatar-image\"\n className={cn('size-full rounded-full object-cover', className)}\n />\n );\n}\n","import { AvatarBadge } from './avatar-badge';\nimport { AvatarElement } from './avatar-element';\nimport { AvatarFallback } from './avatar-fallback';\nimport { AvatarGroup } from './avatar-group';\nimport { AvatarGroupCount } from './avatar-group-count';\nimport { AvatarImage } from './avatar-image';\n\nexport type { AvatarSize } from './avatar-size';\nexport type { AvatarProps } from './avatar-named';\nexport type { AvatarRootProps } from './avatar-root';\nexport type { AvatarImageProps } from './avatar-image';\nexport type { AvatarFallbackProps } from './avatar-fallback';\nexport type { AvatarBadgeProps, AvatarBadgeTone } from './avatar-badge';\nexport type { AvatarGroupProps } from './avatar-group';\nexport type { AvatarGroupCountProps } from './avatar-group-count';\n\nexport const Avatar = Object.assign(AvatarElement, {\n Image: AvatarImage,\n Fallback: AvatarFallback,\n Badge: AvatarBadge,\n Group: AvatarGroup,\n GroupCount: AvatarGroupCount,\n});\n"],"names":["useContext","AvatarSizeContext","jsx","cn","useState","avatarSizeClasses","controlStateColorTransition","Txt","BaseAvatar","avatarTextClasses","avatarIconClasses","Children"],"mappings":"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"}
@@ -1,33 +1,11 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { createContext, useContext, useState } from 'react';
2
+ import { useContext, useState, Children } from 'react';
3
+ import { A as AvatarSizeContext, a as avatarSizeClasses, b as avatarIconClasses, c as avatarTextClasses } from './avatar-size-CNR0U-LW.js';
3
4
  import { c as cn } from './cn-coERSHz5.js';
4
5
  import { T as Txt } from './Txt-BuzYj7Vy.js';
5
6
  import { controlStateColorTransition } from './primitives/transitions.es.js';
6
7
  import { Avatar as Avatar$1 } from '@base-ui/react/avatar';
7
8
 
8
- const avatarSizeClasses = {
9
- xs: "size-icon-xs",
10
- sm: "size-avatar-sm",
11
- md: "size-avatar-md",
12
- lg: "size-avatar-lg",
13
- control: "size-control-md"
14
- };
15
- const avatarTextClasses = {
16
- xs: "text-meta",
17
- sm: "text-caption",
18
- md: "text-body-sm",
19
- lg: "text-body",
20
- control: "text-body-sm"
21
- };
22
- const avatarIconClasses = {
23
- xs: "[&>svg]:hidden",
24
- sm: "[&>svg]:size-icon-xs",
25
- md: "[&>svg]:size-icon-sm",
26
- lg: "[&>svg]:size-icon-sm",
27
- control: "[&>svg]:size-icon-sm"
28
- };
29
- const AvatarSizeContext = createContext(void 0);
30
-
31
9
  const toneClasses = {
32
10
  neutral: "bg-fill-inverse text-background",
33
11
  success: "bg-success-indicator text-background",
@@ -137,13 +115,26 @@ function AvatarFallback({ className, ...props }) {
137
115
  );
138
116
  }
139
117
 
140
- function AvatarGroup({ size, className, ...props }) {
118
+ const groupSizeClasses = {
119
+ xs: "[--avatar-group-size:var(--spacing-icon-xs)]",
120
+ sm: "[--avatar-group-size:var(--spacing-avatar-sm)]",
121
+ md: "[--avatar-group-size:var(--spacing-avatar-md)]",
122
+ lg: "[--avatar-group-size:var(--spacing-avatar-lg)]",
123
+ control: "[--avatar-group-size:var(--spacing-control-md)]"
124
+ };
125
+ const overlapClasses = [
126
+ "*:not-first:ml-[calc(var(--avatar-group-size)/-4)]",
127
+ "*:not-first:[mask-image:radial-gradient(circle_at_calc(var(--avatar-group-size)*-0.25)_50%,transparent_calc(var(--avatar-group-size)/2+--spacing(0.5)),black_calc(var(--avatar-group-size)/2+--spacing(0.75)))]"
128
+ ];
129
+ function AvatarGroup({ size = "sm", className, children, ...props }) {
130
+ const items = Children.toArray(children);
141
131
  return /* @__PURE__ */ jsx(AvatarSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx(
142
132
  "div",
143
133
  {
144
134
  ...props,
145
135
  "data-slot": "avatar-group",
146
- className: cn("flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-card", className)
136
+ className: cn("flex items-center", groupSizeClasses[size], overlapClasses, className),
137
+ children: items.map((item, index) => /* @__PURE__ */ jsx("div", { "data-slot": "avatar-group-item", className: "flex", style: { zIndex: items.length - index }, children: item }, index))
147
138
  }
148
139
  ) });
149
140
  }
@@ -157,7 +148,8 @@ function AvatarGroupCount({ className, ...props }) {
157
148
  "data-slot": "avatar-group-count",
158
149
  "data-size": size,
159
150
  className: cn(
160
- "relative flex shrink-0 items-center justify-center rounded-full bg-muted text-muted-foreground tabular-nums ring-2 ring-card",
151
+ "relative flex shrink-0 items-center justify-center rounded-full bg-muted text-muted-foreground tabular-nums",
152
+ "after:pointer-events-none after:absolute after:inset-0 after:rounded-full after:border after:border-border",
161
153
  avatarSizeClasses[size],
162
154
  avatarTextClasses[size],
163
155
  avatarIconClasses[size],
@@ -187,4 +179,4 @@ const Avatar = Object.assign(AvatarElement, {
187
179
  });
188
180
 
189
181
  export { Avatar as A };
190
- //# sourceMappingURL=Avatar-C2Sz53u5.js.map
182
+ //# sourceMappingURL=Avatar-BwkyFiED.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar-BwkyFiED.js","sources":["../src/ds/components/Avatar/avatar-badge.tsx","../src/ds/components/Avatar/avatar-named.tsx","../src/ds/components/Avatar/avatar-root.tsx","../src/ds/components/Avatar/avatar-element.tsx","../src/ds/components/Avatar/avatar-fallback.tsx","../src/ds/components/Avatar/avatar-group.tsx","../src/ds/components/Avatar/avatar-group-count.tsx","../src/ds/components/Avatar/avatar-image.tsx","../src/ds/components/Avatar/Avatar.tsx"],"sourcesContent":["import { useContext, type ComponentProps } from 'react';\n\nimport { AvatarSizeContext, type AvatarSize } from './avatar-size';\nimport { cn } from '@/lib/utils';\n\nexport type AvatarBadgeTone = 'neutral' | 'success' | 'warning' | 'destructive' | 'info';\n\nexport type AvatarBadgeProps = ComponentProps<'span'> & {\n tone?: AvatarBadgeTone;\n};\n\nconst toneClasses: Record<AvatarBadgeTone, string> = {\n neutral: 'bg-fill-inverse text-background',\n success: 'bg-success-indicator text-background',\n warning: 'bg-warning-indicator text-background',\n destructive: 'bg-destructive-indicator text-background',\n info: 'bg-info-indicator text-background',\n};\n\nconst badgeSizeClasses: Record<AvatarSize, string> = {\n xs: 'min-h-1.5 min-w-1.5 [&>svg]:hidden',\n sm: 'min-h-2 min-w-2 [&>svg]:hidden',\n md: 'min-h-2.5 min-w-2.5 [&>svg]:size-icon-xs',\n lg: 'min-h-3 min-w-3 [&>svg]:size-icon-xs',\n control: 'min-h-2.5 min-w-2.5 [&>svg]:size-icon-xs',\n};\n\nexport function AvatarBadge({ tone, className, children, ...props }: AvatarBadgeProps) {\n const size = useContext(AvatarSizeContext) ?? 'sm';\n\n return (\n <span\n {...props}\n data-slot=\"avatar-badge\"\n className={cn(\n 'absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full ring-2 ring-card select-none',\n '[&>[data-slot=avatar]]:border-0 [&>[data-slot=avatar]]:after:hidden',\n 'after:pointer-events-none after:absolute after:inset-0 after:rounded-full after:shadow-inset',\n tone ? toneClasses[tone] : 'bg-card text-foreground',\n badgeSizeClasses[size],\n className,\n )}\n >\n <AvatarSizeContext.Provider value=\"xs\">{children}</AvatarSizeContext.Provider>\n </span>\n );\n}\n","import { useContext, useState } from 'react';\n\nimport { Txt } from '../Txt/Txt';\nimport { AvatarSizeContext, avatarSizeClasses, type AvatarSize } from './avatar-size';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type AvatarProps = {\n src?: string;\n name: string;\n size?: AvatarSize;\n interactive?: boolean;\n color?: string;\n textColor?: string;\n};\n\nexport function AvatarNamed({ src, name, size, interactive = false, color, textColor }: AvatarProps) {\n const contextSize = useContext(AvatarSizeContext);\n const [didError, setDidError] = useState(false);\n const resolvedSize = size ?? contextSize ?? 'sm';\n const initial = name.trim()[0]?.toUpperCase() ?? 'A';\n const showImage = Boolean(src) && !didError;\n const showFallbackTint = !showImage && Boolean(color);\n\n return (\n <div\n data-slot=\"avatar\"\n data-size={resolvedSize}\n className={cn(\n avatarSizeClasses[resolvedSize],\n 'flex shrink-0 items-center justify-center overflow-hidden rounded-full border border-border',\n !showFallbackTint && 'bg-fill',\n controlStateColorTransition,\n interactive && 'cursor-pointer hover:border-border-hover',\n )}\n style={showFallbackTint ? { backgroundColor: color } : undefined}\n >\n {showImage ? (\n <img src={src} alt={name} className=\"size-full object-cover\" onError={() => setDidError(true)} />\n ) : (\n <Txt\n variant={resolvedSize === 'xs' ? 'meta' : 'body'}\n tone={showFallbackTint ? undefined : 'muted'}\n className=\"text-center\"\n style={showFallbackTint && textColor ? { color: textColor } : undefined}\n >\n {initial}\n </Txt>\n )}\n </div>\n );\n}\n","import { Avatar as BaseAvatar } from '@base-ui/react/avatar';\nimport { useContext } from 'react';\n\nimport { AvatarSizeContext, avatarSizeClasses, type AvatarSize } from './avatar-size';\nimport { cn } from '@/lib/utils';\n\nexport type AvatarRootProps = Omit<BaseAvatar.Root.Props, 'className'> & {\n size?: AvatarSize;\n className?: string;\n name?: never;\n};\n\nexport function AvatarRoot({ size, className, ...props }: AvatarRootProps) {\n const contextSize = useContext(AvatarSizeContext);\n const resolvedSize = size ?? contextSize ?? 'sm';\n\n return (\n <AvatarSizeContext.Provider value={resolvedSize}>\n <BaseAvatar.Root\n {...props}\n data-slot=\"avatar\"\n data-size={resolvedSize}\n className={cn(\n 'relative inline-flex shrink-0 rounded-full select-none',\n 'after:pointer-events-none after:absolute after:inset-0 after:rounded-full after:border after:border-border',\n avatarSizeClasses[resolvedSize],\n className,\n )}\n />\n </AvatarSizeContext.Provider>\n );\n}\n","import { AvatarNamed, type AvatarProps } from './avatar-named';\nimport { AvatarRoot, type AvatarRootProps } from './avatar-root';\n\nexport function AvatarElement(props: AvatarProps | AvatarRootProps) {\n if (props.name === undefined) return <AvatarRoot {...props} />;\n return <AvatarNamed {...props} />;\n}\n","import { Avatar as BaseAvatar } from '@base-ui/react/avatar';\nimport { useContext } from 'react';\n\nimport { AvatarSizeContext, avatarIconClasses, avatarTextClasses } from './avatar-size';\nimport { cn } from '@/lib/utils';\n\nexport type AvatarFallbackProps = Omit<BaseAvatar.Fallback.Props, 'className'> & {\n className?: string;\n};\n\nexport function AvatarFallback({ className, ...props }: AvatarFallbackProps) {\n const size = useContext(AvatarSizeContext) ?? 'sm';\n\n return (\n <BaseAvatar.Fallback\n {...props}\n data-slot=\"avatar-fallback\"\n className={cn(\n 'flex size-full items-center justify-center overflow-hidden rounded-full bg-muted text-muted-foreground',\n avatarTextClasses[size],\n avatarIconClasses[size],\n className,\n )}\n />\n );\n}\n","import { Children, type ComponentProps } from 'react';\n\nimport { AvatarSizeContext, type AvatarSize } from './avatar-size';\nimport { cn } from '@/lib/utils';\n\nexport type AvatarGroupProps = ComponentProps<'div'> & {\n size?: AvatarSize;\n};\n\nconst groupSizeClasses: Record<AvatarSize, string> = {\n xs: '[--avatar-group-size:var(--spacing-icon-xs)]',\n sm: '[--avatar-group-size:var(--spacing-avatar-sm)]',\n md: '[--avatar-group-size:var(--spacing-avatar-md)]',\n lg: '[--avatar-group-size:var(--spacing-avatar-lg)]',\n control: '[--avatar-group-size:var(--spacing-control-md)]',\n};\n\nconst overlapClasses = [\n '*:not-first:ml-[calc(var(--avatar-group-size)/-4)]',\n '*:not-first:[mask-image:radial-gradient(circle_at_calc(var(--avatar-group-size)*-0.25)_50%,transparent_calc(var(--avatar-group-size)/2+--spacing(0.5)),black_calc(var(--avatar-group-size)/2+--spacing(0.75)))]',\n];\n\nexport function AvatarGroup({ size = 'sm', className, children, ...props }: AvatarGroupProps) {\n const items = Children.toArray(children);\n\n return (\n <AvatarSizeContext.Provider value={size}>\n <div\n {...props}\n data-slot=\"avatar-group\"\n className={cn('flex items-center', groupSizeClasses[size], overlapClasses, className)}\n >\n {items.map((item, index) => (\n <div key={index} data-slot=\"avatar-group-item\" className=\"flex\" style={{ zIndex: items.length - index }}>\n {item}\n </div>\n ))}\n </div>\n </AvatarSizeContext.Provider>\n );\n}\n","import { useContext, type ComponentProps } from 'react';\n\nimport { AvatarSizeContext, avatarIconClasses, avatarSizeClasses, avatarTextClasses } from './avatar-size';\nimport { cn } from '@/lib/utils';\n\nexport type AvatarGroupCountProps = ComponentProps<'div'>;\n\nexport function AvatarGroupCount({ className, ...props }: AvatarGroupCountProps) {\n const size = useContext(AvatarSizeContext) ?? 'sm';\n\n return (\n <div\n {...props}\n data-slot=\"avatar-group-count\"\n data-size={size}\n className={cn(\n 'relative flex shrink-0 items-center justify-center rounded-full bg-muted text-muted-foreground tabular-nums',\n 'after:pointer-events-none after:absolute after:inset-0 after:rounded-full after:border after:border-border',\n avatarSizeClasses[size],\n avatarTextClasses[size],\n avatarIconClasses[size],\n className,\n )}\n />\n );\n}\n","import { Avatar as BaseAvatar } from '@base-ui/react/avatar';\n\nimport { cn } from '@/lib/utils';\n\nexport type AvatarImageProps = Omit<BaseAvatar.Image.Props, 'className' | 'alt'> & {\n alt: string;\n className?: string;\n};\n\nexport function AvatarImage({ className, ...props }: AvatarImageProps) {\n return (\n <BaseAvatar.Image\n {...props}\n data-slot=\"avatar-image\"\n className={cn('size-full rounded-full object-cover', className)}\n />\n );\n}\n","import { AvatarBadge } from './avatar-badge';\nimport { AvatarElement } from './avatar-element';\nimport { AvatarFallback } from './avatar-fallback';\nimport { AvatarGroup } from './avatar-group';\nimport { AvatarGroupCount } from './avatar-group-count';\nimport { AvatarImage } from './avatar-image';\n\nexport type { AvatarSize } from './avatar-size';\nexport type { AvatarProps } from './avatar-named';\nexport type { AvatarRootProps } from './avatar-root';\nexport type { AvatarImageProps } from './avatar-image';\nexport type { AvatarFallbackProps } from './avatar-fallback';\nexport type { AvatarBadgeProps, AvatarBadgeTone } from './avatar-badge';\nexport type { AvatarGroupProps } from './avatar-group';\nexport type { AvatarGroupCountProps } from './avatar-group-count';\n\nexport const Avatar = Object.assign(AvatarElement, {\n Image: AvatarImage,\n Fallback: AvatarFallback,\n Badge: AvatarBadge,\n Group: AvatarGroup,\n GroupCount: AvatarGroupCount,\n});\n"],"names":["BaseAvatar"],"mappings":"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"}
@@ -208,13 +208,19 @@ const Button = React__default.forwardRef(
208
208
  ...target === void 0 ? null : { target },
209
209
  ...prefetch === void 0 ? null : { prefetch }
210
210
  };
211
- const renderedLink = React__default.isValidElement(render) && isLinkElement(render) ? render : void 0;
211
+ const isLinkVariant = resolvedVariant === "link";
212
+ const linkHref = href ?? to;
213
+ const linkRenderProps = {
214
+ ...linkHref === void 0 ? null : { href: linkHref },
215
+ ...target === void 0 ? null : { target }
216
+ };
217
+ const renderedLink = React__default.isValidElement(render) && isLinkElement(render) ? render : isLinkVariant ? React__default.createElement("a", linkRenderProps) : void 0;
212
218
  const renderedLinkProps = renderedLink?.props;
213
219
  const disabledHref = renderedLink?.type !== "a" && renderedLinkProps?.href !== void 0 ? "" : void 0;
214
220
  const disabledTo = renderedLinkProps?.to !== void 0 ? "" : void 0;
215
221
  const disabledLinkProps = disabled ? {
216
- href: disabledHref,
217
- to: disabledTo,
222
+ ...isLinkVariant ? null : { href: disabledHref },
223
+ ...isLinkVariant ? null : { to: disabledTo },
218
224
  "aria-disabled": true,
219
225
  onClick: preventLinkActivation,
220
226
  onAuxClick: preventLinkActivation,
@@ -242,4 +248,4 @@ const Button = React__default.forwardRef(
242
248
  Button.displayName = "Button";
243
249
 
244
250
  export { Button as B, buttonVariants as b, isIconButtonSize as i };
245
- //# sourceMappingURL=Button-C8QDEN9j.js.map
251
+ //# sourceMappingURL=Button-60jVnaHt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button-60jVnaHt.js","sources":["../src/ds/components/Button/Button.tsx"],"sourcesContent":["import { Button as BaseButton } from '@base-ui/react/button';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport React from 'react';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Icon } from '@/ds/icons/Icon';\nimport { iconSizeClasses, type IconSize } from '@/ds/icons/icon-size-classes';\nimport { controlHeight, controlSizeClasses } from '@/ds/primitives/control-size';\nimport {\n controlFocusBorderVisible,\n raisedControlSurfaceStyle,\n sharedFormElementDisabledStyle,\n} from '@/ds/primitives/form-element';\nimport { controlStateColorTransition, focusRingOffset } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n// Adornments for text-mode buttons: gap between icon+label and larger radius.\n// - `[data-slot=button-icon]` styles the `<Icon>` wrapper rendered by the `icon` prop — the only\n// supported way to pair an icon with a label (always on the left, fixed gap).\n// - `[&>svg]` only remains for label-less text-mode buttons (e.g. CopyButton) that pass a bare\n// SVG as children.\n// Excluded from icon-mode because icon-mode wraps children in `<Icon>` and uses its own\n// `rounded-full` (circle).\nconst TEXT_MODE_ADORNMENTS = cn(\n 'gap-[.75em] rounded-full',\n '[&>[data-slot=button-icon]]:-ml-[.3em]',\n '[&>[data-slot=button-icon-end]]:-mr-1',\n '[&>svg]:mx-[-.3em]',\n);\n\nconst LINK_LAYOUT = cn(\n 'relative size-auto gap-1 rounded-xs px-0 text-label',\n 'before:absolute before:-inset-x-2',\n '[&>[data-slot=button-icon-end]]:mr-0 [&>[data-slot=button-icon]]:ml-0 [&>svg]:mx-0',\n);\n\nconst LINK_LABEL = cn(\n 'relative inline-flex items-center gap-1',\n iconSizeClasses.sm,\n '[&>svg]:shrink-0',\n 'after:absolute after:inset-x-0 after:bottom-0 after:h-px after:origin-left after:scale-x-0 after:bg-current',\n 'after:transition-transform after:duration-fast after:ease-out-custom motion-reduce:after:transition-none',\n);\n\n// An icon is secondary to the label beside it, and on a neutral surface it says so with\n// a colour token rather than opacity. Opacity dims against whatever sits behind the\n// control, so the same glyph clears contrast on one surface and fails on another, and it\n// left icon-only buttons with no hover response at all: only their background moved.\n// Filled variants opt out because there the glyph colour carries the meaning.\nconst NEUTRAL_ICON_STATE = cn(\n '[&_svg]:text-muted-foreground not-disabled:hover:[&_svg]:text-foreground aria-disabled:[&_svg]:text-muted-foreground',\n);\n\n// eslint-disable-next-line react-refresh/only-export-components -- exported variant helper is part of Button's public API\nexport const buttonVariants = cva(\n cn(\n 'inline-flex cursor-pointer items-center justify-center',\n controlStateColorTransition,\n sharedFormElementDisabledStyle,\n 'aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:text-muted-foreground',\n controlFocusBorderVisible,\n ),\n {\n variants: {\n variant: {\n // The raised card material, the same one a field wears: a neutral filled control is\n // one material system-wide. No border of its own — the material's rim is its edge,\n // and focus repaints that rim. Inside a ButtonsGroup the group flattens the rim and\n // hands every segment the same 1px border instead (see `buttons-group.css`).\n default: cn(\n 'border-0',\n raisedControlSurfaceStyle,\n NEUTRAL_ICON_STATE,\n 'disabled:bg-fill-subtle aria-disabled:bg-fill-subtle',\n ),\n // Filled variants take the opaque ladder: their rest fill is a colour, not a rung\n // layered on the surface, so a state that thinned it would let whatever the button\n // covers read through the hover it is meant to answer.\n primary: cn(\n 'border border-transparent bg-fill-inverse text-background not-disabled:hover:bg-fill-inverse-hover not-disabled:active:bg-fill-inverse-active',\n focusRingOffset,\n 'focus-visible:border-transparent',\n 'disabled:bg-fill-inverse-disabled disabled:text-background/75 aria-disabled:bg-fill-inverse-disabled aria-disabled:text-background/75',\n ),\n destructive: cn(\n 'border border-transparent bg-fill-destructive text-fill-destructive-foreground not-disabled:hover:bg-fill-destructive-hover not-disabled:active:bg-fill-destructive-active',\n focusRingOffset,\n 'focus-visible:border-transparent',\n 'disabled:bg-fill-destructive-disabled disabled:text-fill-destructive-disabled-foreground aria-disabled:bg-fill-destructive-disabled aria-disabled:text-fill-destructive-disabled-foreground',\n ),\n 'destructive-ghost': cn(\n 'border border-transparent bg-transparent text-destructive-foreground not-disabled:hover:bg-destructive-subtle not-disabled:hover:text-destructive-foreground not-disabled:active:bg-destructive-subtle-active',\n 'disabled:bg-transparent disabled:text-placeholder aria-disabled:bg-transparent aria-disabled:text-placeholder',\n ),\n ghost: cn(\n 'border border-transparent bg-transparent text-muted-foreground not-disabled:hover:bg-fill-subtle not-disabled:hover:text-foreground not-disabled:active:bg-fill',\n 'disabled:bg-transparent aria-disabled:bg-transparent',\n ),\n link: cn(\n 'border-0 bg-transparent text-muted-foreground not-disabled:hover:text-foreground',\n 'not-disabled:hover:[&>[data-slot=button-label]]:after:scale-x-100 not-disabled:hover:[&>[data-slot=button-label]]:after:duration-normal',\n focusRingOffset,\n 'disabled:text-placeholder aria-disabled:text-placeholder',\n ),\n },\n size: {\n sm: cn(controlSizeClasses.sm, iconSizeClasses.sm, 'px-[.9em]', TEXT_MODE_ADORNMENTS),\n md: cn(controlSizeClasses.md, iconSizeClasses.md, 'px-[.9em]', TEXT_MODE_ADORNMENTS),\n lg: cn(controlSizeClasses.lg, iconSizeClasses.lg, 'px-[1em]', TEXT_MODE_ADORNMENTS),\n // Icon sizes: square dimensions, fully rounded → circle. Active state inherits from variant\n // so icon-mode and text-mode use the same press feedback. The glyph is sized by the `Icon`\n // wrapper the component puts around an icon-mode child, keyed off the same scale.\n 'icon-sm': cn(controlHeight.sm, 'w-control-sm rounded-full'),\n 'icon-md': cn(controlHeight.md, 'w-control-md rounded-full'),\n 'icon-lg': cn(controlHeight.lg, 'w-control-lg rounded-full'),\n },\n },\n compoundVariants: [\n { variant: 'link', className: LINK_LAYOUT },\n { variant: 'link', size: ['sm', 'md', 'icon-sm', 'icon-md'], className: 'before:-inset-y-1' },\n { variant: 'link', size: ['lg', 'icon-lg'], className: 'before:-inset-y-1.5' },\n ],\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n },\n);\n\n// Public types derived from cva — single source of truth. Adding a variant or size to\n// `buttonVariants` automatically updates these unions.\ntype ButtonVariantsProps = VariantProps<typeof buttonVariants>;\nexport type ButtonVariant = NonNullable<ButtonVariantsProps['variant']>;\nexport type ButtonSize = NonNullable<ButtonVariantsProps['size']>;\nexport type IconButtonSize = Extract<ButtonSize, `icon-${string}`>;\nexport type TextButtonSize = Exclude<ButtonSize, IconButtonSize>;\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>, ButtonVariantsProps {\n render?: BaseButton.Props['render'];\n className?: string;\n children: React.ReactNode;\n /** Leading icon, always rendered on the left of the label inside `<Icon>`. Ignored in icon-mode sizes. */\n icon?: React.ReactNode;\n iconEnd?: React.ReactNode;\n tooltip?: React.ReactNode;\n /** Side of the trigger the tooltip opens on. Defaults to `top`. */\n tooltipPosition?: 'top' | 'right' | 'bottom' | 'left';\n /** @deprecated Pass the element through `render` instead: `render={<Link href=\"/x\" />}`. */\n as?: React.ElementType;\n /** @deprecated Set it on the element passed to `render`. */\n href?: string;\n /** @deprecated Set it on the element passed to `render`. */\n to?: string;\n /** @deprecated Set it on the element passed to `render`. */\n target?: string;\n /** @deprecated Set it on the element passed to `render`. */\n prefetch?: boolean | null;\n}\n\n// A link is not a button. `render` always entered `BaseButton`, which warns in\n// development when the resolved element is not a native button. `nativeButton={false}`\n// is the worse fix: Base UI then adds `role=\"button\"` and Enter/Space handling, so a\n// screen reader announces a link as a button. Render links directly instead and keep\n// `BaseButton` for real buttons.\nfunction isLinkElement(\n element: React.ReactElement,\n): element is React.ReactElement<{ href?: unknown; to?: unknown; className?: string }> {\n if (element.type === 'a') return true;\n const { href, to } = element.props as { href?: unknown; to?: unknown };\n return href !== undefined || to !== undefined;\n}\n\nfunction preventLinkActivation(event: React.SyntheticEvent): void {\n event.preventDefault();\n event.stopPropagation();\n}\n\ntype LinkRenderProps = { href?: string; to?: string; target?: string; className?: string };\n\n// One icon step per control step: a glyph is sized by the rung it sits in, so the\n// same nominal size renders the same icon whether it arrives as an icon-mode child,\n// the `icon` prop, or a bare SVG.\nconst iconSizeMap: Record<ButtonSize, IconSize> = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n 'icon-sm': 'sm',\n 'icon-md': 'md',\n 'icon-lg': 'lg',\n};\n\nfunction adornmentIconSize(variant: ButtonVariant, size: ButtonSize): IconSize {\n if (variant === 'link') return 'sm';\n return iconSizeMap[size];\n}\n\nfunction ButtonAdornment({ slot, size, children }: { slot: string; size: IconSize; children: React.ReactNode }) {\n if (!children) return undefined;\n return (\n <Icon data-slot={slot} size={size}>\n {children}\n </Icon>\n );\n}\n\nfunction ButtonLabel({ variant, children }: { variant: ButtonVariant; children: React.ReactNode }) {\n if (variant !== 'link') return children;\n return (\n <span data-slot=\"button-label\" className={LINK_LABEL}>\n {children}\n </span>\n );\n}\n\n// Walks React children, expanding `<></>` fragments so `isIconOnly` can inspect the real\n// elements inside. `<Button><><Icon/></></Button>` should still count as icon-only.\nfunction flattenChildren(children: React.ReactNode): React.ReactNode[] {\n const result: React.ReactNode[] = [];\n React.Children.forEach(children, child => {\n if (React.isValidElement<{ children?: React.ReactNode }>(child) && child.type === React.Fragment) {\n result.push(...flattenChildren(child.props.children));\n } else {\n result.push(child);\n }\n });\n return result;\n}\n\n// True when every child is a React element (no text/label). Used in text-mode to brighten the\n// SVG of label-less buttons so the glyph reads stronger.\nfunction isIconOnly(children: React.ReactNode): boolean {\n const flat = flattenChildren(children);\n return flat.length > 0 && flat.every(child => React.isValidElement(child));\n}\n\n// Type guard: narrows `ButtonSize` to `IconButtonSize`, so an icon-mode button can be\n// told from a text-mode one without a cast.\n// eslint-disable-next-line react-refresh/only-export-components -- shared with Combobox's icon-only trigger\nexport function isIconButtonSize(size: ButtonSize | null | undefined): size is IconButtonSize {\n return size?.startsWith('icon-') ?? false;\n}\n\nexport const Button = React.forwardRef<HTMLElement, ButtonProps>(\n (\n {\n className,\n render,\n as: asProp,\n href,\n to,\n target,\n prefetch,\n size,\n variant = 'default',\n disabled,\n children,\n icon,\n iconEnd,\n tooltip,\n tooltipPosition,\n 'aria-label': ariaLabelProp,\n type,\n ...props\n },\n ref,\n ) => {\n const iconMode = variant !== 'link' && isIconButtonSize(size);\n const resolvedSize: ButtonSize = size ?? 'md';\n const resolvedVariant: ButtonVariant = variant ?? 'default';\n const isLabelless = !iconMode && isIconOnly(children);\n const adornmentSize = adornmentIconSize(resolvedVariant, resolvedSize);\n\n // Icon-only buttons need an a11y label. If a string tooltip is provided, reuse it.\n const ariaLabel = ariaLabelProp ?? ((iconMode || isLabelless) && typeof tooltip === 'string' ? tooltip : undefined);\n\n const content = iconMode ? (\n <Icon size={iconSizeMap[resolvedSize]}>{children}</Icon>\n ) : (\n <>\n <ButtonAdornment slot=\"button-icon\" size={adornmentSize}>\n {icon}\n </ButtonAdornment>\n <ButtonLabel variant={resolvedVariant}>{children}</ButtonLabel>\n <ButtonAdornment slot=\"button-icon-end\" size={adornmentSize}>\n {iconEnd}\n </ButtonAdornment>\n </>\n );\n\n const sharedProps = {\n disabled,\n // Base UI renders `type=\"button\"` when the prop is absent, which would quietly stop\n // a form button that relied on the native `submit` default from submitting. Passing\n // it through, `undefined` included, keeps native semantics: absent stays absent.\n type,\n 'aria-label': ariaLabel,\n // Expose the variant so a parent ButtonsGroup can detect FILLED segments in CSS\n // (filled buttons have an opaque background that hides a border seam, so the group\n // paints their divider as an inset box-shadow instead — see buttons-group.css).\n 'data-variant': variant,\n // Icon-mode is a square: a group that overrides the rung has to move the width with\n // the height or the circle turns into a pill (see buttons-group.css).\n 'data-shape': iconMode ? 'icon' : undefined,\n className: cn(buttonVariants({ variant, size: resolvedSize }), className),\n ...props,\n };\n\n // The deprecated `as` API keeps its original element path rather than going through\n // Base UI. Routing it through `render` drops props Base UI does not know about — a\n // router link loses its `to` and stops navigating — and Base UI warns that a\n // non-<button> contradicts `nativeButton`.\n const LegacyComponent = render ? undefined : asProp;\n\n // Only forward what the caller actually set. Passing `href={undefined}` through to a\n // router link overwrites the href that link derives from `to`, leaving an anchor that\n // renders correctly and navigates nowhere.\n const legacyLinkProps = {\n ...(href === undefined ? null : { href }),\n ...(to === undefined ? null : { to }),\n ...(target === undefined ? null : { target }),\n ...(prefetch === undefined ? null : { prefetch }),\n };\n\n const isLinkVariant = resolvedVariant === 'link';\n const linkHref = href ?? to;\n const linkRenderProps: LinkRenderProps = {\n ...(linkHref === undefined ? null : { href: linkHref }),\n ...(target === undefined ? null : { target }),\n };\n const renderedLink =\n React.isValidElement(render) && isLinkElement(render)\n ? render\n : isLinkVariant\n ? React.createElement('a', linkRenderProps)\n : undefined;\n const renderedLinkProps = renderedLink?.props;\n const disabledHref = renderedLink?.type !== 'a' && renderedLinkProps?.href !== undefined ? '' : undefined;\n const disabledTo = renderedLinkProps?.to !== undefined ? '' : undefined;\n const disabledLinkProps = disabled\n ? {\n ...(isLinkVariant ? null : { href: disabledHref }),\n ...(isLinkVariant ? null : { to: disabledTo }),\n 'aria-disabled': true,\n onClick: preventLinkActivation,\n onAuxClick: preventLinkActivation,\n onKeyDown: (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') preventLinkActivation(event);\n },\n }\n : undefined;\n\n const button = LegacyComponent ? (\n <LegacyComponent ref={ref} {...legacyLinkProps} {...sharedProps}>\n {content}\n </LegacyComponent>\n ) : renderedLink ? (\n React.cloneElement(renderedLink as React.ReactElement<Record<string, unknown>>, {\n ref,\n ...sharedProps,\n disabled: undefined,\n ...disabledLinkProps,\n className: cn(sharedProps.className, renderedLink.props.className),\n children: content,\n })\n ) : (\n <BaseButton ref={ref} render={render} {...sharedProps}>\n {content}\n </BaseButton>\n );\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side={tooltipPosition}>{tooltip}</TooltipContent>\n </Tooltip>\n );\n }\n\n return button;\n },\n);\n\nButton.displayName = 'Button';\n"],"names":["React","BaseButton"],"mappings":"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"}
@@ -210,13 +210,19 @@ const Button = React.forwardRef(
210
210
  ...target === void 0 ? null : { target },
211
211
  ...prefetch === void 0 ? null : { prefetch }
212
212
  };
213
- const renderedLink = React.isValidElement(render) && isLinkElement(render) ? render : void 0;
213
+ const isLinkVariant = resolvedVariant === "link";
214
+ const linkHref = href ?? to;
215
+ const linkRenderProps = {
216
+ ...linkHref === void 0 ? null : { href: linkHref },
217
+ ...target === void 0 ? null : { target }
218
+ };
219
+ const renderedLink = React.isValidElement(render) && isLinkElement(render) ? render : isLinkVariant ? React.createElement("a", linkRenderProps) : void 0;
214
220
  const renderedLinkProps = renderedLink?.props;
215
221
  const disabledHref = renderedLink?.type !== "a" && renderedLinkProps?.href !== void 0 ? "" : void 0;
216
222
  const disabledTo = renderedLinkProps?.to !== void 0 ? "" : void 0;
217
223
  const disabledLinkProps = disabled ? {
218
- href: disabledHref,
219
- to: disabledTo,
224
+ ...isLinkVariant ? null : { href: disabledHref },
225
+ ...isLinkVariant ? null : { to: disabledTo },
220
226
  "aria-disabled": true,
221
227
  onClick: preventLinkActivation,
222
228
  onAuxClick: preventLinkActivation,
@@ -246,4 +252,4 @@ Button.displayName = "Button";
246
252
  exports.Button = Button;
247
253
  exports.buttonVariants = buttonVariants;
248
254
  exports.isIconButtonSize = isIconButtonSize;
249
- //# sourceMappingURL=Button-BfZzgZrA.cjs.map
255
+ //# sourceMappingURL=Button-CAVPKK09.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button-CAVPKK09.cjs","sources":["../src/ds/components/Button/Button.tsx"],"sourcesContent":["import { Button as BaseButton } from '@base-ui/react/button';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport React from 'react';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Icon } from '@/ds/icons/Icon';\nimport { iconSizeClasses, type IconSize } from '@/ds/icons/icon-size-classes';\nimport { controlHeight, controlSizeClasses } from '@/ds/primitives/control-size';\nimport {\n controlFocusBorderVisible,\n raisedControlSurfaceStyle,\n sharedFormElementDisabledStyle,\n} from '@/ds/primitives/form-element';\nimport { controlStateColorTransition, focusRingOffset } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n// Adornments for text-mode buttons: gap between icon+label and larger radius.\n// - `[data-slot=button-icon]` styles the `<Icon>` wrapper rendered by the `icon` prop — the only\n// supported way to pair an icon with a label (always on the left, fixed gap).\n// - `[&>svg]` only remains for label-less text-mode buttons (e.g. CopyButton) that pass a bare\n// SVG as children.\n// Excluded from icon-mode because icon-mode wraps children in `<Icon>` and uses its own\n// `rounded-full` (circle).\nconst TEXT_MODE_ADORNMENTS = cn(\n 'gap-[.75em] rounded-full',\n '[&>[data-slot=button-icon]]:-ml-[.3em]',\n '[&>[data-slot=button-icon-end]]:-mr-1',\n '[&>svg]:mx-[-.3em]',\n);\n\nconst LINK_LAYOUT = cn(\n 'relative size-auto gap-1 rounded-xs px-0 text-label',\n 'before:absolute before:-inset-x-2',\n '[&>[data-slot=button-icon-end]]:mr-0 [&>[data-slot=button-icon]]:ml-0 [&>svg]:mx-0',\n);\n\nconst LINK_LABEL = cn(\n 'relative inline-flex items-center gap-1',\n iconSizeClasses.sm,\n '[&>svg]:shrink-0',\n 'after:absolute after:inset-x-0 after:bottom-0 after:h-px after:origin-left after:scale-x-0 after:bg-current',\n 'after:transition-transform after:duration-fast after:ease-out-custom motion-reduce:after:transition-none',\n);\n\n// An icon is secondary to the label beside it, and on a neutral surface it says so with\n// a colour token rather than opacity. Opacity dims against whatever sits behind the\n// control, so the same glyph clears contrast on one surface and fails on another, and it\n// left icon-only buttons with no hover response at all: only their background moved.\n// Filled variants opt out because there the glyph colour carries the meaning.\nconst NEUTRAL_ICON_STATE = cn(\n '[&_svg]:text-muted-foreground not-disabled:hover:[&_svg]:text-foreground aria-disabled:[&_svg]:text-muted-foreground',\n);\n\n// eslint-disable-next-line react-refresh/only-export-components -- exported variant helper is part of Button's public API\nexport const buttonVariants = cva(\n cn(\n 'inline-flex cursor-pointer items-center justify-center',\n controlStateColorTransition,\n sharedFormElementDisabledStyle,\n 'aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:text-muted-foreground',\n controlFocusBorderVisible,\n ),\n {\n variants: {\n variant: {\n // The raised card material, the same one a field wears: a neutral filled control is\n // one material system-wide. No border of its own — the material's rim is its edge,\n // and focus repaints that rim. Inside a ButtonsGroup the group flattens the rim and\n // hands every segment the same 1px border instead (see `buttons-group.css`).\n default: cn(\n 'border-0',\n raisedControlSurfaceStyle,\n NEUTRAL_ICON_STATE,\n 'disabled:bg-fill-subtle aria-disabled:bg-fill-subtle',\n ),\n // Filled variants take the opaque ladder: their rest fill is a colour, not a rung\n // layered on the surface, so a state that thinned it would let whatever the button\n // covers read through the hover it is meant to answer.\n primary: cn(\n 'border border-transparent bg-fill-inverse text-background not-disabled:hover:bg-fill-inverse-hover not-disabled:active:bg-fill-inverse-active',\n focusRingOffset,\n 'focus-visible:border-transparent',\n 'disabled:bg-fill-inverse-disabled disabled:text-background/75 aria-disabled:bg-fill-inverse-disabled aria-disabled:text-background/75',\n ),\n destructive: cn(\n 'border border-transparent bg-fill-destructive text-fill-destructive-foreground not-disabled:hover:bg-fill-destructive-hover not-disabled:active:bg-fill-destructive-active',\n focusRingOffset,\n 'focus-visible:border-transparent',\n 'disabled:bg-fill-destructive-disabled disabled:text-fill-destructive-disabled-foreground aria-disabled:bg-fill-destructive-disabled aria-disabled:text-fill-destructive-disabled-foreground',\n ),\n 'destructive-ghost': cn(\n 'border border-transparent bg-transparent text-destructive-foreground not-disabled:hover:bg-destructive-subtle not-disabled:hover:text-destructive-foreground not-disabled:active:bg-destructive-subtle-active',\n 'disabled:bg-transparent disabled:text-placeholder aria-disabled:bg-transparent aria-disabled:text-placeholder',\n ),\n ghost: cn(\n 'border border-transparent bg-transparent text-muted-foreground not-disabled:hover:bg-fill-subtle not-disabled:hover:text-foreground not-disabled:active:bg-fill',\n 'disabled:bg-transparent aria-disabled:bg-transparent',\n ),\n link: cn(\n 'border-0 bg-transparent text-muted-foreground not-disabled:hover:text-foreground',\n 'not-disabled:hover:[&>[data-slot=button-label]]:after:scale-x-100 not-disabled:hover:[&>[data-slot=button-label]]:after:duration-normal',\n focusRingOffset,\n 'disabled:text-placeholder aria-disabled:text-placeholder',\n ),\n },\n size: {\n sm: cn(controlSizeClasses.sm, iconSizeClasses.sm, 'px-[.9em]', TEXT_MODE_ADORNMENTS),\n md: cn(controlSizeClasses.md, iconSizeClasses.md, 'px-[.9em]', TEXT_MODE_ADORNMENTS),\n lg: cn(controlSizeClasses.lg, iconSizeClasses.lg, 'px-[1em]', TEXT_MODE_ADORNMENTS),\n // Icon sizes: square dimensions, fully rounded → circle. Active state inherits from variant\n // so icon-mode and text-mode use the same press feedback. The glyph is sized by the `Icon`\n // wrapper the component puts around an icon-mode child, keyed off the same scale.\n 'icon-sm': cn(controlHeight.sm, 'w-control-sm rounded-full'),\n 'icon-md': cn(controlHeight.md, 'w-control-md rounded-full'),\n 'icon-lg': cn(controlHeight.lg, 'w-control-lg rounded-full'),\n },\n },\n compoundVariants: [\n { variant: 'link', className: LINK_LAYOUT },\n { variant: 'link', size: ['sm', 'md', 'icon-sm', 'icon-md'], className: 'before:-inset-y-1' },\n { variant: 'link', size: ['lg', 'icon-lg'], className: 'before:-inset-y-1.5' },\n ],\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n },\n);\n\n// Public types derived from cva — single source of truth. Adding a variant or size to\n// `buttonVariants` automatically updates these unions.\ntype ButtonVariantsProps = VariantProps<typeof buttonVariants>;\nexport type ButtonVariant = NonNullable<ButtonVariantsProps['variant']>;\nexport type ButtonSize = NonNullable<ButtonVariantsProps['size']>;\nexport type IconButtonSize = Extract<ButtonSize, `icon-${string}`>;\nexport type TextButtonSize = Exclude<ButtonSize, IconButtonSize>;\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>, ButtonVariantsProps {\n render?: BaseButton.Props['render'];\n className?: string;\n children: React.ReactNode;\n /** Leading icon, always rendered on the left of the label inside `<Icon>`. Ignored in icon-mode sizes. */\n icon?: React.ReactNode;\n iconEnd?: React.ReactNode;\n tooltip?: React.ReactNode;\n /** Side of the trigger the tooltip opens on. Defaults to `top`. */\n tooltipPosition?: 'top' | 'right' | 'bottom' | 'left';\n /** @deprecated Pass the element through `render` instead: `render={<Link href=\"/x\" />}`. */\n as?: React.ElementType;\n /** @deprecated Set it on the element passed to `render`. */\n href?: string;\n /** @deprecated Set it on the element passed to `render`. */\n to?: string;\n /** @deprecated Set it on the element passed to `render`. */\n target?: string;\n /** @deprecated Set it on the element passed to `render`. */\n prefetch?: boolean | null;\n}\n\n// A link is not a button. `render` always entered `BaseButton`, which warns in\n// development when the resolved element is not a native button. `nativeButton={false}`\n// is the worse fix: Base UI then adds `role=\"button\"` and Enter/Space handling, so a\n// screen reader announces a link as a button. Render links directly instead and keep\n// `BaseButton` for real buttons.\nfunction isLinkElement(\n element: React.ReactElement,\n): element is React.ReactElement<{ href?: unknown; to?: unknown; className?: string }> {\n if (element.type === 'a') return true;\n const { href, to } = element.props as { href?: unknown; to?: unknown };\n return href !== undefined || to !== undefined;\n}\n\nfunction preventLinkActivation(event: React.SyntheticEvent): void {\n event.preventDefault();\n event.stopPropagation();\n}\n\ntype LinkRenderProps = { href?: string; to?: string; target?: string; className?: string };\n\n// One icon step per control step: a glyph is sized by the rung it sits in, so the\n// same nominal size renders the same icon whether it arrives as an icon-mode child,\n// the `icon` prop, or a bare SVG.\nconst iconSizeMap: Record<ButtonSize, IconSize> = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n 'icon-sm': 'sm',\n 'icon-md': 'md',\n 'icon-lg': 'lg',\n};\n\nfunction adornmentIconSize(variant: ButtonVariant, size: ButtonSize): IconSize {\n if (variant === 'link') return 'sm';\n return iconSizeMap[size];\n}\n\nfunction ButtonAdornment({ slot, size, children }: { slot: string; size: IconSize; children: React.ReactNode }) {\n if (!children) return undefined;\n return (\n <Icon data-slot={slot} size={size}>\n {children}\n </Icon>\n );\n}\n\nfunction ButtonLabel({ variant, children }: { variant: ButtonVariant; children: React.ReactNode }) {\n if (variant !== 'link') return children;\n return (\n <span data-slot=\"button-label\" className={LINK_LABEL}>\n {children}\n </span>\n );\n}\n\n// Walks React children, expanding `<></>` fragments so `isIconOnly` can inspect the real\n// elements inside. `<Button><><Icon/></></Button>` should still count as icon-only.\nfunction flattenChildren(children: React.ReactNode): React.ReactNode[] {\n const result: React.ReactNode[] = [];\n React.Children.forEach(children, child => {\n if (React.isValidElement<{ children?: React.ReactNode }>(child) && child.type === React.Fragment) {\n result.push(...flattenChildren(child.props.children));\n } else {\n result.push(child);\n }\n });\n return result;\n}\n\n// True when every child is a React element (no text/label). Used in text-mode to brighten the\n// SVG of label-less buttons so the glyph reads stronger.\nfunction isIconOnly(children: React.ReactNode): boolean {\n const flat = flattenChildren(children);\n return flat.length > 0 && flat.every(child => React.isValidElement(child));\n}\n\n// Type guard: narrows `ButtonSize` to `IconButtonSize`, so an icon-mode button can be\n// told from a text-mode one without a cast.\n// eslint-disable-next-line react-refresh/only-export-components -- shared with Combobox's icon-only trigger\nexport function isIconButtonSize(size: ButtonSize | null | undefined): size is IconButtonSize {\n return size?.startsWith('icon-') ?? false;\n}\n\nexport const Button = React.forwardRef<HTMLElement, ButtonProps>(\n (\n {\n className,\n render,\n as: asProp,\n href,\n to,\n target,\n prefetch,\n size,\n variant = 'default',\n disabled,\n children,\n icon,\n iconEnd,\n tooltip,\n tooltipPosition,\n 'aria-label': ariaLabelProp,\n type,\n ...props\n },\n ref,\n ) => {\n const iconMode = variant !== 'link' && isIconButtonSize(size);\n const resolvedSize: ButtonSize = size ?? 'md';\n const resolvedVariant: ButtonVariant = variant ?? 'default';\n const isLabelless = !iconMode && isIconOnly(children);\n const adornmentSize = adornmentIconSize(resolvedVariant, resolvedSize);\n\n // Icon-only buttons need an a11y label. If a string tooltip is provided, reuse it.\n const ariaLabel = ariaLabelProp ?? ((iconMode || isLabelless) && typeof tooltip === 'string' ? tooltip : undefined);\n\n const content = iconMode ? (\n <Icon size={iconSizeMap[resolvedSize]}>{children}</Icon>\n ) : (\n <>\n <ButtonAdornment slot=\"button-icon\" size={adornmentSize}>\n {icon}\n </ButtonAdornment>\n <ButtonLabel variant={resolvedVariant}>{children}</ButtonLabel>\n <ButtonAdornment slot=\"button-icon-end\" size={adornmentSize}>\n {iconEnd}\n </ButtonAdornment>\n </>\n );\n\n const sharedProps = {\n disabled,\n // Base UI renders `type=\"button\"` when the prop is absent, which would quietly stop\n // a form button that relied on the native `submit` default from submitting. Passing\n // it through, `undefined` included, keeps native semantics: absent stays absent.\n type,\n 'aria-label': ariaLabel,\n // Expose the variant so a parent ButtonsGroup can detect FILLED segments in CSS\n // (filled buttons have an opaque background that hides a border seam, so the group\n // paints their divider as an inset box-shadow instead — see buttons-group.css).\n 'data-variant': variant,\n // Icon-mode is a square: a group that overrides the rung has to move the width with\n // the height or the circle turns into a pill (see buttons-group.css).\n 'data-shape': iconMode ? 'icon' : undefined,\n className: cn(buttonVariants({ variant, size: resolvedSize }), className),\n ...props,\n };\n\n // The deprecated `as` API keeps its original element path rather than going through\n // Base UI. Routing it through `render` drops props Base UI does not know about — a\n // router link loses its `to` and stops navigating — and Base UI warns that a\n // non-<button> contradicts `nativeButton`.\n const LegacyComponent = render ? undefined : asProp;\n\n // Only forward what the caller actually set. Passing `href={undefined}` through to a\n // router link overwrites the href that link derives from `to`, leaving an anchor that\n // renders correctly and navigates nowhere.\n const legacyLinkProps = {\n ...(href === undefined ? null : { href }),\n ...(to === undefined ? null : { to }),\n ...(target === undefined ? null : { target }),\n ...(prefetch === undefined ? null : { prefetch }),\n };\n\n const isLinkVariant = resolvedVariant === 'link';\n const linkHref = href ?? to;\n const linkRenderProps: LinkRenderProps = {\n ...(linkHref === undefined ? null : { href: linkHref }),\n ...(target === undefined ? null : { target }),\n };\n const renderedLink =\n React.isValidElement(render) && isLinkElement(render)\n ? render\n : isLinkVariant\n ? React.createElement('a', linkRenderProps)\n : undefined;\n const renderedLinkProps = renderedLink?.props;\n const disabledHref = renderedLink?.type !== 'a' && renderedLinkProps?.href !== undefined ? '' : undefined;\n const disabledTo = renderedLinkProps?.to !== undefined ? '' : undefined;\n const disabledLinkProps = disabled\n ? {\n ...(isLinkVariant ? null : { href: disabledHref }),\n ...(isLinkVariant ? null : { to: disabledTo }),\n 'aria-disabled': true,\n onClick: preventLinkActivation,\n onAuxClick: preventLinkActivation,\n onKeyDown: (event: React.KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') preventLinkActivation(event);\n },\n }\n : undefined;\n\n const button = LegacyComponent ? (\n <LegacyComponent ref={ref} {...legacyLinkProps} {...sharedProps}>\n {content}\n </LegacyComponent>\n ) : renderedLink ? (\n React.cloneElement(renderedLink as React.ReactElement<Record<string, unknown>>, {\n ref,\n ...sharedProps,\n disabled: undefined,\n ...disabledLinkProps,\n className: cn(sharedProps.className, renderedLink.props.className),\n children: content,\n })\n ) : (\n <BaseButton ref={ref} render={render} {...sharedProps}>\n {content}\n </BaseButton>\n );\n\n if (tooltip) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent side={tooltipPosition}>{tooltip}</TooltipContent>\n </Tooltip>\n );\n }\n\n return button;\n },\n);\n\nButton.displayName = 'Button';\n"],"names":["cn","iconSizeClasses","cva","controlStateColorTransition","sharedFormElementDisabledStyle","controlFocusBorderVisible","raisedControlSurfaceStyle","focusRingOffset","controlSizeClasses","controlHeight","jsx","Icon","tooltip","jsxs","Fragment","button","BaseButton","Tooltip","TooltipTrigger","TooltipContent"],"mappings":"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"}