@mastra/playground-ui 64.0.0-alpha.8 → 64.0.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 (155) hide show
  1. package/dist/combobox-BNlVCFgY.cjs +718 -0
  2. package/dist/combobox-BNlVCFgY.cjs.map +1 -0
  3. package/dist/combobox-Bw13EcK0.js +676 -0
  4. package/dist/combobox-Bw13EcK0.js.map +1 -0
  5. package/dist/{combobox-styles-B3jftCXY.js → combobox-styles-Dr66ofEp.js} +2 -2
  6. package/dist/{combobox-styles-B3jftCXY.js.map → combobox-styles-Dr66ofEp.js.map} +1 -1
  7. package/dist/components/Combobox.cjs.js +22 -1
  8. package/dist/components/Combobox.cjs.js.map +1 -1
  9. package/dist/components/Combobox.es.js +2 -2
  10. package/dist/components/DataList.cjs.js +15 -17
  11. package/dist/components/DataList.cjs.js.map +1 -1
  12. package/dist/components/DataList.es.js +4 -5
  13. package/dist/components/DataList.es.js.map +1 -1
  14. package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -1
  15. package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
  16. package/dist/components/FilterBar.es.js +3 -3
  17. package/dist/components/LogsDataList.cjs.js +5 -2
  18. package/dist/components/LogsDataList.cjs.js.map +1 -1
  19. package/dist/components/LogsDataList.es.js +5 -2
  20. package/dist/components/LogsDataList.es.js.map +1 -1
  21. package/dist/components/Meter.cjs.js +172 -0
  22. package/dist/components/Meter.cjs.js.map +1 -0
  23. package/dist/components/Meter.d.ts +2 -0
  24. package/dist/components/Meter.es.js +167 -0
  25. package/dist/components/Meter.es.js.map +1 -0
  26. package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
  27. package/dist/components/MetricsStackedBarChart.es.js +1 -1
  28. package/dist/components/PropertyFilter.cjs.js +1 -1
  29. package/dist/components/PropertyFilter.es.js +1 -1
  30. package/dist/components/SavedViews.es.js +1 -1
  31. package/dist/components/Table.cjs.js +11 -1
  32. package/dist/components/Table.cjs.js.map +1 -1
  33. package/dist/components/Table.es.js +11 -1
  34. package/dist/components/Table.es.js.map +1 -1
  35. package/dist/{data-list-top-DSr_ocKA.js → data-list-DdCZZctL.js} +332 -5
  36. package/dist/data-list-DdCZZctL.js.map +1 -0
  37. package/dist/{data-list-top-ByT2Mo77.cjs → data-list-ecHsw-zr.cjs} +339 -13
  38. package/dist/data-list-ecHsw-zr.cjs.map +1 -0
  39. package/dist/{data-list-skeleton-B_SXAeE0.js → data-list-skeleton-CGKlcoiI.js} +2 -2
  40. package/dist/{data-list-skeleton-B_SXAeE0.js.map → data-list-skeleton-CGKlcoiI.js.map} +1 -1
  41. package/dist/{data-list-skeleton-BqC9Gggi.cjs → data-list-skeleton-DGMTqeNP.cjs} +6 -6
  42. package/dist/{data-list-skeleton-BqC9Gggi.cjs.map → data-list-skeleton-DGMTqeNP.cjs.map} +1 -1
  43. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -1
  44. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  45. package/dist/domains/chat/tools/badges/workflow-badge.es.js +2 -1
  46. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  47. package/dist/domains/logs/components/logs-list-view.cjs.js +3 -2
  48. package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
  49. package/dist/domains/logs/components/logs-list-view.es.js +3 -2
  50. package/dist/domains/logs/components/logs-list-view.es.js.map +1 -1
  51. package/dist/domains/metrics/components/agent-runs-card.cjs.js +1 -1
  52. package/dist/domains/metrics/components/agent-runs-card.es.js +1 -1
  53. package/dist/domains/metrics/components/token-usage-card.cjs.js +1 -1
  54. package/dist/domains/metrics/components/token-usage-card.es.js +1 -1
  55. package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
  56. package/dist/domains/scores/components/span-scoring.es.js +1 -1
  57. package/dist/domains/scores/components/trace-scores-tab.cjs.js +2 -1
  58. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  59. package/dist/domains/scores/components/trace-scores-tab.es.js +2 -1
  60. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  61. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +0 -1
  62. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  63. package/dist/domains/traces/components/thread-view-by-trace.es.js +0 -1
  64. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  65. package/dist/domains/traces/components/trace-columns-menu.cjs.js +10 -2
  66. package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
  67. package/dist/domains/traces/components/trace-columns-menu.es.js +10 -2
  68. package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
  69. package/dist/domains/traces/components/trace-data-panel.cjs.js +2 -1
  70. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  71. package/dist/domains/traces/components/trace-data-panel.es.js +2 -1
  72. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  73. package/dist/domains/traces/components/trace-time-range-chip.es.js +1 -1
  74. package/dist/domains/traces/components/traces-list-view-adapter.cjs.js +2 -0
  75. package/dist/domains/traces/components/traces-list-view-adapter.cjs.js.map +1 -1
  76. package/dist/domains/traces/components/traces-list-view-adapter.es.js +2 -0
  77. package/dist/domains/traces/components/traces-list-view-adapter.es.js.map +1 -1
  78. package/dist/domains/traces/components/traces-list-view.cjs.js +13 -5
  79. package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
  80. package/dist/domains/traces/components/traces-list-view.es.js +12 -4
  81. package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
  82. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +4 -1
  83. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  84. package/dist/domains/traces/components/traces-page-skeleton.es.js +4 -1
  85. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  86. package/dist/domains/traces/trace-list-columns.cjs.js +12 -4
  87. package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -1
  88. package/dist/domains/traces/trace-list-columns.es.js +12 -4
  89. package/dist/domains/traces/trace-list-columns.es.js.map +1 -1
  90. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  91. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  92. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  93. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  94. package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
  95. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  96. package/dist/ee/signals/components/entity-index-list.es.js +3 -1
  97. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  98. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +3 -1
  99. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  100. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +3 -1
  101. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  102. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
  103. package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
  104. package/dist/{filter-bar-chip-BAqmNIeE.js → filter-bar-chip-BarAq1S2.js} +2 -2
  105. package/dist/{filter-bar-chip-BAqmNIeE.js.map → filter-bar-chip-BarAq1S2.js.map} +1 -1
  106. package/dist/layout/tabbed-container.cjs.js +2 -2
  107. package/dist/layout/tabbed-container.es.js +2 -2
  108. package/dist/{logs-data-list-CoER2Hst.js → logs-data-list-DBJINzIL.js} +2 -3
  109. package/dist/{logs-data-list-CoER2Hst.js.map → logs-data-list-DBJINzIL.js.map} +1 -1
  110. package/dist/{logs-data-list-DRR6cMgl.cjs → logs-data-list-IWZgMCKG.cjs} +21 -22
  111. package/dist/{logs-data-list-DRR6cMgl.cjs.map → logs-data-list-IWZgMCKG.cjs.map} +1 -1
  112. package/dist/{metrics-stacked-bar-chart-BijHfnOd.cjs → metrics-stacked-bar-chart-BofJ8NDc.cjs} +45 -3
  113. package/dist/metrics-stacked-bar-chart-BofJ8NDc.cjs.map +1 -0
  114. package/dist/{metrics-stacked-bar-chart-CdcENBLD.js → metrics-stacked-bar-chart-DcxHznKw.js} +47 -5
  115. package/dist/metrics-stacked-bar-chart-DcxHznKw.js.map +1 -0
  116. package/dist/src/domains/traces/components/traces-list-view.d.ts +4 -0
  117. package/dist/src/domains/traces/trace-list-columns.d.ts +1 -1
  118. package/dist/src/ds/components/Combobox/combobox-parts.d.ts +102 -0
  119. package/dist/src/ds/components/Combobox/combobox.d.ts +17 -3
  120. package/dist/src/ds/components/Combobox/index.d.ts +1 -0
  121. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list-cells.d.ts +7 -0
  122. package/dist/src/ds/components/DataList/TracesDataList/traces-data-list.d.ts +2 -1
  123. package/dist/src/ds/components/Meter/index.d.ts +2 -0
  124. package/dist/src/ds/components/Meter/meter-context.d.ts +6 -0
  125. package/dist/src/ds/components/Meter/meter-key-row.d.ts +6 -0
  126. package/dist/src/ds/components/Meter/meter-root.d.ts +14 -0
  127. package/dist/src/ds/components/Meter/meter-segment.d.ts +5 -0
  128. package/dist/src/ds/components/Meter/meter-source.d.ts +6 -0
  129. package/dist/src/ds/components/Meter/meter.d.ts +6 -0
  130. package/dist/src/ds/components/MetricsStackedBarChart/metrics-stacked-bar-chart.d.ts +1 -0
  131. package/dist/src/ds/components/Table/Table.d.ts +4 -2
  132. package/dist/style.css +196 -2
  133. package/dist/{traces-data-list-B0-fbEpk.cjs → traces-data-list-BH24OVKh.cjs} +23 -19
  134. package/dist/traces-data-list-BH24OVKh.cjs.map +1 -0
  135. package/dist/{traces-data-list-0GcqZUbe.js → traces-data-list-BOJB37dV.js} +8 -4
  136. package/dist/traces-data-list-BOJB37dV.js.map +1 -0
  137. package/package.json +10 -10
  138. package/dist/combobox-DlKD-Q3M.js +0 -208
  139. package/dist/combobox-DlKD-Q3M.js.map +0 -1
  140. package/dist/combobox-VHtZQcl9.cjs +0 -229
  141. package/dist/combobox-VHtZQcl9.cjs.map +0 -1
  142. package/dist/data-list-DUfXIhyC.cjs +0 -142
  143. package/dist/data-list-DUfXIhyC.cjs.map +0 -1
  144. package/dist/data-list-DXQY_iQW.js +0 -138
  145. package/dist/data-list-DXQY_iQW.js.map +0 -1
  146. package/dist/data-list-spacer-ByA4ce2a.js +0 -209
  147. package/dist/data-list-spacer-ByA4ce2a.js.map +0 -1
  148. package/dist/data-list-spacer-tQaBaum4.cjs +0 -218
  149. package/dist/data-list-spacer-tQaBaum4.cjs.map +0 -1
  150. package/dist/data-list-top-ByT2Mo77.cjs.map +0 -1
  151. package/dist/data-list-top-DSr_ocKA.js.map +0 -1
  152. package/dist/metrics-stacked-bar-chart-BijHfnOd.cjs.map +0 -1
  153. package/dist/metrics-stacked-bar-chart-CdcENBLD.js.map +0 -1
  154. package/dist/traces-data-list-0GcqZUbe.js.map +0 -1
  155. package/dist/traces-data-list-B0-fbEpk.cjs.map +0 -1
