@mastra/playground-ui 58.0.0 → 58.1.0-alpha.0

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 (176) hide show
  1. package/dist/{Badge-TD55_qZJ.js → Badge-Bzn8Z-_I.js} +2 -2
  2. package/dist/Badge-Bzn8Z-_I.js.map +1 -0
  3. package/dist/{Badge-BEeYtjmv.cjs → Badge-DFNxcz-r.cjs} +2 -2
  4. package/dist/Badge-DFNxcz-r.cjs.map +1 -0
  5. package/dist/{ask-user-jDUt7hgT.js → ask-user-DtF4a9Vr.js} +2 -2
  6. package/dist/{ask-user-jDUt7hgT.js.map → ask-user-DtF4a9Vr.js.map} +1 -1
  7. package/dist/{ask-user-BPpgiE7k.cjs → ask-user-pPTuoPKI.cjs} +2 -2
  8. package/dist/{ask-user-BPpgiE7k.cjs.map → ask-user-pPTuoPKI.cjs.map} +1 -1
  9. package/dist/{chat-notification-CmdRGO_D.js → chat-notification-C4P2InUX.js} +2 -2
  10. package/dist/{chat-notification-CmdRGO_D.js.map → chat-notification-C4P2InUX.js.map} +1 -1
  11. package/dist/{chat-notification-DJykWtoj.cjs → chat-notification-HP18KxlS.cjs} +2 -2
  12. package/dist/{chat-notification-DJykWtoj.cjs.map → chat-notification-HP18KxlS.cjs.map} +1 -1
  13. package/dist/{chat-signal-xs3FkPts.cjs → chat-signal-BP9RN6Rh.cjs} +2 -2
  14. package/dist/{chat-signal-xs3FkPts.cjs.map → chat-signal-BP9RN6Rh.cjs.map} +1 -1
  15. package/dist/{chat-signal-Vg8pGXwH.js → chat-signal-CQnmFp3V.js} +2 -2
  16. package/dist/{chat-signal-Vg8pGXwH.js.map → chat-signal-CQnmFp3V.js.map} +1 -1
  17. package/dist/components/Badge.cjs.js +1 -1
  18. package/dist/components/Badge.es.js +1 -1
  19. package/dist/components/DataList.cjs.js +1 -1
  20. package/dist/components/DataList.es.js +1 -1
  21. package/dist/components/ItemList.cjs.js +1 -1
  22. package/dist/components/ItemList.es.js +1 -1
  23. package/dist/components/LogsDataList.cjs.js +1 -1
  24. package/dist/components/LogsDataList.es.js +1 -1
  25. package/dist/components/MetricsCard.cjs.js +1 -1
  26. package/dist/components/MetricsCard.es.js +1 -1
  27. package/dist/components/MetricsCardGroup.cjs.js +2 -11
  28. package/dist/components/MetricsCardGroup.cjs.js.map +1 -1
  29. package/dist/components/MetricsCardGroup.es.js +2 -11
  30. package/dist/components/MetricsCardGroup.es.js.map +1 -1
  31. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  32. package/dist/components/MetricsKpiCard.es.js +1 -1
  33. package/dist/components/MetricsLineChart.cjs.js +2 -1
  34. package/dist/components/MetricsLineChart.cjs.js.map +1 -1
  35. package/dist/components/MetricsLineChart.es.js +1 -1
  36. package/dist/components/PageHeader.cjs.js +1 -1
  37. package/dist/components/PageHeader.es.js +1 -1
  38. package/dist/components/Workflow.cjs.js +1 -1
  39. package/dist/components/Workflow.es.js +1 -1
  40. package/dist/components/ai/ask-user.cjs.js +1 -1
  41. package/dist/components/ai/ask-user.es.js +1 -1
  42. package/dist/components/ai/chat-event.cjs.js +2 -2
  43. package/dist/components/ai/chat-event.es.js +3 -3
  44. package/dist/components/ai/plan.cjs.js +1 -1
  45. package/dist/components/ai/plan.es.js +1 -1
  46. package/dist/components/ai/task-list.cjs.js +370 -55
  47. package/dist/components/ai/task-list.cjs.js.map +1 -1
  48. package/dist/components/ai/task-list.es.js +374 -58
  49. package/dist/components/ai/task-list.es.js.map +1 -1
  50. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  51. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  52. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  53. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  54. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  55. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  56. package/dist/domains/chat/messages/tripwire-notice.cjs.js +1 -1
  57. package/dist/domains/chat/messages/tripwire-notice.es.js +1 -1
  58. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  59. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  60. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
  61. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
  62. package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
  63. package/dist/domains/logs/components/logs-list-view.es.js +1 -1
  64. package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
  65. package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
  66. package/dist/domains/metrics/components/latency-card-view.cjs.js +33 -24
  67. package/dist/domains/metrics/components/latency-card-view.cjs.js.map +1 -1
  68. package/dist/domains/metrics/components/latency-card-view.es.js +34 -25
  69. package/dist/domains/metrics/components/latency-card-view.es.js.map +1 -1
  70. package/dist/domains/metrics/components/memory-card-view.cjs.js +3 -3
  71. package/dist/domains/metrics/components/memory-card-view.cjs.js.map +1 -1
  72. package/dist/domains/metrics/components/memory-card-view.es.js +3 -3
  73. package/dist/domains/metrics/components/memory-card-view.es.js.map +1 -1
  74. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
  75. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
  76. package/dist/domains/metrics/components/scores-card-view.cjs.js +4 -4
  77. package/dist/domains/metrics/components/scores-card-view.cjs.js.map +1 -1
  78. package/dist/domains/metrics/components/scores-card-view.es.js +4 -4
  79. package/dist/domains/metrics/components/scores-card-view.es.js.map +1 -1
  80. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +3 -3
  81. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js.map +1 -1
  82. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +3 -3
  83. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js.map +1 -1
  84. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +10 -9
  85. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js.map +1 -1
  86. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +10 -9
  87. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js.map +1 -1
  88. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +4 -4
  89. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js.map +1 -1
  90. package/dist/domains/metrics/components/traces-volume-card-view.es.js +4 -4
  91. package/dist/domains/metrics/components/traces-volume-card-view.es.js.map +1 -1
  92. package/dist/domains/metrics/hooks/use-latency-metrics.cjs.js +11 -11
  93. package/dist/domains/metrics/hooks/use-latency-metrics.cjs.js.map +1 -1
  94. package/dist/domains/metrics/hooks/use-latency-metrics.es.js +12 -11
  95. package/dist/domains/metrics/hooks/use-latency-metrics.es.js.map +1 -1
  96. package/dist/domains/metrics/hooks/use-token-usage-timeseries.cjs.js +4 -12
  97. package/dist/domains/metrics/hooks/use-token-usage-timeseries.cjs.js.map +1 -1
  98. package/dist/domains/metrics/hooks/use-token-usage-timeseries.es.js +4 -12
  99. package/dist/domains/metrics/hooks/use-token-usage-timeseries.es.js.map +1 -1
  100. package/dist/domains/metrics/hooks.cjs.js +3 -0
  101. package/dist/domains/metrics/hooks.cjs.js.map +1 -1
  102. package/dist/domains/metrics/hooks.es.js +1 -0
  103. package/dist/domains/metrics/hooks.es.js.map +1 -1
  104. package/dist/domains/metrics/metrics-interval.cjs.js +18 -0
  105. package/dist/domains/metrics/metrics-interval.cjs.js.map +1 -0
  106. package/dist/domains/metrics/metrics-interval.d.ts +2 -0
  107. package/dist/domains/metrics/metrics-interval.es.js +13 -0
  108. package/dist/domains/metrics/metrics-interval.es.js.map +1 -0
  109. package/dist/domains/metrics.cjs.js +3 -0
  110. package/dist/domains/metrics.cjs.js.map +1 -1
  111. package/dist/domains/metrics.es.js +1 -0
  112. package/dist/domains/metrics.es.js.map +1 -1
  113. package/dist/domains/traces/components/span-type-legend.cjs.js +1 -1
  114. package/dist/domains/traces/components/span-type-legend.es.js +1 -1
  115. package/dist/domains/traces/components/traces-list-view.cjs.js +1 -1
  116. package/dist/domains/traces/components/traces-list-view.es.js +1 -1
  117. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +1 -1
  118. package/dist/ee/signals/components/entity-index-compact-grid.es.js +1 -1
  119. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
  120. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  121. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +1 -1
  122. package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
  123. package/dist/{logs-data-list-YL9yLKF3.cjs → logs-data-list-BHvJOeec.cjs} +2 -2
  124. package/dist/{logs-data-list-YL9yLKF3.cjs.map → logs-data-list-BHvJOeec.cjs.map} +1 -1
  125. package/dist/{logs-data-list-5BAeLU57.js → logs-data-list-CgDcNIvS.js} +2 -2
  126. package/dist/{logs-data-list-5BAeLU57.js.map → logs-data-list-CgDcNIvS.js.map} +1 -1
  127. package/dist/{metrics-card-Bzm6m1dy.js → metrics-card-C2RTi5Ew.js} +7 -7
  128. package/dist/metrics-card-C2RTi5Ew.js.map +1 -0
  129. package/dist/{metrics-card-DCCHIG-z.cjs → metrics-card-DzcVJTAN.cjs} +7 -7
  130. package/dist/metrics-card-DzcVJTAN.cjs.map +1 -0
  131. package/dist/{metrics-kpi-card-BrnFhFQm.js → metrics-kpi-card-BVCuXeDa.js} +21 -10
  132. package/dist/metrics-kpi-card-BVCuXeDa.js.map +1 -0
  133. package/dist/{metrics-kpi-card-Bhb4R4z0.cjs → metrics-kpi-card-DoIeHfv6.cjs} +21 -10
  134. package/dist/metrics-kpi-card-DoIeHfv6.cjs.map +1 -0
  135. package/dist/{metrics-line-chart-0FR3SYSt.cjs → metrics-line-chart-BNNRRxM8.cjs} +61 -25
  136. package/dist/metrics-line-chart-BNNRRxM8.cjs.map +1 -0
  137. package/dist/{metrics-line-chart-knlgw8bV.js → metrics-line-chart-CT_pqJtC.js} +62 -27
  138. package/dist/metrics-line-chart-CT_pqJtC.js.map +1 -0
  139. package/dist/new/layout/page-header.cjs.js +1 -1
  140. package/dist/new/layout/page-header.es.js +1 -1
  141. package/dist/{page-header-CyXAezlZ.js → page-header-BGyZw13s.js} +2 -2
  142. package/dist/page-header-BGyZw13s.js.map +1 -0
  143. package/dist/{page-header-Dk3s3XtC.cjs → page-header-CqvBk1wE.cjs} +2 -2
  144. package/dist/page-header-CqvBk1wE.cjs.map +1 -0
  145. package/dist/src/domains/metrics/components/latency-card-view.d.ts +4 -1
  146. package/dist/src/domains/metrics/hooks/index.d.ts +1 -0
  147. package/dist/src/domains/metrics/hooks/use-latency-metrics.d.ts +2 -2
  148. package/dist/src/domains/metrics/hooks/use-token-usage-timeseries.d.ts +2 -1
  149. package/dist/src/domains/metrics/metrics-interval.d.ts +7 -0
  150. package/dist/src/ds/components/MetricsCardGroup/metrics-card-group.d.ts +3 -8
  151. package/dist/src/ds/components/MetricsLineChart/index.d.ts +1 -0
  152. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart-legend.d.ts +6 -0
  153. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.d.ts +6 -4
  154. package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.stories.d.ts +1 -0
  155. package/dist/src/ds/components/ai/task-list/task-graph-node.d.ts +8 -0
  156. package/dist/src/ds/components/ai/task-list/task-graph.d.ts +8 -0
  157. package/dist/src/ds/components/ai/task-list/task-list.d.ts +4 -8
  158. package/dist/src/ds/components/ai/task-list/task-list.stories.d.ts +1 -1
  159. package/dist/src/ds/components/ai/task-list/use-focused-row-scroll.d.ts +12 -0
  160. package/dist/src/ds/new/layout/page-header/page-header.stories.d.ts +1 -0
  161. package/dist/style.css +304 -14
  162. package/dist/{traces-data-list-Dvi0s56v.js → traces-data-list-B5MkMMBi.js} +2 -2
  163. package/dist/{traces-data-list-Dvi0s56v.js.map → traces-data-list-B5MkMMBi.js.map} +1 -1
  164. package/dist/{traces-data-list-Dam8-XW-.cjs → traces-data-list-D3k50j4n.cjs} +2 -2
  165. package/dist/{traces-data-list-Dam8-XW-.cjs.map → traces-data-list-D3k50j4n.cjs.map} +1 -1
  166. package/package.json +7 -7
  167. package/dist/Badge-BEeYtjmv.cjs.map +0 -1
  168. package/dist/Badge-TD55_qZJ.js.map +0 -1
  169. package/dist/metrics-card-Bzm6m1dy.js.map +0 -1
  170. package/dist/metrics-card-DCCHIG-z.cjs.map +0 -1
  171. package/dist/metrics-kpi-card-Bhb4R4z0.cjs.map +0 -1
  172. package/dist/metrics-kpi-card-BrnFhFQm.js.map +0 -1
  173. package/dist/metrics-line-chart-0FR3SYSt.cjs.map +0 -1
  174. package/dist/metrics-line-chart-knlgw8bV.js.map +0 -1
  175. package/dist/page-header-CyXAezlZ.js.map +0 -1
  176. package/dist/page-header-Dk3s3XtC.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"traces-data-list-Dvi0s56v.js","sources":["../src/ds/components/DataList/TracesDataList/traces-data-list-cells.tsx","../src/ds/components/DataList/TracesDataList/traces-data-list.tsx"],"sourcesContent":["import { CornerDownRightIcon, DatabaseIcon, ListTreeIcon, RouteIcon } from 'lucide-react';\nimport type { ComponentType, SVGProps } from 'react';\nimport { DataListCell, DataListTextCell } from '../data-list-cells';\nimport { Badge } from '@/ds/components/Badge';\nimport type { BadgeVariant } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { McpServerIcon } from '@/ds/icons/McpServerIcon';\nimport { MemoryIcon } from '@/ds/icons/MemoryIcon';\nimport { ProcessorIcon } from '@/ds/icons/ProcessorIcon';\nimport { ScorersIcon } from '@/ds/icons/ScorersIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { cn } from '@/lib/utils';\n\n// ---------------------------------------------------------------------------\n// NameCell\n// ---------------------------------------------------------------------------\n\nexport interface TracesDataListNameCellProps {\n name?: string | null;\n /** `null`/missing → root span (Trace). Set → nested span (Subtrace). Drives the leading level icon. */\n parentSpanId?: string | null;\n /** When true, the leading level icon is wrapped in a Trace/Subtrace tooltip. Off by default —\n * only meaningful in branches mode, where rows mix root traces and subtraces. */\n showLevelTooltip?: boolean;\n}\n\nexport function TracesDataListNameCell({ name, parentSpanId, showLevelTooltip }: TracesDataListNameCellProps) {\n const isRoot = parentSpanId == null;\n const Icon = isRoot ? ListTreeIcon : CornerDownRightIcon;\n const label = isRoot ? 'Trace' : 'Subtrace';\n const icon = (\n <span aria-label={label} className=\"inline-flex shrink-0\">\n <Icon className={cn('size-4 shrink-0', isRoot ? 'text-muted-foreground' : 'text-placeholder')} aria-hidden />\n </span>\n );\n return (\n <DataListCell className=\"flex min-w-0 items-center gap-2 text-body-sm text-muted-foreground\">\n {showLevelTooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>{icon}</TooltipTrigger>\n <TooltipContent>{label}</TooltipContent>\n </Tooltip>\n ) : (\n icon\n )}\n <span className=\"min-w-0 truncate\">{name || '-'}</span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InputCell\n// ---------------------------------------------------------------------------\n\nexport interface TracesDataListInputCellProps {\n input?: string | null;\n}\n\nexport function TracesDataListInputCell({ input }: TracesDataListInputCellProps) {\n return <DataListTextCell font=\"mono\">{input || '-'}</DataListTextCell>;\n}\n\n// ---------------------------------------------------------------------------\n// TypeCell\n// ---------------------------------------------------------------------------\n\ntype EntityTypeDisplay = { label: string; Icon: ComponentType<SVGProps<SVGSVGElement>> };\n\n// Keys are lowercase `EntityType` enum values (plus legacy `workflow`).\nconst ENTITY_TYPE_DISPLAY: Record<string, EntityTypeDisplay> = {\n agent: { label: 'Agent', Icon: AgentIcon },\n workflow: { label: 'Workflow', Icon: WorkflowIcon },\n workflow_run: { label: 'Workflow', Icon: WorkflowIcon },\n workflow_step: { label: 'Step', Icon: WorkflowIcon },\n tool: { label: 'Tool', Icon: ToolsIcon },\n scorer: { label: 'Scorer', Icon: ScorersIcon },\n memory: { label: 'Memory', Icon: MemoryIcon },\n mcp_server: { label: 'MCP Server', Icon: McpServerIcon },\n input_processor: { label: 'Processor', Icon: ProcessorIcon },\n input_step_processor: { label: 'Processor', Icon: ProcessorIcon },\n output_processor: { label: 'Processor', Icon: ProcessorIcon },\n output_step_processor: { label: 'Processor', Icon: ProcessorIcon },\n tool_result_processor: { label: 'Processor', Icon: ProcessorIcon },\n rag_ingestion: { label: 'RAG', Icon: DatabaseIcon },\n trajectory: { label: 'Trajectory', Icon: RouteIcon },\n};\n\nexport interface TracesDataListTypeCellProps {\n entityType?: string | null;\n}\n\nexport function TracesDataListTypeCell({ entityType }: TracesDataListTypeCellProps) {\n const display = entityType ? ENTITY_TYPE_DISPLAY[entityType.toLowerCase()] : undefined;\n\n return (\n <DataListCell className=\"flex min-w-0 items-center gap-2\">\n {display ? (\n <>\n <display.Icon className=\"size-3.5 shrink-0 text-placeholder\" aria-hidden />\n <span className=\"min-w-0 truncate text-body-sm\">{display.label}</span>\n </>\n ) : (\n '-'\n )}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// StatusCell\n// ---------------------------------------------------------------------------\n\nconst UNSET_STATUS_CONFIG: { label: string; variant: BadgeVariant } = { label: '-', variant: 'neutral' };\n\nconst STATUS_CONFIG: Record<string, { label: string; variant: BadgeVariant }> = {\n completed: { label: 'OK', variant: 'green' },\n ok: { label: 'OK', variant: 'green' },\n success: { label: 'OK', variant: 'green' },\n error: { label: 'ERR', variant: 'red' },\n running: { label: 'RUN', variant: 'neutral' },\n unset: UNSET_STATUS_CONFIG,\n};\n\nexport interface TracesDataListStatusCellProps {\n status?: string | null;\n}\n\nexport function TracesDataListStatusCell({ status }: TracesDataListStatusCellProps) {\n const key = (status ?? 'unset').toLowerCase();\n const config = STATUS_CONFIG[key] ?? UNSET_STATUS_CONFIG;\n\n return (\n <DataListCell>\n <Badge size=\"xs\" variant={config.variant}>\n {config.label}\n </Badge>\n </DataListCell>\n );\n}\n","import type { ComponentProps } from 'react';\nimport { DataListCreatedCell, DataListIdCell } from '../data-list-cells';\nimport { DataListNextPageLoading } from '../data-list-next-page-loading';\nimport { DataListNoMatch } from '../data-list-no-match';\nimport { DataListRoot } from '../data-list-root';\nimport { DataListRowButton } from '../data-list-row-button';\nimport { DataListSortableTopCell } from '../data-list-sortable-top-cell';\nimport { DataListSpacer } from '../data-list-spacer';\nimport { DataListSubheader } from '../data-list-subheader';\nimport { DataListSubHeading } from '../data-list-subheading';\nimport { DataListTop } from '../data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip } from '../data-list-top-cell';\nimport {\n TracesDataListNameCell,\n TracesDataListInputCell,\n TracesDataListTypeCell,\n TracesDataListStatusCell,\n} from './traces-data-list-cells';\n\n// oxlint-disable-next-line react/only-export-components -- compound component root, same pattern as ScoresDataList\n// eslint-disable-next-line react-refresh/only-export-components -- compound component root, same pattern as ScoresDataList\nfunction TracesDataListRoot(props: ComponentProps<typeof DataListRoot>) {\n return <DataListRoot {...props} />;\n}\n\nexport const TracesDataList = Object.assign(TracesDataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n RowButton: DataListRowButton,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n IdCell: DataListIdCell,\n CreatedCell: DataListCreatedCell,\n NameCell: TracesDataListNameCell,\n InputCell: TracesDataListInputCell,\n TypeCell: TracesDataListTypeCell,\n StatusCell: TracesDataListStatusCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"traces-data-list-B5MkMMBi.js","sources":["../src/ds/components/DataList/TracesDataList/traces-data-list-cells.tsx","../src/ds/components/DataList/TracesDataList/traces-data-list.tsx"],"sourcesContent":["import { CornerDownRightIcon, DatabaseIcon, ListTreeIcon, RouteIcon } from 'lucide-react';\nimport type { ComponentType, SVGProps } from 'react';\nimport { DataListCell, DataListTextCell } from '../data-list-cells';\nimport { Badge } from '@/ds/components/Badge';\nimport type { BadgeVariant } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { McpServerIcon } from '@/ds/icons/McpServerIcon';\nimport { MemoryIcon } from '@/ds/icons/MemoryIcon';\nimport { ProcessorIcon } from '@/ds/icons/ProcessorIcon';\nimport { ScorersIcon } from '@/ds/icons/ScorersIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { cn } from '@/lib/utils';\n\n// ---------------------------------------------------------------------------\n// NameCell\n// ---------------------------------------------------------------------------\n\nexport interface TracesDataListNameCellProps {\n name?: string | null;\n /** `null`/missing → root span (Trace). Set → nested span (Subtrace). Drives the leading level icon. */\n parentSpanId?: string | null;\n /** When true, the leading level icon is wrapped in a Trace/Subtrace tooltip. Off by default —\n * only meaningful in branches mode, where rows mix root traces and subtraces. */\n showLevelTooltip?: boolean;\n}\n\nexport function TracesDataListNameCell({ name, parentSpanId, showLevelTooltip }: TracesDataListNameCellProps) {\n const isRoot = parentSpanId == null;\n const Icon = isRoot ? ListTreeIcon : CornerDownRightIcon;\n const label = isRoot ? 'Trace' : 'Subtrace';\n const icon = (\n <span aria-label={label} className=\"inline-flex shrink-0\">\n <Icon className={cn('size-4 shrink-0', isRoot ? 'text-muted-foreground' : 'text-placeholder')} aria-hidden />\n </span>\n );\n return (\n <DataListCell className=\"flex min-w-0 items-center gap-2 text-body-sm text-muted-foreground\">\n {showLevelTooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>{icon}</TooltipTrigger>\n <TooltipContent>{label}</TooltipContent>\n </Tooltip>\n ) : (\n icon\n )}\n <span className=\"min-w-0 truncate\">{name || '-'}</span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InputCell\n// ---------------------------------------------------------------------------\n\nexport interface TracesDataListInputCellProps {\n input?: string | null;\n}\n\nexport function TracesDataListInputCell({ input }: TracesDataListInputCellProps) {\n return <DataListTextCell font=\"mono\">{input || '-'}</DataListTextCell>;\n}\n\n// ---------------------------------------------------------------------------\n// TypeCell\n// ---------------------------------------------------------------------------\n\ntype EntityTypeDisplay = { label: string; Icon: ComponentType<SVGProps<SVGSVGElement>> };\n\n// Keys are lowercase `EntityType` enum values (plus legacy `workflow`).\nconst ENTITY_TYPE_DISPLAY: Record<string, EntityTypeDisplay> = {\n agent: { label: 'Agent', Icon: AgentIcon },\n workflow: { label: 'Workflow', Icon: WorkflowIcon },\n workflow_run: { label: 'Workflow', Icon: WorkflowIcon },\n workflow_step: { label: 'Step', Icon: WorkflowIcon },\n tool: { label: 'Tool', Icon: ToolsIcon },\n scorer: { label: 'Scorer', Icon: ScorersIcon },\n memory: { label: 'Memory', Icon: MemoryIcon },\n mcp_server: { label: 'MCP Server', Icon: McpServerIcon },\n input_processor: { label: 'Processor', Icon: ProcessorIcon },\n input_step_processor: { label: 'Processor', Icon: ProcessorIcon },\n output_processor: { label: 'Processor', Icon: ProcessorIcon },\n output_step_processor: { label: 'Processor', Icon: ProcessorIcon },\n tool_result_processor: { label: 'Processor', Icon: ProcessorIcon },\n rag_ingestion: { label: 'RAG', Icon: DatabaseIcon },\n trajectory: { label: 'Trajectory', Icon: RouteIcon },\n};\n\nexport interface TracesDataListTypeCellProps {\n entityType?: string | null;\n}\n\nexport function TracesDataListTypeCell({ entityType }: TracesDataListTypeCellProps) {\n const display = entityType ? ENTITY_TYPE_DISPLAY[entityType.toLowerCase()] : undefined;\n\n return (\n <DataListCell className=\"flex min-w-0 items-center gap-2\">\n {display ? (\n <>\n <display.Icon className=\"size-3.5 shrink-0 text-placeholder\" aria-hidden />\n <span className=\"min-w-0 truncate text-body-sm\">{display.label}</span>\n </>\n ) : (\n '-'\n )}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// StatusCell\n// ---------------------------------------------------------------------------\n\nconst UNSET_STATUS_CONFIG: { label: string; variant: BadgeVariant } = { label: '-', variant: 'neutral' };\n\nconst STATUS_CONFIG: Record<string, { label: string; variant: BadgeVariant }> = {\n completed: { label: 'OK', variant: 'green' },\n ok: { label: 'OK', variant: 'green' },\n success: { label: 'OK', variant: 'green' },\n error: { label: 'ERR', variant: 'red' },\n running: { label: 'RUN', variant: 'neutral' },\n unset: UNSET_STATUS_CONFIG,\n};\n\nexport interface TracesDataListStatusCellProps {\n status?: string | null;\n}\n\nexport function TracesDataListStatusCell({ status }: TracesDataListStatusCellProps) {\n const key = (status ?? 'unset').toLowerCase();\n const config = STATUS_CONFIG[key] ?? UNSET_STATUS_CONFIG;\n\n return (\n <DataListCell>\n <Badge size=\"xs\" variant={config.variant}>\n {config.label}\n </Badge>\n </DataListCell>\n );\n}\n","import type { ComponentProps } from 'react';\nimport { DataListCreatedCell, DataListIdCell } from '../data-list-cells';\nimport { DataListNextPageLoading } from '../data-list-next-page-loading';\nimport { DataListNoMatch } from '../data-list-no-match';\nimport { DataListRoot } from '../data-list-root';\nimport { DataListRowButton } from '../data-list-row-button';\nimport { DataListSortableTopCell } from '../data-list-sortable-top-cell';\nimport { DataListSpacer } from '../data-list-spacer';\nimport { DataListSubheader } from '../data-list-subheader';\nimport { DataListSubHeading } from '../data-list-subheading';\nimport { DataListTop } from '../data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip } from '../data-list-top-cell';\nimport {\n TracesDataListNameCell,\n TracesDataListInputCell,\n TracesDataListTypeCell,\n TracesDataListStatusCell,\n} from './traces-data-list-cells';\n\n// oxlint-disable-next-line react/only-export-components -- compound component root, same pattern as ScoresDataList\n// eslint-disable-next-line react-refresh/only-export-components -- compound component root, same pattern as ScoresDataList\nfunction TracesDataListRoot(props: ComponentProps<typeof DataListRoot>) {\n return <DataListRoot {...props} />;\n}\n\nexport const TracesDataList = Object.assign(TracesDataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n RowButton: DataListRowButton,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n IdCell: DataListIdCell,\n CreatedCell: DataListCreatedCell,\n NameCell: TracesDataListNameCell,\n InputCell: TracesDataListInputCell,\n TypeCell: TracesDataListTypeCell,\n StatusCell: TracesDataListStatusCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ const dataListTop = require('./data-list-top-WGUY167p.cjs');
