@mastra/playground-ui 5.2.3 → 5.2.5-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -3121,7 +3121,7 @@ function cn(...inputs) {
3121
3121
  }
3122
3122
 
3123
3123
  const buttonVariants = cva(
3124
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
3124
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
3125
3125
  {
3126
3126
  variants: {
3127
3127
  variant: {
@@ -4498,7 +4498,7 @@ const DialogContent = React__namespace.forwardRef(({ className, children, ...pro
4498
4498
  ...props,
4499
4499
  children: [
4500
4500
  children,
4501
- /* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
4501
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogPrimitive__namespace.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
4502
4502
  /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "h-4 w-4" }),
4503
4503
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Close" })
4504
4504
  ] })
@@ -5017,11 +5017,11 @@ const Composer$1 = ({ hasMemory, onInputChange, agentId }) => {
5017
5017
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-4", children: [
5018
5018
  /* @__PURE__ */ jsxRuntime.jsxs(react.ComposerPrimitive.Root, { children: [
5019
5019
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "max-w-[568px] w-full mx-auto pb-2", children: /* @__PURE__ */ jsxRuntime.jsx(ComposerAttachments, {}) }),
5020
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-surface3 rounded-lg border-sm border-border1 py-4 mt-auto max-w-[568px] w-full mx-auto px-4", children: [
5020
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-surface3 rounded-lg border-sm border-border1 py-4 mt-auto max-w-[568px] w-full mx-auto px-4 focus-within:outline focus-within:outline-accent1", children: [
5021
5021
  /* @__PURE__ */ jsxRuntime.jsx(react.ComposerPrimitive.Input, { asChild: true, className: "w-full", children: /* @__PURE__ */ jsxRuntime.jsx(
5022
5022
  "textarea",
5023
5023
  {
5024
- className: "text-ui-lg leading-ui-lg placeholder:text-icon3 text-icon6 bg-transparent focus:outline-none resize-none",
5024
+ className: "text-ui-lg leading-ui-lg placeholder:text-icon3 text-icon6 bg-transparent focus:outline-none resize-none outline-none",
5025
5025
  autoFocus: true,
5026
5026
  placeholder: "Enter your message...",
5027
5027
  name: "",
@@ -6209,7 +6209,7 @@ const AgentChat = ({
6209
6209
  };
6210
6210
 
6211
6211
  const badgeVariants = cva(
6212
- "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",
6212
+ "inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors",
6213
6213
  {
6214
6214
  variants: {
6215
6215
  variant: {
@@ -6263,13 +6263,13 @@ function FormattedDate({ date }) {
6263
6263
  }
6264
6264
 
6265
6265
  const inputVariants = cva(
6266
- "flex w-full text-icon6 rounded-lg border bg-transparent shadow-sm focus-visible:ring-ring transition-colors focus-visible:outline-none focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50",
6266
+ "flex w-full text-icon6 rounded-lg border bg-transparent shadow-sm transition-colors disabled:cursor-not-allowed disabled:opacity-50",
6267
6267
  {
6268
6268
  variants: {
6269
6269
  variant: {
6270
6270
  default: "border-sm border-border1 placeholder:text-icon3",
6271
6271
  filled: "border-sm bg-inputFill border-border1 placeholder:text-icon3",
6272
- unstyled: "border-0 bg-transparent placeholder:text-icon3 focus-visible:ring-transparent focus-visible:outline-none"
6272
+ unstyled: "border-0 bg-transparent placeholder:text-icon3"
6273
6273
  },
6274
6274
  customSize: {
6275
6275
  default: "px-[13px] text-[calc(13_/_16_*_1rem)] h-8",
@@ -6371,24 +6371,14 @@ const TabsTrigger = React__namespace.forwardRef(({ className, ...props }, ref) =
6371
6371
  {
6372
6372
  ref,
6373
6373
  className: cn(
6374
- "ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground whitespace-nowrap focus-visible:outline-none text-ui-lg text-icon3 -mb-[0.5px] inline-flex items-center justify-center border-b-2 border-transparent p-3 font-medium focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:border-b-2 data-[state=active]:border-white data-[state=active]:shadow",
6374
+ "-outline-offset-2 data-[state=active]:bg-background data-[state=active]:text-foreground whitespace-nowrap text-ui-lg text-icon3 -mb-[0.5px] inline-flex items-center justify-center border-b-2 border-transparent p-3 font-medium disabled:pointer-events-none disabled:opacity-50 data-[state=active]:border-b-2 data-[state=active]:border-white data-[state=active]:shadow",
6375
6375
  className
6376
6376
  ),
6377
6377
  ...props
6378
6378
  }
6379
6379
  ));
6380
6380
  TabsTrigger.displayName = TabsPrimitive__namespace.Trigger.displayName;
6381
- const TabsContent = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
6382
- TabsPrimitive__namespace.Content,
6383
- {
6384
- ref,
6385
- className: cn(
6386
- "ring-offset-background focus-visible:ring-ring mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
6387
- className
6388
- ),
6389
- ...props
6390
- }
6391
- ));
6381
+ const TabsContent = React__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(TabsPrimitive__namespace.Content, { ref, className: cn("mt-2 -outline-offset-2", className), ...props }));
6392
6382
  TabsContent.displayName = TabsPrimitive__namespace.Content.displayName;
6393
6383
 
6394
6384
  const PlaygroundTabs = ({
@@ -6440,8 +6430,7 @@ const scrollableContentClass = cn(
6440
6430
  cn(
6441
6431
  "px-4 py-2 text-sm transition-all border-b-2 border-transparent",
6442
6432
  "data-[state=active]:border-white data-[state=active]:text-white font-medium",
6443
- "data-[state=inactive]:text-mastra-el-4 hover:data-[state=inactive]:text-mastra-el-2",
6444
- "focus-visible:outline-none"
6433
+ "data-[state=inactive]:text-mastra-el-4 hover:data-[state=inactive]:text-mastra-el-2"
6445
6434
  );
6446
6435
  cn("data-[state=inactive]:mt-0 min-h-0 h-full grid grid-rows-[1fr]");
6447
6436
  function AgentEvals({ liveEvals, ciEvals, onRefetchLiveEvals, onRefetchCiEvals }) {
@@ -6654,7 +6643,7 @@ const Slider = React__namespace.forwardRef(({ className, ...props }, ref) => /*
6654
6643
  ...props,
6655
6644
  children: [
6656
6645
  /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20", children: /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Range, { className: "absolute h-full bg-primary/50" }) }),
6657
- /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Thumb, { className: "block h-4 w-4 rounded-full border border-primary/50 bg-white shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50" })
6646
+ /* @__PURE__ */ jsxRuntime.jsx(SliderPrimitive__namespace.Thumb, { className: "block h-4 w-4 rounded-full border border-primary/50 bg-white shadow transition-colors disabled:pointer-events-none disabled:opacity-50" })
6658
6647
  ]
6659
6648
  }
6660
6649
  ));
@@ -6674,7 +6663,7 @@ const RadioGroupItem = React__namespace.forwardRef(({ className, ...props }, ref
6674
6663
  {
6675
6664
  ref,
6676
6665
  className: cn(
6677
- "aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
6666
+ "aspect-square h-4 w-4 rounded-full border border-primary text-primary disabled:cursor-not-allowed disabled:opacity-50",
6678
6667
  className
6679
6668
  ),
6680
6669
  ...props,
@@ -6719,7 +6708,10 @@ const Button = ({ className, as, size = "md", variant = "default", ...props }) =
6719
6708
  };
6720
6709
 
6721
6710
  const Collapsible = CollapsiblePrimitive__namespace.Root;
6722
- const CollapsibleTrigger = CollapsiblePrimitive__namespace.CollapsibleTrigger;
6711
+ const CollapsibleTrigger = (props) => {
6712
+ const { className, ...rest } = props;
6713
+ return /* @__PURE__ */ jsxRuntime.jsx(CollapsiblePrimitive__namespace.CollapsibleTrigger, { className: cn("-outline-offset-2", className), ...rest });
6714
+ };
6723
6715
  const CollapsibleContent = CollapsiblePrimitive__namespace.CollapsibleContent;
6724
6716
 
6725
6717
  const formatJSON = async (code) => {
@@ -6955,7 +6947,7 @@ const AgentAdvancedSettings = () => {
6955
6947
  onChange: setProviderOptionsValue,
6956
6948
  theme,
6957
6949
  extensions: [langJson.jsonLanguage],
6958
- className: "h-[300px] overflow-scroll rounded-lg border bg-transparent shadow-sm focus-visible:ring-ring transition-colors focus-visible:outline-none focus-visible:ring-1 p-2"
6950
+ className: "h-[300px] overflow-scroll rounded-lg border bg-transparent shadow-sm transition-colors p-2"
6959
6951
  }
6960
6952
  ),
6961
6953
  error && /* @__PURE__ */ jsxRuntime.jsx(Txt, { variant: "ui-md", className: "text-accent2", children: error })
@@ -7071,18 +7063,18 @@ const rowSize = {
7071
7063
  default: "[&>tbody>tr]:h-table-row",
7072
7064
  small: "[&>tbody>tr]:h-table-row-small"
7073
7065
  };
7074
- const Table = ({ className, children, size = "default" }) => {
7075
- return /* @__PURE__ */ jsxRuntime.jsx("table", { className: clsx("w-full", rowSize[size], className), children });
7066
+ const Table = ({ className, children, size = "default", style }) => {
7067
+ return /* @__PURE__ */ jsxRuntime.jsx("table", { className: clsx("w-full", rowSize[size], className), style, children });
7076
7068
  };
7077
7069
  const Thead = ({ className, children }) => {
7078
- return /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { className: clsx("h-table-header border-b-sm border-border1", className), children }) });
7070
+ return /* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { className: clsx("h-table-header border-b-sm border-border1 bg-surface2", className), children }) });
7079
7071
  };
7080
7072
  const Th = ({ className, children, ...props }) => {
7081
7073
  return /* @__PURE__ */ jsxRuntime.jsx(
7082
7074
  "th",
7083
7075
  {
7084
7076
  className: clsx(
7085
- "text-icon3 text-ui-sm h-full text-left font-normal uppercase first:pl-5 last:pr-5 whitespace-nowrap",
7077
+ "text-icon3 text-ui-sm h-full whitespace-nowrap text-left font-normal uppercase first:pl-5 last:pr-5",
7086
7078
  className
7087
7079
  ),
7088
7080
  ...props,
@@ -7093,21 +7085,33 @@ const Th = ({ className, children, ...props }) => {
7093
7085
  const Tbody = ({ className, children }) => {
7094
7086
  return /* @__PURE__ */ jsxRuntime.jsx("tbody", { className: clsx("", className), children });
7095
7087
  };
7096
- const Row = ({ className, children, selected = false, onClick }) => {
7097
- return /* @__PURE__ */ jsxRuntime.jsx(
7098
- "tr",
7099
- {
7100
- className: clsx(
7101
- "border-b-sm border-border1 hover:bg-surface3",
7102
- selected && "bg-surface4",
7103
- onClick && "cursor-pointer",
7104
- className
7105
- ),
7106
- onClick,
7107
- children
7108
- }
7109
- );
7110
- };
7088
+ const Row = React.forwardRef(
7089
+ ({ className, children, selected = false, style, onClick, ...props }, ref) => {
7090
+ const handleKeyDown = (event) => {
7091
+ if (event.key === "Enter" && onClick) {
7092
+ onClick();
7093
+ }
7094
+ };
7095
+ return /* @__PURE__ */ jsxRuntime.jsx(
7096
+ "tr",
7097
+ {
7098
+ className: clsx(
7099
+ "border-b-sm border-border1 hover:bg-surface3 focus:bg-surface3 -outline-offset-2",
7100
+ selected && "bg-surface4",
7101
+ onClick && "cursor-pointer",
7102
+ className
7103
+ ),
7104
+ style,
7105
+ onClick,
7106
+ ref,
7107
+ tabIndex: onClick ? 0 : void 0,
7108
+ onKeyDown: handleKeyDown,
7109
+ ...props,
7110
+ children
7111
+ }
7112
+ );
7113
+ }
7114
+ );
7111
7115
 
7112
7116
  const formatDateCell = (date) => {
7113
7117
  const month = new Intl.DateTimeFormat("en-US", { month: "short" }).format(date).toUpperCase();
@@ -7956,7 +7960,7 @@ const AgentMetadataSection = ({ title, children, hint }) => {
7956
7960
  /* @__PURE__ */ jsxRuntime.jsxs(Txt, { as: "h3", variant: "ui-md", className: "text-icon3 flex items-center gap-1", children: [
7957
7961
  title,
7958
7962
  hint && /* @__PURE__ */ jsxRuntime.jsx(TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(Tooltip, { children: [
7959
- /* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { children: /* @__PURE__ */ jsxRuntime.jsx(Link, { href: hint.link, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "text-icon3", size: "sm", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.InfoIcon, {}) }) }) }),
7963
+ /* @__PURE__ */ jsxRuntime.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(Link, { href: hint.link, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: "text-icon3", size: "sm", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.InfoIcon, {}) }) }) }),
7960
7964
  /* @__PURE__ */ jsxRuntime.jsx(TooltipContent, { children: hint.title })
7961
7965
  ] }) })
7962
7966
  ] }),
@@ -8299,7 +8303,7 @@ const SelectTrigger = React__namespace.forwardRef(({ className, children, ...pro
8299
8303
  {
8300
8304
  ref,
8301
8305
  className: cn(
8302
- "flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
8306
+ "flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
8303
8307
  className
8304
8308
  ),
8305
8309
  ...props,
@@ -8339,7 +8343,7 @@ const SelectItem = React__namespace.forwardRef(({ className, children, ...props
8339
8343
  {
8340
8344
  ref,
8341
8345
  className: cn(
8342
- "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-mastra-el-5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
8346
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-mastra-el-5 text-sm focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
8343
8347
  className
8344
8348
  ),
8345
8349
  ...props,
@@ -8360,7 +8364,7 @@ const PopoverContent = React__namespace.forwardRef(({ className, align = "center
8360
8364
  align,
8361
8365
  sideOffset,
8362
8366
  className: cn(
8363
- "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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",
8367
+ "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md 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",
8364
8368
  className
8365
8369
  ),
8366
8370
  ...props
@@ -10309,7 +10313,7 @@ const WorkflowStepActionBar = ({
10309
10313
  ] }),
10310
10314
  onShowTrace && /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: onShowTrace, children: "Show trace" }),
10311
10315
  showEventForm && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
10312
- /* @__PURE__ */ jsxRuntime.jsx(Button, { className: "ring-1 ring-accent5 !text-accent5", onClick: () => setIsEventFormOpen(true), children: "Send event" }),
10316
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { className: "!text-accent5", onClick: () => setIsEventFormOpen(true), children: "Send event" }),
10313
10317
  /* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: isEventFormOpen, onOpenChange: setIsEventFormOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(DialogContent, { className: dialogContentClass, children: [
10314
10318
  /* @__PURE__ */ jsxRuntime.jsxs(DialogTitle, { className: dialogTitleClass, children: [
10315
10319
  "Send ",
@@ -10340,8 +10344,8 @@ function WorkflowConditionNode({ data }) {
10340
10344
  {
10341
10345
  className: cn(
10342
10346
  "bg-surface3 rounded-lg w-[300px] border-sm border-border1",
10343
- previousStep?.status === "success" && nextStep && "ring-2 ring-accent1 bg-accent1Darker",
10344
- previousStep?.status === "failed" && nextStep && "ring-2 ring-accent2 bg-accent2Darker"
10347
+ previousStep?.status === "success" && nextStep && "bg-accent1Darker",
10348
+ previousStep?.status === "failed" && nextStep && "bg-accent2Darker"
10345
10349
  ),
10346
10350
  children: [
10347
10351
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -10457,11 +10461,11 @@ function WorkflowDefaultNode({
10457
10461
  {
10458
10462
  className: cn(
10459
10463
  "bg-surface3 rounded-lg w-[274px] border-sm border-border1 pt-2",
10460
- step?.status === "success" && "ring-2 ring-accent1 bg-accent1Darker",
10461
- step?.status === "failed" && "ring-2 ring-accent2 bg-accent2Darker",
10462
- step?.status === "suspended" && "ring-2 ring-accent3 bg-accent3Darker",
10463
- step?.status === "waiting" && "ring-2 ring-accent5 bg-accent5Darker",
10464
- step?.status === "running" && "ring-2 ring-accent6 bg-accent6Darker"
10464
+ step?.status === "success" && "bg-accent1Darker",
10465
+ step?.status === "failed" && "bg-accent2Darker",
10466
+ step?.status === "suspended" && "bg-accent3Darker",
10467
+ step?.status === "waiting" && "bg-accent5Darker",
10468
+ step?.status === "running" && "bg-accent6Darker"
10465
10469
  ),
10466
10470
  children: [
10467
10471
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2 px-3", !description && "pb-2"), children: [
@@ -10761,11 +10765,11 @@ function WorkflowNestedNode({
10761
10765
  {
10762
10766
  className: cn(
10763
10767
  "bg-surface3 rounded-lg w-[274px] border-sm border-border1 pt-2",
10764
- step?.status === "success" && "ring-2 ring-accent1 bg-accent1Darker",
10765
- step?.status === "failed" && "ring-2 ring-accent2 bg-accent2Darker",
10766
- step?.status === "suspended" && "ring-2 ring-accent3 bg-accent3Darker",
10767
- step?.status === "waiting" && "ring-2 ring-accent5 bg-accent5Darker",
10768
- step?.status === "running" && "ring-2 ring-accent6 bg-accent6Darker"
10768
+ step?.status === "success" && "bg-accent1Darker",
10769
+ step?.status === "failed" && "bg-accent2Darker",
10770
+ step?.status === "suspended" && "bg-accent3Darker",
10771
+ step?.status === "waiting" && "bg-accent5Darker",
10772
+ step?.status === "running" && "bg-accent6Darker"
10769
10773
  ),
10770
10774
  children: [
10771
10775
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-2 px-3", !description && "pb-2"), children: [
@@ -11353,7 +11357,7 @@ const Composer = ({ hasMemory }) => {
11353
11357
  /* @__PURE__ */ jsxRuntime.jsx(react.ComposerPrimitive.Input, { asChild: true, className: "w-full", children: /* @__PURE__ */ jsxRuntime.jsx(
11354
11358
  "textarea",
11355
11359
  {
11356
- className: "text-ui-lg leading-ui-lg placeholder:text-icon3 text-icon6 bg-transparent focus:outline-none resize-none",
11360
+ className: "text-ui-lg leading-ui-lg placeholder:text-icon3 text-icon6 bg-transparent resize-none",
11357
11361
  autoFocus: true,
11358
11362
  placeholder: "Enter your message...",
11359
11363
  name: "",
@@ -12095,6 +12099,65 @@ const NetworkTableSkeleton = () => {
12095
12099
  ] });
12096
12100
  };
12097
12101
 
12102
+ const themeClasses = {
12103
+ light: "bg-gray-100 border-gray-300 text-gray-700",
12104
+ dark: "bg-surface4 border-border1 text-icon6"
12105
+ };
12106
+ const Kbd = ({ children, theme = "dark" }) => {
12107
+ const themeClass = themeClasses[theme];
12108
+ return /* @__PURE__ */ jsxRuntime.jsx("kbd", { className: clsx("border-sm rounded-md px-1 py-0.5 font-mono", themeClass), children });
12109
+ };
12110
+
12111
+ const Searchbar = ({ onSearch, label, placeholder }) => {
12112
+ const id = React.useId();
12113
+ const inputRef = React.useRef(null);
12114
+ React.useEffect(() => {
12115
+ const input = inputRef.current;
12116
+ if (!input) return;
12117
+ const handleKeyDown = (event) => {
12118
+ if (event.key.toLowerCase() === "f" && event.shiftKey && (event.ctrlKey || event.metaKey)) {
12119
+ event.preventDefault();
12120
+ input.focus();
12121
+ }
12122
+ };
12123
+ window.addEventListener("keydown", handleKeyDown);
12124
+ return () => {
12125
+ window.removeEventListener("keydown", handleKeyDown);
12126
+ };
12127
+ }, []);
12128
+ const handleSubmit = (e) => {
12129
+ e.preventDefault();
12130
+ const formData = new FormData(e.target);
12131
+ const search = formData.get(id);
12132
+ onSearch(search);
12133
+ };
12134
+ return /* @__PURE__ */ jsxRuntime.jsxs(
12135
+ "form",
12136
+ {
12137
+ onSubmit: handleSubmit,
12138
+ className: "border-sm border-icon-3 flex h-8 w-full items-center gap-2 overflow-hidden rounded-lg pl-2 pr-1",
12139
+ children: [
12140
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SearchIcon, { className: "text-icon3 h-4 w-4" }),
12141
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
12142
+ /* @__PURE__ */ jsxRuntime.jsx("label", { htmlFor: id, className: "sr-only", children: label }),
12143
+ /* @__PURE__ */ jsxRuntime.jsx(
12144
+ "input",
12145
+ {
12146
+ id,
12147
+ type: "text",
12148
+ placeholder,
12149
+ className: "bg-surface2 text-ui-md placeholder:text-icon-3 block h-8 w-full px-2 -outline-offset-2",
12150
+ name: id,
12151
+ ref: inputRef
12152
+ }
12153
+ )
12154
+ ] }),
12155
+ /* @__PURE__ */ jsxRuntime.jsx("button", { type: "submit", className: "text-ui-sm text-icon3 flex flex-row items-center gap-1", children: /* @__PURE__ */ jsxRuntime.jsx(Kbd, { children: "Enter" }) })
12156
+ ]
12157
+ }
12158
+ );
12159
+ };
12160
+
12098
12161
  const ToolList = ({ tools, agents, isLoading, computeLink, computeAgentLink }) => {
12099
12162
  const toolsWithAgents = React.useMemo(() => prepareAgents(tools, agents), [tools, agents]);
12100
12163
  if (isLoading)
@@ -12109,8 +12172,7 @@ const ToolListInner = ({
12109
12172
  const [filteredTools, setFilteredTools] = React.useState(toolsWithAgents);
12110
12173
  const [value, setValue] = React.useState("");
12111
12174
  if (filteredTools.length === 0 && !value) return /* @__PURE__ */ jsxRuntime.jsx(ToolListEmpty, {});
12112
- const handleSearch = (e) => {
12113
- const value2 = e.target.value;
12175
+ const handleSearch = (value2) => {
12114
12176
  setValue(value2);
12115
12177
  React.startTransition(() => {
12116
12178
  setFilteredTools(
@@ -12124,19 +12186,7 @@ const ToolListInner = ({
12124
12186
  };
12125
12187
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
12126
12188
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "max-w-5xl w-full mx-auto px-4 pt-8", children: [
12127
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 flex items-center gap-2 rounded-lg bg-surface5 focus-within:ring-2 focus-within:ring-accent3", children: [
12128
- /* @__PURE__ */ jsxRuntime.jsx(Icon, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SearchIcon, {}) }),
12129
- /* @__PURE__ */ jsxRuntime.jsx(
12130
- "input",
12131
- {
12132
- type: "text",
12133
- placeholder: "Search for a tool",
12134
- className: "w-full py-2 bg-transparent text-icon3 focus:text-icon6 placeholder:text-icon3 outline-none",
12135
- value,
12136
- onChange: handleSearch
12137
- }
12138
- )
12139
- ] }),
12189
+ /* @__PURE__ */ jsxRuntime.jsx(Searchbar, { onSearch: handleSearch, label: "Search for a tool", placeholder: "Search for a tool" }),
12140
12190
  filteredTools.length === 0 && /* @__PURE__ */ jsxRuntime.jsx(Txt, { as: "p", className: "text-icon3 py-2", children: "No tools found matching your search." })
12141
12191
  ] }),
12142
12192
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid md:grid-cols-2 xl:grid-cols-3 gap-4 max-w-5xl mx-auto py-8", children: filteredTools.map((tool) => /* @__PURE__ */ jsxRuntime.jsx(ToolEntity, { tool, computeLink, computeAgentLink }, tool.id)) })
@@ -12490,7 +12540,7 @@ const Checkbox = React__namespace.forwardRef(({ className, ...props }, ref) => /
12490
12540
  {
12491
12541
  ref,
12492
12542
  className: cn(
12493
- "peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
12543
+ "peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
12494
12544
  className
12495
12545
  ),
12496
12546
  ...props,
@@ -15123,6 +15173,9 @@ exports.Cell = Cell;
15123
15173
  exports.ChatThreads = ChatThreads;
15124
15174
  exports.CheckIcon = CheckIcon;
15125
15175
  exports.ChevronIcon = ChevronIcon;
15176
+ exports.Collapsible = Collapsible;
15177
+ exports.CollapsibleContent = CollapsibleContent;
15178
+ exports.CollapsibleTrigger = CollapsibleTrigger;
15126
15179
  exports.CommitIcon = CommitIcon;
15127
15180
  exports.CrossIcon = CrossIcon;
15128
15181
  exports.Crumb = Crumb;
@@ -15162,6 +15215,7 @@ exports.HomeIcon = HomeIcon;
15162
15215
  exports.Icon = Icon;
15163
15216
  exports.InfoIcon = InfoIcon;
15164
15217
  exports.JudgeIcon = JudgeIcon;
15218
+ exports.Kbd = Kbd;
15165
15219
  exports.LatencyIcon = LatencyIcon;
15166
15220
  exports.LegacyWorkflowGraph = LegacyWorkflowGraph;
15167
15221
  exports.LegacyWorkflowTrigger = LegacyWorkflowTrigger;
@@ -15194,6 +15248,7 @@ exports.RuntimeContextWrapper = RuntimeContextWrapper;
15194
15248
  exports.ScoreIcon = ScoreIcon;
15195
15249
  exports.ScorerList = ScorerList;
15196
15250
  exports.ScorerSkeleton = ScorerSkeleton;
15251
+ exports.Searchbar = Searchbar;
15197
15252
  exports.SettingsIcon = SettingsIcon;
15198
15253
  exports.SlashIcon = SlashIcon;
15199
15254
  exports.Tab = Tab;