@@ -0,0 +1,102 @@
1
+ import { Combobox as BaseCombobox } from '@base-ui/react/combobox';
2
+ import { ComboboxVariant } from './combobox-styles';
3
+ import { ButtonSize, TextButtonSize } from '../Button/Button';
4
+ import { PortalContainer } from '../../primitives/portal-container';
5
+ import * as React from 'react';
6
+ /**
7
+ * Root. Same props as Base UI's `Combobox.Root` (`items`, `value`, `onValueChange`, `multiple`,
8
+ * `autoHighlight`, `filter`, ...). Pick one of three shapes:
9
+ * - Search in the field: `ComboboxInput` + `ComboboxContent`.
10
+ * - Multiple, chips in the field: `ComboboxChips` (chips + `ComboboxChipsInput`) + `ComboboxContent`.
11
+ * - Compact trigger, search in the popup: `ComboboxTrigger` + `ComboboxContent` starting with
12
+ * `ComboboxSearch`. For small triggers (an icon, a ghost button in a toolbar).
13
+ */
14
+ declare function ComboboxRoot<Value, Multiple extends boolean | undefined = false>(props: BaseCombobox.Root.Props<Value, Multiple>): React.JSX.Element;
15
+ /**
16
+ * The selected value, for a compact `ComboboxTrigger` or a custom display. `children` can be a
17
+ * function of the value; `placeholder` shows while nothing is selected.
18
+ */
19
+ declare function ComboboxValue(props: BaseCombobox.Value.Props): React.JSX.Element;
20
+ type ComboboxTriggerProps = Omit<BaseCombobox.Trigger.Props, 'className'> & {
21
+ className?: string;
22
+ /** The Button-recipe look, like Select: `default` (field surface), `outline` or `ghost`. */
23
+ variant?: ComboboxVariant;
24
+ /** Icon sizes (`icon-*`) show only `icon` (or the chevron); `children` stay as accessible text. */
25
+ size?: ButtonSize;
26
+ /** Shown before the value, or alone at icon sizes (e.g. a filter icon), replacing the chevron there. */
27
+ icon?: React.ReactNode;
28
+ showChevron?: boolean;
29
+ };
30
+ /**
31
+ * A compact trigger that opens the list, with the search inside the popup (`ComboboxSearch`). For
32
+ * small triggers such as an icon or a ghost button; a form field uses ComboboxInput instead.
33
+ * `children` is what the trigger shows, usually `<ComboboxValue placeholder="…" />`.
34
+ */
35
+ declare function ComboboxTrigger({ className, children, variant, size, icon, showChevron, ...props }: ComboboxTriggerProps): React.JSX.Element;
36
+ /** An × that clears the value. ComboboxInput renders it with `showClear`. */
37
+ declare function ComboboxClear({ className, ...props }: BaseCombobox.Clear.Props): React.JSX.Element;
38
+ type ComboboxInputProps = Omit<BaseCombobox.Input.Props, 'size'> & {
39
+ /** The field height, from the control sizes. `md` by default. */
40
+ size?: TextButtonSize;
41
+ /** Shown before the text, e.g. the selected item's icon. */
42
+ start?: React.ReactNode;
43
+ /** The chevron button at the end. On by default. */
44
+ showTrigger?: boolean;
45
+ /** An × before the chevron that clears the value. */
46
+ showClear?: boolean;
47
+ };
48
+ /**
49
+ * The field you type in to filter, showing the selected value while it's closed. `children` render
50
+ * inside the field before the chevron (e.g. a muted "4 items" detail). The list opens at the
51
+ * field's width. Inside a `Field`, the label and errors link to it.
52
+ */
53
+ declare function ComboboxInput({ className, children, showTrigger, showClear, size, start, onFocus, ...props }: ComboboxInputProps): React.JSX.Element;
54
+ /**
55
+ * The search row at the top of the popup, for a compact `ComboboxTrigger`. The same row as today's
56
+ * Combobox: a search icon, a borderless input and a hairline under it.
57
+ */
58
+ declare function ComboboxSearch({ className, ...props }: BaseCombobox.Input.Props): React.JSX.Element;
59
+ type ComboboxContentProps = BaseCombobox.Popup.Props & Pick<BaseCombobox.Positioner.Props, 'side' | 'align' | 'sideOffset' | 'alignOffset' | 'anchor'> & {
60
+ /** Where the popup portals to. Defaults to the nearest dialog or drawer, so it stays interactive there. */
61
+ container?: PortalContainer;
62
+ };
63
+ /**
64
+ * The popup. Under a field (ComboboxInput or ComboboxChips) it opens at the field's width; under a
65
+ * compact ComboboxTrigger it takes the trigger's width, at least 11rem. Either way the width never
66
+ * follows the filtered items, so it holds still while you type; long labels truncate.
67
+ */
68
+ declare function ComboboxContent({ className, side, sideOffset, align, alignOffset, anchor, container, ...props }: ComboboxContentProps): React.JSX.Element;
69
+ /** The scrolling list. Children: a render function per item (or per group), like Base UI's List. */
70
+ declare function ComboboxList({ className, ...props }: BaseCombobox.List.Props): React.JSX.Element;
71
+ /** One option. A check shows on the right while it's selected; the hover highlight slides between items. */
72
+ declare function ComboboxItem({ className, children, ref, ...props }: BaseCombobox.Item.Props): React.JSX.Element;
73
+ /** Title over a description inside an item (shadcn's Item / ItemTitle / ItemDescription). */
74
+ declare function ComboboxItemContent({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
75
+ declare function ComboboxItemTitle({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
76
+ /** Muted, up to two lines. */
77
+ declare function ComboboxItemDescription({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
78
+ /** Muted text at the end of an item, e.g. its kind ("Agent"). */
79
+ declare function ComboboxItemEnd({ className, ...props }: React.ComponentProps<'span'>): React.JSX.Element;
80
+ /** A section of items. Pass the section's `items`; render them with ComboboxCollection. */
81
+ declare function ComboboxGroup(props: BaseCombobox.Group.Props): React.JSX.Element;
82
+ /** A group's heading, styled like menu section labels. */
83
+ declare function ComboboxLabel({ className, ...props }: BaseCombobox.GroupLabel.Props): React.JSX.Element;
84
+ /** Renders a group's filtered items, one render function call per item. */
85
+ declare function ComboboxCollection(props: BaseCombobox.Collection.Props): React.JSX.Element;
86
+ /** Shows its children only when the filter matches nothing. */
87
+ declare function ComboboxEmpty({ className, ...props }: BaseCombobox.Empty.Props): React.JSX.Element;
88
+ declare function ComboboxSeparator({ className, ...props }: BaseCombobox.Separator.Props): React.JSX.Element;
89
+ /**
90
+ * Multi-select field: chips for the picked items, then ComboboxChipsInput. The chips and input wrap
91
+ * inside their own area so the chevron keeps its place on the first row. While the field is one
92
+ * line it keeps the pill shape of every other field; once chips wrap it takes the Textarea corner.
93
+ */
94
+ declare function ComboboxChips({ className, children, ...props }: BaseCombobox.Chips.Props): React.JSX.Element;
95
+ /** One picked item inside ComboboxChips. The × (or Backspace in the input) removes it. */
96
+ declare function ComboboxChip({ className, children, showRemove, ...props }: BaseCombobox.Chip.Props & {
97
+ showRemove?: boolean;
98
+ }): React.JSX.Element;
99
+ /** The text input after the chips in ComboboxChips. */
100
+ declare function ComboboxChipsInput({ className, onFocus, ...props }: BaseCombobox.Input.Props): React.JSX.Element;
101
+ export type { ComboboxTriggerProps, ComboboxInputProps, ComboboxContentProps };
102
+ export { ComboboxRoot, ComboboxInput, ComboboxTrigger, ComboboxSearch, ComboboxValue, ComboboxClear, ComboboxContent, ComboboxList, ComboboxItem, ComboboxItemContent, ComboboxItemTitle, ComboboxItemDescription, ComboboxItemEnd, ComboboxGroup, ComboboxLabel, ComboboxCollection, ComboboxEmpty, ComboboxSeparator, ComboboxChips, ComboboxChip, ComboboxChipsInput, };
@@ -1,5 +1,6 @@
1
1
  import { ComboboxVariant } from './combobox-styles';
2
2
  import { ButtonSize } from '../Button/Button';
3
+ import { PortalContainer } from '../../primitives/portal-container';
3
4
  import * as React from 'react';
4
5
  export type { ComboboxVariant } from './combobox-styles';
5
6
  export type ComboboxOption = {
@@ -15,16 +16,21 @@ export type ComboboxOption = {
15
16
  type ComboboxSharedProps = {
16
17
  options: ComboboxOption[];
17
18
  placeholder?: React.ReactNode;
19
+ /** The search row's placeholder for compact triggers. A field (inside a `Field`) searches in itself and shows `placeholder`. */
18
20
  searchPlaceholder?: string;
19
21
  emptyText?: string;
20
22
  className?: string;
21
23
  disabled?: boolean;
24
+ /**
25
+ * `default` inside a `Field` is a form field you type in to search. `ghost` (and the legacy `outline`/`link`),
26
+ * or any variant outside a `Field`, is a compact trigger with the search inside the popup.
27
+ */
22
28
  variant?: ComboboxVariant;
23
- /** Icon sizes (`icon-*`) render a chevron-only trigger; pass `aria-label` to name it. */
29
+ /** Icon sizes (`icon-*`) render a chevron-only trigger with the search in the popup; pass `aria-label` to name it. */
24
30
  size?: ButtonSize;
25
31
  open?: boolean;
26
32
  onOpenChange?: (open: boolean) => void;
27
- container?: HTMLElement | ShadowRoot | null | React.RefObject<HTMLElement | ShadowRoot | null>;
33
+ container?: PortalContainer;
28
34
  id?: string;
29
35
  'aria-label'?: string;
30
36
  'aria-describedby'?: string;
@@ -33,7 +39,7 @@ type ComboboxSharedProps = {
33
39
  showChevron?: boolean;
34
40
  iconOnlyValue?: boolean;
35
41
  allowCustomValue?: boolean;
36
- /** Called with the search input text as it changes (and with `''` after a single-mode selection resets it). */
42
+ /** Called with the search text as it changes (and with `''` after a compact trigger's selection resets it). */
37
43
  onInputValueChange?: (value: string) => void;
38
44
  /** @deprecated Wrap the combobox in `<Field invalid>` with a `FieldError`. */
39
45
  error?: string;
@@ -52,4 +58,12 @@ export type ComboboxMultipleProps = ComboboxSharedProps & {
52
58
  clearLabel?: string;
53
59
  };
54
60
  export type ComboboxProps = ComboboxSingleProps | ComboboxMultipleProps;
61
+ /**
62
+ * A searchable select driven by `options`, built on the Combobox parts.
63
+ *
64
+ * Inside a `Field`, a `default` combobox searches right in the field: a text field for a single value,
65
+ * removable chips for `multiple`. Everywhere else (outside a `Field`, `ghost` and icon-size triggers,
66
+ * custom non-text placeholders) it keeps a compact trigger with the search inside the popup. For anything
67
+ * these props don't cover (groups, rich items), compose the parts directly (`ComboboxRoot`, ...).
68
+ */
55
69
  export declare function Combobox(props: ComboboxProps): React.JSX.Element;
@@ -1,3 +1,4 @@
1
1
  export * from './combobox';
2
+ export * from './combobox-parts';
2
3
  export { comboboxStyles } from './combobox-styles';
3
4
  export { Combobox as ComboboxPrimitive } from '@base-ui/react/combobox';
@@ -11,6 +11,13 @@ export interface TracesDataListInputCellProps {
11
11
  input?: string | null;
12
12
  }
13
13
  export declare function TracesDataListInputCell({ input }: TracesDataListInputCellProps): import("react").JSX.Element;
14
+ export interface TracesDataListOutputCellProps {
15
+ output?: string;
16
+ /** Shown instead of `output`, in the error color, when `status` is `'error'`. */
17
+ error?: string;
18
+ status?: string | null;
19
+ }
20
+ export declare function TracesDataListOutputCell({ output, error, status }: TracesDataListOutputCellProps): import("react").JSX.Element;
14
21
  export interface TracesDataListTypeCellProps {
15
22
  entityType?: string | null;
16
23
  }
@@ -8,7 +8,7 @@ import { DataListSpacer } from '../data-list-spacer';
8
8
  import { DataListSubHeading } from '../data-list-subheading';
9
9
  import { DataListTop } from '../data-list-top';
10
10
  import { DataListTopCellWithTooltip } from '../data-list-top-cell';
11
- import { TracesDataListNameCell, TracesDataListInputCell, TracesDataListTypeCell, TracesDataListStatusCell } from './traces-data-list-cells';
11
+ import { TracesDataListNameCell, TracesDataListInputCell, TracesDataListOutputCell, TracesDataListTypeCell, TracesDataListStatusCell } from './traces-data-list-cells';
12
12
  declare function TracesDataListRoot(props: ComponentProps<typeof DataListRoot>): import("react").JSX.Element;
13
13
  export declare const TracesDataList: typeof TracesDataListRoot & {
14
14
  Top: typeof DataListTop;
@@ -29,6 +29,7 @@ export declare const TracesDataList: typeof TracesDataListRoot & {
29
29
  CreatedCell: typeof DataListCreatedCell;
30
30
  NameCell: typeof TracesDataListNameCell;
31
31
  InputCell: typeof TracesDataListInputCell;
32
+ OutputCell: typeof TracesDataListOutputCell;
32
33
  TypeCell: typeof TracesDataListTypeCell;
33
34
  StatusCell: typeof TracesDataListStatusCell;
34
35
  NextPageLoading: typeof DataListNextPageLoading;
@@ -0,0 +1,2 @@
1
+ export * from './meter';
2
+ export * from './meter-source';
@@ -0,0 +1,6 @@
1
+ export type MeterPart = 'bar' | 'key';
2
+ export declare const MeterPartContext: import('react').Context<{
3
+ part: MeterPart;
4
+ format: (value: number) => string;
5
+ }>;
6
+ export declare const sourceColorClassName: string;
@@ -0,0 +1,6 @@
1
+ import { ReactNode } from 'react';
2
+ export declare function MeterKeyRow({ swatch, label, amount }: {
3
+ swatch: string;
4
+ label: ReactNode;
5
+ amount: string;
6
+ }): import("react").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { ComponentProps, ReactNode } from 'react';
2
+ export type MeterProps = Omit<ComponentProps<'span'>, 'children'> & {
3
+ value: number;
4
+ max: number;
5
+ children?: ReactNode;
6
+ format?: (value: number) => string;
7
+ } & ({
8
+ 'aria-label': string;
9
+ 'aria-labelledby'?: never;
10
+ } | {
11
+ 'aria-label'?: never;
12
+ 'aria-labelledby': string;
13
+ });
14
+ export declare function MeterRoot({ value, max, children, format, className, ...props }: MeterProps): import("react").JSX.Element;
@@ -0,0 +1,5 @@
1
+ export declare function MeterSegment({ slot, grow, className }: {
2
+ slot: string;
3
+ grow: number;
4
+ className: string;
5
+ }): import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { ReactNode } from 'react';
2
+ export type MeterSourceProps = {
3
+ label: ReactNode;
4
+ value: number;
5
+ };
6
+ export declare function MeterSource({ label, value }: MeterSourceProps): import("react").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { MeterRoot } from './meter-root';
2
+ import { MeterSource } from './meter-source';
3
+ export type { MeterProps } from './meter-root';
4
+ export declare const Meter: typeof MeterRoot & {
5
+ Source: typeof MeterSource;
6
+ };
@@ -42,6 +42,7 @@ export type MetricsStackedBarChartProps = {
42
42
  xLabels?: ChartXLabels;
43
43
  /** Row field for the tooltip heading (e.g. a longer date); defaults to the x-axis label. */
44
44
  tooltipLabelKey?: string;
45
+ columnLabelKey?: string;
45
46
  /** Click a column (e.g. to open its traces); the plot shows a pointer cursor. */
46
47
  onBucketClick?: (row: Record<string, unknown>, index: number) => void;
47
48
  /** One dashed line over the bars, on its own hidden scale (e.g. a duration over counts). */
@@ -25,8 +25,10 @@ export declare namespace Table {
25
25
  var SortButton: typeof TableSortButton;
26
26
  var Pagination: typeof TablePagination;
27
27
  }
28
- export type TableHeaderProps = ComponentProps<'thead'>;
29
- declare function TableHeader({ className, ...props }: TableHeaderProps): import("react").JSX.Element;
28
+ export type TableHeaderProps = ComponentProps<'thead'> & {
29
+ placement?: 'above' | 'inside';
30
+ };
31
+ declare function TableHeader({ className, placement, ...props }: TableHeaderProps): import("react").JSX.Element;
30
32
  export interface TheadProps {
31
33
  className?: string;
32
34
  children: ReactNode;
package/dist/style.css CHANGED
@@ -714,6 +714,10 @@
714
714
  inset-inline: 1px;
715
715
  }
716
716
 
717
+ .-inset-y-1 {
718
+ inset-block: calc(var(--spacing) * -1);
719
+ }
720
+
717
721
  .inset-y-\(--attachment-action-inset\) {
718
722
  inset-block: var(--attachment-action-inset);
719
723
  }
@@ -794,6 +798,10 @@
794
798
  right: var(--attachment-action-inset);
795
799
  }
796
800
 
801
+ .right-\(--meter-over\) {
802
+ right: var(--meter-over);
803
+ }
804
+
797
805
  .right-0 {
798
806
  right: 0;
799
807
  }
@@ -1986,6 +1994,11 @@
1986
1994
  height: calc(var(--spacing) * 5);
1987
1995
  }
1988
1996
 
1997
+ .size-5\.5 {
1998
+ width: calc(var(--spacing) * 5.5);
1999
+ height: calc(var(--spacing) * 5.5);
2000
+ }
2001
+
1989
2002
  .size-6 {
1990
2003
  width: calc(var(--spacing) * 6);
1991
2004
  height: calc(var(--spacing) * 6);
@@ -2106,6 +2119,11 @@
2106
2119
  height: var(--spacing-icon-lg);
2107
2120
  }
2108
2121
 
2122
+ .size-icon-sm {
2123
+ width: var(--spacing-icon-sm);
2124
+ height: var(--spacing-icon-sm);
2125
+ }
2126
+
2109
2127
  .size-icon-xs {
2110
2128
  width: var(--spacing-icon-xs);
2111
2129
  height: var(--spacing-icon-xs);
@@ -2163,6 +2181,10 @@
2163
2181
  height: calc(var(--spacing) * 5);
2164
2182
  }
2165
2183
 
2184
+ .h-5\.5 {
2185
+ height: calc(var(--spacing) * 5.5);
2186
+ }
2187
+
2166
2188
  .h-6 {
2167
2189
  height: calc(var(--spacing) * 6);
2168
2190
  }
@@ -2731,6 +2753,10 @@
2731
2753
  min-height: 100vh;
2732
2754
  }
2733
2755
 
2756
+ .w-\(--anchor-width\) {
2757
+ width: var(--anchor-width);
2758
+ }
2759
+
2734
2760
  .w-\(--attachment-action-width\) {
2735
2761
  width: var(--attachment-action-width);
2736
2762
  }
@@ -2739,6 +2765,10 @@
2739
2765
  width: var(--field-width, 100%);
2740
2766
  }
2741
2767
 
2768
+ .w-\(--meter-over\) {
2769
+ width: var(--meter-over);
2770
+ }
2771
+
2742
2772
  .w-\(--sidebar-width\) {
2743
2773
  width: var(--sidebar-width);
2744
2774
  }
@@ -3155,6 +3185,10 @@
3155
3185
  width: calc(var(--sidebar-width) - 1rem);
3156
3186
  }
3157
3187
 
3188
+ .w-\[max\(11rem\,var\(--anchor-width\)\)\] {
3189
+ width: max(11rem, var(--anchor-width));
3190
+ }
3191
+
3158
3192
  .w-\[min\(24rem\,calc\(100vw-2rem\)\)\] {
3159
3193
  width: min(24rem, 100vw - 2rem);
3160
3194
  }
@@ -3495,6 +3529,10 @@
3495
3529
  min-width: calc(var(--spacing) * .5);
3496
3530
  }
3497
3531
 
3532
+ .min-w-1 {
3533
+ min-width: var(--spacing);
3534
+ }
3535
+
3498
3536
  .min-w-1\.5 {
3499
3537
  min-width: calc(var(--spacing) * 1.5);
3500
3538
  }
@@ -3655,6 +3693,10 @@
3655
3693
  flex-grow: 1;
3656
3694
  }
3657
3695
 
3696
+ .grow-\(--meter-share\) {
3697
+ flex-grow: var(--meter-share);
3698
+ }
3699
+
3658
3700
  .basis-0 {
3659
3701
  flex-basis: 0;
3660
3702
  }
@@ -4301,6 +4343,10 @@
4301
4343
  gap: .75em;
4302
4344
  }
4303
4345
 
4346
+ .gap-\[3px\] {
4347
+ gap: 3px;
4348
+ }
4349
+
4304
4350
  .gap-\[6px\] {
4305
4351
  gap: 6px;
4306
4352
  }
@@ -4394,6 +4440,10 @@
4394
4440
  column-gap: calc(var(--spacing) * 5);
4395
4441
  }
4396
4442
 
4443
+ .gap-x-10 {
4444
+ column-gap: calc(var(--spacing) * 10);
4445
+ }
4446
+
4397
4447
  :where(.space-x-2 > :not(:last-child)) {
4398
4448
  --tw-space-x-reverse: 0;
4399
4449
  margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));
@@ -4420,6 +4470,10 @@
4420
4470
  row-gap: calc(var(--spacing) * 3);
4421
4471
  }
4422
4472
 
4473
+ .gap-y-6 {
4474
+ row-gap: calc(var(--spacing) * 6);
4475
+ }
4476
+
4423
4477
  .gap-y-px {
4424
4478
  row-gap: 1px;
4425
4479
  }
@@ -4656,6 +4710,11 @@
4656
4710
  border-bottom-right-radius: var(--radius-3xl);
4657
4711
  }
4658
4712
 
4713
+ .rounded-r-full {
4714
+ border-top-right-radius: 3.40282e38px;
4715
+ border-bottom-right-radius: 3.40282e38px;
4716
+ }
4717
+
4659
4718
  .rounded-r-md {
4660
4719
  border-top-right-radius: var(--radius-md);
4661
4720
  border-bottom-right-radius: var(--radius-md);
@@ -4914,6 +4973,10 @@
4914
4973
  background-color: var(--data-list-background);
4915
4974
  }
4916
4975
 
4976
+ .bg-\(--meter-source\) {
4977
+ background-color: var(--meter-source);
4978
+ }
4979
+
4917
4980
  .bg-\[var\(--tab-indicator-color\,var\(--fill-hover\)\)\] {
4918
4981
  background-color: var(--tab-indicator-color, var(--fill-hover));
4919
4982
  }
@@ -6242,6 +6305,14 @@
6242
6305
  padding-top: calc(var(--spacing) * 12);
6243
6306
  }
