@mastra/playground-ui 22.1.3-alpha.2 → 22.2.0-alpha.8

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,83 @@
1
1
  # @mastra/playground-ui
2
2
 
3
+ ## 22.2.0-alpha.8
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`1bd5104`](https://github.com/mastra-ai/mastra/commit/1bd51048b6da93507276d6623e3fd96a9e1a8944)]:
8
+ - @mastra/core@1.26.0-alpha.8
9
+ - @mastra/client-js@1.13.5-alpha.8
10
+ - @mastra/react@0.2.27-alpha.8
11
+
12
+ ## 22.2.0-alpha.7
13
+
14
+ ### Minor Changes
15
+
16
+ - Added BrandLoader, a branded pulse-wave loader component for brand moments like app boot or agent thinking. Complements Spinner, which remains the inline utility loader. ([#15490](https://github.com/mastra-ai/mastra/pull/15490))
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [[`8786a61`](https://github.com/mastra-ai/mastra/commit/8786a61fa54ba265f85eeff9985ca39863d18bb6), [`8fb2405`](https://github.com/mastra-ai/mastra/commit/8fb2405138f2d208b7962ad03f121ca25bcc28c5)]:
21
+ - @mastra/core@1.26.0-alpha.7
22
+ - @mastra/client-js@1.13.5-alpha.7
23
+ - @mastra/react@0.2.27-alpha.7
24
+
25
+ ## 22.1.3-alpha.6
26
+
27
+ ### Patch Changes
28
+
29
+ - Updated dependencies [[`6315317`](https://github.com/mastra-ai/mastra/commit/63153175fe9a7b224e5be7c209bbebc01dd9b0d5), [`9d3b24b`](https://github.com/mastra-ai/mastra/commit/9d3b24b19407ae9c09586cf7766d38dc4dff4a69)]:
30
+ - @mastra/core@1.26.0-alpha.6
31
+ - @mastra/client-js@1.13.5-alpha.6
32
+ - @mastra/react@0.2.27-alpha.6
33
+
34
+ ## 22.1.3-alpha.5
35
+
36
+ ### Patch Changes
37
+
38
+ - Added a Foundations/Tokens page to the @mastra/playground-ui Storybook so you can browse all typography, color, spacing, radius, shadow, and animation tokens in one place. ([#15475](https://github.com/mastra-ai/mastra/pull/15475))
39
+
40
+ - Added `ScoresDataList` for rendering lists of score evaluation results. ([#15339](https://github.com/mastra-ai/mastra/pull/15339))
41
+
42
+ - Updated dependencies [[`92dcf02`](https://github.com/mastra-ai/mastra/commit/92dcf029294210ac91b090900c1a0555a425c57a)]:
43
+ - @mastra/core@1.26.0-alpha.5
44
+ - @mastra/client-js@1.13.5-alpha.5
45
+ - @mastra/react@0.2.27-alpha.5
46
+
47
+ ## 22.1.3-alpha.4
48
+
49
+ ### Patch Changes
50
+
51
+ - Updated dependencies [[`0474c2b`](https://github.com/mastra-ai/mastra/commit/0474c2b2e7c7e1ad8691dca031284841391ff1ef), [`f607106`](https://github.com/mastra-ai/mastra/commit/f607106854c6416c4a07d4082604b9f66d047221), [`62919a6`](https://github.com/mastra-ai/mastra/commit/62919a6ee0fbf3779ad21a97b1ec6696515d5104), [`0fd90a2`](https://github.com/mastra-ai/mastra/commit/0fd90a215caf5fca8099c15a67ca03e4427747a3)]:
52
+ - @mastra/core@1.26.0-alpha.4
53
+ - @mastra/client-js@1.13.5-alpha.4
54
+ - @mastra/react@0.2.27-alpha.4
55
+
56
+ ## 22.1.3-alpha.3
57
+
58
+ ### Patch Changes
59
+
60
+ - Added a dedicated trace details page at `/traces/:traceId`, plus the design-system changes that support it: ([#15392](https://github.com/mastra-ai/mastra/pull/15392))
61
+ - `Button`: new `link` variant (inline, no padding/background/border).
62
+ - `DataKeysAndValues`: `numOfCol` now accepts `3`.
63
+ - `DataPanel.Header`: minimum height so heading-only headers match the height of ones with button actions.
64
+
65
+ - Fix unhandled `TypeError` in `getFileContentType` when the URL is relative ([#15433](https://github.com/mastra-ai/mastra/pull/15433))
66
+ or malformed. The `catch` block now falls back to inferring the MIME type
67
+ from the raw string's file extension and strips query/hash fragments so
68
+ inputs like `/files/report.pdf`, `https://x.dev/a.pdf?token=1`, and
69
+ `/files/report.pdf#page=2` all resolve to `application/pdf` instead of
70
+ rejecting.
71
+
72
+ Closes #15432.
73
+
74
+ - Improved visual consistency across Chip, DropdownMenu, Notification, Popover, and toast components — unified radius and border scale. Deduplicated dropdown menu item classes and added max-height scroll handling for long menus. ([#15440](https://github.com/mastra-ai/mastra/pull/15440))
75
+
76
+ - Updated dependencies [[`fdd54cf`](https://github.com/mastra-ai/mastra/commit/fdd54cf612a9af876e9fdd85e534454f6e7dd518), [`d647793`](https://github.com/mastra-ai/mastra/commit/d647793010ab4de60bb524769a51cd32d7eba8d3), [`30456b6`](https://github.com/mastra-ai/mastra/commit/30456b6b08c8fd17e109dd093b73d93b65e83bc5), [`9d11a8c`](https://github.com/mastra-ai/mastra/commit/9d11a8c1c8924eb975a245a5884d40ca1b7e0491), [`d246696`](https://github.com/mastra-ai/mastra/commit/d246696139a3144a5b21b042d41c532688e957e1), [`354f9ce`](https://github.com/mastra-ai/mastra/commit/354f9ce1ca6af2074b6a196a23f8ec30012dccca), [`e9837b5`](https://github.com/mastra-ai/mastra/commit/e9837b53699e18711b09e0ca010a4106376f2653)]:
77
+ - @mastra/core@1.26.0-alpha.3
78
+ - @mastra/client-js@1.13.5-alpha.3
79
+ - @mastra/react@0.2.27-alpha.3
80
+
3
81
  ## 22.1.3-alpha.2
4
82
 
5
83
  ### Patch Changes
package/dist/index.cjs.js CHANGED
@@ -3386,7 +3386,7 @@ function cn(...inputs) {
3386
3386
  return twMerge(clsx(inputs));
3387
3387
  }
3388
3388
 
3389
- const sizeClasses$4 = {
3389
+ const sizeClasses$5 = {
3390
3390
  sm: `${formElementSizes.sm} text-ui-sm px-[.75em]`,
3391
3391
  md: `${formElementSizes.md} text-ui-md px-[.75em]`,
3392
3392
  default: `${formElementSizes.default} text-ui-md px-[.85em] `,
@@ -3399,7 +3399,8 @@ const variantClasses$4 = {
3399
3399
  ghost: "bg-transparent border-2 border-transparent hover:text-neutral6 hover:bg-surface4 active:bg-surface5 text-neutral4",
3400
3400
  inputLike: sharedFormElementStyle,
3401
3401
  light: "",
3402
- outline: ""
3402
+ outline: "",
3403
+ link: "inline-flex justify-start rounded-none h-auto px-0 bg-transparent text-neutral3 hover:text-neutral4 gap-1 [&>svg]:mx-0 w-auto [&>svg]:opacity-70"
3403
3404
  };
3404
3405
  const sharedStyles = cn(
3405
3406
  "flex items-center justify-center gap-[.75em] leading-0 transition-colors duration-200 ease-out-custom rounded-lg",
@@ -3418,7 +3419,7 @@ function resolveVariant(variant) {
3418
3419
  function buttonVariants(options) {
3419
3420
  const variant = resolveVariant(options?.variant || "default");
3420
3421
  const size = options?.size || "default";
3421
- return cn(sharedStyles, variantClasses$4[variant], sizeClasses$4[size], options?.iconOnly && "[&>svg]:opacity-75");
3422
+ return cn(sharedStyles, sizeClasses$5[size], variantClasses$4[variant], options?.iconOnly && "[&>svg]:opacity-75");
3422
3423
  }
3423
3424
  function flattenChildren(children) {
3424
3425
  const result = [];
@@ -4796,7 +4797,7 @@ const AlertDescription = ({ children, as: As = "p" }) => {
4796
4797
  return /* @__PURE__ */ jsxRuntime.jsx(Txt, { as: As, variant: "ui-sm", children });
4797
4798
  };
4798
4799
 
4799
- const sizeClasses$3 = {
4800
+ const sizeClasses$4 = {
4800
4801
  sm: "h-avatar-sm w-avatar-sm",
4801
4802
  md: "h-avatar-md w-avatar-md",
4802
4803
  lg: "h-avatar-lg w-avatar-lg"
@@ -4806,7 +4807,7 @@ const Avatar = ({ src, name, size = "sm", interactive = false }) => {
4806
4807
  "div",
4807
4808
  {
4808
4809
  className: cn(
4809
- sizeClasses$3[size],
4810
+ sizeClasses$4[size],
4810
4811
  "border border-border1 bg-surface3 shrink-0 overflow-hidden rounded-full flex items-center justify-center",
4811
4812
  transitions.all,
4812
4813
  interactive && "cursor-pointer hover:scale-105 hover:border-neutral2 hover:shadow-sm"
@@ -4987,7 +4988,7 @@ const defaultOptions = {
4987
4988
  },
4988
4989
  unstyled: true,
4989
4990
  classNames: {
4990
- toast: "bg-surface3 w-full h-auto rounded-lg gap-2 border border-border1 px-3 py-2 flex items-center justify-between pointer-events-auto shadow-card :data-content:flex-1",
4991
+ toast: "bg-surface3 w-full h-auto rounded-xl gap-2 border border-border1 px-3 py-2 flex items-center justify-between pointer-events-auto shadow-card :data-content:flex-1",
4991
4992
  title: "text-xs font-medium text-neutral5",
4992
4993
  description: "text-xs text-neutral3",
4993
4994
  cancelButton: "bg-transparent! hover:bg-surface2! border-none! rounded-md! p-1.5! m-0! text-neutral3! hover:text-neutral6! shrink-0 transition-all",
@@ -6490,47 +6491,36 @@ const DropdownMenuGroup = DropdownMenuPrimitive__namespace.Group;
6490
6491
  const DropdownMenuPortal = DropdownMenuPrimitive__namespace.Portal;
6491
6492
  const DropdownMenuSub = DropdownMenuPrimitive__namespace.Sub;
6492
6493
  const DropdownMenuRadioGroup = DropdownMenuPrimitive__namespace.RadioGroup;
6493
- const DropdownMenuTrigger = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
6494
- DropdownMenuPrimitive__namespace.Trigger,
6495
- {
6496
- ref,
6497
- className: cn(
6498
- "cursor-pointer focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-white/30 focus-visible:rounded-sm",
6499
- className
6500
- ),
6501
- ...props,
6502
- children
6503
- }
6504
- ));
6494
+ const itemClass = cn(
6495
+ "relative flex cursor-pointer select-none items-center gap-3 rounded-lg px-3 py-1.5 text-sm transition-colors text-neutral4 dark:hover:text-white dark:focus:text-white hover:text-neutral6 focus:text-neutral6 hover:bg-surface4 focus:bg-surface4 active:bg-surface5 data-disabled:pointer-events-none data-disabled:opacity-50 [&>span]:truncate [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-hidden focus-visible:ring-0",
6496
+ "[&>svg]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:opacity-50 [&>svg]:mx-[-.25em] [&:hover>svg]:opacity-100"
6497
+ );
6498
+ const DropdownMenuTrigger = React__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Trigger, { ref, className: cn("cursor-pointer", className), ...props, children }));
6505
6499
  DropdownMenuTrigger.displayName = DropdownMenuPrimitive__namespace.Trigger.displayName;
6506
6500
  const DropdownMenuSubTrigger = React__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
6507
6501
  DropdownMenuPrimitive__namespace.SubTrigger,
6508
6502
  {
6509
6503
  ref,
6510
- className: cn(
6511
- "hover:bg-surface4 focus:bg-surface4 active:bg-surface5 data-[state=open]:bg-surface4 flex cursor-default select-none items-center rounded-md px-2 py-1.5 text-sm transition-colors text-neutral4 dark:hover:text-white dark:focus:text-white hover:text-neutral6 focus:text-neutral6 focus-visible:outline-hidden focus-visible:ring-0",
6512
- inset && "pl-8",
6513
- className
6514
- ),
6504
+ className: cn(itemClass, "data-[state=open]:bg-surface4", inset && "pl-8", className),
6515
6505
  ...props,
6516
6506
  children: [
6517
6507
  children,
6518
- /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "ml-auto -rotate-90" })
6508
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto pl-2", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "-rotate-90 opacity-50" }) })
6519
6509
  ]
6520
6510
  }
6521
6511
  ));
6522
6512
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive__namespace.SubTrigger.displayName;
6523
- const DropdownMenuSubContent = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
6513
+ const DropdownMenuSubContent = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
6524
6514
  DropdownMenuPrimitive__namespace.SubContent,
6525
6515
  {
6526
6516
  ref,
6527
6517
  className: cn(
6528
- "bg-surface3 backdrop-blur-xl data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 z-50 min-w-32 overflow-auto overflow-x-hidden rounded-lg",
6518
+ "bg-surface3 backdrop-blur-xl data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 z-50 min-w-44 max-h-[min(20rem,var(--radix-dropdown-menu-content-available-height))] overflow-x-hidden overflow-y-auto rounded-xl border-2 border-border1/50 p-1 shadow-md",
6529
6519
  className
6530
6520
  ),
6531
6521
  ...props
6532
6522
  }
6533
- ));
6523
+ ) }));
6534
6524
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive__namespace.SubContent.displayName;
6535
6525
  const DropdownMenuContent = React__namespace.forwardRef(({ className, container, sideOffset = 8, ...props }, ref) => {
6536
6526
  return /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Portal, { container, children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -6539,7 +6529,7 @@ const DropdownMenuContent = React__namespace.forwardRef(({ className, container,
6539
6529
  ref,
6540
6530
  sideOffset,
6541
6531
  className: cn(
6542
- "bg-surface3 data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 backdrop-blur-xl text-neutral4 z-50 min-w-32 overflow-auto rounded-lg p-2 shadow-md",
6532
+ "bg-surface3 data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 backdrop-blur-xl text-neutral4 z-50 min-w-44 max-h-[min(20rem,var(--radix-dropdown-menu-content-available-height))] overflow-x-hidden overflow-y-auto rounded-xl border-2 border-border1/50 p-1 shadow-md",
6543
6533
  className
6544
6534
  ),
6545
6535
  ...props
@@ -6547,27 +6537,13 @@ const DropdownMenuContent = React__namespace.forwardRef(({ className, container,
6547
6537
  ) });
6548
6538
  });
6549
6539
  DropdownMenuContent.displayName = DropdownMenuPrimitive__namespace.Content.displayName;
6550
- const DropdownMenuItem = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
6551
- DropdownMenuPrimitive__namespace.Item,
6552
- {
6553
- ref,
6554
- className: cn(
6555
- "relative flex cursor-pointer select-none items-center gap-3 rounded-md px-2 py-1.5 text-sm transition-colors text-neutral4 dark:hover:text-white dark:focus:text-white hover:text-neutral6 focus:text-neutral6 hover:bg-surface4 focus:bg-surface4 active:bg-surface5 data-disabled:pointer-events-none data-disabled:opacity-50 [&>span]:truncate [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-hidden focus-visible:ring-0",
6556
- "[&>svg]:w-[1.1em] [&>svg]:h-[1.1em] [&>svg]:opacity-50 [&>svg]:mx-[-.25em] [&:hover>svg]:opacity-100",
6557
- className
6558
- ),
6559
- ...props
6560
- }
6561
- ));
6540
+ const DropdownMenuItem = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Item, { ref, className: cn(itemClass, className), ...props }));
6562
6541
  DropdownMenuItem.displayName = DropdownMenuPrimitive__namespace.Item.displayName;
6563
6542
  const DropdownMenuCheckboxItem = React__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
6564
6543
  DropdownMenuPrimitive__namespace.CheckboxItem,
6565
6544
  {
6566
6545
  ref,
6567
- className: cn(
6568
- "hover:bg-surface4 focus:bg-surface4 active:bg-surface5 dark:hover:text-white dark:focus:text-white hover:text-neutral6 focus:text-neutral6 relative flex w-full cursor-pointer select-none items-center gap-4 rounded-md px-2 py-1.5 text-sm transition-colors text-neutral4 data-disabled:pointer-events-none data-disabled:opacity-50 focus-visible:outline-hidden focus-visible:ring-0",
6569
- className
6570
- ),
6546
+ className: cn(itemClass, "w-full gap-4 px-2", className),
6571
6547
  checked,
6572
6548
  ...props,
6573
6549
  children: [
@@ -6602,14 +6578,7 @@ const DropdownMenuLabel = React__namespace.forwardRef(({ className, inset, ...pr
6602
6578
  }
6603
6579
  ));
6604
6580
  DropdownMenuLabel.displayName = DropdownMenuPrimitive__namespace.Label.displayName;
6605
- const DropdownMenuSeparator = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
6606
- DropdownMenuPrimitive__namespace.Separator,
6607
- {
6608
- ref,
6609
- className: cn("dark:bg-white/10 bg-black/10 -mx-1 my-1 h-px", className),
6610
- ...props
6611
- }
6612
- ));
6581
+ const DropdownMenuSeparator = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive__namespace.Separator, { ref, className: cn("bg-border1/50 -mx-1.5 my-1 h-0.5", className), ...props }));
6613
6582
  DropdownMenuSeparator.displayName = DropdownMenuPrimitive__namespace.Separator.displayName;
6614
6583
  const DropdownMenuShortcut = ({ className, ...props }) => {
6615
6584
  return /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("ml-auto text-xs tracking-widest opacity-60", className), ...props });
@@ -7074,7 +7043,7 @@ function SelectFieldBlock({
7074
7043
  ] });
7075
7044
  }
7076
7045
 
7077
- const sizeClasses$2 = {
7046
+ const sizeClasses$3 = {
7078
7047
  sm: `${formElementSizes.sm} w-form-sm`,
7079
7048
  md: `${formElementSizes.md} w-form-md`,
7080
7049
  lg: `${formElementSizes.lg} w-form-lg`,
@@ -7107,7 +7076,7 @@ const IconButton = React.forwardRef(
7107
7076
  baseButtonStyles,
7108
7077
  formElementFocus,
7109
7078
  variantClasses$1[variant],
7110
- sizeClasses$2[size],
7079
+ sizeClasses$3[size],
7111
7080
  disabled && "active:scale-100",
7112
7081
  className
7113
7082
  ),
@@ -7271,7 +7240,7 @@ function MetricsCardError({
7271
7240
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex flex-col gap-3 items-center justify-center", className), children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-ui-sm text-accent2", children: message }) });
7272
7241
  }
7273
7242
 
7274
- const sizeClasses$1 = {
7243
+ const sizeClasses$2 = {
7275
7244
  sm: "w-4 h-4",
7276
7245
  md: "w-6 h-6",
7277
7246
  lg: "w-8 h-8"
@@ -7280,7 +7249,7 @@ function Spinner({ color, className, size = "md" }) {
7280
7249
  return /* @__PURE__ */ jsxRuntime.jsx(
7281
7250
  "svg",
7282
7251
  {
7283
- className: cn("animate-spin", sizeClasses$1[size], className),
7252
+ className: cn("animate-spin", sizeClasses$2[size], className),
7284
7253
  style: { animationDuration: "800ms", animationTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)" },
7285
7254
  xmlns: "http://www.w3.org/2000/svg",
7286
7255
  width: "24",
@@ -7443,8 +7412,8 @@ const PopoverContent = React__namespace.forwardRef(({ className, align = "center
7443
7412
  align,
7444
7413
  sideOffset,
7445
7414
  className: cn(
7446
- "z-50 w-72 rounded-md border border-border1 bg-surface3 text-neutral5 shadow-md focus-visible:outline-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
7447
- className && /\bp-\S+/.test(className) ? false : `p-4`,
7415
+ "z-50 w-72 rounded-xl border-2 border-border1/50 bg-surface3 text-neutral5 shadow-md focus-visible:outline-hidden data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
7416
+ className && /\bp[trblxy]?-\S+/.test(className) ? false : `py-3.5 px-3`,
7448
7417
  className
7449
7418
  ),
7450
7419
  ...props
@@ -7692,6 +7661,49 @@ const Slider = React__namespace.forwardRef(({ className, ...props }, ref) => /*
7692
7661
  ));
7693
7662
  Slider.displayName = SliderPrimitive__namespace.Root.displayName;
7694
7663
 
7664
+ const sizeClasses$1 = {
7665
+ sm: "w-6",
7666
+ md: "w-10",
7667
+ lg: "w-16"
7668
+ };
7669
+ function BrandLoader({ className, size = "md", "aria-label": ariaLabel = "Loading" }) {
7670
+ const reactId = React.useId();
7671
+ const filterId = `brand-loader-${reactId.replace(/[^a-zA-Z0-9_-]/g, "")}`;
7672
+ return /* @__PURE__ */ jsxRuntime.jsx(
7673
+ "div",
7674
+ {
7675
+ role: "status",
7676
+ "aria-label": ariaLabel,
7677
+ className: cn("brand-loader inline-block text-neutral6", sizeClasses$1[size], className),
7678
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
7679
+ "svg",
7680
+ {
7681
+ xmlns: "http://www.w3.org/2000/svg",
7682
+ viewBox: "0 0 34 21",
7683
+ className: "block w-full h-auto overflow-visible",
7684
+ "aria-hidden": "true",
7685
+ children: [
7686
+ /* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs("filter", { id: filterId, children: [
7687
+ /* @__PURE__ */ jsxRuntime.jsx("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "0.55" }),
7688
+ /* @__PURE__ */ jsxRuntime.jsx("feColorMatrix", { values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -7" })
7689
+ ] }) }),
7690
+ /* @__PURE__ */ jsxRuntime.jsxs("g", { filter: `url(#${filterId})`, children: [
7691
+ /* @__PURE__ */ jsxRuntime.jsx("line", { className: "brand-loader-ln23", x1: "10.4", y1: "4.5", x2: "16.8", y2: "16.2" }),
7692
+ /* @__PURE__ */ jsxRuntime.jsx("line", { className: "brand-loader-ln34", x1: "16.8", y1: "16.2", x2: "23.2", y2: "4.5" }),
7693
+ /* @__PURE__ */ jsxRuntime.jsx("line", { className: "brand-loader-ln45", x1: "23.2", y1: "4.5", x2: "29.5", y2: "16.2" }),
7694
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { className: "brand-loader-b1", cx: "4.5", cy: "16.2", r: "4.5" }),
7695
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { className: "brand-loader-b2", cx: "10.4", cy: "4.5", r: "4.5" }),
7696
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { className: "brand-loader-b3", cx: "16.8", cy: "16.2", r: "4.5" }),
7697
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { className: "brand-loader-b4", cx: "23.2", cy: "4.5", r: "4.5" }),
7698
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { className: "brand-loader-b5", cx: "29.5", cy: "16.2", r: "4.5" })
7699
+ ] })
7700
+ ]
7701
+ }
7702
+ )
7703
+ }
7704
+ );
7705
+ }
7706
+
7695
7707
  const Switch = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
7696
7708
  SwitchPrimitives__namespace.Root,
7697
7709
  {
@@ -9426,7 +9438,7 @@ function Notification({
9426
9438
  if (!localIsVisible) return null;
9427
9439
  const typeStyles = {
9428
9440
  info: "bg-surface4 border-border1",
9429
- error: "bg-accent2Darker border-accent2/30",
9441
+ error: "bg-accent2Darker border-accent2/20",
9430
9442
  success: "bg-accent1Darker border-accent1/30",
9431
9443
  warning: "bg-accent6Darker border-accent6/30"
9432
9444
  };
@@ -9440,7 +9452,7 @@ function Notification({
9440
9452
  "div",
9441
9453
  {
9442
9454
  className: cn(
9443
- "grid grid-cols-[auto_1fr_auto] gap-3 rounded-lg border p-4 text-ui-md text-neutral4 items-start",
9455
+ "grid grid-cols-[auto_1fr_auto] gap-3 rounded-xl border py-2.5 px-3.5 text-ui-md text-neutral4 items-start",
9444
9456
  "shadow-card",
9445
9457
  transitions.all,
9446
9458
  isAnimatingOut ? "animate-out fade-out-0 slide-out-to-right-2 duration-200" : "animate-in fade-in-0 slide-in-from-right-2 duration-300",
@@ -10522,24 +10534,36 @@ function ItemListTextCell({ children, isLoading, className }) {
10522
10534
  }
10523
10535
 
10524
10536
  const sizeClasses = {
10525
- small: "text-[11px] pt-[5px] pb-[4px]",
10526
- default: "text-[12px] pt-[5px] pb-[4px] ",
10527
- large: "text-[13px] pt-[5px] pb-[4px] "
10537
+ small: "text-[10.5px] pt-[5px] pb-[4px]",
10538
+ default: "text-[11.5px] pt-[5px] pb-[4px] ",
10539
+ large: "text-[12.5px] pt-[5px] pb-[4px] "
10528
10540
  };
10529
10541
  const bgColorClasses = {
10530
- gray: { bright: "bg-neutral-700", muted: "bg-neutral-700/80" },
10531
- red: { bright: "bg-red-900", muted: "bg-red-900/80" },
10532
- orange: { bright: "bg-yellow-900", muted: "bg-yellow-900/80" },
10533
- blue: { bright: "bg-blue-800", muted: "bg-blue-800/80" },
10534
- green: { bright: "bg-green-900", muted: "bg-green-900/80" },
10535
- purple: { bright: "bg-purple-900", muted: "bg-purple-900/80" },
10536
- yellow: { bright: "bg-yellow-700", muted: "bg-yellow-700/80" },
10537
- cyan: { bright: "bg-cyan-900", muted: "bg-cyan-900/80" },
10538
- pink: { bright: "bg-pink-900", muted: "bg-pink-900/80" }
10542
+ gray: {
10543
+ bright: "bg-neutral-500/30",
10544
+ muted: "bg-neutral-500/10"
10545
+ },
10546
+ red: { bright: "bg-red-500/30", muted: "bg-red-500/10" },
10547
+ orange: {
10548
+ bright: "bg-orange-500/30",
10549
+ muted: "bg-orange-500/10"
10550
+ },
10551
+ blue: { bright: "bg-blue-500/30", muted: "bg-blue-500/10" },
10552
+ green: { bright: "bg-green-500/30", muted: "bg-green-500/10" },
10553
+ purple: {
10554
+ bright: "bg-purple-500/30",
10555
+ muted: "bg-purple-500/10"
10556
+ },
10557
+ yellow: {
10558
+ bright: "bg-yellow-500/30",
10559
+ muted: "bg-yellow-500/10"
10560
+ },
10561
+ cyan: { bright: "bg-cyan-500/30", muted: "bg-cyan-500/10" },
10562
+ pink: { bright: "bg-pink-500/30", muted: "bg-pink-500/10" }
10539
10563
  };
10540
10564
  const txtIntensityClasses = {
10541
- bright: "text-neutral4",
10542
- muted: "text-neutral3"
10565
+ bright: "text-neutral4/90",
10566
+ muted: "text-neutral3/90"
10543
10567
  };
10544
10568
  const Chip = ({
10545
10569
  color = "gray",
@@ -10553,7 +10577,7 @@ const Chip = ({
10553
10577
  "span",
10554
10578
  {
10555
10579
  className: cn(
10556
- "inline-flex items-center rounded-md uppercase px-[0.5em] gap-[0.4em] tracking-wide font-normal",
10580
+ "inline-flex items-center rounded-lg uppercase px-1.5 gap-[0.4em] tracking-wide font-normal",
10557
10581
  // general styles for svg icons within the chip
10558
10582
  "[&>svg]:w-[1em] [&>svg]:h-[1em] [&>svg]:translate-y-[-0.02em] [&>svg]:mx-[-0.2em]",
10559
10583
  // if the chip has only one child and it's an svg, make it fully opaque
@@ -11366,6 +11390,45 @@ function DataListSkeleton({ columns = "auto 1fr auto auto", numberOfRows = 3 })
11366
11390
  )) });
11367
11391
  }
11368
11392
 
11393
+ function toDate$2(value) {
11394
+ const date = value instanceof Date ? value : new Date(value);
11395
+ return isNaN(date.getTime()) ? null : date;
11396
+ }
11397
+ function ScoresDataListDateCell({ timestamp }) {
11398
+ const date = toDate$2(timestamp);
11399
+ return /* @__PURE__ */ jsxRuntime.jsx(DataListCell, { height: "compact", className: "text-ui-smd text-neutral2", children: date ? dateFns.isToday(date) ? "Today" : dateFns.format(date, "MMM dd") : "-" });
11400
+ }
11401
+ function ScoresDataListTimeCell({ timestamp }) {
11402
+ const date = toDate$2(timestamp);
11403
+ return /* @__PURE__ */ jsxRuntime.jsx(DataListCell, { height: "compact", className: "text-ui-smd text-neutral3", children: date ? dateFns.format(date, "h:mm:ss aaa") : "-" });
11404
+ }
11405
+ function ScoresDataListInputCell({ input }) {
11406
+ return /* @__PURE__ */ jsxRuntime.jsx(DataListCell, { height: "compact", className: "min-w-0", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-neutral3 text-ui-smd font-mono truncate", children: input != null ? JSON.stringify(input) : "-" }) });
11407
+ }
11408
+ function ScoresDataListEntityCell({ entityId }) {
11409
+ return /* @__PURE__ */ jsxRuntime.jsx(DataListCell, { height: "compact", className: "min-w-0", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "block text-ui-smd truncate", children: entityId || "-" }) });
11410
+ }
11411
+ function ScoresDataListScoreCell({ score }) {
11412
+ const display = score == null ? "-" : typeof score === "object" ? JSON.stringify(score) : String(score);
11413
+ return /* @__PURE__ */ jsxRuntime.jsx(DataListCell, { height: "compact", className: "text-ui-smd font-mono text-neutral3", children: display });
11414
+ }
11415
+
11416
+ function ScoresDataListRoot(props) {
11417
+ return /* @__PURE__ */ jsxRuntime.jsx(DataListRoot, { ...props });
11418
+ }
11419
+ const ScoresDataList = Object.assign(ScoresDataListRoot, {
11420
+ Top: DataListTop,
11421
+ TopCell: DataListTopCell,
11422
+ RowButton: DataListRowButton,
11423
+ NoMatch: DataListNoMatch,
11424
+ NextPageLoading: DataListNextPageLoading,
11425
+ DateCell: ScoresDataListDateCell,
11426
+ TimeCell: ScoresDataListTimeCell,
11427
+ InputCell: ScoresDataListInputCell,
11428
+ EntityCell: ScoresDataListEntityCell,
11429
+ ScoreCell: ScoresDataListScoreCell
11430
+ });
11431
+
11369
11432
  function toDate$1(value) {
11370
11433
  const date = value instanceof Date ? value : new Date(value);
11371
11434
  return isNaN(date.getTime()) ? null : date;
@@ -11428,7 +11491,10 @@ function TracesDataListStatusCell({ status }) {
11428
11491
  return /* @__PURE__ */ jsxRuntime.jsx(DataListCell, { height: "compact", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "uppercase text-ui-sm font-semibold", style: { color: config.color }, children: config.label }) });
11429
11492
  }
11430
11493
 
11431
- const TracesDataList = Object.assign(DataListRoot, {
11494
+ function TracesDataListRoot(props) {
11495
+ return /* @__PURE__ */ jsxRuntime.jsx(DataListRoot, { ...props });
11496
+ }
11497
+ const TracesDataList = Object.assign(TracesDataListRoot, {
11432
11498
  Top: DataListTop,
11433
11499
  TopCell: DataListTopCell,
11434
11500
  RowButton: DataListRowButton,
@@ -12489,18 +12555,16 @@ function DataKeysAndValuesKey({ className, children }) {
12489
12555
  return /* @__PURE__ */ jsxRuntime.jsx("dt", { className: cn("text-ui-smd text-neutral2 shrink-0 py-0.5", className), children });
12490
12556
  }
12491
12557
 
12558
+ const GRID_TEMPLATES = {
12559
+ 1: "auto 1fr",
12560
+ 2: "auto auto auto 1fr",
12561
+ 3: "auto auto auto auto auto 1fr"
12562
+ };
12492
12563
  function DataKeysAndValuesRoot({ className, children, numOfCol = 1 }) {
12493
- return /* @__PURE__ */ jsxRuntime.jsx(
12494
- "dl",
12495
- {
12496
- className: cn("grid gap-x-4 gap-y-1.5 grid-cols-[auto_1fr]", className),
12497
- style: numOfCol === 2 ? { gridTemplateColumns: "auto 1fr auto 1fr" } : void 0,
12498
- children
12499
- }
12500
- );
12564
+ return /* @__PURE__ */ jsxRuntime.jsx("dl", { className: cn("grid gap-x-4 gap-y-1.5", className), style: { gridTemplateColumns: GRID_TEMPLATES[numOfCol] }, children });
12501
12565
  }
12502
12566
 
12503
- const dataKeysAndValuesValueStyles = "text-ui-smd text-neutral3 min-w-0 py-0.5";
12567
+ const dataKeysAndValuesValueStyles = "text-ui-smd text-neutral3 min-w-0 py-0.5 pr-6";
12504
12568
 
12505
12569
  function DataKeysAndValuesValue({ className, children }) {
12506
12570
  return /* @__PURE__ */ jsxRuntime.jsx("dd", { className: cn(dataKeysAndValuesValueStyles, "truncate", className), children });
@@ -12600,7 +12664,13 @@ function DataPanelContent({ children, ref }) {
12600
12664
  }
12601
12665
 
12602
12666
  function DataPanelHeader({ className, children }) {
12603
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex items-center justify-between gap-2 border-b border-border1 mx-4 py-3", className), children });
12667
+ return /* @__PURE__ */ jsxRuntime.jsx(
12668
+ "div",
12669
+ {
12670
+ className: cn("flex items-center justify-between gap-2 border-b border-border1 mx-4 py-3 min-h-14", className),
12671
+ children
12672
+ }
12673
+ );
12604
12674
  }
12605
12675
 
12606
12676
  function DataPanelHeading({ className, children }) {
@@ -12637,7 +12707,7 @@ function DataPanelRoot({ collapsed, children }) {
12637
12707
  {
12638
12708
  className: cn(
12639
12709
  "flex flex-col bg-surface2 border border-border1 rounded-xl overflow-hidden",
12640
- collapsed ? "h-auto" : "h-full"
12710
+ collapsed ? "h-auto" : "max-h-full"
12641
12711
  ),
12642
12712
  children
12643
12713
  }
@@ -14036,12 +14106,17 @@ const getFileContentType = async (url) => {
14036
14106
  }
14037
14107
  return contentType;
14038
14108
  } catch {
14039
- const urlObject = new URL(url);
14040
- const pathname = urlObject.pathname;
14041
- const extension = pathname.split(".").pop();
14042
- if (!extension) return void 0;
14043
- const lowerCaseExtension = extension.toLowerCase();
14044
- return EXTENSION_TO_MIME[lowerCaseExtension];
14109
+ try {
14110
+ const urlObject = new URL(url);
14111
+ const pathname = urlObject.pathname;
14112
+ const extension = pathname.split(".").pop();
14113
+ if (!extension) return void 0;
14114
+ return EXTENSION_TO_MIME[extension.toLowerCase()];
14115
+ } catch {
14116
+ const extension = url.split(".").pop()?.split(/[?#]/)[0];
14117
+ if (!extension) return void 0;
14118
+ return EXTENSION_TO_MIME[extension.toLowerCase()];
14119
+ }
14045
14120
  }
14046
14121
  };
14047
14122
 
@@ -14138,6 +14213,7 @@ exports.Avatar = Avatar;
14138
14213
  exports.AzureIcon = AzureIcon;
14139
14214
  exports.Badge = Badge;
14140
14215
  exports.BranchIcon = BranchIcon;
14216
+ exports.BrandLoader = BrandLoader;
14141
14217
  exports.Breadcrumb = Breadcrumb;
14142
14218
  exports.Button = Button;
14143
14219
  exports.ButtonWithTooltip = ButtonWithTooltip;
@@ -14320,6 +14396,7 @@ exports.RuleFieldSelect = RuleFieldSelect;
14320
14396
  exports.RuleOperatorSelect = RuleOperatorSelect;
14321
14397
  exports.RuleRow = RuleRow;
14322
14398
  exports.RuleValueInput = RuleValueInput;
14399
+ exports.ScoresDataList = ScoresDataList;
14323
14400
  exports.ScrollArea = ScrollArea;
14324
14401
  exports.ScrollBar = ScrollBar;
14325
14402
  exports.ScrollableContainer = ScrollableContainer;