5
5
  const dataListSpacer = require('./data-list-spacer-DEcgVGFM.cjs');
6
6
  const dataList = require('./data-list-PwFpP_mo.cjs');
7
7
  const lucideReact = require('lucide-react');
8
- const Badge = require('./Badge-BEeYtjmv.cjs');
8
+ const Badge = require('./Badge-DFNxcz-r.cjs');
9
9
  const tooltip = require('./tooltip-FvWL16Xn.cjs');
10
10
  const icons_AgentIcon = require('./icons/AgentIcon.cjs.js');
11
11
  const icons_McpServerIcon = require('./icons/McpServerIcon.cjs.js');
@@ -94,4 +94,4 @@ const TracesDataList = Object.assign(TracesDataListRoot, {
94
94
  });
95
95
 
96
96
  exports.TracesDataList = TracesDataList;
97
- //# sourceMappingURL=traces-data-list-Dam8-XW-.cjs.map
97
+ //# sourceMappingURL=traces-data-list-D3k50j4n.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"traces-data-list-Dam8-XW-.cjs","sources":["../src/ds/components/DataList/TracesDataList/traces-data-list-cells.tsx","../src/ds/components/DataList/TracesDataList/traces-data-list.tsx"],"sourcesContent":["import { CornerDownRightIcon, DatabaseIcon, ListTreeIcon, RouteIcon } from 'lucide-react';\nimport type { ComponentType, SVGProps } from 'react';\nimport { DataListCell, DataListTextCell } from '../data-list-cells';\nimport { Badge } from '@/ds/components/Badge';\nimport type { BadgeVariant } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { McpServerIcon } from '@/ds/icons/McpServerIcon';\nimport { MemoryIcon } from '@/ds/icons/MemoryIcon';\nimport { ProcessorIcon } from '@/ds/icons/ProcessorIcon';\nimport { ScorersIcon } from '@/ds/icons/ScorersIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { cn } from '@/lib/utils';\n\n// ---------------------------------------------------------------------------\n// NameCell\n// ---------------------------------------------------------------------------\n\nexport interface TracesDataListNameCellProps {\n name?: string | null;\n /** `null`/missing → root span (Trace). Set → nested span (Subtrace). Drives the leading level icon. */\n parentSpanId?: string | null;\n /** When true, the leading level icon is wrapped in a Trace/Subtrace tooltip. Off by default —\n * only meaningful in branches mode, where rows mix root traces and subtraces. */\n showLevelTooltip?: boolean;\n}\n\nexport function TracesDataListNameCell({ name, parentSpanId, showLevelTooltip }: TracesDataListNameCellProps) {\n const isRoot = parentSpanId == null;\n const Icon = isRoot ? ListTreeIcon : CornerDownRightIcon;\n const label = isRoot ? 'Trace' : 'Subtrace';\n const icon = (\n <span aria-label={label} className=\"inline-flex shrink-0\">\n <Icon className={cn('size-4 shrink-0', isRoot ? 'text-muted-foreground' : 'text-placeholder')} aria-hidden />\n </span>\n );\n return (\n <DataListCell className=\"flex min-w-0 items-center gap-2 text-body-sm text-muted-foreground\">\n {showLevelTooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>{icon}</TooltipTrigger>\n <TooltipContent>{label}</TooltipContent>\n </Tooltip>\n ) : (\n icon\n )}\n <span className=\"min-w-0 truncate\">{name || '-'}</span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InputCell\n// ---------------------------------------------------------------------------\n\nexport interface TracesDataListInputCellProps {\n input?: string | null;\n}\n\nexport function TracesDataListInputCell({ input }: TracesDataListInputCellProps) {\n return <DataListTextCell font=\"mono\">{input || '-'}</DataListTextCell>;\n}\n\n// ---------------------------------------------------------------------------\n// TypeCell\n// ---------------------------------------------------------------------------\n\ntype EntityTypeDisplay = { label: string; Icon: ComponentType<SVGProps<SVGSVGElement>> };\n\n// Keys are lowercase `EntityType` enum values (plus legacy `workflow`).\nconst ENTITY_TYPE_DISPLAY: Record<string, EntityTypeDisplay> = {\n agent: { label: 'Agent', Icon: AgentIcon },\n workflow: { label: 'Workflow', Icon: WorkflowIcon },\n workflow_run: { label: 'Workflow', Icon: WorkflowIcon },\n workflow_step: { label: 'Step', Icon: WorkflowIcon },\n tool: { label: 'Tool', Icon: ToolsIcon },\n scorer: { label: 'Scorer', Icon: ScorersIcon },\n memory: { label: 'Memory', Icon: MemoryIcon },\n mcp_server: { label: 'MCP Server', Icon: McpServerIcon },\n input_processor: { label: 'Processor', Icon: ProcessorIcon },\n input_step_processor: { label: 'Processor', Icon: ProcessorIcon },\n output_processor: { label: 'Processor', Icon: ProcessorIcon },\n output_step_processor: { label: 'Processor', Icon: ProcessorIcon },\n tool_result_processor: { label: 'Processor', Icon: ProcessorIcon },\n rag_ingestion: { label: 'RAG', Icon: DatabaseIcon },\n trajectory: { label: 'Trajectory', Icon: RouteIcon },\n};\n\nexport interface TracesDataListTypeCellProps {\n entityType?: string | null;\n}\n\nexport function TracesDataListTypeCell({ entityType }: TracesDataListTypeCellProps) {\n const display = entityType ? ENTITY_TYPE_DISPLAY[entityType.toLowerCase()] : undefined;\n\n return (\n <DataListCell className=\"flex min-w-0 items-center gap-2\">\n {display ? (\n <>\n <display.Icon className=\"size-3.5 shrink-0 text-placeholder\" aria-hidden />\n <span className=\"min-w-0 truncate text-body-sm\">{display.label}</span>\n </>\n ) : (\n '-'\n )}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// StatusCell\n// ---------------------------------------------------------------------------\n\nconst UNSET_STATUS_CONFIG: { label: string; variant: BadgeVariant } = { label: '-', variant: 'neutral' };\n\nconst STATUS_CONFIG: Record<string, { label: string; variant: BadgeVariant }> = {\n completed: { label: 'OK', variant: 'green' },\n ok: { label: 'OK', variant: 'green' },\n success: { label: 'OK', variant: 'green' },\n error: { label: 'ERR', variant: 'red' },\n running: { label: 'RUN', variant: 'neutral' },\n unset: UNSET_STATUS_CONFIG,\n};\n\nexport interface TracesDataListStatusCellProps {\n status?: string | null;\n}\n\nexport function TracesDataListStatusCell({ status }: TracesDataListStatusCellProps) {\n const key = (status ?? 'unset').toLowerCase();\n const config = STATUS_CONFIG[key] ?? UNSET_STATUS_CONFIG;\n\n return (\n <DataListCell>\n <Badge size=\"xs\" variant={config.variant}>\n {config.label}\n </Badge>\n </DataListCell>\n );\n}\n","import type { ComponentProps } from 'react';\nimport { DataListCreatedCell, DataListIdCell } from '../data-list-cells';\nimport { DataListNextPageLoading } from '../data-list-next-page-loading';\nimport { DataListNoMatch } from '../data-list-no-match';\nimport { DataListRoot } from '../data-list-root';\nimport { DataListRowButton } from '../data-list-row-button';\nimport { DataListSortableTopCell } from '../data-list-sortable-top-cell';\nimport { DataListSpacer } from '../data-list-spacer';\nimport { DataListSubheader } from '../data-list-subheader';\nimport { DataListSubHeading } from '../data-list-subheading';\nimport { DataListTop } from '../data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip } from '../data-list-top-cell';\nimport {\n TracesDataListNameCell,\n TracesDataListInputCell,\n TracesDataListTypeCell,\n TracesDataListStatusCell,\n} from './traces-data-list-cells';\n\n// oxlint-disable-next-line react/only-export-components -- compound component root, same pattern as ScoresDataList\n// eslint-disable-next-line react-refresh/only-export-components -- compound component root, same pattern as ScoresDataList\nfunction TracesDataListRoot(props: ComponentProps<typeof DataListRoot>) {\n return <DataListRoot {...props} />;\n}\n\nexport const TracesDataList = Object.assign(TracesDataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n RowButton: DataListRowButton,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n IdCell: DataListIdCell,\n CreatedCell: DataListCreatedCell,\n NameCell: TracesDataListNameCell,\n InputCell: TracesDataListInputCell,\n TypeCell: TracesDataListTypeCell,\n StatusCell: TracesDataListStatusCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":["ListTreeIcon","CornerDownRightIcon","jsx","cn","jsxs","DataListCell","Tooltip","TooltipTrigger","TooltipContent","DataListTextCell","AgentIcon","WorkflowIcon","ToolsIcon","ScorersIcon","MemoryIcon","McpServerIcon","ProcessorIcon","DatabaseIcon","RouteIcon","Fragment","Badge","DataListRoot","DataListTop","DataListTopCell","DataListSortableTopCell","DataListTopCellWithTooltip","DataListRowButton","DataListNoMatch","DataListSubheader","DataListSubHeading","DataListSpacer","DataListIdCell","DataListCreatedCell","DataListNextPageLoading"],"mappings":"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"}
1
+ {"version":3,"file":"traces-data-list-D3k50j4n.cjs","sources":["../src/ds/components/DataList/TracesDataList/traces-data-list-cells.tsx","../src/ds/components/DataList/TracesDataList/traces-data-list.tsx"],"sourcesContent":["import { CornerDownRightIcon, DatabaseIcon, ListTreeIcon, RouteIcon } from 'lucide-react';\nimport type { ComponentType, SVGProps } from 'react';\nimport { DataListCell, DataListTextCell } from '../data-list-cells';\nimport { Badge } from '@/ds/components/Badge';\nimport type { BadgeVariant } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { AgentIcon } from '@/ds/icons/AgentIcon';\nimport { McpServerIcon } from '@/ds/icons/McpServerIcon';\nimport { MemoryIcon } from '@/ds/icons/MemoryIcon';\nimport { ProcessorIcon } from '@/ds/icons/ProcessorIcon';\nimport { ScorersIcon } from '@/ds/icons/ScorersIcon';\nimport { ToolsIcon } from '@/ds/icons/ToolsIcon';\nimport { WorkflowIcon } from '@/ds/icons/WorkflowIcon';\nimport { cn } from '@/lib/utils';\n\n// ---------------------------------------------------------------------------\n// NameCell\n// ---------------------------------------------------------------------------\n\nexport interface TracesDataListNameCellProps {\n name?: string | null;\n /** `null`/missing → root span (Trace). Set → nested span (Subtrace). Drives the leading level icon. */\n parentSpanId?: string | null;\n /** When true, the leading level icon is wrapped in a Trace/Subtrace tooltip. Off by default —\n * only meaningful in branches mode, where rows mix root traces and subtraces. */\n showLevelTooltip?: boolean;\n}\n\nexport function TracesDataListNameCell({ name, parentSpanId, showLevelTooltip }: TracesDataListNameCellProps) {\n const isRoot = parentSpanId == null;\n const Icon = isRoot ? ListTreeIcon : CornerDownRightIcon;\n const label = isRoot ? 'Trace' : 'Subtrace';\n const icon = (\n <span aria-label={label} className=\"inline-flex shrink-0\">\n <Icon className={cn('size-4 shrink-0', isRoot ? 'text-muted-foreground' : 'text-placeholder')} aria-hidden />\n </span>\n );\n return (\n <DataListCell className=\"flex min-w-0 items-center gap-2 text-body-sm text-muted-foreground\">\n {showLevelTooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>{icon}</TooltipTrigger>\n <TooltipContent>{label}</TooltipContent>\n </Tooltip>\n ) : (\n icon\n )}\n <span className=\"min-w-0 truncate\">{name || '-'}</span>\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// InputCell\n// ---------------------------------------------------------------------------\n\nexport interface TracesDataListInputCellProps {\n input?: string | null;\n}\n\nexport function TracesDataListInputCell({ input }: TracesDataListInputCellProps) {\n return <DataListTextCell font=\"mono\">{input || '-'}</DataListTextCell>;\n}\n\n// ---------------------------------------------------------------------------\n// TypeCell\n// ---------------------------------------------------------------------------\n\ntype EntityTypeDisplay = { label: string; Icon: ComponentType<SVGProps<SVGSVGElement>> };\n\n// Keys are lowercase `EntityType` enum values (plus legacy `workflow`).\nconst ENTITY_TYPE_DISPLAY: Record<string, EntityTypeDisplay> = {\n agent: { label: 'Agent', Icon: AgentIcon },\n workflow: { label: 'Workflow', Icon: WorkflowIcon },\n workflow_run: { label: 'Workflow', Icon: WorkflowIcon },\n workflow_step: { label: 'Step', Icon: WorkflowIcon },\n tool: { label: 'Tool', Icon: ToolsIcon },\n scorer: { label: 'Scorer', Icon: ScorersIcon },\n memory: { label: 'Memory', Icon: MemoryIcon },\n mcp_server: { label: 'MCP Server', Icon: McpServerIcon },\n input_processor: { label: 'Processor', Icon: ProcessorIcon },\n input_step_processor: { label: 'Processor', Icon: ProcessorIcon },\n output_processor: { label: 'Processor', Icon: ProcessorIcon },\n output_step_processor: { label: 'Processor', Icon: ProcessorIcon },\n tool_result_processor: { label: 'Processor', Icon: ProcessorIcon },\n rag_ingestion: { label: 'RAG', Icon: DatabaseIcon },\n trajectory: { label: 'Trajectory', Icon: RouteIcon },\n};\n\nexport interface TracesDataListTypeCellProps {\n entityType?: string | null;\n}\n\nexport function TracesDataListTypeCell({ entityType }: TracesDataListTypeCellProps) {\n const display = entityType ? ENTITY_TYPE_DISPLAY[entityType.toLowerCase()] : undefined;\n\n return (\n <DataListCell className=\"flex min-w-0 items-center gap-2\">\n {display ? (\n <>\n <display.Icon className=\"size-3.5 shrink-0 text-placeholder\" aria-hidden />\n <span className=\"min-w-0 truncate text-body-sm\">{display.label}</span>\n </>\n ) : (\n '-'\n )}\n </DataListCell>\n );\n}\n\n// ---------------------------------------------------------------------------\n// StatusCell\n// ---------------------------------------------------------------------------\n\nconst UNSET_STATUS_CONFIG: { label: string; variant: BadgeVariant } = { label: '-', variant: 'neutral' };\n\nconst STATUS_CONFIG: Record<string, { label: string; variant: BadgeVariant }> = {\n completed: { label: 'OK', variant: 'green' },\n ok: { label: 'OK', variant: 'green' },\n success: { label: 'OK', variant: 'green' },\n error: { label: 'ERR', variant: 'red' },\n running: { label: 'RUN', variant: 'neutral' },\n unset: UNSET_STATUS_CONFIG,\n};\n\nexport interface TracesDataListStatusCellProps {\n status?: string | null;\n}\n\nexport function TracesDataListStatusCell({ status }: TracesDataListStatusCellProps) {\n const key = (status ?? 'unset').toLowerCase();\n const config = STATUS_CONFIG[key] ?? UNSET_STATUS_CONFIG;\n\n return (\n <DataListCell>\n <Badge size=\"xs\" variant={config.variant}>\n {config.label}\n </Badge>\n </DataListCell>\n );\n}\n","import type { ComponentProps } from 'react';\nimport { DataListCreatedCell, DataListIdCell } from '../data-list-cells';\nimport { DataListNextPageLoading } from '../data-list-next-page-loading';\nimport { DataListNoMatch } from '../data-list-no-match';\nimport { DataListRoot } from '../data-list-root';\nimport { DataListRowButton } from '../data-list-row-button';\nimport { DataListSortableTopCell } from '../data-list-sortable-top-cell';\nimport { DataListSpacer } from '../data-list-spacer';\nimport { DataListSubheader } from '../data-list-subheader';\nimport { DataListSubHeading } from '../data-list-subheading';\nimport { DataListTop } from '../data-list-top';\nimport { DataListTopCell, DataListTopCellWithTooltip } from '../data-list-top-cell';\nimport {\n TracesDataListNameCell,\n TracesDataListInputCell,\n TracesDataListTypeCell,\n TracesDataListStatusCell,\n} from './traces-data-list-cells';\n\n// oxlint-disable-next-line react/only-export-components -- compound component root, same pattern as ScoresDataList\n// eslint-disable-next-line react-refresh/only-export-components -- compound component root, same pattern as ScoresDataList\nfunction TracesDataListRoot(props: ComponentProps<typeof DataListRoot>) {\n return <DataListRoot {...props} />;\n}\n\nexport const TracesDataList = Object.assign(TracesDataListRoot, {\n Top: DataListTop,\n TopCell: DataListTopCell,\n SortableTopCell: DataListSortableTopCell,\n TopCellWithTooltip: DataListTopCellWithTooltip,\n RowButton: DataListRowButton,\n NoMatch: DataListNoMatch,\n Subheader: DataListSubheader,\n SubHeading: DataListSubHeading,\n Spacer: DataListSpacer,\n IdCell: DataListIdCell,\n CreatedCell: DataListCreatedCell,\n NameCell: TracesDataListNameCell,\n InputCell: TracesDataListInputCell,\n TypeCell: TracesDataListTypeCell,\n StatusCell: TracesDataListStatusCell,\n NextPageLoading: DataListNextPageLoading,\n});\n"],"names":["ListTreeIcon","CornerDownRightIcon","jsx","cn","jsxs","DataListCell","Tooltip","TooltipTrigger","TooltipContent","DataListTextCell","AgentIcon","WorkflowIcon","ToolsIcon","ScorersIcon","MemoryIcon","McpServerIcon","ProcessorIcon","DatabaseIcon","RouteIcon","Fragment","Badge","DataListRoot","DataListTop","DataListTopCell","DataListSortableTopCell","DataListTopCellWithTooltip","DataListRowButton","DataListNoMatch","DataListSubheader","DataListSubHeading","DataListSpacer","DataListIdCell","DataListCreatedCell","DataListNextPageLoading"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mastra/playground-ui",
3
3
  "type": "module",
4
- "version": "58.0.0",
4
+ "version": "58.1.0-alpha.0",
5
5
  "description": "Mastra Playground components",
6
6
  "sideEffects": [
7
7
  "**/*.css"
@@ -210,8 +210,8 @@
210
210
  "react": ">=19.0.0",
211
211
  "react-dom": ">=19.0.0",
212
212
  "tailwindcss": "^4.0.0",
213
- "@mastra/client-js": "^1.49.0",
214
- "@mastra/react": "1.6.2"
213
+ "@mastra/client-js": "^1.49.1-alpha.0",
214
+ "@mastra/react": "1.6.3-alpha.0"
215
215
  },
216
216
  "devDependencies": {
217
217
  "@storybook/addon-a11y": "^10.6.0",
@@ -253,11 +253,11 @@
253
253
  "vite-plugin-dts": "^4.5.4",
254
254
  "vite-plugin-lib-inject-css": "^2.2.2",
255
255
  "vitest": "4.1.11",
256
- "@mastra/client-js": "^1.49.0",
257
- "@internal/lint": "0.0.136",
256
+ "@mastra/client-js": "^1.49.1-alpha.0",
258
257
  "@mastra/memory": "1.32.0",
259
- "@mastra/react": "1.6.2",
260
- "@mastra/core": "1.70.0"
258
+ "@mastra/react": "1.6.3-alpha.0",
259
+ "@internal/lint": "0.0.136",
260
+ "@mastra/core": "1.71.0-alpha.0"
261
261
  },
262
262
  "homepage": "https://mastra.ai",
263
263
  "repository": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"Badge-BEeYtjmv.cjs","sources":["../src/ds/components/Badge/Badge.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport { Icon } from '../../icons/Icon';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type BadgeEmphasis = 'default' | 'muted';\nexport type BadgeIndicator = 'dot' | 'pulse';\n\ntype BadgeToneStyles = Record<BadgeEmphasis, string> & { indicator: string };\n\nconst badgeToneStyles = {\n neutral: {\n default: 'bg-fill text-badge-neutral-fg',\n muted: 'bg-fill-subtle text-badge-neutral-fg',\n indicator: 'bg-muted-foreground',\n },\n green: {\n default: 'bg-badge-green/20 text-badge-green-fg',\n muted: 'bg-badge-green/10 text-badge-green-fg',\n indicator: 'bg-badge-green',\n },\n red: {\n default: 'bg-badge-red/20 text-badge-red-fg',\n muted: 'bg-badge-red/10 text-badge-red-fg',\n indicator: 'bg-badge-red',\n },\n blue: {\n default: 'bg-badge-blue/20 text-badge-blue-fg',\n muted: 'bg-badge-blue/10 text-badge-blue-fg',\n indicator: 'bg-badge-blue',\n },\n yellow: {\n default: 'bg-badge-yellow/20 text-badge-yellow-fg',\n muted: 'bg-badge-yellow/10 text-badge-yellow-fg',\n indicator: 'bg-badge-yellow',\n },\n purple: {\n default: 'bg-badge-purple/20 text-badge-purple-fg',\n muted: 'bg-badge-purple/10 text-badge-purple-fg',\n indicator: 'bg-badge-purple',\n },\n orange: {\n default: 'bg-badge-orange/20 text-badge-orange-fg',\n muted: 'bg-badge-orange/10 text-badge-orange-fg',\n indicator: 'bg-badge-orange',\n },\n cyan: {\n default: 'bg-badge-cyan/20 text-badge-cyan-fg',\n muted: 'bg-badge-cyan/10 text-badge-cyan-fg',\n indicator: 'bg-badge-cyan',\n },\n pink: {\n default: 'bg-badge-pink/20 text-badge-pink-fg',\n muted: 'bg-badge-pink/10 text-badge-pink-fg',\n indicator: 'bg-badge-pink',\n },\n} satisfies Record<string, BadgeToneStyles>;\n\nexport type BadgeVariant = keyof typeof badgeToneStyles;\n\nconst badgeSizeStyles = {\n xs: {\n badge: 'h-[18px] gap-0.5 text-meta',\n withoutLeadingVisual: 'px-1.5',\n withLeadingVisual: 'pl-1 pr-1.5',\n indicator: 'size-1',\n },\n sm: {\n badge: 'h-5 gap-1 text-meta',\n withoutLeadingVisual: 'px-1.5',\n withLeadingVisual: 'px-1.5',\n indicator: 'size-1',\n },\n md: {\n badge: 'h-5 gap-1 text-column',\n withoutLeadingVisual: 'px-2',\n withLeadingVisual: 'pl-1.5 pr-2',\n indicator: 'size-1.5',\n },\n};\n\nexport type BadgeSize = keyof typeof badgeSizeStyles;\n\ntype BadgeLeadingVisual = { icon?: ReactNode; indicator?: never } | { icon?: never; indicator?: BadgeIndicator };\n\nexport type BadgeProps = HTMLAttributes<HTMLSpanElement> &\n BadgeLeadingVisual & {\n variant?: BadgeVariant;\n emphasis?: BadgeEmphasis;\n size?: BadgeSize;\n children?: ReactNode;\n };\n\nexport const Badge = ({\n icon,\n indicator,\n variant = 'neutral',\n emphasis = 'default',\n size = 'md',\n className,\n children,\n ...props\n}: BadgeProps) => {\n const hasIcon = Boolean(icon);\n const withLeadingVisual = hasIcon || indicator !== undefined;\n const sizeStyles = badgeSizeStyles[size];\n const paddingClass = withLeadingVisual ? sizeStyles.withLeadingVisual : sizeStyles.withoutLeadingVisual;\n\n return (\n <span\n className={cn(\n 'inline-flex w-fit max-w-full shrink-0 items-center rounded-[7px]',\n 'inset-ring-1 inset-ring-current/5',\n 'inset-shadow-xs inset-shadow-white/5 dark:inset-shadow-[0_3px_10px_-2px_white] dark:inset-shadow-white/7',\n 'dark:bg-linear-to-b dark:from-white/3 dark:to-white/0',\n badgeToneStyles[variant][emphasis],\n sizeStyles.badge,\n paddingClass,\n transitions.colors,\n className,\n )}\n {...props}\n >\n {indicator !== undefined ? (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'shrink-0 rounded-full',\n badgeToneStyles[variant].indicator,\n sizeStyles.indicator,\n indicator === 'pulse' && 'motion-safe:animate-pulse motion-reduce:animate-none',\n )}\n />\n ) : null}\n {hasIcon ? <Icon size=\"xs\">{icon}</Icon> : null}\n {children}\n </span>\n );\n};\n"],"names":["jsxs","cn","transitions","jsx","Icon"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Badge-TD55_qZJ.js","sources":["../src/ds/components/Badge/Badge.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from 'react';\n\nimport { Icon } from '../../icons/Icon';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type BadgeEmphasis = 'default' | 'muted';\nexport type BadgeIndicator = 'dot' | 'pulse';\n\ntype BadgeToneStyles = Record<BadgeEmphasis, string> & { indicator: string };\n\nconst badgeToneStyles = {\n neutral: {\n default: 'bg-fill text-badge-neutral-fg',\n muted: 'bg-fill-subtle text-badge-neutral-fg',\n indicator: 'bg-muted-foreground',\n },\n green: {\n default: 'bg-badge-green/20 text-badge-green-fg',\n muted: 'bg-badge-green/10 text-badge-green-fg',\n indicator: 'bg-badge-green',\n },\n red: {\n default: 'bg-badge-red/20 text-badge-red-fg',\n muted: 'bg-badge-red/10 text-badge-red-fg',\n indicator: 'bg-badge-red',\n },\n blue: {\n default: 'bg-badge-blue/20 text-badge-blue-fg',\n muted: 'bg-badge-blue/10 text-badge-blue-fg',\n indicator: 'bg-badge-blue',\n },\n yellow: {\n default: 'bg-badge-yellow/20 text-badge-yellow-fg',\n muted: 'bg-badge-yellow/10 text-badge-yellow-fg',\n indicator: 'bg-badge-yellow',\n },\n purple: {\n default: 'bg-badge-purple/20 text-badge-purple-fg',\n muted: 'bg-badge-purple/10 text-badge-purple-fg',\n indicator: 'bg-badge-purple',\n },\n orange: {\n default: 'bg-badge-orange/20 text-badge-orange-fg',\n muted: 'bg-badge-orange/10 text-badge-orange-fg',\n indicator: 'bg-badge-orange',\n },\n cyan: {\n default: 'bg-badge-cyan/20 text-badge-cyan-fg',\n muted: 'bg-badge-cyan/10 text-badge-cyan-fg',\n indicator: 'bg-badge-cyan',\n },\n pink: {\n default: 'bg-badge-pink/20 text-badge-pink-fg',\n muted: 'bg-badge-pink/10 text-badge-pink-fg',\n indicator: 'bg-badge-pink',\n },\n} satisfies Record<string, BadgeToneStyles>;\n\nexport type BadgeVariant = keyof typeof badgeToneStyles;\n\nconst badgeSizeStyles = {\n xs: {\n badge: 'h-[18px] gap-0.5 text-meta',\n withoutLeadingVisual: 'px-1.5',\n withLeadingVisual: 'pl-1 pr-1.5',\n indicator: 'size-1',\n },\n sm: {\n badge: 'h-5 gap-1 text-meta',\n withoutLeadingVisual: 'px-1.5',\n withLeadingVisual: 'px-1.5',\n indicator: 'size-1',\n },\n md: {\n badge: 'h-5 gap-1 text-column',\n withoutLeadingVisual: 'px-2',\n withLeadingVisual: 'pl-1.5 pr-2',\n indicator: 'size-1.5',\n },\n};\n\nexport type BadgeSize = keyof typeof badgeSizeStyles;\n\ntype BadgeLeadingVisual = { icon?: ReactNode; indicator?: never } | { icon?: never; indicator?: BadgeIndicator };\n\nexport type BadgeProps = HTMLAttributes<HTMLSpanElement> &\n BadgeLeadingVisual & {\n variant?: BadgeVariant;\n emphasis?: BadgeEmphasis;\n size?: BadgeSize;\n children?: ReactNode;\n };\n\nexport const Badge = ({\n icon,\n indicator,\n variant = 'neutral',\n emphasis = 'default',\n size = 'md',\n className,\n children,\n ...props\n}: BadgeProps) => {\n const hasIcon = Boolean(icon);\n const withLeadingVisual = hasIcon || indicator !== undefined;\n const sizeStyles = badgeSizeStyles[size];\n const paddingClass = withLeadingVisual ? sizeStyles.withLeadingVisual : sizeStyles.withoutLeadingVisual;\n\n return (\n <span\n className={cn(\n 'inline-flex w-fit max-w-full shrink-0 items-center rounded-[7px]',\n 'inset-ring-1 inset-ring-current/5',\n 'inset-shadow-xs inset-shadow-white/5 dark:inset-shadow-[0_3px_10px_-2px_white] dark:inset-shadow-white/7',\n 'dark:bg-linear-to-b dark:from-white/3 dark:to-white/0',\n badgeToneStyles[variant][emphasis],\n sizeStyles.badge,\n paddingClass,\n transitions.colors,\n className,\n )}\n {...props}\n >\n {indicator !== undefined ? (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'shrink-0 rounded-full',\n badgeToneStyles[variant].indicator,\n sizeStyles.indicator,\n indicator === 'pulse' && 'motion-safe:animate-pulse motion-reduce:animate-none',\n )}\n />\n ) : null}\n {hasIcon ? <Icon size=\"xs\">{icon}</Icon> : null}\n {children}\n </span>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics-card-Bzm6m1dy.js","sources":["../src/ds/components/MetricsCard/metrics-card-actions.tsx","../src/ds/components/MetricsCard/metrics-card-content.tsx","../src/ds/components/MetricsCard/metrics-card-description.tsx","../src/ds/components/MetricsCard/metrics-card-error.tsx","../src/ds/components/MetricsCard/metrics-card-loading.tsx","../src/ds/components/MetricsCard/metrics-card-no-data.tsx","../src/ds/components/MetricsCard/metrics-card-root.tsx","../src/ds/components/MetricsCard/metrics-card-summary.tsx","../src/ds/components/MetricsCard/metrics-card-title.tsx","../src/ds/components/MetricsCard/metrics-card-title-and-description.tsx","../src/ds/components/MetricsCard/metrics-card-top-bar.tsx","../src/ds/components/MetricsCard/metrics-card.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\n/** Container for icon buttons / small actions in the top bar of a MetricsCard,\n * placed alongside `TitleAndDescription` + `Summary`. */\nexport function MetricsCardActions({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('flex shrink-0 items-center gap-1', className)}>{children}</div>;\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsCardContent({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('overflow-x-auto', className)}>{children}</div>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsCardDescription({ children, className }: { children: string; className?: string }) {\n return <p className={cn('mt-0.5 text-body text-placeholder', className)}>{children}</p>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-col items-center justify-center gap-3', className)}>\n <p className=\"text-caption text-accent2\">{message}</p>\n </div>\n );\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsCardLoading({ className }: { className?: string }) {\n return (\n <div className={cn('flex items-center justify-center', className)}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return (\n <div className={cn('flex h-full items-center justify-center', className)}>\n <p className=\"text-body text-placeholder\">{message}</p>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Card } from '@/ds/components/Card';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsCardRoot({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <Card\n className={cn(\n 'grid min-h-72 min-w-80 flex-1 grid-rows-[4rem_1fr] gap-2 px-4 py-3 2xl:min-w-120 md:min-w-88 lg:min-w-sm xl:min-w-104',\n className,\n )}\n >\n {children}\n </Card>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsCardSummary({ value, label, className }: { value: string; label?: string; className?: string }) {\n return (\n <div className={cn('grid content-start justify-end gap-1 text-right', className)}>\n <span className=\"text-subheading leading-none text-muted-foreground\">{value}</span>\n {label && <span className=\"text-body text-placeholder\">{label}</span>}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsCardTitle({\n children,\n className,\n as: Tag = 'h2',\n}: {\n children: string;\n className?: string;\n as?: 'h2' | 'h3' | 'h4';\n}) {\n return <Tag className={cn('text-body text-muted-foreground', className)}>{children}</Tag>;\n}\n","import type { ReactNode } from 'react';\n\nimport { MetricsCardDescription } from './metrics-card-description';\nimport { MetricsCardTitle } from './metrics-card-title';\n\ntype PropsWithTitleDescription = {\n title: string;\n description?: string;\n titleAs?: 'h2' | 'h3' | 'h4';\n children?: never;\n className?: string;\n};\n\ntype PropsWithChildren = {\n title?: never;\n description?: never;\n children: ReactNode;\n className?: string;\n};\n\nexport function MetricsCardTitleAndDescription(props: PropsWithTitleDescription | PropsWithChildren) {\n if ('children' in props) {\n return <div className={props.className}>{props.children}</div>;\n }\n\n const { title, description, titleAs } = props;\n\n return (\n <div className={props.className}>\n <MetricsCardTitle as={titleAs}>{title}</MetricsCardTitle>\n {description && <MetricsCardDescription>{description}</MetricsCardDescription>}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsCardTopBar({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <div className={cn('flex items-start gap-4 [&>:first-child]:min-w-0 [&>:first-child]:flex-1', className)}>\n {children}\n </div>\n );\n}\n","import { MetricsCardActions } from './metrics-card-actions';\nimport { MetricsCardContent } from './metrics-card-content';\nimport { MetricsCardDescription } from './metrics-card-description';\nimport { MetricsCardError } from './metrics-card-error';\nimport { MetricsCardLoading } from './metrics-card-loading';\nimport { MetricsCardNoData } from './metrics-card-no-data';\nimport { MetricsCardRoot } from './metrics-card-root';\nimport { MetricsCardSummary } from './metrics-card-summary';\nimport { MetricsCardTitle } from './metrics-card-title';\nimport { MetricsCardTitleAndDescription } from './metrics-card-title-and-description';\nimport { MetricsCardTopBar } from './metrics-card-top-bar';\nimport { MetricsKpiCard } from '@/ds/components/MetricsKpiCard';\n\nexport const MetricsCard = Object.assign(MetricsCardRoot, {\n Root: MetricsCardRoot,\n Kpi: MetricsKpiCard,\n TopBar: MetricsCardTopBar,\n Actions: MetricsCardActions,\n TitleAndDescription: MetricsCardTitleAndDescription,\n Title: MetricsCardTitle,\n Description: MetricsCardDescription,\n Summary: MetricsCardSummary,\n Loading: MetricsCardLoading,\n Error: MetricsCardError,\n Content: MetricsCardContent,\n NoData: MetricsCardNoData,\n});\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics-card-DCCHIG-z.cjs","sources":["../src/ds/components/MetricsCard/metrics-card-actions.tsx","../src/ds/components/MetricsCard/metrics-card-content.tsx","../src/ds/components/MetricsCard/metrics-card-description.tsx","../src/ds/components/MetricsCard/metrics-card-error.tsx","../src/ds/components/MetricsCard/metrics-card-loading.tsx","../src/ds/components/MetricsCard/metrics-card-no-data.tsx","../src/ds/components/MetricsCard/metrics-card-root.tsx","../src/ds/components/MetricsCard/metrics-card-summary.tsx","../src/ds/components/MetricsCard/metrics-card-title.tsx","../src/ds/components/MetricsCard/metrics-card-title-and-description.tsx","../src/ds/components/MetricsCard/metrics-card-top-bar.tsx","../src/ds/components/MetricsCard/metrics-card.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\n/** Container for icon buttons / small actions in the top bar of a MetricsCard,\n * placed alongside `TitleAndDescription` + `Summary`. */\nexport function MetricsCardActions({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('flex shrink-0 items-center gap-1', className)}>{children}</div>;\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsCardContent({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('overflow-x-auto', className)}>{children}</div>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsCardDescription({ children, className }: { children: string; className?: string }) {\n return <p className={cn('mt-0.5 text-body text-placeholder', className)}>{children}</p>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-col items-center justify-center gap-3', className)}>\n <p className=\"text-caption text-accent2\">{message}</p>\n </div>\n );\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsCardLoading({ className }: { className?: string }) {\n return (\n <div className={cn('flex items-center justify-center', className)}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return (\n <div className={cn('flex h-full items-center justify-center', className)}>\n <p className=\"text-body text-placeholder\">{message}</p>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Card } from '@/ds/components/Card';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsCardRoot({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <Card\n className={cn(\n 'grid min-h-72 min-w-80 flex-1 grid-rows-[4rem_1fr] gap-2 px-4 py-3 2xl:min-w-120 md:min-w-88 lg:min-w-sm xl:min-w-104',\n className,\n )}\n >\n {children}\n </Card>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsCardSummary({ value, label, className }: { value: string; label?: string; className?: string }) {\n return (\n <div className={cn('grid content-start justify-end gap-1 text-right', className)}>\n <span className=\"text-subheading leading-none text-muted-foreground\">{value}</span>\n {label && <span className=\"text-body text-placeholder\">{label}</span>}\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsCardTitle({\n children,\n className,\n as: Tag = 'h2',\n}: {\n children: string;\n className?: string;\n as?: 'h2' | 'h3' | 'h4';\n}) {\n return <Tag className={cn('text-body text-muted-foreground', className)}>{children}</Tag>;\n}\n","import type { ReactNode } from 'react';\n\nimport { MetricsCardDescription } from './metrics-card-description';\nimport { MetricsCardTitle } from './metrics-card-title';\n\ntype PropsWithTitleDescription = {\n title: string;\n description?: string;\n titleAs?: 'h2' | 'h3' | 'h4';\n children?: never;\n className?: string;\n};\n\ntype PropsWithChildren = {\n title?: never;\n description?: never;\n children: ReactNode;\n className?: string;\n};\n\nexport function MetricsCardTitleAndDescription(props: PropsWithTitleDescription | PropsWithChildren) {\n if ('children' in props) {\n return <div className={props.className}>{props.children}</div>;\n }\n\n const { title, description, titleAs } = props;\n\n return (\n <div className={props.className}>\n <MetricsCardTitle as={titleAs}>{title}</MetricsCardTitle>\n {description && <MetricsCardDescription>{description}</MetricsCardDescription>}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsCardTopBar({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <div className={cn('flex items-start gap-4 [&>:first-child]:min-w-0 [&>:first-child]:flex-1', className)}>\n {children}\n </div>\n );\n}\n","import { MetricsCardActions } from './metrics-card-actions';\nimport { MetricsCardContent } from './metrics-card-content';\nimport { MetricsCardDescription } from './metrics-card-description';\nimport { MetricsCardError } from './metrics-card-error';\nimport { MetricsCardLoading } from './metrics-card-loading';\nimport { MetricsCardNoData } from './metrics-card-no-data';\nimport { MetricsCardRoot } from './metrics-card-root';\nimport { MetricsCardSummary } from './metrics-card-summary';\nimport { MetricsCardTitle } from './metrics-card-title';\nimport { MetricsCardTitleAndDescription } from './metrics-card-title-and-description';\nimport { MetricsCardTopBar } from './metrics-card-top-bar';\nimport { MetricsKpiCard } from '@/ds/components/MetricsKpiCard';\n\nexport const MetricsCard = Object.assign(MetricsCardRoot, {\n Root: MetricsCardRoot,\n Kpi: MetricsKpiCard,\n TopBar: MetricsCardTopBar,\n Actions: MetricsCardActions,\n TitleAndDescription: MetricsCardTitleAndDescription,\n Title: MetricsCardTitle,\n Description: MetricsCardDescription,\n Summary: MetricsCardSummary,\n Loading: MetricsCardLoading,\n Error: MetricsCardError,\n Content: MetricsCardContent,\n NoData: MetricsCardNoData,\n});\n"],"names":["cn","jsx","Spinner","Card","jsxs","MetricsKpiCard"],"mappings":";;;;;;;;AAKO,SAAS,kBAAA,CAAmB,EAAE,QAAA,EAAU,SAAA,EAAU,EAAgD;AACvG,EAAA,sCAAQ,KAAA,EAAA,EAAI,SAAA,EAAWA,YAAG,kCAAA,EAAoC,SAAS,GAAI,QAAA,EAAS,CAAA;AACtF;;ACJO,SAAS,kBAAA,CAAmB,EAAE,QAAA,EAAU,SAAA,EAAU,EAAgD;AACvG,EAAA,sCAAQ,KAAA,EAAA,EAAI,SAAA,EAAWA,YAAG,iBAAA,EAAmB,SAAS,GAAI,QAAA,EAAS,CAAA;AACrE;;ACHO,SAAS,sBAAA,CAAuB,EAAE,QAAA,EAAU,SAAA,EAAU,EAA6C;AACxG,EAAA,sCAAQ,GAAA,EAAA,EAAE,SAAA,EAAWA,YAAG,mCAAA,EAAqC,SAAS,GAAI,QAAA,EAAS,CAAA;AACrF;;ACFO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,OAAA,GAAU,qBAAA;AAAA,EACV;AACF,CAAA,EAGG;AACD,EAAA,uBACEC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWD,WAAA,CAAG,iDAAA,EAAmD,SAAS,CAAA,EAC7E,QAAA,kBAAAC,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2BAAA,EAA6B,QAAA,EAAA,OAAA,EAAQ,CAAA,EACpD,CAAA;AAEJ;;ACXO,SAAS,kBAAA,CAAmB,EAAE,SAAA,EAAU,EAA2B;AACxE,EAAA,uBACEA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWD,WAAA,CAAG,oCAAoC,SAAS,CAAA,EAC9D,QAAA,kBAAAC,cAAA,CAACC,eAAA,EAAA,EAAQ,MAAK,IAAA,EAAK,OAAA,EAAQ,OAAA,EAAQ,SAAA,EAAU,oBAAmB,CAAA,EAClE,CAAA;AAEJ;;ACPO,SAAS,iBAAA,CAAkB,EAAE,OAAA,GAAU,aAAA,EAAe,WAAU,EAA6C;AAClH,EAAA,uBACED,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWD,WAAA,CAAG,yCAAA,EAA2C,SAAS,CAAA,EACrE,QAAA,kBAAAC,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,4BAAA,EAA8B,QAAA,EAAA,OAAA,EAAQ,CAAA,EACrD,CAAA;AAEJ;;ACJO,SAAS,eAAA,CAAgB,EAAE,QAAA,EAAU,SAAA,EAAU,EAAgD;AACpG,EAAA,uBACEA,cAAA;AAAA,IAACE,SAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWH,WAAA;AAAA,QACT,uHAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;;ACbO,SAAS,kBAAA,CAAmB,EAAE,KAAA,EAAO,KAAA,EAAO,WAAU,EAA0D;AACrH,EAAA,uCACG,KAAA,EAAA,EAAI,SAAA,EAAWA,WAAA,CAAG,iDAAA,EAAmD,SAAS,CAAA,EAC7E,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,oDAAA,EAAsD,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IAC3E,KAAA,oBAASA,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8BAA8B,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAChE,CAAA;AAEJ;;ACPO,SAAS,gBAAA,CAAiB;AAAA,EAC/B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAI,GAAA,GAAM;AACZ,CAAA,EAIG;AACD,EAAA,sCAAQ,GAAA,EAAA,EAAI,SAAA,EAAWD,YAAG,iCAAA,EAAmC,SAAS,GAAI,QAAA,EAAS,CAAA;AACrF;;ACQO,SAAS,+BAA+B,KAAA,EAAsD;AACnG,EAAA,IAAI,cAAc,KAAA,EAAO;AACvB,IAAA,sCAAQ,KAAA,EAAA,EAAI,SAAA,EAAW,KAAA,CAAM,SAAA,EAAY,gBAAM,QAAA,EAAS,CAAA;AAAA,EAC1D;AAEA,EAAA,MAAM,EAAE,KAAA,EAAO,WAAA,EAAa,OAAA,EAAQ,GAAI,KAAA;AAExC,EAAA,uBACEI,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,KAAA,CAAM,SAAA,EACpB,QAAA,EAAA;AAAA,oBAAAH,cAAA,CAAC,gBAAA,EAAA,EAAiB,EAAA,EAAI,OAAA,EAAU,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IACrC,WAAA,oBAAeA,cAAA,CAAC,sBAAA,EAAA,EAAwB,QAAA,EAAA,WAAA,EAAY;AAAA,GAAA,EACvD,CAAA;AAEJ;;AC9BO,SAAS,iBAAA,CAAkB,EAAE,QAAA,EAAU,SAAA,EAAU,EAAgD;AACtG,EAAA,sCACG,KAAA,EAAA,EAAI,SAAA,EAAWD,YAAG,yEAAA,EAA2E,SAAS,GACpG,QAAA,EACH,CAAA;AAEJ;;ACIO,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAO,eAAA,EAAiB;AAAA,EACxD,IAAA,EAAM,eAAA;AAAA,EACN,GAAA,EAAKK,6BAAA;AAAA,EACL,MAAA,EAAQ,iBAAA;AAAA,EACR,OAAA,EAAS,kBAAA;AAAA,EACT,mBAAA,EAAqB,8BAAA;AAAA,EACrB,KAAA,EAAO,gBAAA;AAAA,EACP,WAAA,EAAa,sBAAA;AAAA,EACb,OAAA,EAAS,kBAAA;AAAA,EACT,OAAA,EAAS,kBAAA;AAAA,EACT,KAAA,EAAO,gBAAA;AAAA,EACP,OAAA,EAAS,kBAAA;AAAA,EACT,MAAA,EAAQ;AACV,CAAC;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics-kpi-card-Bhb4R4z0.cjs","sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value-row.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { ArrowDownRightIcon, ArrowUpRightIcon } from 'lucide-react';\nimport { Badge } from '@/ds/components/Badge';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardChange({\n changePct,\n prevValue,\n lowerIsBetter,\n className,\n}: {\n changePct: number;\n prevValue?: string;\n lowerIsBetter?: boolean;\n className?: string;\n}) {\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n const Icon = changePct >= 0 ? ArrowUpRightIcon : ArrowDownRightIcon;\n const formattedChangePct = Math.abs(changePct) < 10 ? changePct.toFixed(1) : changePct.toFixed(0);\n\n return (\n <div className={cn('flex items-center gap-1.5', className)}>\n <Badge variant={isGood ? 'green' : 'red'} emphasis=\"muted\" size=\"xs\" icon={<Icon />} className=\"tabular-nums\">\n {changePct > 0 ? '+' : ''}\n {formattedChangePct}%\n </Badge>\n <span className=\"text-meta text-placeholder\">\n vs prior period\n {prevValue ? <span className=\"sr-only\">, previous value {prevValue}</span> : null}\n </span>\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return <span className={cn('text-meta text-accent2', className)}>{message}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({ children, className }: { children: string; className?: string }) {\n return <span className={cn('text-body font-medium text-foreground', className)}>{children}</span>;\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <span className={cn('text-body', className)}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </span>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return <span className={cn('text-meta text-placeholder', className)}>{message}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return <span className={cn('text-meta text-placeholder', className)}>{message}</span>;\n}\n","import type { ReactNode } from 'react';\nimport { Card } from '@/ds/components/Card';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardRoot({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <Card className={cn('min-w-72 flex-1 px-5 py-4', className)}>\n <div className=\"grid gap-3\">{children}</div>\n </Card>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children: ReactNode; className?: string }) {\n return <strong className={cn('text-title font-semibold text-foreground tabular-nums', className)}>{children}</strong>;\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValueRow({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1', className)}>{children}</div>;\n}\n","import { MetricsKpiCardChange } from './metrics-kpi-card-change';\nimport { MetricsKpiCardError } from './metrics-kpi-card-error';\nimport { MetricsKpiCardLabel } from './metrics-kpi-card-label';\nimport { MetricsKpiCardLoading } from './metrics-kpi-card-loading';\nimport { MetricsKpiCardNoChange } from './metrics-kpi-card-no-change';\nimport { MetricsKpiCardNoData } from './metrics-kpi-card-no-data';\nimport { MetricsKpiCardRoot } from './metrics-kpi-card-root';\nimport { MetricsKpiCardValue } from './metrics-kpi-card-value';\nimport { MetricsKpiCardValueRow } from './metrics-kpi-card-value-row';\n\nexport const MetricsKpiCard = Object.assign(MetricsKpiCardRoot, {\n Label: MetricsKpiCardLabel,\n ValueRow: MetricsKpiCardValueRow,\n Value: MetricsKpiCardValue,\n Change: MetricsKpiCardChange,\n NoChange: MetricsKpiCardNoChange,\n NoData: MetricsKpiCardNoData,\n Error: MetricsKpiCardError,\n Loading: MetricsKpiCardLoading,\n});\n"],"names":["ArrowUpRightIcon","ArrowDownRightIcon","cn","jsxs","Badge","jsx","Spinner","Card"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics-kpi-card-BrnFhFQm.js","sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value-row.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { ArrowDownRightIcon, ArrowUpRightIcon } from 'lucide-react';\nimport { Badge } from '@/ds/components/Badge';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardChange({\n changePct,\n prevValue,\n lowerIsBetter,\n className,\n}: {\n changePct: number;\n prevValue?: string;\n lowerIsBetter?: boolean;\n className?: string;\n}) {\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n const Icon = changePct >= 0 ? ArrowUpRightIcon : ArrowDownRightIcon;\n const formattedChangePct = Math.abs(changePct) < 10 ? changePct.toFixed(1) : changePct.toFixed(0);\n\n return (\n <div className={cn('flex items-center gap-1.5', className)}>\n <Badge variant={isGood ? 'green' : 'red'} emphasis=\"muted\" size=\"xs\" icon={<Icon />} className=\"tabular-nums\">\n {changePct > 0 ? '+' : ''}\n {formattedChangePct}%\n </Badge>\n <span className=\"text-meta text-placeholder\">\n vs prior period\n {prevValue ? <span className=\"sr-only\">, previous value {prevValue}</span> : null}\n </span>\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return <span className={cn('text-meta text-accent2', className)}>{message}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({ children, className }: { children: string; className?: string }) {\n return <span className={cn('text-body font-medium text-foreground', className)}>{children}</span>;\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <span className={cn('text-body', className)}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </span>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return <span className={cn('text-meta text-placeholder', className)}>{message}</span>;\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return <span className={cn('text-meta text-placeholder', className)}>{message}</span>;\n}\n","import type { ReactNode } from 'react';\nimport { Card } from '@/ds/components/Card';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardRoot({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <Card className={cn('min-w-72 flex-1 px-5 py-4', className)}>\n <div className=\"grid gap-3\">{children}</div>\n </Card>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children: ReactNode; className?: string }) {\n return <strong className={cn('text-title font-semibold text-foreground tabular-nums', className)}>{children}</strong>;\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValueRow({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1', className)}>{children}</div>;\n}\n","import { MetricsKpiCardChange } from './metrics-kpi-card-change';\nimport { MetricsKpiCardError } from './metrics-kpi-card-error';\nimport { MetricsKpiCardLabel } from './metrics-kpi-card-label';\nimport { MetricsKpiCardLoading } from './metrics-kpi-card-loading';\nimport { MetricsKpiCardNoChange } from './metrics-kpi-card-no-change';\nimport { MetricsKpiCardNoData } from './metrics-kpi-card-no-data';\nimport { MetricsKpiCardRoot } from './metrics-kpi-card-root';\nimport { MetricsKpiCardValue } from './metrics-kpi-card-value';\nimport { MetricsKpiCardValueRow } from './metrics-kpi-card-value-row';\n\nexport const MetricsKpiCard = Object.assign(MetricsKpiCardRoot, {\n Label: MetricsKpiCardLabel,\n ValueRow: MetricsKpiCardValueRow,\n Value: MetricsKpiCardValue,\n Change: MetricsKpiCardChange,\n NoChange: MetricsKpiCardNoChange,\n NoData: MetricsKpiCardNoData,\n Error: MetricsKpiCardError,\n Loading: MetricsKpiCardLoading,\n});\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics-line-chart-0FR3SYSt.cjs","sources":["../src/ds/components/MetricsLineChart/metrics-line-chart-tooltip.tsx","../src/ds/components/MetricsLineChart/metrics-line-chart.tsx"],"sourcesContent":["import { ChartTooltip } from '@/ds/components/ChartTooltip';\n\nexport function MetricsLineChartTooltip({\n active,\n payload,\n label,\n suffix,\n}: {\n active?: boolean;\n payload?: Array<{ name: string; value: number; color: string }>;\n label?: string;\n suffix?: string;\n}) {\n if (!active || !payload?.length) return null;\n return (\n <ChartTooltip>\n <p className=\"mb-1 text-column text-foreground\">{label}</p>\n {payload.map(entry => (\n <p key={entry.name} className=\"text-placeholder\">\n <span className=\"mr-2 inline-block size-2 rounded-full\" style={{ backgroundColor: entry.color }} />\n {entry.name}:{' '}\n <span className=\"font-mono\">\n {entry.value}\n {suffix}\n </span>\n </p>\n ))}\n </ChartTooltip>\n );\n}\n","import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts';\nimport { MetricsLineChartTooltip } from './metrics-line-chart-tooltip';\nimport { CHART_LABEL_COLOR, CHART_TICK_FONT_SIZE } from '@/ds/tokens';\n\nexport type MetricsLineChartSeries = {\n dataKey: string;\n label: string;\n color: string;\n aggregate?: (data: Record<string, unknown>[]) => { value: string; suffix?: string };\n};\n\nexport type MetricsLineChartPointClickHandler = (point: Record<string, unknown>, seriesKey: string) => void;\n\nexport function MetricsLineChart({\n data,\n series,\n height = 210,\n yDomain,\n onPointClick,\n xAxisInterval = 5,\n xAxisMinTickGap,\n showDots = false,\n}: {\n data: Record<string, unknown>[];\n series: MetricsLineChartSeries[];\n height?: number;\n yDomain?: [number, number];\n onPointClick?: MetricsLineChartPointClickHandler;\n /** X-axis tick density. Default `5` (every 6th point). Pass\n * `\"preserveStartEnd\"` with `xAxisMinTickGap` for a width-responsive axis. */\n xAxisInterval?: number | 'preserveStart' | 'preserveEnd' | 'preserveStartEnd';\n /** Minimum px gap between rendered ticks; recharts drops labels to honor it. */\n xAxisMinTickGap?: number;\n /** Render a visible dot on every point (needed for single-point series). */\n showDots?: boolean;\n}) {\n const isClickable = typeof onPointClick === 'function';\n\n return (\n <div>\n <div className=\"mb-4 flex w-full flex-wrap items-end gap-4 gap-y-1\">\n {series.map(s => {\n const aggregated = s.aggregate?.(data);\n return (\n <div key={s.dataKey} className=\"inline-flex items-baseline gap-2\">\n <div className=\"size-2 shrink-0 -translate-y-px rounded-full\" style={{ backgroundColor: s.color }} />\n <span className=\"max-w-24 truncate text-caption text-muted-foreground\">{s.label}</span>\n {aggregated && (\n <span className=\"text-caption text-muted-foreground\">\n {aggregated.value}\n {aggregated.suffix && <span className=\"text-caption text-placeholder\"> {aggregated.suffix}</span>}\n </span>\n )}\n </div>\n );\n })}\n </div>\n <div style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <LineChart data={data}>\n <CartesianGrid\n stroke=\"currentColor\"\n strokeOpacity={0.08}\n vertical={false}\n className=\"text-black dark:text-white\"\n />\n <XAxis\n dataKey=\"time\"\n tick={{ fontSize: CHART_TICK_FONT_SIZE, fill: CHART_LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n interval={xAxisInterval}\n minTickGap={xAxisMinTickGap}\n />\n <YAxis\n tick={{ fontSize: CHART_TICK_FONT_SIZE, fill: CHART_LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n width={30}\n domain={yDomain}\n />\n <Tooltip content={<MetricsLineChartTooltip />} />\n {series.map(s => (\n <Line\n key={s.dataKey}\n type=\"linear\"\n dataKey={s.dataKey}\n stroke={s.color}\n strokeWidth={2}\n dot={showDots ? { r: 3, fill: s.color, strokeWidth: 0 } : false}\n activeDot={\n isClickable\n ? {\n r: 4,\n style: { cursor: 'pointer' },\n onClick: (_: unknown, payload: unknown) => {\n const datum = (payload as { payload?: Record<string, unknown> } | undefined)?.payload;\n if (datum) onPointClick(datum, s.dataKey);\n },\n }\n : undefined\n }\n name={s.label}\n />\n ))}\n </LineChart>\n </ResponsiveContainer>\n </div>\n </div>\n );\n}\n"],"names":["ChartTooltip","jsx","jsxs","ResponsiveContainer","LineChart","CartesianGrid","XAxis","CHART_TICK_FONT_SIZE","CHART_LABEL_COLOR","YAxis","Tooltip","Line"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics-line-chart-knlgw8bV.js","sources":["../src/ds/components/MetricsLineChart/metrics-line-chart-tooltip.tsx","../src/ds/components/MetricsLineChart/metrics-line-chart.tsx"],"sourcesContent":["import { ChartTooltip } from '@/ds/components/ChartTooltip';\n\nexport function MetricsLineChartTooltip({\n active,\n payload,\n label,\n suffix,\n}: {\n active?: boolean;\n payload?: Array<{ name: string; value: number; color: string }>;\n label?: string;\n suffix?: string;\n}) {\n if (!active || !payload?.length) return null;\n return (\n <ChartTooltip>\n <p className=\"mb-1 text-column text-foreground\">{label}</p>\n {payload.map(entry => (\n <p key={entry.name} className=\"text-placeholder\">\n <span className=\"mr-2 inline-block size-2 rounded-full\" style={{ backgroundColor: entry.color }} />\n {entry.name}:{' '}\n <span className=\"font-mono\">\n {entry.value}\n {suffix}\n </span>\n </p>\n ))}\n </ChartTooltip>\n );\n}\n","import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer } from 'recharts';\nimport { MetricsLineChartTooltip } from './metrics-line-chart-tooltip';\nimport { CHART_LABEL_COLOR, CHART_TICK_FONT_SIZE } from '@/ds/tokens';\n\nexport type MetricsLineChartSeries = {\n dataKey: string;\n label: string;\n color: string;\n aggregate?: (data: Record<string, unknown>[]) => { value: string; suffix?: string };\n};\n\nexport type MetricsLineChartPointClickHandler = (point: Record<string, unknown>, seriesKey: string) => void;\n\nexport function MetricsLineChart({\n data,\n series,\n height = 210,\n yDomain,\n onPointClick,\n xAxisInterval = 5,\n xAxisMinTickGap,\n showDots = false,\n}: {\n data: Record<string, unknown>[];\n series: MetricsLineChartSeries[];\n height?: number;\n yDomain?: [number, number];\n onPointClick?: MetricsLineChartPointClickHandler;\n /** X-axis tick density. Default `5` (every 6th point). Pass\n * `\"preserveStartEnd\"` with `xAxisMinTickGap` for a width-responsive axis. */\n xAxisInterval?: number | 'preserveStart' | 'preserveEnd' | 'preserveStartEnd';\n /** Minimum px gap between rendered ticks; recharts drops labels to honor it. */\n xAxisMinTickGap?: number;\n /** Render a visible dot on every point (needed for single-point series). */\n showDots?: boolean;\n}) {\n const isClickable = typeof onPointClick === 'function';\n\n return (\n <div>\n <div className=\"mb-4 flex w-full flex-wrap items-end gap-4 gap-y-1\">\n {series.map(s => {\n const aggregated = s.aggregate?.(data);\n return (\n <div key={s.dataKey} className=\"inline-flex items-baseline gap-2\">\n <div className=\"size-2 shrink-0 -translate-y-px rounded-full\" style={{ backgroundColor: s.color }} />\n <span className=\"max-w-24 truncate text-caption text-muted-foreground\">{s.label}</span>\n {aggregated && (\n <span className=\"text-caption text-muted-foreground\">\n {aggregated.value}\n {aggregated.suffix && <span className=\"text-caption text-placeholder\"> {aggregated.suffix}</span>}\n </span>\n )}\n </div>\n );\n })}\n </div>\n <div style={{ height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <LineChart data={data}>\n <CartesianGrid\n stroke=\"currentColor\"\n strokeOpacity={0.08}\n vertical={false}\n className=\"text-black dark:text-white\"\n />\n <XAxis\n dataKey=\"time\"\n tick={{ fontSize: CHART_TICK_FONT_SIZE, fill: CHART_LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n interval={xAxisInterval}\n minTickGap={xAxisMinTickGap}\n />\n <YAxis\n tick={{ fontSize: CHART_TICK_FONT_SIZE, fill: CHART_LABEL_COLOR, fontFamily: 'var(--font-mono)' }}\n tickLine={false}\n axisLine={false}\n width={30}\n domain={yDomain}\n />\n <Tooltip content={<MetricsLineChartTooltip />} />\n {series.map(s => (\n <Line\n key={s.dataKey}\n type=\"linear\"\n dataKey={s.dataKey}\n stroke={s.color}\n strokeWidth={2}\n dot={showDots ? { r: 3, fill: s.color, strokeWidth: 0 } : false}\n activeDot={\n isClickable\n ? {\n r: 4,\n style: { cursor: 'pointer' },\n onClick: (_: unknown, payload: unknown) => {\n const datum = (payload as { payload?: Record<string, unknown> } | undefined)?.payload;\n if (datum) onPointClick(datum, s.dataKey);\n },\n }\n : undefined\n }\n name={s.label}\n />\n ))}\n </LineChart>\n </ResponsiveContainer>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"page-header-CyXAezlZ.js","sources":["../src/ds/new/layout/page-header/page-header-action.tsx","../src/ds/new/layout/page-header/page-header-description.tsx","../src/ds/new/layout/page-header/page-header-icon.tsx","../src/ds/new/layout/page-header/page-header-meta.tsx","../src/ds/new/layout/page-header/page-header-title.tsx","../src/ds/new/layout/page-header/page-header-root.tsx","../src/ds/new/layout/page-header/page-header.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport type PageHeaderActionProps = ComponentPropsWithoutRef<'div'>;\n\nexport function PageHeaderAction({ className, ...props }: PageHeaderActionProps) {\n return (\n <div data-slot=\"page-header-action\" className={cn('ml-auto shrink-0 self-start pt-0.5', className)} {...props} />\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderDescriptionProps extends ComponentPropsWithoutRef<'p'> {\n isLoading?: boolean;\n}\n\nexport function PageHeaderDescription({ children, className, isLoading, ...props }: PageHeaderDescriptionProps) {\n return (\n <p\n data-slot=\"page-header-description\"\n className={cn(\n 'col-[title/end] flex max-w-140 flex-wrap gap-x-4 gap-y-1 text-caption text-muted-foreground',\n isLoading && 'w-160 max-w-[80%] animate-pulse rounded-md bg-muted',\n className,\n )}\n {...props}\n >\n {isLoading ? <>&nbsp;</> : children}\n </p>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport type PageHeaderIconProps = ComponentPropsWithoutRef<'div'>;\n\nexport function PageHeaderIcon({ className, ...props }: PageHeaderIconProps) {\n return (\n <div\n data-slot=\"page-header-icon\"\n className={cn(\n 'col-start-[icon] row-start-1 flex items-center self-center text-muted-foreground [&>svg]:size-5',\n className,\n )}\n {...props}\n />\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderMetaProps extends ComponentPropsWithoutRef<'div'> {\n beside?: boolean;\n}\n\nexport function PageHeaderMeta({ beside = false, className, ...props }: PageHeaderMetaProps) {\n return (\n <div\n data-slot=\"page-header-meta\"\n data-placement={beside ? 'beside' : 'below'}\n className={cn(\n 'flex min-w-0 flex-wrap items-center gap-2',\n beside ? 'col-start-[meta] row-start-1 self-center justify-self-start' : 'col-[title/end]',\n className,\n )}\n {...props}\n />\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderTitleProps extends ComponentPropsWithoutRef<'h1'> {\n isLoading?: boolean;\n}\n\nexport function PageHeaderTitle({ children, className, isLoading, ...props }: PageHeaderTitleProps) {\n return (\n <h1\n data-slot=\"page-header-title\"\n className={cn(\n 'col-start-[title] row-start-1 flex min-w-0 items-center gap-2 self-start',\n 'text-heading text-foreground',\n '[&>svg]:size-[1.25em] [&>svg]:opacity-50',\n isLoading && 'w-60 max-w-[50%] animate-pulse rounded-md bg-fill',\n className,\n )}\n {...props}\n >\n {isLoading ? <>&nbsp;</> : children}\n </h1>\n );\n}\n","import { Children, isValidElement } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\n\nimport { PageHeaderAction } from './page-header-action';\nimport { PageHeaderDescription } from './page-header-description';\nimport { PageHeaderIcon } from './page-header-icon';\nimport { PageHeaderTitle } from './page-header-title';\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderRootProps extends Omit<ComponentPropsWithoutRef<'header'>, 'title'> {\n title?: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n isLoading?: boolean;\n}\n\nexport function PageHeaderRoot({\n children,\n className,\n title,\n description,\n icon,\n isLoading,\n ...props\n}: PageHeaderRootProps) {\n const useLegacyApi = children === undefined && title !== undefined;\n\n // Actions sit outside the title grid so their height never affects title/meta/description alignment.\n const items = Children.toArray(children);\n const actions = items.filter(child => isValidElement(child) && child.type === PageHeaderAction);\n const content = items.filter(child => !actions.includes(child));\n\n return (\n <header className={cn('relative flex w-full items-start gap-3', className)} {...props}>\n <div\n data-slot=\"page-header-grid\"\n className={cn(\n 'grid min-w-0 flex-1 grid-cols-[[title]_auto_[meta]_minmax(0,1fr)_[end]] gap-x-3 gap-y-1',\n 'has-[>[data-slot=page-header-icon]]:grid-cols-[[icon]_auto_[title]_auto_[meta]_minmax(0,1fr)_[end]]',\n )}\n >\n {useLegacyApi ? (\n <>\n {!isLoading && icon !== undefined && <PageHeaderIcon>{icon}</PageHeaderIcon>}\n <PageHeaderTitle isLoading={isLoading}>{title}</PageHeaderTitle>\n {description !== undefined && (\n <PageHeaderDescription isLoading={isLoading}>{description}</PageHeaderDescription>\n )}\n </>\n ) : (\n content\n )}\n </div>\n {actions}\n </header>\n );\n}\n","import { PageHeaderAction } from './page-header-action';\nimport { PageHeaderDescription } from './page-header-description';\nimport { PageHeaderIcon } from './page-header-icon';\nimport { PageHeaderMeta } from './page-header-meta';\nimport { PageHeaderRoot } from './page-header-root';\nimport { PageHeaderTitle } from './page-header-title';\n\nexport type { PageHeaderActionProps } from './page-header-action';\nexport type { PageHeaderDescriptionProps } from './page-header-description';\nexport type { PageHeaderIconProps } from './page-header-icon';\nexport type { PageHeaderMetaProps } from './page-header-meta';\nexport type { PageHeaderRootProps } from './page-header-root';\nexport type { PageHeaderTitleProps } from './page-header-title';\n\nexport const PageHeader = Object.assign(PageHeaderRoot, {\n Icon: PageHeaderIcon,\n Title: PageHeaderTitle,\n Meta: PageHeaderMeta,\n Description: PageHeaderDescription,\n Action: PageHeaderAction,\n});\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"page-header-Dk3s3XtC.cjs","sources":["../src/ds/new/layout/page-header/page-header-action.tsx","../src/ds/new/layout/page-header/page-header-description.tsx","../src/ds/new/layout/page-header/page-header-icon.tsx","../src/ds/new/layout/page-header/page-header-meta.tsx","../src/ds/new/layout/page-header/page-header-title.tsx","../src/ds/new/layout/page-header/page-header-root.tsx","../src/ds/new/layout/page-header/page-header.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport type PageHeaderActionProps = ComponentPropsWithoutRef<'div'>;\n\nexport function PageHeaderAction({ className, ...props }: PageHeaderActionProps) {\n return (\n <div data-slot=\"page-header-action\" className={cn('ml-auto shrink-0 self-start pt-0.5', className)} {...props} />\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderDescriptionProps extends ComponentPropsWithoutRef<'p'> {\n isLoading?: boolean;\n}\n\nexport function PageHeaderDescription({ children, className, isLoading, ...props }: PageHeaderDescriptionProps) {\n return (\n <p\n data-slot=\"page-header-description\"\n className={cn(\n 'col-[title/end] flex max-w-140 flex-wrap gap-x-4 gap-y-1 text-caption text-muted-foreground',\n isLoading && 'w-160 max-w-[80%] animate-pulse rounded-md bg-muted',\n className,\n )}\n {...props}\n >\n {isLoading ? <>&nbsp;</> : children}\n </p>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport type PageHeaderIconProps = ComponentPropsWithoutRef<'div'>;\n\nexport function PageHeaderIcon({ className, ...props }: PageHeaderIconProps) {\n return (\n <div\n data-slot=\"page-header-icon\"\n className={cn(\n 'col-start-[icon] row-start-1 flex items-center self-center text-muted-foreground [&>svg]:size-5',\n className,\n )}\n {...props}\n />\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderMetaProps extends ComponentPropsWithoutRef<'div'> {\n beside?: boolean;\n}\n\nexport function PageHeaderMeta({ beside = false, className, ...props }: PageHeaderMetaProps) {\n return (\n <div\n data-slot=\"page-header-meta\"\n data-placement={beside ? 'beside' : 'below'}\n className={cn(\n 'flex min-w-0 flex-wrap items-center gap-2',\n beside ? 'col-start-[meta] row-start-1 self-center justify-self-start' : 'col-[title/end]',\n className,\n )}\n {...props}\n />\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderTitleProps extends ComponentPropsWithoutRef<'h1'> {\n isLoading?: boolean;\n}\n\nexport function PageHeaderTitle({ children, className, isLoading, ...props }: PageHeaderTitleProps) {\n return (\n <h1\n data-slot=\"page-header-title\"\n className={cn(\n 'col-start-[title] row-start-1 flex min-w-0 items-center gap-2 self-start',\n 'text-heading text-foreground',\n '[&>svg]:size-[1.25em] [&>svg]:opacity-50',\n isLoading && 'w-60 max-w-[50%] animate-pulse rounded-md bg-fill',\n className,\n )}\n {...props}\n >\n {isLoading ? <>&nbsp;</> : children}\n </h1>\n );\n}\n","import { Children, isValidElement } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\n\nimport { PageHeaderAction } from './page-header-action';\nimport { PageHeaderDescription } from './page-header-description';\nimport { PageHeaderIcon } from './page-header-icon';\nimport { PageHeaderTitle } from './page-header-title';\nimport { cn } from '@/lib/utils';\n\nexport interface PageHeaderRootProps extends Omit<ComponentPropsWithoutRef<'header'>, 'title'> {\n title?: React.ReactNode;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n isLoading?: boolean;\n}\n\nexport function PageHeaderRoot({\n children,\n className,\n title,\n description,\n icon,\n isLoading,\n ...props\n}: PageHeaderRootProps) {\n const useLegacyApi = children === undefined && title !== undefined;\n\n // Actions sit outside the title grid so their height never affects title/meta/description alignment.\n const items = Children.toArray(children);\n const actions = items.filter(child => isValidElement(child) && child.type === PageHeaderAction);\n const content = items.filter(child => !actions.includes(child));\n\n return (\n <header className={cn('relative flex w-full items-start gap-3', className)} {...props}>\n <div\n data-slot=\"page-header-grid\"\n className={cn(\n 'grid min-w-0 flex-1 grid-cols-[[title]_auto_[meta]_minmax(0,1fr)_[end]] gap-x-3 gap-y-1',\n 'has-[>[data-slot=page-header-icon]]:grid-cols-[[icon]_auto_[title]_auto_[meta]_minmax(0,1fr)_[end]]',\n )}\n >\n {useLegacyApi ? (\n <>\n {!isLoading && icon !== undefined && <PageHeaderIcon>{icon}</PageHeaderIcon>}\n <PageHeaderTitle isLoading={isLoading}>{title}</PageHeaderTitle>\n {description !== undefined && (\n <PageHeaderDescription isLoading={isLoading}>{description}</PageHeaderDescription>\n )}\n </>\n ) : (\n content\n )}\n </div>\n {actions}\n </header>\n );\n}\n","import { PageHeaderAction } from './page-header-action';\nimport { PageHeaderDescription } from './page-header-description';\nimport { PageHeaderIcon } from './page-header-icon';\nimport { PageHeaderMeta } from './page-header-meta';\nimport { PageHeaderRoot } from './page-header-root';\nimport { PageHeaderTitle } from './page-header-title';\n\nexport type { PageHeaderActionProps } from './page-header-action';\nexport type { PageHeaderDescriptionProps } from './page-header-description';\nexport type { PageHeaderIconProps } from './page-header-icon';\nexport type { PageHeaderMetaProps } from './page-header-meta';\nexport type { PageHeaderRootProps } from './page-header-root';\nexport type { PageHeaderTitleProps } from './page-header-title';\n\nexport const PageHeader = Object.assign(PageHeaderRoot, {\n Icon: PageHeaderIcon,\n Title: PageHeaderTitle,\n Meta: PageHeaderMeta,\n Description: PageHeaderDescription,\n Action: PageHeaderAction,\n});\n"],"names":["jsx","cn","Fragment","Children","isValidElement","jsxs"],"mappings":"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"}