6244
6307
 
6308
+ .pt-24 {
6309
+ padding-top: calc(var(--spacing) * 24);
6310
+ }
6311
+
6312
+ .pt-40 {
6313
+ padding-top: calc(var(--spacing) * 40);
6314
+ }
6315
+
6245
6316
  .pt-\[env\(safe-area-inset-top\)\] {
6246
6317
  padding-top: env(safe-area-inset-top);
6247
6318
  }
@@ -6298,6 +6369,10 @@
6298
6369
  padding-right: calc(var(--spacing) * 12);
6299
6370
  }
6300
6371
 
6372
+ .pr-\[5\.5px\] {
6373
+ padding-right: 5.5px;
6374
+ }
6375
+
6301
6376
  .pb-\(--chat-gutter\) {
6302
6377
  padding-bottom: var(--chat-gutter);
6303
6378
  }
@@ -6414,6 +6489,10 @@
6414
6489
  padding-left: .9em;
6415
6490
  }
6416
6491
 
6492
+ .pl-\[3\.5px\] {
6493
+ padding-left: 3.5px;
6494
+ }
6495
+
6417
6496
  .pl-\[18px\] {
6418
6497
  padding-left: 18px;
6419
6498
  }
@@ -6422,6 +6501,10 @@
6422
6501
  padding-left: 2.75em;
