@mastra/playground-ui 30.0.2-alpha.2 → 31.0.0-alpha.3

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 (27) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/dist/index.cjs.js +233 -75
  3. package/dist/index.cjs.js.map +1 -1
  4. package/dist/index.css +201 -27
  5. package/dist/index.es.js +227 -70
  6. package/dist/index.es.js.map +1 -1
  7. package/dist/src/domains/logs/hooks/use-logs.d.ts +13 -1267
  8. package/dist/src/domains/traces/hooks/use-branch.d.ts +5 -46
  9. package/dist/src/domains/traces/hooks/use-span-detail.d.ts +6 -44
  10. package/dist/src/domains/traces/hooks/use-trace-light-spans.d.ts +5 -18
  11. package/dist/src/domains/traces/hooks/use-trace-spans.d.ts +5 -46
  12. package/dist/src/domains/traces/hooks/use-traces.d.ts +15 -1539
  13. package/dist/src/ds/components/ButtonsGroup/buttons-group.stories.d.ts +30 -0
  14. package/dist/src/ds/components/Command/command.d.ts +7 -72
  15. package/dist/src/ds/components/FormFieldBlocks/fields/search-field-block.d.ts +2 -1
  16. package/dist/src/ds/components/Input/input.d.ts +3 -3
  17. package/dist/src/ds/components/Input/input.stories.d.ts +4 -0
  18. package/dist/src/ds/components/InputGroup/input-group.d.ts +7 -2
  19. package/dist/src/ds/components/InputGroup/input-group.stories.d.ts +3 -0
  20. package/dist/src/ds/components/ListSearch/list-search.d.ts +2 -1
  21. package/dist/src/ds/components/Searchbar/searchbar.d.ts +4 -1
  22. package/dist/src/ds/components/Searchbar/searchbar.stories.d.ts +3 -0
  23. package/dist/src/ds/components/Textarea/textarea.d.ts +3 -3
  24. package/dist/src/ds/components/Textarea/textarea.stories.d.ts +1 -0
  25. package/dist/src/ds/primitives/form-element.d.ts +6 -4
  26. package/dist/src/lib/formatting.d.ts +1 -0
  27. package/package.json +6 -6
package/dist/index.es.js CHANGED
@@ -3624,12 +3624,14 @@ const formElementSizes = {
3624
3624
  lg: "h-form-lg"
3625
3625
  };
3626
3626
  const formElementFocus = "focus:outline-hidden focus:ring-1 focus:ring-accent1 focus:shadow-focus-ring transition-shadow duration-normal";
3627
- const formElementFocusWithin = "focus-within:outline-hidden focus-within:ring-1 focus-within:ring-accent1 focus-within:shadow-focus-ring transition-shadow duration-normal";
3628
- const formElementRadius = "rounded-md";
3629
- const sharedFormElementStyle = "bg-surface2 border border-border1 text-neutral5 hover:text-neutral6 hover:border-border2 rounded-lg";
3630
3627
  const sharedFormElementFocusStyle = "outline-hidden focus-visible:outline-hidden focus-visible:border-accent1 focus-visible:ring-1 focus-visible:ring-accent1/40";
3631
3628
  const sharedFormElementDisabledStyle = "disabled:opacity-50 disabled:cursor-not-allowed";
3632
- const formElementTransition = "transition-all duration-normal ease-out-custom";
3629
+ const inputFocusBorderVisible = "focus-visible:border-neutral5/50";
3630
+ const inputFocusBorderWithin = "focus-within:border-neutral5/50";
3631
+ const inputHoverBorderWithin = "[&:hover:not(:focus-within)]:border-border2";
3632
+ const inputSurfaceAndFocusStyle = "bg-surface-overlay-soft border border-border1 text-neutral5 hover:text-neutral6 hover:bg-surface-overlay-strong hover:border-border2 outline-hidden focus-visible:outline-hidden focus-visible:bg-surface-overlay-strong " + inputFocusBorderVisible;
3633
+ const inputOutlineAndFocusStyle = "bg-transparent border border-border1 text-neutral5 hover:text-neutral6 hover:border-border2 outline-hidden focus-visible:outline-hidden " + inputFocusBorderVisible;
3634
+ const unstyledFormElementStyle = "border-0 bg-transparent outline-hidden focus-visible:outline-hidden";
3633
3635
 