6423
6502
  }
6424
6503
 
6504
+ .pl-\[calc\(0\.9em_-_4px\)\] {
6505
+ padding-left: calc(.9em - 4px);
6506
+ }
6507
+
6425
6508
  .pl-\[calc\(var\(--text-label\)\*2\.75\+1px\)\] {
6426
6509
  padding-left: calc(var(--text-label) * 2.75 + 1px);
6427
6510
  }
@@ -8090,7 +8173,15 @@
8090
8173
  background-color: var(--fill-subtle);
8091
8174
  }
8092
8175
 
8093
- .group-hover\/message\:opacity-100:is(:where(.group\/message):hover *), .group-hover\/metrics-card\:opacity-100:is(:where(.group\/metrics-card):hover *), .group-hover\/resize\:opacity-100:is(:where(.group\/resize):hover *) {
8176
+ .group-hover\/message\:opacity-100:is(:where(.group\/message):hover *) {
8177
+ opacity: 1;
8178
+ }
8179
+
8180
+ .group-hover\/meter\:opacity-0:is(:where(.group\/meter):hover *) {
8181
+ opacity: 0;
8182
+ }
8183
+
8184
+ .group-hover\/meter\:opacity-100:is(:where(.group\/meter):hover *), .group-hover\/metrics-card\:opacity-100:is(:where(.group\/metrics-card):hover *), .group-hover\/resize\:opacity-100:is(:where(.group\/resize):hover *) {
8094
8185
  opacity: 1;
8095
8186
  }
8096
8187
 
@@ -8154,6 +8245,14 @@
8154
8245
  --tw-ring-color: var(--border-focus);
8155
8246
  }
8156
8247
 
8248
+ .group-focus-visible\/meter\:opacity-0:is(:where(.group\/meter):focus-visible *) {
8249
+ opacity: 0;
8250
+ }
8251
+
8252
+ .group-focus-visible\/meter\:opacity-100:is(:where(.group\/meter):focus-visible *) {
8253
+ opacity: 1;
8254
+ }
8255
+
8157
8256
  .group-focus-visible\/resize\:via-border-focus:is(:where(.group\/resize):focus-visible *) {
8158
8257
  --tw-gradient-via: var(--border-focus);
8159
8258
  --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
@@ -8622,6 +8721,11 @@
8622
8721
  inset-block: calc(var(--spacing) * -1.5);
8623
8722
  }
8624
8723
 
8724
+ .before\:-inset-y-2:before {
8725
+ content: var(--tw-content);
8726
+ inset-block: calc(var(--spacing) * -2);
8727
+ }
8728
+
8625
8729
  .before\:inset-y-0:before {
8626
8730
  content: var(--tw-content);
8627
8731
  inset-block: 0;
@@ -9460,6 +9564,14 @@
9460
9564
  .not-disabled\:hover\:text-foreground:not(:disabled):hover {
9461
9565
  color: var(--foreground);
9462
9566
  }
9567
+
9568
+ .not-data-disabled\:hover\:bg-fill:not([data-disabled]):hover {
9569
+ background-color: var(--fill);
9570
+ }
9571
+
9572
+ .not-data-disabled\:hover\:text-foreground:not([data-disabled]):hover {
9573
+ color: var(--foreground);
9574
+ }
9463
9575
  }