3634
3636
  const TEXT_MODE_ADORNMENTS = cn(
3635
3637
  "gap-[.75em] rounded-full",
@@ -3706,6 +3708,7 @@ const Button = React__default.forwardRef(
3706
3708
  ref,
3707
3709
  disabled,
3708
3710
  "aria-label": ariaLabel,
3711
+ "data-variant": variant,
3709
3712
  className: cn(buttonVariants({ variant, size: resolvedSize }), isLabelless && "[&>svg]:opacity-75", className),
3710
3713
  ...props,
3711
3714
  children: content
@@ -6011,14 +6014,18 @@ const textareaVariants = cva(
6011
6014
  {
6012
6015
  variants: {
6013
6016
  variant: {
6014
- default: cn(sharedFormElementStyle, sharedFormElementFocusStyle, sharedFormElementDisabledStyle),
6015
- unstyled: "border-0 bg-transparent shadow-none focus:shadow-none focus:ring-0"
6017
+ default: cn(inputSurfaceAndFocusStyle, "rounded-xl", sharedFormElementDisabledStyle),
6018
+ filled: cn(inputSurfaceAndFocusStyle, "rounded-xl", sharedFormElementDisabledStyle),
6019
+ outline: cn(inputOutlineAndFocusStyle, "rounded-xl", sharedFormElementDisabledStyle),
6020
+ unstyled: unstyledFormElementStyle
6016
6021
  },
6022
+ // Text tokens mirror the Input size scale (sm→ui-sm, md/default→ui-md, lg→ui-lg)
6023
+ // so a Textarea reads at the same size as a sibling Input.
6017
6024
  size: {
6018
6025
  sm: "px-2 py-1.5 text-ui-sm",
6019
- md: "px-3 py-2 text-ui-sm",
6026
+ md: "px-3 py-2 text-ui-md",
6020
6027
  default: "px-3 py-2 text-ui-md",
6021
- lg: "px-4 py-3 text-ui-sm"
6028
+ lg: "px-4 py-3 text-ui-lg"
6022
6029
  }
6023
6030
  },
6024
6031
  defaultVariants: {
@@ -6034,8 +6041,7 @@ const Textarea = React.forwardRef(
6034
6041
  {
6035
6042
  className: cn(
6036
6043
  textareaVariants({ variant, size }),
6037
- // Error state styling
6038
- error && "border-error focus:ring-error focus:shadow-glow-accent2",
6044
+ error && "border-error focus-visible:border-error",
6039
6045
  className
6040
6046
  ),
6041
6047
  "data-testid": testId,
@@ -6907,6 +6913,7 @@ const SelectTrigger = React.forwardRef(
6907
6913
  Select$1.Trigger,
6908
6914
  {
6909
6915
  ref,
6916
+ "data-slot": "select-trigger",
6910
6917
  className: cn(
6911
6918
  "inline-flex w-full cursor-pointer select-none items-center justify-between gap-1.5 whitespace-nowrap",
6912
6919
  formElementSizes[size],
@@ -7157,8 +7164,21 @@ function CodeBlock$1({
7157
7164
  }
7158
7165
  );
7159
7166
  }
7167
+ function tokenStyle(token, isDark) {
7168
+ if (token.htmlStyle && typeof token.htmlStyle === "object") {
7169
+ const vars = token.htmlStyle;
7170
+ const color = isDark ? vars["--shiki-dark"] : vars["--shiki-light"];
7171
+ const background = isDark ? vars["--shiki-dark-bg"] : vars["--shiki-light-bg"];
7172
+ const style = {};
7173
+ if (color) style.color = color;
7174
+ if (background) style.backgroundColor = background;
7175
+ return Object.keys(style).length ? style : void 0;
7176
+ }
7177
+ return token.color ? { color: token.color } : void 0;
7178
+ }
7160
7179
  function HighlightedCode({ code, lang }) {
7161
7180
  const [tokens, setTokens] = React.useState(null);
7181
+ const isDark = useTheme().resolvedTheme === "dark";
7162
7182
  React.useEffect(() => {
7163
7183
  if (!lang) {
7164
7184
  setTokens(null);
@@ -7179,14 +7199,7 @@ function HighlightedCode({ code, lang }) {
7179
7199
  return /* @__PURE__ */ jsx("pre", { className: preClass, children: code });
7180
7200
  }
7181
7201
  return /* @__PURE__ */ jsx("pre", { className: preClass, children: /* @__PURE__ */ jsx("code", { children: tokens.map((line, lineIndex) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
7182
- /* @__PURE__ */ jsx("span", { children: line.map((token, tokenIndex) => /* @__PURE__ */ jsx(
7183
- "span",
7184
- {
7185
- className: "text-shiki-light bg-shiki-light-bg dark:text-shiki-dark dark:bg-shiki-dark-bg",
7186
- children: token.content
7187
- },
7188
- tokenIndex
7189
- )) }),
7202
+ /* @__PURE__ */ jsx("span", { children: line.map((token, tokenIndex) => /* @__PURE__ */ jsx("span", { style: tokenStyle(token, isDark), children: token.content }, tokenIndex)) }),
7190
7203
  lineIndex !== tokens.length - 1 && "\n"
7191
7204
  ] }, lineIndex)) }) });
7192
7205
  }
@@ -7658,13 +7671,25 @@ const inputVariants = cva(
7658
7671
  "flex w-full text-neutral6 border bg-transparent",
7659
7672
  "transition-all duration-normal ease-out-custom",
7660
7673
  "placeholder:text-neutral2 placeholder:transition-opacity placeholder:duration-normal",
7661
- "focus:placeholder:opacity-70"
7674
+ "focus:placeholder:opacity-70",
7675
+ // type="number": hide native browser spinner arrows (they clip the pill).
7676
+ // For incrementable numeric inputs, compose <InputGroup> with +/- buttons
7677
+ // instead — see the NumberWithStepper story. WebKit uses the spin-button
7678
+ // pseudo-elements; Firefox needs `appearance: textfield` on the input.
7679
+ "[&::-webkit-outer-spin-button]:appearance-none [&::-webkit-outer-spin-button]:m-0",
7680
+ "[&::-webkit-inner-spin-button]:appearance-none [&::-webkit-inner-spin-button]:m-0",
7681
+ "[&[type=number]]:[appearance:textfield]",
7682
+ // type="search": drop WebKit's native clear button so the DS owns the search chrome.
7683
+ // Compose an <InputGroup> with an InputGroupButton to add a clear control.
7684
+ "[&::-webkit-search-cancel-button]:appearance-none"
7662
7685
  ),
7663
7686
  {
7664
7687
  variants: {
7665
7688
  variant: {
7666
- default: cn(sharedFormElementStyle, sharedFormElementFocusStyle, sharedFormElementDisabledStyle),
7667
- unstyled: "border-0 bg-transparent shadow-none focus:shadow-none focus:ring-0"
7689
+ default: cn(inputSurfaceAndFocusStyle, "rounded-full", sharedFormElementDisabledStyle),
7690
+ filled: cn(inputSurfaceAndFocusStyle, "rounded-full", sharedFormElementDisabledStyle),
7691
+ outline: cn(inputOutlineAndFocusStyle, "rounded-full", sharedFormElementDisabledStyle),
7692
+ unstyled: unstyledFormElementStyle
7668
7693
  },
7669
7694
  size: {
7670
7695
  sm: `${formElementSizes.sm} text-ui-sm px-[.75em]`,
@@ -7685,12 +7710,7 @@ const Input = React.forwardRef(
7685
7710
  "input",
7686
7711
  {
7687
7712
  type,
7688
- className: cn(
7689
- inputVariants({ variant, size }),
7690
- // Error state styling
7691
- error && "border-error focus:ring-error focus:shadow-glow-accent2",
7692
- className
7693
- ),
7713
+ className: cn(inputVariants({ variant, size }), error && "border-error focus-visible:border-error", className),
7694
7714
  "data-testid": testId,
7695
7715
  ref,
7696
7716
  "aria-invalid": error,
@@ -7757,6 +7777,7 @@ function SearchFieldBlock({
7757
7777
  onReset,
7758
7778
  className,
7759
7779
  size,
7780
+ variant,
7760
7781
  isMinimized,
7761
7782
  onMinimizedChange
7762
7783
  }) {
@@ -7796,6 +7817,7 @@ function SearchFieldBlock({
7796
7817
  placeholder,
7797
7818
  onChange,
7798
7819
  size,
7820
+ variant,
7799
7821
  className: cn(
7800
7822
  size === "sm" && "pl-8 pr-8",
7801
7823
  size === "md" && "pl-9 pr-9",
@@ -7909,27 +7931,75 @@ const HoverCardContent = React.forwardRef(
7909
7931
  );
7910
7932
  HoverCardContent.displayName = "HoverCardContent";
7911
7933
 
7912
- const InputGroupSizeContext = React.createContext("md");
7913
- const inputGroupClassName = cn(
7914
- "group/input-group relative flex w-full min-w-0 items-stretch",
7915
- "bg-surface2 border border-border1 text-neutral6",
7916
- "hover:border-border2",
7917
- formElementRadius,
7918
- formElementFocusWithin,
7934
+ const inputGroupBaseClassName = cn(
7935
+ // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor
7936
+ // so it never collapses to 0. `items-center` centres the control: it carries its own
7937
+ // h-form-* (2px taller than the root's content box), so stretch would push its text low
7938
+ // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.
7939
+ "group/input-group relative flex w-full flex-1 items-center",
7940
+ "border border-border1 text-neutral6",
7919
7941
  transitions.all,
7920
7942
  "has-[:disabled]:opacity-50 has-[:disabled]:cursor-not-allowed",
7921
- "has-[[aria-invalid=true]]:border-error has-[[aria-invalid=true]]:focus-within:ring-error has-[[aria-invalid=true]]:focus-within:shadow-glow-accent2",
7922
- "has-[>[data-align=block-start]]:flex-col",
7923
- "has-[>[data-align=block-end]]:flex-col",
7943
+ "has-[[aria-invalid=true]]:border-error",
7944
+ // Height is on the root (border-box) so the group matches a same-size sibling control.
7945
+ // Auto height when vertical (block-* addon) or wrapping a textarea.
7946
+ "has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:h-auto",
7947
+ "has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:h-auto",
7948
+ "has-[textarea]:h-auto",
7924
7949
  "has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0",
7925
7950
  "has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0",
7926
- // In flex-col, flex-1 collapses the input to basis-0. Force flex-none so `h-form-*` applies.
7951
+ // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.
7927
7952
  "has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full",
7928
7953
  "has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full"
7929
7954
  );
7930
- const InputGroup = React.forwardRef(({ className, size = "md", ...props }, ref) => {
7931
- return /* @__PURE__ */ jsx(InputGroupSizeContext.Provider, { value: size, children: /* @__PURE__ */ jsx("div", { ref, role: "group", "data-slot": "input-group", className: cn(inputGroupClassName, className), ...props }) });
7955
+ const inputGroupRoundedTextareaClassName = cn(
7956
+ // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl
7957
+ // whenever the group goes vertical (block-* addon) or wraps a textarea.
7958
+ "has-[>[data-align=block-start]]:rounded-xl",
7959
+ "has-[>[data-align=block-end]]:rounded-xl",
7960
+ "has-[textarea]:rounded-xl"
7961
+ );
7962
+ const inputGroupFilledVariant = cn(
7963
+ "bg-surface-overlay-soft rounded-full",
7964
+ "hover:bg-surface-overlay-strong",
7965
+ inputHoverBorderWithin,
7966
+ "outline-hidden focus-within:outline-hidden focus-within:bg-surface-overlay-strong",
7967
+ inputFocusBorderWithin,
7968
+ inputGroupRoundedTextareaClassName
7969
+ );
7970
+ const inputGroupVariants = cva(inputGroupBaseClassName, {
7971
+ variants: {
7972
+ variant: {
7973
+ default: inputGroupFilledVariant,
7974
+ filled: inputGroupFilledVariant,
7975
+ outline: cn(
7976
+ "bg-transparent rounded-full",
7977
+ inputHoverBorderWithin,
7978
+ "outline-hidden focus-within:outline-hidden",
7979
+ inputFocusBorderWithin,
7980
+ inputGroupRoundedTextareaClassName
7981
+ )
7982
+ }
7983
+ },
7984
+ defaultVariants: {
7985
+ variant: "default"
7986
+ }
7932
7987
  });
7988
+ const InputGroup = React.forwardRef(
7989
+ ({ className, size = "md", variant, ...props }, ref) => {
7990
+ return /* @__PURE__ */ jsx(
7991
+ "div",
7992
+ {
7993
+ ref,
7994
+ role: "group",
7995
+ "data-slot": "input-group",
7996
+ "data-size": size,
7997
+ className: cn(inputGroupVariants({ variant }), formElementSizes[size], className),
7998
+ ...props
7999
+ }
8000
+ );
8001
+ }
8002
+ );
7933
8003
  InputGroup.displayName = "InputGroup";
7934
8004
  const inputGroupAddonVariants = cva(
7935
8005
  cn(
@@ -7974,15 +8044,20 @@ const InputGroupAddon = React.forwardRef(
7974
8044
  }
7975
8045
  );
7976
8046
  InputGroupAddon.displayName = "InputGroupAddon";
7977
- const inputGroupControlTextSize = {
7978
- sm: "text-ui-sm",
7979
- md: "text-ui-md",
7980
- default: "text-ui-md",
7981
- lg: "text-ui-lg"
7982
- };
8047
+ const inputGroupControlHeightBySize = cn(
8048
+ "group-data-[size=sm]/input-group:h-form-sm",
8049
+ "group-data-[size=md]/input-group:h-form-md",
8050
+ "group-data-[size=default]/input-group:h-form-default",
8051
+ "group-data-[size=lg]/input-group:h-form-lg"
8052
+ );
8053
+ const inputGroupControlTextBySize = cn(
8054
+ "group-data-[size=sm]/input-group:text-ui-sm",
8055
+ "group-data-[size=md]/input-group:text-ui-md",
8056
+ "group-data-[size=default]/input-group:text-ui-md",
8057
+ "group-data-[size=lg]/input-group:text-ui-lg"
8058
+ );
7983
8059
  const InputGroupInput = React.forwardRef(
7984
8060
  ({ className, testId, error, type = "text", ...props }, ref) => {
7985
- const size = React.useContext(InputGroupSizeContext);
7986
8061
  return /* @__PURE__ */ jsx(
7987
8062
  "input",
7988
8063
  {
@@ -7992,12 +8067,23 @@ const InputGroupInput = React.forwardRef(
7992
8067
  "data-testid": testId,
7993
8068
  "aria-invalid": error,
7994
8069
  className: cn(
8070
+ // Height matches the root box (which is fixed/border-box, so it doesn't grow);
8071
+ // this also keeps the control from collapsing in block mode (flex-col).
7995
8072
  "flex-1 min-w-0 bg-transparent text-neutral6 px-3 outline-hidden",
7996
- formElementSizes[size],
7997
- inputGroupControlTextSize[size],
8073
+ inputGroupControlHeightBySize,
8074
+ inputGroupControlTextBySize,
7998
8075
  "placeholder:text-neutral2 placeholder:transition-opacity placeholder:duration-normal",
7999
8076
  "focus:placeholder:opacity-70",
8000
8077
  "disabled:cursor-not-allowed",
8078
+ // Hide native number-spinner arrows so consumers can compose their own
8079
+ // stepper (see the NumberWithStepper story). WebKit uses the spin-button
8080
+ // pseudo-elements; Firefox needs `appearance: textfield` on the input.
8081
+ "[&::-webkit-outer-spin-button]:appearance-none [&::-webkit-outer-spin-button]:m-0",
8082
+ "[&::-webkit-inner-spin-button]:appearance-none [&::-webkit-inner-spin-button]:m-0",
8083
+ "[&[type=number]]:[appearance:textfield]",
8084
+ // type="search": drop WebKit's native clear button so it doesn't double up with a
8085
+ // custom clear control (e.g. the scorers toolbar's InputGroupButton).
8086
+ "[&::-webkit-search-cancel-button]:appearance-none",
8001
8087
  className
8002
8088
  ),
8003
8089
  ...props
@@ -8008,7 +8094,6 @@ const InputGroupInput = React.forwardRef(
8008
8094
  InputGroupInput.displayName = "InputGroupInput";
8009
8095
  const InputGroupTextarea = React.forwardRef(
8010
8096
  ({ className, testId, error, ...props }, ref) => {
8011
- const size = React.useContext(InputGroupSizeContext);
8012
8097
  return /* @__PURE__ */ jsx(
8013
8098
  "textarea",
8014
8099
  {
@@ -8018,7 +8103,7 @@ const InputGroupTextarea = React.forwardRef(
8018
8103
  "aria-invalid": error,
8019
8104
  className: cn(
8020
8105
  "flex-1 min-w-0 min-h-[60px] resize-y bg-transparent text-neutral6 px-3 py-2 outline-hidden",
8021
- inputGroupControlTextSize[size],
8106
+ inputGroupControlTextBySize,
8022
8107
  "placeholder:text-neutral2 placeholder:transition-opacity placeholder:duration-normal",
8023
8108
  "focus:placeholder:opacity-70",
8024
8109
  "disabled:cursor-not-allowed",
@@ -8476,8 +8561,18 @@ function PropertyFilterActions({
8476
8561
 
8477
8562
  const ButtonsGroupOrientationContext = React.createContext("horizontal");
8478
8563
  const buttonsGroupVariants = cva(
8479
- // Elevate the focused child's border above its siblings so it isn't clipped in close-spacing.
8480
- cn("flex", "[&>*:focus-visible]:relative [&>*:focus-visible]:z-10"),
8564
+ // Lift the hovered/focused segment so its full border paints over the collapsed seam (else a
8565
+ // neighbour clips a side / the seam ignores the active colour). Use `:focus-visible`, NOT
8566
+ // `:focus-within`: a mouse click leaves a plain `:focus` on a button, which would otherwise
8567
+ // keep its seam border highlighted until blur. `:has(:focus-visible)` covers a nested
8568
+ // focusable (the <input> inside an InputGroup); text inputs match :focus-visible on click too,
8569
+ // which is the wanted behaviour for a field.
8570
+ cn(
8571
+ "flex",
8572
+ "[&>*:hover]:relative [&>*:hover]:z-10",
8573
+ "[&>*:focus-visible]:relative [&>*:focus-visible]:z-10",
8574
+ "[&>*:has(:focus-visible)]:relative [&>*:has(:focus-visible)]:z-10"
8575
+ ),
8481
8576
  {
8482
8577
  variants: {
8483
8578
  orientation: {
@@ -8493,24 +8588,50 @@ const buttonsGroupVariants = cva(
8493
8588
  {
8494
8589
  orientation: "horizontal",
8495
8590
  spacing: "close",
8496
- // Skip separators when collapsing borders so they stay visible.
8591
+ // Flatten inner corners. A segment rounds its right edge off having a *real* segment
8592
+ // somewhere after it (general sibling `~`, not `:not(:last-child)` and not adjacent
8593
+ // `+`). This survives non-segment children that frameworks inject between/around the
8594
+ // real ones: Base UI's trailing `<input aria-hidden>` (Select), and the visually
8595
+ // -hidden focus guards (`[data-base-ui-focus-guard]`) + positioner anchor (`[aria-owns]`)
8596
+ // a Menu/Popover inserts while OPEN — without this a DropdownMenu split-button seam
8597
+ // breaks the moment the menu opens. The same ignore-list is applied to every seam rule.
8497
8598
  className: cn(
8498
- "[&>*:not(:last-child)]:rounded-r-none",
8499
- "[&>*:not(:first-child)]:rounded-l-none",
8500
- "[&>*:not([data-slot=buttons-group-separator]):not(:first-child)]:-ml-px"
8599
+ "[&>*:has(~_*:not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]))]:rounded-r-none",
8600
+ "[&>*:not(:first-child):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns])]:rounded-l-none",
8601
+ // One-line seam: `-ml-px` overlaps adjacent borders onto the same pixel. Filled
8602
+ // segments (opaque bg: default/primary buttons, the text chip) keep their own
8603
+ // border — the bg hides the neighbour's. Transparent/outline segments null their
8604
+ // left border at rest (so the neighbour's shows without doubling) and reveal it on
8605
+ // hover / keyboard-focus, where the z-10 lift paints the complete border on top.
8606
+ "[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]):not(:first-child)]:-ml-px",
8607
+ "[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not([aria-hidden=true]):not([data-base-ui-focus-guard]):not([aria-owns]):not(:first-child):not(:hover):not(:focus-visible):not(:has(:focus-visible))]:border-l-transparent",
8608
+ // `primary` is filled but borderless — give it (only) an inset-shadow divider.
8609
+ "[&>[data-variant=primary]:not([aria-hidden=true]):not(:first-child)]:shadow-[inset_1px_0_0_0_var(--color-border1)]",
8610
+ // Animate only colour/bg so the seam + ring snap (no fade desynced from the z-10 drop).
8611
+ "[&>*:not([data-slot=buttons-group-separator]):not([aria-hidden=true])]:transition-[color,background-color]",
8612
+ // Group owns sizing (no consumer width classes): fill on flex/InputGroup/input,
8613
+ // content-width on a Select trigger (descendant rule beats the trigger's `w-full`).
8614
+ "[&>[data-slot=select-trigger]]:w-fit [&>[data-slot=select-trigger]]:flex-none",
8615
+ "[&>input]:flex-1"
8501
8616
  )
8502
8617
  },
8503
8618
  {
8504
8619
  orientation: "vertical",
8505
8620
  spacing: "close",
8506
- // Children carry `rounded-full` (capsule) which looks awkward when stacked vertically.
8507
- // Replace the outer corners with a regular `rounded-xl` and flatten the inner ones.
8621
+ // Children are capsules (rounded-full); re-round the outer ends to rounded-xl and
8622
+ // flatten the touching ones. Unlike the horizontal block, these use plain structural
8623
+ // selectors (no aria-hidden / data-base-ui-focus-guard / aria-owns ignore-list): vertical
8624
+ // close-spacing is only used with plain buttons, so it never hosts a Select/DropdownMenu
8625
+ // that injects guard siblings. Mirror the horizontal ignore-list here if one ever does.
8508
8626
  className: cn(
8509
8627
  "[&>*:not(:last-child)]:rounded-b-none",
8510
8628
  "[&>*:not(:first-child)]:rounded-t-none",
8511
8629
  "[&>:first-child]:rounded-t-xl",
8512
8630
  "[&>:last-child]:rounded-b-xl",
8513
- "[&>*:not([data-slot=buttons-group-separator]):not(:first-child)]:-mt-px"
8631
+ "[&>*:not([data-slot=buttons-group-separator]):not(:first-child)]:-mt-px",
8632
+ "[&>*:not([data-slot=buttons-group-separator]):not([data-slot=buttons-group-text]):not([data-variant=default]):not([data-variant=primary]):not(:first-child):not(:hover):not(:focus-visible):not(:has(:focus-visible))]:border-t-transparent",
8633
+ "[&>[data-variant=primary]:not(:first-child)]:shadow-[inset_0_1px_0_0_var(--color-border1)]",
8634
+ "[&>*:not([data-slot=buttons-group-separator])]:transition-[color,background-color]"
8514
8635
  )
8515
8636
  }
8516
8637
  ],
@@ -9443,12 +9564,30 @@ const searchbarSizeClasses = {
9443
9564
  lg: formElementSizes.lg,
9444
9565
  default: formElementSizes.default
9445
9566
  };
9567
+ const searchbarFilledSurface = cn(
9568
+ "bg-surface-overlay-soft rounded-full",
9569
+ "hover:bg-surface-overlay-strong",
9570
+ inputHoverBorderWithin,
9571
+ "outline-hidden focus-within:outline-hidden focus-within:bg-surface-overlay-strong",
9572
+ inputFocusBorderWithin
9573
+ );
9574
+ const searchbarVariantClasses = {
9575
+ default: searchbarFilledSurface,
9576
+ filled: searchbarFilledSurface,
9577
+ outline: cn(
9578
+ "bg-transparent rounded-full",
9579
+ inputHoverBorderWithin,
9580
+ "outline-hidden focus-within:outline-hidden",
9581
+ inputFocusBorderWithin
9582
+ )
9583
+ };
9446
9584
  const Searchbar = ({
9447
9585
  onSearch,
9448
9586
  label,
9449
9587
  placeholder,
9450
9588
  debounceMs = 300,
9451
9589
  size = "md",
9590
+ variant = "outline",
9452
9591
  className
9453
9592
  }) => {
9454
9593
  const id = useId();
@@ -9483,10 +9622,8 @@ const Searchbar = ({
9483
9622
  {
9484
9623
  className: cn(
9485
9624
  "border border-border1 flex w-full items-center gap-2 overflow-hidden pl-2 pr-1",
9486
- formElementRadius,
9487
- formElementFocusWithin,
9488
9625
  transitions.all,
9489
- "hover:border-neutral2",
9626
+ searchbarVariantClasses[variant],
9490
9627
  searchbarSizeClasses[size],
9491
9628
  className
9492
9629
  ),
@@ -9501,7 +9638,7 @@ const Searchbar = ({
9501
9638
  type: "text",
9502
9639
  placeholder,
9503
9640
  className: cn(
9504
- "bg-transparent text-ui-md placeholder:text-neutral3 block w-full px-2 outline-hidden",
9641
+ "bg-transparent text-ui-md placeholder:text-neutral2 block w-full px-2 outline-hidden",
9505
9642
  searchbarSizeClasses[size]
9506
9643
  ),
9507
9644
  name: id,
@@ -14056,7 +14193,8 @@ const ListSearch = ({
14056
14193
  placeholder,
14057
14194
  debounceMs = 300,
14058
14195
  size,
14059
- value: controlledValue
14196
+ value: controlledValue,
14197
+ variant = "outline"
14060
14198
  }) => {
14061
14199
  const id = useId();
14062
14200
  const [internalValue, setInternalValue] = useState(controlledValue ?? "");
@@ -14093,6 +14231,7 @@ const ListSearch = ({
14093
14231
  onChange: handleChange,
14094
14232
  onReset: handleReset,
14095
14233
  size,
14234
+ variant,
14096
14235
  className: "w-full max-w-[30rem]"
14097
14236
  }
14098
14237
  );
@@ -15706,6 +15845,16 @@ const formatJSON = async (code) => {
15706
15845
  });
15707
15846
  return formatted;
15708
15847
  };
15848
+ const formatTypeScript = async (code) => {
15849
+ const [prettier, prettierPluginBabel, prettierPluginEstree] = await loadPrettier();
15850
+ const formatted = await prettier.format(code, {
15851
+ parser: "babel-ts",
15852
+ printWidth: 80,
15853
+ tabWidth: 2,
15854
+ plugins: [prettierPluginBabel, prettierPluginEstree]
15855
+ });
15856
+ return formatted;
15857
+ };
15709
15858
  const isValidJson = (str) => {
15710
15859
  try {
15711
15860
  const obj = JSON.parse(str);
@@ -20557,7 +20706,11 @@ const NoTracesInfo = ({ datePreset, dateFrom, dateTo } = {}) => {
20557
20706
  };
20558
20707
 
20559
20708
  const IMMUTABLE_CACHE_TIME$2 = 1e3 * 60 * 60 * 24 * 30;
20560
- function useBranch({ traceId, spanId, depth }) {
20709
+ function useBranch({
20710
+ traceId,
20711
+ spanId,
20712
+ depth
20713
+ }) {
20561
20714
  const client = useMastraClient();
20562
20715
  return useQuery({
20563
20716
  queryKey: ["branch", traceId, spanId, depth],
@@ -20781,7 +20934,11 @@ function mergeDeltaIntoPage0(old, delta, listMode) {
20781
20934
  }
20782
20935
  return { ...old, pages: [updatedFirst, ...rest] };
20783
20936
  }
20784
- const useTraces = ({ filters, listMode = "traces", polling = {} }) => {
20937
+ const useTraces = ({
20938
+ filters,
20939
+ listMode = "traces",
20940
+ polling = {}
20941
+ }) => {
20785
20942
  const {
20786
20943
  deltaPollIntervalMs = DEFAULT_POLLING_CONFIG.deltaPollIntervalMs,
20787
20944
  deltaChaseIntervalMs = DEFAULT_POLLING_CONFIG.deltaChaseIntervalMs,
@@ -21781,13 +21938,13 @@ const useLogs = ({ filters } = {}) => {
21781
21938
  retry: false,
21782
21939
  refetchInterval: 1e4
21783
21940
  });
21784
- const { hasNextPage, isFetchingNextPage, fetchNextPage } = query;
21941
+ const { hasNextPage, isFetchingNextPage, fetchNextPage, data, isLoading, isError, error } = query;
21785
21942
  useEffect(() => {
21786
21943
  if (isEndOfListInView && hasNextPage && !isFetchingNextPage) {
21787
21944
  void fetchNextPage();
21788
21945
  }
21789
21946
  }, [isEndOfListInView, hasNextPage, isFetchingNextPage, fetchNextPage]);
21790
- return { ...query, data: query.data, setEndOfListElement };
21947
+ return { data, hasNextPage, isFetchingNextPage, fetchNextPage, isLoading, isError, error, setEndOfListElement };
21791
21948
  };
21792
21949
 
21793
21950
  const LOG_PARAM = "logId";
@@ -22095,5 +22252,5 @@ function useLogsListNavigation(logs, featuredLogId, onFeaturedChange, featuredTr
22095
22252
  };
22096
22253
  }
22097
22254
 
22098
- export { AddField, AgentCoinIcon, AgentIcon, AgentNetworkCoinIcon, AiIcon, AlertDialog, AmazonIcon, AnthropicChatIcon, AnthropicMessagesIcon, ApiIcon, Avatar, AzureIcon, Badge, BarListContent, BorderColors, BorderRadius, BranchIcon, BrandLoader, Breadcrumb, Button, ButtonsGroup, ButtonsGroupSeparator, ButtonsGroupText, CHART_COLORS, CONTEXT_FIELD_IDS, Card, CardContent, CardDescription, CardFooter, CardHeader, CardHeading, CardTitle, Cell, CheckIcon, Checkbox, ChevronIcon, Chip, ChipsGroup, CodeBlock$1 as CodeBlock, CodeDiff, CodeEditor, CohereIcon, Collapsible, CollapsibleContent, CollapsiblePanel, CollapsibleTrigger, Colors, Column, Columns, Combobox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CommitIcon, ContentBlock, ContentBlocks, ContextMenu, CopyButton, CrossIcon, Crumb, DATE_PRESETS, DEFAULT_LOGS_FILTERS_STORAGE_KEY, DEFAULT_TRACE_FILTERS_STORAGE_KEY, DashboardCard, DataCodeSection, DataDetailsPanel, DataKeysAndValues, DataList, DataListSkeleton, DataPanel, DatasetsIcon, DatePicker, DateRangeSelector, DateTimeCell, DateTimePicker, DateTimePickerContent, DateTimeRangePicker, DbIcon, DebugIcon, DefaultTrigger, DeploymentIcon, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DividerIcon, DocsIcon, Drawer, DrawerBackdrop, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerIndent, DrawerIndentBackground, DrawerInteractive, DrawerPopup, DrawerPortal, DrawerProvider, DrawerSwipeArea, DrawerTitle, DrawerTrigger, DrawerViewport, DropdownMenu, EXTENSION_TO_MIME, ElementSelect, EmptyState, Entity, EntityContent, EntityDescription, EntityHeader, EntityIcon, EntityName, Entry, EntryCell, EnvIcon, ErrorBoundary, ErrorState, ExperimentsIcon, Field, FieldBlock, FieldBlocksLayout, FieldDescription, FieldList, FieldName, FieldNullable, FieldOptional, FieldRemove, FieldType, FiltersIcon, FolderIcon, FontSizes, GithubCoinIcon, GithubIcon, Glows, GoogleIcon, GroqIcon, Header$1 as Header, HeaderAction, HeaderGroup, HeaderTitle, HomeIcon, HorizontalBars, HoverCard, HoverCardContent, HoverCardTrigger, HoverPopover, Icon, InfoIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, ItemList, ItemListSkeleton, JSONSchemaForm, JudgeIcon, Kbd, KeyValueList, KpiCardView, LOGS_DATE_FROM_PARAM, LOGS_DATE_PRESET_PARAM, LOGS_DATE_PRESET_VALUES, LOGS_DATE_TO_PARAM, LOGS_PROPERTY_FILTER_FIELD_IDS, LOGS_PROPERTY_FILTER_PARAM_BY_FIELD, LOGS_ROOT_ENTITY_TYPES, LOGS_ROOT_ENTITY_TYPE_OPTIONS, LOGS_ROOT_ENTITY_TYPE_PARAM, LOG_LEVEL_OPTIONS, LOG_LEVEL_VALUES, Label, LatencyCardView, LatencyIcon, LineHeights, ListSearch, LogDetailsView, Logo, LogoWithoutText, LogsDataList, DataListSkeleton as LogsDataListSkeleton, LogsErrorContent, LogsIcon, LogsLayout, LogsListView, LogsToolbar, MainContentContent, MainContentLayout, MainHeader, MainSidebar, MainSidebarMobileTrigger, MainSidebarProvider, MainSidebarTrigger, MarkdownRenderer, MastraIcon, McpCoinIcon, McpServerIcon, MemoryCardView, MemoryIcon, MetricsCard, MetricsDataTable, MetricsFlexGrid, MetricsIcon, MetricsKpiCard, MetricsLineChart, MetricsLineChartTooltip, MetricsProvider, MistralIcon, ModelUsageCostCardView, MultiColumn, MultiCombobox, NestedFields, NetlifyIcon, NoDataPageLayout, NoLogsInfo, NoTracesInfo, Notice, OPERATORS, OPERATOR_LABELS, OpenAIIcon, OpenErrorsInLogsButton, OpenInTracesButton, OpenaiChatIcon, PageHeader, PageHeadingContext, PageLayout, PanelSeparator, PermissionDenied, PickMultiPanel, Popover, PopoverContent, PopoverTrigger, PrevNextNav, ProcessStepList, ProcessStepListItem, ProcessStepProgressBar, ProcessorIcon, PromptIcon, PropertyFilterActions, PropertyFilterApplied, PropertyFilterCreator, ROOT_ENTITY_TYPES, ROOT_ENTITY_TYPE_OPTIONS, RadioGroup, RadioGroupItem, RepoIcon, RequestContextIcon, Root$1 as Root, Row, RuleBuilder, RuleFieldSelect, RuleOperatorSelect, RuleRow, RuleValueInput, ScorersIcon, ScoresCardView, ScoresDataList, ScrollArea, ScrollBar, ScrollableContainer, SearchFieldBlock, Searchbar, SearchbarWrapper, Section, SectionCard, SectionRoot, Sections, Select, SelectContent, SelectDataFilter, SelectFieldBlock, SelectGroup, SelectItem, SelectTrigger, SelectValue, SessionExpired, SettingsIcon, SettingsRow, Shadows, SideDialog, Sizes, Skeleton, SkillIcon, SlashIcon, Slider, Spacings, SpanDataPanelView, SpanDetailsView, SpanTokenUsage, Spinner, StackedRunsBars, StatusBadge, SubSectionRoot, Switch, TRACE_ANCHOR_SPAN_ID_PARAM, TRACE_DATE_FROM_PARAM, TRACE_DATE_PRESET_PARAM, TRACE_DATE_PRESET_VALUES, TRACE_DATE_TO_PARAM, TRACE_LIST_MODE_OPTIONS, TRACE_LIST_MODE_PARAM, TRACE_LIST_MODE_VALUES, TRACE_PROPERTY_FILTER_FIELD_IDS, TRACE_PROPERTY_FILTER_PARAM_BY_FIELD, TRACE_ROOT_ENTITY_TYPE_PARAM, TRACE_STATUS_OPTIONS, TRACE_STATUS_PARAM, TRACE_STATUS_VALUES, TRACE_SYNTHETIC_FILTER_FIELD_IDS, Tab, TabContent, TabList, Table, Tabs, Tbody, TextAndIcon, TextFieldBlock, Textarea, Th, Thead, ThemeProvider, ThemeToggle, TimePicker, TimelineExpandCol, TimelineNameCol, TimelineStructureSign, TimelineTimingCol, Toaster, TokenUsageByAgentCardView, ToolCoinIcon, ToolsIcon, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TraceDataPanelView, TraceDetailsView, TraceIcon, TraceKeysAndValues, TraceTimeline, TraceTimelineSpan, TracesDataList, TracesErrorContent, TracesLayout, TracesListModeToggle, TracesListView, TracesToolbar, TracesVolumeCardView, Tree, Truncate, TsIcon, Txt, TxtCell, VARIABLE_PATTERN, VariablesIcon, WorkflowCoinIcon, WorkflowIcon, WorkspacesIcon, XGroqIcon, applyLogsPropertyFilterTokens, applyMetricsPropertyFilterTokens, applyTracePropertyFilterTokens, buildLogsDrilldownUrl, buildLogsListFilters, buildMetricsDimensionalFilter, buildTraceListFilters, buildTracesDrilldownUrl, buttonVariants, buttonsGroupVariants, clearSavedLogsFilters, clearSavedMetricsFilters, clearSavedTraceFilters, cn, comboboxStyles, countLeafRules, createDefaultRule, createDefaultRuleGroup, createDrawerHandle, createField, createLogsPropertyFilterFields, createMetricsPropertyFilterFields, createTracePropertyFilterFields, createVariableAutocomplete, fieldsToJSONSchema, fileToBase64, flattenSchemaToVariables, focusRing, formElementFocus, formElementFocusWithin, formElementRadius, formElementSizes, formElementTransition, formatCompact, formatCost, formatHierarchicalSpans, formatJSON, generateDefaultValues, getAllSpanIds, getChildFieldOptions, getFieldOptionAtPath, getFieldOptionsFromSchema, getFileContentType, getInputPreview, getIsLinkActive, getItemListColumnTemplate, getLogsPropertyFilterTokens, getMainContentContentClassName, getMetricsPropertyFilterTokens, getPreservedLogsFilterParams, getPreservedTraceFilterParams, getShortId$1 as getShortId, getSpanDescendantIds, getSpanTypeUi, getStatusIcon, getToNextItemFn, getToPreviousItemFn, getTokenLimitMessage, getTracePropertyFilterTokens, hasAnyLogsFilterParams, hasAnyMetricsFilterParams, hasAnyTraceFilterParams, highlight, hoverEffects, inputVariants, is401UnauthorizedError, is403ForbiddenError, isBranchesNotSupportedError, isNonRetryableError, isObjectEmpty, isRule, isRuleGroup, isTokenLimitExceeded, isValidJson, isValidPreset, jsonSchemaToFields, loadLogsFiltersFromStorage, loadMetricsFiltersFromStorage, loadTraceFiltersFromStorage, lodashTitleCase, narrowWindowToBucket, navItemClasses, neutralizeFilterTokens, neutralizeLogsFilterTokens, parseError, parseFieldPath, saveLogsFiltersToStorage, saveMetricsFiltersToStorage, saveTraceFiltersToStorage, sharedFormElementDisabledStyle, sharedFormElementFocusStyle, sharedFormElementStyle, shouldRetryQuery, spanTypePrefixes, stringToColor, textareaVariants, toSigFigs, toast, transitions, truncateString, useActiveResourcesKpiMetrics, useActiveThreadsKpiMetrics, useAgentRunsKpiMetrics, useAutoscroll, useBranch, useCodemirrorTheme$3 as useCodemirrorTheme, useCopyToClipboard, useDrawerSide, useDrilldown, useEntityNames, useEnvironments, useInView, useJSONSchemaForm, useJSONSchemaFormField, useJSONSchemaFormNestedContext, useLatencyMetrics, useLogs, useLogsFilterPersistence, useLogsListNavigation, useLogsUrlState, useMainSidebar, useMaybeSidebar, useMetrics, useMetricsFilters, useModelCostKpiMetrics, useModelUsageCostMetrics, usePageHeading, usePlaygroundStore, useScoresMetrics, useServiceNames, useSpanDetail, useTableKeyboardNavigation, useTags, useTheme, useTokenUsageByAgentMetrics, useTopActiveThreadsMetrics, useTopResourcesByThreadsMetrics, useTotalTokensKpiMetrics, useTraceFilterPersistence, useTraceLightSpans, useTraceListNavigation, useTraceOrBranchSpans, useTraceSpanNavigation, useTraceSpans, useTraceUrlState, useTraceVolumeMetrics, useTraces, variableHighlight };
22255
+ export { AddField, AgentCoinIcon, AgentIcon, AgentNetworkCoinIcon, AiIcon, AlertDialog, AmazonIcon, AnthropicChatIcon, AnthropicMessagesIcon, ApiIcon, Avatar, AzureIcon, Badge, BarListContent, BorderColors, BorderRadius, BranchIcon, BrandLoader, Breadcrumb, Button, ButtonsGroup, ButtonsGroupSeparator, ButtonsGroupText, CHART_COLORS, CONTEXT_FIELD_IDS, Card, CardContent, CardDescription, CardFooter, CardHeader, CardHeading, CardTitle, Cell, CheckIcon, Checkbox, ChevronIcon, Chip, ChipsGroup, CodeBlock$1 as CodeBlock, CodeDiff, CodeEditor, CohereIcon, Collapsible, CollapsibleContent, CollapsiblePanel, CollapsibleTrigger, Colors, Column, Columns, Combobox, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CommitIcon, ContentBlock, ContentBlocks, ContextMenu, CopyButton, CrossIcon, Crumb, DATE_PRESETS, DEFAULT_LOGS_FILTERS_STORAGE_KEY, DEFAULT_TRACE_FILTERS_STORAGE_KEY, DashboardCard, DataCodeSection, DataDetailsPanel, DataKeysAndValues, DataList, DataListSkeleton, DataPanel, DatasetsIcon, DatePicker, DateRangeSelector, DateTimeCell, DateTimePicker, DateTimePickerContent, DateTimeRangePicker, DbIcon, DebugIcon, DefaultTrigger, DeploymentIcon, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DividerIcon, DocsIcon, Drawer, DrawerBackdrop, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerIndent, DrawerIndentBackground, DrawerInteractive, DrawerPopup, DrawerPortal, DrawerProvider, DrawerSwipeArea, DrawerTitle, DrawerTrigger, DrawerViewport, DropdownMenu, EXTENSION_TO_MIME, ElementSelect, EmptyState, Entity, EntityContent, EntityDescription, EntityHeader, EntityIcon, EntityName, Entry, EntryCell, EnvIcon, ErrorBoundary, ErrorState, ExperimentsIcon, Field, FieldBlock, FieldBlocksLayout, FieldDescription, FieldList, FieldName, FieldNullable, FieldOptional, FieldRemove, FieldType, FiltersIcon, FolderIcon, FontSizes, GithubCoinIcon, GithubIcon, Glows, GoogleIcon, GroqIcon, Header$1 as Header, HeaderAction, HeaderGroup, HeaderTitle, HomeIcon, HorizontalBars, HoverCard, HoverCardContent, HoverCardTrigger, HoverPopover, Icon, InfoIcon, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, ItemList, ItemListSkeleton, JSONSchemaForm, JudgeIcon, Kbd, KeyValueList, KpiCardView, LOGS_DATE_FROM_PARAM, LOGS_DATE_PRESET_PARAM, LOGS_DATE_PRESET_VALUES, LOGS_DATE_TO_PARAM, LOGS_PROPERTY_FILTER_FIELD_IDS, LOGS_PROPERTY_FILTER_PARAM_BY_FIELD, LOGS_ROOT_ENTITY_TYPES, LOGS_ROOT_ENTITY_TYPE_OPTIONS, LOGS_ROOT_ENTITY_TYPE_PARAM, LOG_LEVEL_OPTIONS, LOG_LEVEL_VALUES, Label, LatencyCardView, LatencyIcon, LineHeights, ListSearch, LogDetailsView, Logo, LogoWithoutText, LogsDataList, DataListSkeleton as LogsDataListSkeleton, LogsErrorContent, LogsIcon, LogsLayout, LogsListView, LogsToolbar, MainContentContent, MainContentLayout, MainHeader, MainSidebar, MainSidebarMobileTrigger, MainSidebarProvider, MainSidebarTrigger, MarkdownRenderer, MastraIcon, McpCoinIcon, McpServerIcon, MemoryCardView, MemoryIcon, MetricsCard, MetricsDataTable, MetricsFlexGrid, MetricsIcon, MetricsKpiCard, MetricsLineChart, MetricsLineChartTooltip, MetricsProvider, MistralIcon, ModelUsageCostCardView, MultiColumn, MultiCombobox, NestedFields, NetlifyIcon, NoDataPageLayout, NoLogsInfo, NoTracesInfo, Notice, OPERATORS, OPERATOR_LABELS, OpenAIIcon, OpenErrorsInLogsButton, OpenInTracesButton, OpenaiChatIcon, PageHeader, PageHeadingContext, PageLayout, PanelSeparator, PermissionDenied, PickMultiPanel, Popover, PopoverContent, PopoverTrigger, PrevNextNav, ProcessStepList, ProcessStepListItem, ProcessStepProgressBar, ProcessorIcon, PromptIcon, PropertyFilterActions, PropertyFilterApplied, PropertyFilterCreator, ROOT_ENTITY_TYPES, ROOT_ENTITY_TYPE_OPTIONS, RadioGroup, RadioGroupItem, RepoIcon, RequestContextIcon, Root$1 as Root, Row, RuleBuilder, RuleFieldSelect, RuleOperatorSelect, RuleRow, RuleValueInput, ScorersIcon, ScoresCardView, ScoresDataList, ScrollArea, ScrollBar, ScrollableContainer, SearchFieldBlock, Searchbar, SearchbarWrapper, Section, SectionCard, SectionRoot, Sections, Select, SelectContent, SelectDataFilter, SelectFieldBlock, SelectGroup, SelectItem, SelectTrigger, SelectValue, SessionExpired, SettingsIcon, SettingsRow, Shadows, SideDialog, Sizes, Skeleton, SkillIcon, SlashIcon, Slider, Spacings, SpanDataPanelView, SpanDetailsView, SpanTokenUsage, Spinner, StackedRunsBars, StatusBadge, SubSectionRoot, Switch, TRACE_ANCHOR_SPAN_ID_PARAM, TRACE_DATE_FROM_PARAM, TRACE_DATE_PRESET_PARAM, TRACE_DATE_PRESET_VALUES, TRACE_DATE_TO_PARAM, TRACE_LIST_MODE_OPTIONS, TRACE_LIST_MODE_PARAM, TRACE_LIST_MODE_VALUES, TRACE_PROPERTY_FILTER_FIELD_IDS, TRACE_PROPERTY_FILTER_PARAM_BY_FIELD, TRACE_ROOT_ENTITY_TYPE_PARAM, TRACE_STATUS_OPTIONS, TRACE_STATUS_PARAM, TRACE_STATUS_VALUES, TRACE_SYNTHETIC_FILTER_FIELD_IDS, Tab, TabContent, TabList, Table, Tabs, Tbody, TextAndIcon, TextFieldBlock, Textarea, Th, Thead, ThemeProvider, ThemeToggle, TimePicker, TimelineExpandCol, TimelineNameCol, TimelineStructureSign, TimelineTimingCol, Toaster, TokenUsageByAgentCardView, ToolCoinIcon, ToolsIcon, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TraceDataPanelView, TraceDetailsView, TraceIcon, TraceKeysAndValues, TraceTimeline, TraceTimelineSpan, TracesDataList, TracesErrorContent, TracesLayout, TracesListModeToggle, TracesListView, TracesToolbar, TracesVolumeCardView, Tree, Truncate, TsIcon, Txt, TxtCell, VARIABLE_PATTERN, VariablesIcon, WorkflowCoinIcon, WorkflowIcon, WorkspacesIcon, XGroqIcon, applyLogsPropertyFilterTokens, applyMetricsPropertyFilterTokens, applyTracePropertyFilterTokens, buildLogsDrilldownUrl, buildLogsListFilters, buildMetricsDimensionalFilter, buildTraceListFilters, buildTracesDrilldownUrl, buttonVariants, buttonsGroupVariants, clearSavedLogsFilters, clearSavedMetricsFilters, clearSavedTraceFilters, cn, comboboxStyles, countLeafRules, createDefaultRule, createDefaultRuleGroup, createDrawerHandle, createField, createLogsPropertyFilterFields, createMetricsPropertyFilterFields, createTracePropertyFilterFields, createVariableAutocomplete, fieldsToJSONSchema, fileToBase64, flattenSchemaToVariables, focusRing, formElementFocus, formElementSizes, formatCompact, formatCost, formatHierarchicalSpans, formatJSON, formatTypeScript, generateDefaultValues, getAllSpanIds, getChildFieldOptions, getFieldOptionAtPath, getFieldOptionsFromSchema, getFileContentType, getInputPreview, getIsLinkActive, getItemListColumnTemplate, getLogsPropertyFilterTokens, getMainContentContentClassName, getMetricsPropertyFilterTokens, getPreservedLogsFilterParams, getPreservedTraceFilterParams, getShortId$1 as getShortId, getSpanDescendantIds, getSpanTypeUi, getStatusIcon, getToNextItemFn, getToPreviousItemFn, getTokenLimitMessage, getTracePropertyFilterTokens, hasAnyLogsFilterParams, hasAnyMetricsFilterParams, hasAnyTraceFilterParams, highlight, hoverEffects, inputFocusBorderVisible, inputFocusBorderWithin, inputHoverBorderWithin, inputOutlineAndFocusStyle, inputSurfaceAndFocusStyle, is401UnauthorizedError, is403ForbiddenError, isBranchesNotSupportedError, isNonRetryableError, isObjectEmpty, isRule, isRuleGroup, isTokenLimitExceeded, isValidJson, isValidPreset, jsonSchemaToFields, loadLogsFiltersFromStorage, loadMetricsFiltersFromStorage, loadTraceFiltersFromStorage, lodashTitleCase, narrowWindowToBucket, navItemClasses, neutralizeFilterTokens, neutralizeLogsFilterTokens, parseError, parseFieldPath, saveLogsFiltersToStorage, saveMetricsFiltersToStorage, saveTraceFiltersToStorage, sharedFormElementDisabledStyle, sharedFormElementFocusStyle, shouldRetryQuery, spanTypePrefixes, stringToColor, toSigFigs, toast, transitions, truncateString, unstyledFormElementStyle, useActiveResourcesKpiMetrics, useActiveThreadsKpiMetrics, useAgentRunsKpiMetrics, useAutoscroll, useBranch, useCodemirrorTheme$3 as useCodemirrorTheme, useCopyToClipboard, useDrawerSide, useDrilldown, useEntityNames, useEnvironments, useInView, useJSONSchemaForm, useJSONSchemaFormField, useJSONSchemaFormNestedContext, useLatencyMetrics, useLogs, useLogsFilterPersistence, useLogsListNavigation, useLogsUrlState, useMainSidebar, useMaybeSidebar, useMetrics, useMetricsFilters, useModelCostKpiMetrics, useModelUsageCostMetrics, usePageHeading, usePlaygroundStore, useScoresMetrics, useServiceNames, useSpanDetail, useTableKeyboardNavigation, useTags, useTheme, useTokenUsageByAgentMetrics, useTopActiveThreadsMetrics, useTopResourcesByThreadsMetrics, useTotalTokensKpiMetrics, useTraceFilterPersistence, useTraceLightSpans, useTraceListNavigation, useTraceOrBranchSpans, useTraceSpanNavigation, useTraceSpans, useTraceUrlState, useTraceVolumeMetrics, useTraces, variableHighlight };
22099
22256
  //# sourceMappingURL=index.es.js.map