9464
9576
 
9465
9577
  .focus\:border-border-focus:focus {
@@ -9949,6 +10061,14 @@
9949
10061
  cursor: pointer;
9950
10062
  }
9951
10063
 
10064
+ .has-\[input\:disabled\]\:cursor-not-allowed:has(:is(input:disabled)) {
10065
+ cursor: not-allowed;
10066
+ }
10067
+
10068
+ .has-\[input\:disabled\]\:bg-field-disabled:has(:is(input:disabled)) {
10069
+ background-color: var(--field-disabled);
10070
+ }
10071
+
9952
10072
  .has-\[textarea\]\:h-auto:has(:is(textarea)) {
9953
10073
  height: auto;
9954
10074
  }
@@ -10168,7 +10288,15 @@
10168
10288
  color: var(--destructive-foreground);
10169
10289
  }
10170
10290
 
10171
- .data-highlighted\:text-foreground[data-highlighted], .data-selected\:text-foreground[data-selected], .data-sorted\:text-foreground[data-sorted], .data-\[active\]\:text-foreground[data-active] {
10291
+ .data-highlighted\:text-foreground[data-highlighted] {
10292
+ color: var(--foreground);
10293
+ }
10294
+
10295
+ .data-multiline\:rounded-xl[data-multiline] {
10296
+ border-radius: var(--radius-xl);
10297
+ }
10298
+
10299
+ .data-selected\:text-foreground[data-selected], .data-sorted\:text-foreground[data-sorted], .data-\[active\]\:text-foreground[data-active] {
10172
10300
  color: var(--foreground);
10173
10301
  }
10174
10302
 
@@ -11887,6 +12015,14 @@
11887
12015
  }
11888
12016
  }
11889
12017
 
12018
+ .has-\[input\:disabled\]\:\[\&_\*\]\:cursor-not-allowed:has(:is(input:disabled)) * {
12019
+ cursor: not-allowed;
12020
+ }
12021
+
12022
+ .has-\[input\:disabled\]\:\[\&_\*\]\:text-muted-foreground:has(:is(input:disabled)) * {
12023
+ color: var(--muted-foreground);
12024
+ }
12025
+
11890
12026
  .\[\&_\*\:focus\:not\(\:focus-visible\)\]\:outline-none :focus:not(:focus-visible) {
11891
12027
  --tw-outline-style: none;
11892
12028
  outline-style: none;
@@ -12180,6 +12316,10 @@
12180
12316
  .not-disabled\:hover\:\[\&_svg\]\:text-foreground:not(:disabled):hover svg {
12181
12317
  color: var(--foreground);
12182
12318
  }
12319
+
12320
+ .not-disabled\:hover\:\[\&_svg\]\:text-muted-foreground:not(:disabled):hover svg {
12321
+ color: var(--muted-foreground);
12322
+ }
12183
12323
  }
12184
12324
 
12185
12325
  .aria-disabled\:\[\&_svg\]\:text-muted-foreground[aria-disabled="true"] svg {
@@ -12597,6 +12737,26 @@
12597
12737
  grid-column: 1 / -1;
12598
12738
  }
12599
12739
 
12740
+ .\[\&\>\:nth-child\(5n\)\]\:\[--meter-source\:var\(--chart-share-5\)\] > :nth-child(5n) {
12741
+ --meter-source: var(--chart-share-5);
12742
+ }
12743
+
12744
+ .\[\&\>\:nth-child\(5n\+1\)\]\:\[--meter-source\:var\(--chart-share-1\)\] > :nth-child(5n+1) {
12745
+ --meter-source: var(--chart-share-1);
12746
+ }
12747
+
12748
+ .\[\&\>\:nth-child\(5n\+2\)\]\:\[--meter-source\:var\(--chart-share-2\)\] > :nth-child(5n+2) {
12749
+ --meter-source: var(--chart-share-2);
12750
+ }
12751
+
12752
+ .\[\&\>\:nth-child\(5n\+3\)\]\:\[--meter-source\:var\(--chart-share-3\)\] > :nth-child(5n+3) {
12753
+ --meter-source: var(--chart-share-3);
12754
+ }
12755
+
12756
+ .\[\&\>\:nth-child\(5n\+4\)\]\:\[--meter-source\:var\(--chart-share-4\)\] > :nth-child(5n+4) {
12757
+ --meter-source: var(--chart-share-4);
12758
+ }
12759
+
12600
12760
  .\[\&\>\[data-slot\=avatar\]\]\:border-0 > [data-slot="avatar"] {
12601
12761
  border-style: var(--tw-border-style);
12602
12762
  border-width: 0;
@@ -13078,6 +13238,27 @@
13078
13238
  border-bottom-left-radius: var(--radius-lg);
13079
13239
  }
13080
13240
 
13241
+ .\[\&\>tr\>th\]\:border-b > tr > th {
13242
+ border-bottom-style: var(--tw-border-style);
13243
+ border-bottom-width: 1px;
13244
+ }
13245
+
13246
+ .\[\&\>tr\>th\]\:bg-background > tr > th {
13247
+ background-color: var(--background);
13248
+ }
13249
+
13250
+ .\[\&\>tr\>th\]\:bg-clip-padding > tr > th {
13251
+ background-clip: padding-box;
13252
+ }
13253
+
13254
+ .\[\&\>tr\>th\:first-child\]\:rounded-tl-lg > tr > th:first-child {
13255
+ border-top-left-radius: var(--radius-lg);
13256
+ }
13257
+
13258
+ .\[\&\>tr\>th\:last-child\]\:rounded-tr-lg > tr > th:last-child {
13259
+ border-top-right-radius: var(--radius-lg);
13260
+ }
13261
+
13081
13262
  .\[\&\[type\=number\]\]\:\[appearance\:textfield\][type="number"] {
13082
13263
  appearance: textfield;
13083
13264
  }
@@ -13098,6 +13279,19 @@
13098
13279
  display: none;
13099
13280
  }
13100
13281
 
13282
+ [data-slot="combobox-chip"] ~ .\[\[data-slot\=combobox-chip\]\~\&\]\:pl-1 {
13283
+ padding-left: var(--spacing);
13284
+ }
13285
+
13286
+ thead[data-placement="inside"] + .\[thead\[data-placement\=inside\]\+\&\>tr\:first-child_\[data-row-target\]\]\:after\:rounded-none > tr:first-child [data-row-target]:after {
13287
+ content: var(--tw-content);
13288
+ border-radius: var(--radius-none);
13289
+ }
13290
+
13291
+ thead[data-placement="inside"] + .\[thead\[data-placement\=inside\]\+\&\>tr\:first-child\>td\]\:rounded-none > tr:first-child > td {
13292
+ border-radius: var(--radius-none);
13293
+ }
13294
+
13101
13295
  .shiki-token {
13102
13296
  color: var(--shiki-light, var(--foreground));
13103
13297
  background-color: var(--shiki-light-bg, transparent);