@inf-monkeys-tech/monkeys-design 1.0.56 → 1.0.60

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.mjs CHANGED
@@ -1,23 +1,23 @@
1
1
  import debounce from 'lodash/debounce.js';
2
2
  import { resolveThemeTokens, buildApplicationHandoffUrl } from '@inf-monkeys-tech/monkeys/runtime';
3
3
  import * as React4 from 'react';
4
- import React4__default, { forwardRef, useId, useState, useRef, useEffect, createElement, createContext, useCallback, useMemo, useContext, Children, isValidElement, Fragment as Fragment$1, useLayoutEffect } from 'react';
4
+ import React4__default, { forwardRef, useMemo, useId, useRef, useState, useEffect, createElement, createContext, useCallback, useContext, Children, isValidElement, Fragment as Fragment$1, useLayoutEffect } from 'react';
5
5
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
- import * as DropdownMenu2 from '@radix-ui/react-dropdown-menu';
6
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
7
+ import { ChevronDown, Search, Circle, Check, ChevronRight, ChevronUp, X, Plus, Pin, SquarePen, Blocks, MessageSquare, Bot, Settings, Loader2, TerminalSquare, Clock3, FileOutput, Download, RefreshCw, CheckCircle2, XCircle, CircleStop, AlertCircle, GitFork, PencilLine, Copy, RotateCcw, FileCode2, Files, TestTube2, Image, Ellipsis, Pencil, Trash2 } from 'lucide-react';
7
8
  import { twMerge } from 'tailwind-merge';
9
+ import * as DropdownMenu2 from '@radix-ui/react-dropdown-menu';
8
10
  import * as ContextMenu from '@radix-ui/react-context-menu';
9
11
  import { createPortal } from 'react-dom';
10
12
  import * as Dialog from '@radix-ui/react-dialog';
11
13
  import * as Tooltip2 from '@radix-ui/react-tooltip';
12
14
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
13
15
  import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
14
- import * as PopoverPrimitive from '@radix-ui/react-popover';
15
16
  import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
16
17
  import { Slot } from '@radix-ui/react-slot';
17
18
  import * as SwitchPrimitive from '@radix-ui/react-switch';
18
19
  import * as TabsPrimitive from '@radix-ui/react-tabs';
19
20
  import { cva } from 'class-variance-authority';
20
- import { ChevronDown, Check, ChevronRight, Circle, ChevronUp, Search, X, Plus, Pin, SquarePen, Blocks, MessageSquare, Bot, Settings, Loader2, TerminalSquare, Clock3, FileOutput, Download, RefreshCw, CheckCircle2, XCircle, CircleStop, AlertCircle, GitFork, PencilLine, Copy, RotateCcw, FileCode2, Files, TestTube2, Image, Ellipsis, Pencil, Trash2 } from 'lucide-react';
21
21
  import * as SelectPrimitive from '@radix-ui/react-select';
22
22
  import { useSensors, useSensor, PointerSensor, DndContext, DragOverlay, useDroppable, useDraggable } from '@dnd-kit/core';
23
23
  import { toast as toast$1, Toaster } from 'sonner';
@@ -4047,6 +4047,352 @@ function hasNonEmptyRenderableNode(node) {
4047
4047
  if (typeof node === "string") return node.trim().length > 0;
4048
4048
  return hasRenderableNode(node);
4049
4049
  }
4050
+ var placementMap = {
4051
+ "bottom-start": { side: "bottom", align: "start" },
4052
+ "bottom-end": { side: "bottom", align: "end" },
4053
+ "top-start": { side: "top", align: "start" },
4054
+ "top-end": { side: "top", align: "end" }
4055
+ };
4056
+ function flattenOptions(options, depth = 0) {
4057
+ return options.flatMap((option) => [
4058
+ { ...option, depth },
4059
+ ...option.children ? flattenOptions(option.children, depth + 1) : []
4060
+ ]);
4061
+ }
4062
+ function validateOptions(options) {
4063
+ const values = /* @__PURE__ */ new Set();
4064
+ flattenOptions(options).forEach((option) => {
4065
+ if (!option || typeof option !== "object") {
4066
+ throw new TypeError("UnifiedDropdown options must contain objects.");
4067
+ }
4068
+ if (typeof option.value !== "string" || !option.value.trim()) {
4069
+ throw new TypeError("UnifiedDropdown option value must be a non-empty string.");
4070
+ }
4071
+ if (values.has(option.value)) {
4072
+ throw new TypeError(`UnifiedDropdown option value "${option.value}" must be unique.`);
4073
+ }
4074
+ values.add(option.value);
4075
+ });
4076
+ }
4077
+ function normalizeValues(value) {
4078
+ const values = Array.isArray(value) ? value : value === void 0 ? [] : [value];
4079
+ return [...new Set(values.filter((item) => typeof item === "string"))];
4080
+ }
4081
+ function getOptionText(option) {
4082
+ if (option.textValue) return option.textValue;
4083
+ return typeof option.label === "string" ? option.label : option.value;
4084
+ }
4085
+ function isMultiMode(mode) {
4086
+ return mode === "multi" || mode === "checkbox";
4087
+ }
4088
+ function matchesSearch(option, query) {
4089
+ return getOptionText(option).toLocaleLowerCase().includes(query.toLocaleLowerCase());
4090
+ }
4091
+ function validateValueShape(mode, value, name) {
4092
+ if (value === void 0) return;
4093
+ if (isMultiMode(mode) ? !Array.isArray(value) : typeof value !== "string") {
4094
+ throw new TypeError(
4095
+ `UnifiedDropdown ${name} must be ${isMultiMode(mode) ? "a string array" : "a string"} in ${mode} mode.`
4096
+ );
4097
+ }
4098
+ }
4099
+ var UnifiedDropdown = forwardRef(
4100
+ function UnifiedDropdown2({
4101
+ mode,
4102
+ options = [],
4103
+ groups = [],
4104
+ value,
4105
+ defaultValue,
4106
+ placeholder = "Select\u2026",
4107
+ trigger,
4108
+ triggerLabel,
4109
+ searchPlaceholder = "Search\u2026",
4110
+ emptyLabel = "No options",
4111
+ loadingLabel = "Loading\u2026",
4112
+ clearLabel = "Clear selection",
4113
+ retryLabel = "Retry",
4114
+ loading = false,
4115
+ error,
4116
+ searchable = mode === "searchable",
4117
+ clearable = false,
4118
+ maxSelections,
4119
+ disabled = false,
4120
+ invalid = false,
4121
+ open: controlledOpen,
4122
+ defaultOpen = false,
4123
+ placement = "bottom-start",
4124
+ closeOnSelect = mode !== "multi" && mode !== "checkbox",
4125
+ portal = true,
4126
+ size = "default",
4127
+ width = "trigger",
4128
+ appearance,
4129
+ className,
4130
+ classNames,
4131
+ slots,
4132
+ style,
4133
+ onOpenChange,
4134
+ onValueChange,
4135
+ onSelect,
4136
+ onAction,
4137
+ onClear,
4138
+ onRetry,
4139
+ ...rootProps
4140
+ }, ref) {
4141
+ if (!["single", "multi", "searchable", "radio", "checkbox", "tree", "action"].includes(mode)) {
4142
+ throw new TypeError(`UnifiedDropdown mode "${String(mode)}" is not supported.`);
4143
+ }
4144
+ const groupedOptions = useMemo(
4145
+ () => groups.reduce((result, group) => {
4146
+ const groupName = typeof group.label === "string" ? group.label : group.value;
4147
+ result.push(...group.options.map((option) => ({ ...option, group: option.group ?? groupName })));
4148
+ return result;
4149
+ }, [...options]),
4150
+ [groups, options]
4151
+ );
4152
+ validateOptions(groupedOptions);
4153
+ if (maxSelections !== void 0 && (!Number.isFinite(maxSelections) || maxSelections < 0)) {
4154
+ throw new TypeError("UnifiedDropdown maxSelections must be a non-negative finite number.");
4155
+ }
4156
+ if (mode === "action" && (value !== void 0 || defaultValue !== void 0)) {
4157
+ throw new TypeError("UnifiedDropdown action mode does not accept a value.");
4158
+ }
4159
+ if (mode !== "action") {
4160
+ validateValueShape(mode, value, "value");
4161
+ validateValueShape(mode, defaultValue, "defaultValue");
4162
+ }
4163
+ const id = useId();
4164
+ const triggerId = `${id}-trigger`;
4165
+ const listId = `${id}-listbox`;
4166
+ const searchId = `${id}-search`;
4167
+ const triggerRef = useRef(null);
4168
+ const itemRefs = useRef([]);
4169
+ const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);
4170
+ const [uncontrolledValue, setUncontrolledValue] = useState(
4171
+ defaultValue ?? (isMultiMode(mode) ? [] : "")
4172
+ );
4173
+ const [query, setQuery] = useState("");
4174
+ const [activeIndex, setActiveIndex] = useState(0);
4175
+ const isControlled = controlledOpen !== void 0;
4176
+ const open = isControlled ? controlledOpen : uncontrolledOpen;
4177
+ const selectedValues = normalizeValues(value ?? uncontrolledValue);
4178
+ const flattened = useMemo(() => flattenOptions(groupedOptions), [groupedOptions]);
4179
+ const visibleOptions = useMemo(
4180
+ () => searchable ? flattened.filter((option) => matchesSearch(option, query)) : flattened,
4181
+ [flattened, query, searchable]
4182
+ );
4183
+ const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);
4184
+ const selectedOptions = flattened.filter((option) => selectedSet.has(option.value));
4185
+ const selectedLabel = selectedOptions.map(getOptionText).join(", ");
4186
+ const resolvedTriggerLabel = triggerLabel ?? (selectedLabel || placeholder);
4187
+ const isPlaceholder = selectedOptions.length === 0 && !triggerLabel;
4188
+ const { side, align } = placementMap[placement];
4189
+ const isMenu = mode === "action";
4190
+ const usesCheckedMenu = mode === "radio" || mode === "checkbox";
4191
+ const contentRole = isMenu || usesCheckedMenu ? "menu" : "listbox";
4192
+ useEffect(() => {
4193
+ if (open) setActiveIndex(0);
4194
+ }, [open, query]);
4195
+ const setOpen = (nextOpen) => {
4196
+ if (disabled) return;
4197
+ if (!isControlled) setUncontrolledOpen(nextOpen);
4198
+ onOpenChange?.(nextOpen);
4199
+ };
4200
+ const commitValue = (nextValue) => {
4201
+ if (value === void 0) setUncontrolledValue(nextValue);
4202
+ onValueChange?.(nextValue);
4203
+ };
4204
+ const selectOption = (option) => {
4205
+ if (disabled || option.disabled) return;
4206
+ onSelect?.(option);
4207
+ if (mode === "action") {
4208
+ if (closeOnSelect) setOpen(false);
4209
+ if (onAction) queueMicrotask(() => onAction(option));
4210
+ return;
4211
+ }
4212
+ if (isMultiMode(mode)) {
4213
+ const nextValues = selectedSet.has(option.value) ? selectedValues.filter((item) => item !== option.value) : maxSelections !== void 0 && selectedValues.length >= maxSelections ? selectedValues : [...selectedValues, option.value];
4214
+ commitValue(nextValues);
4215
+ } else {
4216
+ commitValue(option.value);
4217
+ }
4218
+ if (closeOnSelect && !isMultiMode(mode)) setOpen(false);
4219
+ };
4220
+ const handleTriggerKeyDown = (event) => {
4221
+ if (disabled) return;
4222
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
4223
+ event.preventDefault();
4224
+ if (!open) setOpen(true);
4225
+ const direction = event.key === "ArrowDown" ? 1 : -1;
4226
+ setActiveIndex((index) => Math.max(0, Math.min(visibleOptions.length - 1, index + direction)));
4227
+ }
4228
+ };
4229
+ const handleContentKeyDown = (event) => {
4230
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
4231
+ event.preventDefault();
4232
+ const direction = event.key === "ArrowDown" ? 1 : -1;
4233
+ setActiveIndex((index) => {
4234
+ const next = index + direction;
4235
+ return Math.max(0, Math.min(visibleOptions.length - 1, next));
4236
+ });
4237
+ }
4238
+ if (event.key === "Enter" && visibleOptions[activeIndex]) {
4239
+ event.preventDefault();
4240
+ selectOption(visibleOptions[activeIndex]);
4241
+ }
4242
+ };
4243
+ useEffect(() => {
4244
+ if (!open) return;
4245
+ itemRefs.current[activeIndex]?.scrollIntoView({ block: "nearest" });
4246
+ }, [activeIndex, open]);
4247
+ const clearSelection = () => {
4248
+ commitValue(isMultiMode(mode) ? [] : "");
4249
+ onClear?.();
4250
+ };
4251
+ return /* @__PURE__ */ jsx(PopoverPrimitive.Root, { open, onOpenChange: setOpen, children: /* @__PURE__ */ jsxs(
4252
+ "div",
4253
+ {
4254
+ ...rootProps,
4255
+ ref,
4256
+ className: cn("relative inline-flex min-w-0", className),
4257
+ style,
4258
+ "data-monkeys-component": "unified-dropdown",
4259
+ "data-mode": mode,
4260
+ "data-state": open ? "open" : "closed",
4261
+ "data-invalid": invalid || void 0,
4262
+ "data-disabled": disabled || void 0,
4263
+ "data-appearance-preset": appearance?.preset,
4264
+ "data-appearance-variant": appearance?.variant,
4265
+ "data-appearance-density": appearance?.density,
4266
+ "data-appearance-radius": appearance?.radius,
4267
+ children: [
4268
+ /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs(
4269
+ "button",
4270
+ {
4271
+ ref: triggerRef,
4272
+ id: triggerId,
4273
+ type: "button",
4274
+ disabled,
4275
+ "aria-expanded": open,
4276
+ "aria-haspopup": isMenu || usesCheckedMenu ? "menu" : "listbox",
4277
+ "aria-controls": open ? listId : void 0,
4278
+ "aria-invalid": invalid || void 0,
4279
+ onKeyDown: handleTriggerKeyDown,
4280
+ className: cn(
4281
+ "flex min-w-0 items-center justify-between gap-2 rounded-md border border-input bg-control-surface px-3 text-left text-sm text-foreground shadow-sm outline-none transition-colors",
4282
+ "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-control-surface",
4283
+ "disabled:cursor-not-allowed disabled:opacity-50",
4284
+ size === "sm" ? "h-8 py-1 text-xs" : "h-10 py-2",
4285
+ invalid && "border-destructive focus-visible:ring-destructive",
4286
+ width === "responsive" && "w-full sm:w-auto",
4287
+ classNames?.trigger
4288
+ ),
4289
+ children: [
4290
+ trigger ? /* @__PURE__ */ jsx("span", { className: "min-w-0 shrink-0", children: trigger }) : null,
4291
+ /* @__PURE__ */ jsx("span", { className: cn("min-w-0 flex-1 truncate", isPlaceholder && "text-muted-foreground"), children: resolvedTriggerLabel }),
4292
+ /* @__PURE__ */ jsx(ChevronDown, { "aria-hidden": "true", className: "h-4 w-4 shrink-0 opacity-60" })
4293
+ ]
4294
+ }
4295
+ ) }),
4296
+ (() => {
4297
+ const content = /* @__PURE__ */ jsxs(
4298
+ PopoverPrimitive.Content,
4299
+ {
4300
+ id: listId,
4301
+ side,
4302
+ align,
4303
+ sideOffset: 6,
4304
+ collisionPadding: 8,
4305
+ avoidCollisions: true,
4306
+ onKeyDown: handleContentKeyDown,
4307
+ onOpenAutoFocus: (event) => {
4308
+ event.preventDefault();
4309
+ const target = searchable ? document.getElementById(searchId) : itemRefs.current[0];
4310
+ target?.focus();
4311
+ },
4312
+ tabIndex: -1,
4313
+ className: cn(
4314
+ "z-50 max-h-[min(24rem,calc(100vh-1rem))] max-w-[calc(100vw-1rem)] overflow-y-auto rounded-md border bg-menu-surface p-1 text-popover-foreground shadow-md outline-none",
4315
+ width === "trigger" && "w-[var(--radix-popover-trigger-width)] min-w-[12rem]",
4316
+ width === "content" && "min-w-[12rem] max-w-[min(32rem,calc(100vw-1rem))]",
4317
+ width === "responsive" && "w-[min(var(--radix-popover-trigger-width),calc(100vw-1rem))] min-w-[12rem]",
4318
+ classNames?.content
4319
+ ),
4320
+ children: [
4321
+ searchable ? /* @__PURE__ */ jsxs("div", { className: "relative mb-1", children: [
4322
+ /* @__PURE__ */ jsx(Search, { "aria-hidden": "true", className: "pointer-events-none absolute left-2 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
4323
+ /* @__PURE__ */ jsx(
4324
+ "input",
4325
+ {
4326
+ id: searchId,
4327
+ value: query,
4328
+ onChange: (event) => setQuery(event.target.value),
4329
+ placeholder: searchPlaceholder,
4330
+ "aria-label": searchPlaceholder,
4331
+ className: cn("h-9 w-full rounded-sm border-0 bg-transparent pl-8 pr-2 text-sm outline-none ring-0 placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring", classNames?.search)
4332
+ }
4333
+ )
4334
+ ] }) : null,
4335
+ clearable && selectedOptions.length > 0 ? /* @__PURE__ */ jsx("button", { type: "button", className: "mb-1 w-full rounded-sm px-2 py-1 text-left text-xs text-muted-foreground hover:bg-accent", onClick: clearSelection, children: clearLabel }) : null,
4336
+ loading && visibleOptions.length === 0 ? slots?.loading ? slots.loading() : /* @__PURE__ */ jsx("div", { role: "status", className: cn("px-2 py-6 text-center text-sm text-muted-foreground", classNames?.empty), children: loadingLabel }) : error && visibleOptions.length === 0 ? slots?.error ? slots.error() : /* @__PURE__ */ jsxs("div", { role: "alert", className: cn("px-2 py-6 text-center text-sm text-destructive-text", classNames?.empty), children: [
4337
+ error,
4338
+ onRetry ? /* @__PURE__ */ jsx("button", { type: "button", className: "mt-2 block w-full text-center text-foreground underline", onClick: onRetry, children: retryLabel }) : null
4339
+ ] }) : visibleOptions.length === 0 ? slots?.empty ? slots.empty() : /* @__PURE__ */ jsx("div", { role: "status", className: cn("px-2 py-6 text-center text-sm text-muted-foreground", classNames?.empty), children: emptyLabel }) : /* @__PURE__ */ jsx("div", { role: mode === "tree" ? "tree" : contentRole, "aria-multiselectable": mode === "multi" || void 0, children: visibleOptions.map((option, index) => {
4340
+ const selected = selectedSet.has(option.value);
4341
+ const indicator = mode === "radio" ? /* @__PURE__ */ jsx(Circle, { "aria-hidden": "true", className: cn("h-3.5 w-3.5", selected && "fill-current") }) : /* @__PURE__ */ jsx(Check, { "aria-hidden": "true", className: "h-4 w-4" });
4342
+ return /* @__PURE__ */ jsxs("div", { children: [
4343
+ option.group && (index === 0 || visibleOptions[index - 1]?.group !== option.group) ? /* @__PURE__ */ jsx("div", { role: "presentation", className: cn("px-2 pb-1 pt-2 text-xs font-medium text-muted-foreground", classNames?.groupLabel), children: option.group }) : null,
4344
+ /* @__PURE__ */ jsxs(
4345
+ "button",
4346
+ {
4347
+ ref: (node) => {
4348
+ itemRefs.current[index] = node;
4349
+ },
4350
+ type: "button",
4351
+ role: mode === "tree" ? "treeitem" : mode === "radio" ? "menuitemradio" : mode === "checkbox" ? "menuitemcheckbox" : isMenu ? "menuitem" : "option",
4352
+ "aria-level": mode === "tree" ? option.depth + 1 : void 0,
4353
+ "aria-selected": !isMenu && !usesCheckedMenu ? selected : void 0,
4354
+ "aria-checked": usesCheckedMenu ? selected : void 0,
4355
+ disabled: option.disabled,
4356
+ "data-highlighted": index === activeIndex || void 0,
4357
+ "data-state": selected ? "checked" : "unchecked",
4358
+ onMouseEnter: () => setActiveIndex(index),
4359
+ onClick: () => selectOption(option),
4360
+ className: cn(
4361
+ "relative flex min-h-9 w-full items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors",
4362
+ "hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground",
4363
+ "disabled:pointer-events-none disabled:opacity-50",
4364
+ index === activeIndex && "bg-accent text-accent-foreground",
4365
+ selected && "font-medium",
4366
+ option.danger && "text-destructive-text",
4367
+ mode !== "action" && "pl-8",
4368
+ classNames?.item
4369
+ ),
4370
+ style: mode === "tree" ? { paddingInlineStart: `${8 + option.depth * 16}px` } : void 0,
4371
+ children: [
4372
+ mode !== "action" ? /* @__PURE__ */ jsx("span", { className: "absolute left-2 flex h-4 w-4 items-center justify-center", children: selected ? indicator : null }) : null,
4373
+ slots?.option ? slots.option({ option, selected, highlighted: index === activeIndex }) : /* @__PURE__ */ jsxs(Fragment, { children: [
4374
+ option.icon ? /* @__PURE__ */ jsx("span", { className: "shrink-0", children: option.icon }) : null,
4375
+ /* @__PURE__ */ jsx("span", { className: cn("min-w-0 flex-1 truncate", classNames?.itemLabel), children: option.label }),
4376
+ option.description ? /* @__PURE__ */ jsx("span", { className: cn("max-w-[45%] truncate text-xs text-muted-foreground", classNames?.itemDescription), children: option.description }) : null
4377
+ ] })
4378
+ ]
4379
+ }
4380
+ )
4381
+ ] }, option.value);
4382
+ }) }),
4383
+ error && visibleOptions.length > 0 ? /* @__PURE__ */ jsx("div", { role: "status", className: "px-2 py-1 text-xs text-destructive-text", children: error }) : null,
4384
+ loading && visibleOptions.length > 0 ? /* @__PURE__ */ jsx("div", { role: "status", className: "px-2 py-1 text-xs text-muted-foreground", children: loadingLabel }) : null,
4385
+ slots?.footer ? slots.footer() : null
4386
+ ]
4387
+ }
4388
+ );
4389
+ return portal ? /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: content }) : content;
4390
+ })()
4391
+ ]
4392
+ }
4393
+ ) });
4394
+ }
4395
+ );
4050
4396
 
4051
4397
  // src/components/base/theme.ts
4052
4398
  var emptyStyles = {};
@@ -10337,7 +10683,7 @@ function validateMultiSelectProps({
10337
10683
  });
10338
10684
  }
10339
10685
  }
10340
- function normalizeValues(values) {
10686
+ function normalizeValues2(values) {
10341
10687
  const nextValues = [];
10342
10688
  const seen = /* @__PURE__ */ new Set();
10343
10689
  values?.forEach((value) => {
@@ -10369,7 +10715,7 @@ function getSafeTagCount(maxTagCount, total) {
10369
10715
  if (maxTagCount === void 0 || !Number.isFinite(maxTagCount)) return total;
10370
10716
  return Math.max(0, Math.min(total, Math.floor(maxTagCount)));
10371
10717
  }
10372
- function getOptionText(option) {
10718
+ function getOptionText2(option) {
10373
10719
  if (option.textValue !== void 0) return option.textValue;
10374
10720
  if (typeof option.label === "string") return option.label;
10375
10721
  return option.value;
@@ -10435,7 +10781,7 @@ var BaseMultiSelect = forwardRef(
10435
10781
  const forceOpen = openForPreview;
10436
10782
  const [uncontrolledOpen, setUncontrolledOpen] = useState(false);
10437
10783
  const open = forceOpen || uncontrolledOpen;
10438
- const initialDefaultValueRef = useRef(normalizeValues(defaultValue));
10784
+ const initialDefaultValueRef = useRef(normalizeValues2(defaultValue));
10439
10785
  const [uncontrolledValue, setUncontrolledValue] = useState(() => [
10440
10786
  ...initialDefaultValueRef.current
10441
10787
  ]);
@@ -10444,7 +10790,7 @@ var BaseMultiSelect = forwardRef(
10444
10790
  );
10445
10791
  const isControlled = value !== void 0;
10446
10792
  const selectedValues = useMemo(
10447
- () => normalizeValues(isControlled ? value : uncontrolledValue),
10793
+ () => normalizeValues2(isControlled ? value : uncontrolledValue),
10448
10794
  [isControlled, uncontrolledValue, value]
10449
10795
  );
10450
10796
  const selectedValueSet = useMemo(
@@ -10488,7 +10834,7 @@ var BaseMultiSelect = forwardRef(
10488
10834
  }
10489
10835
  };
10490
10836
  const commitValues = (nextValues) => {
10491
- const normalizedValues = normalizeValues(nextValues);
10837
+ const normalizedValues = normalizeValues2(nextValues);
10492
10838
  if (!isControlled) setUncontrolledValue(normalizedValues);
10493
10839
  onValueChange?.(normalizedValues);
10494
10840
  };
@@ -10532,7 +10878,7 @@ var BaseMultiSelect = forwardRef(
10532
10878
  for (let offset = 1; offset <= optionList.length; offset += 1) {
10533
10879
  const index = (resolvedActiveIndex + offset + optionList.length) % optionList.length;
10534
10880
  const option = optionList[index];
10535
- if (!option?.disabled && getOptionText(option).trim().toLocaleLowerCase().startsWith(query)) {
10881
+ if (!option?.disabled && getOptionText2(option).trim().toLocaleLowerCase().startsWith(query)) {
10536
10882
  event.preventDefault();
10537
10883
  moveActive(index);
10538
10884
  return;
@@ -12352,7 +12698,7 @@ function getBoundaryEnabledIndex2(options, boundary) {
12352
12698
  }
12353
12699
  return -1;
12354
12700
  }
12355
- function getOptionText2(option) {
12701
+ function getOptionText3(option) {
12356
12702
  if (option.textValue !== void 0) return option.textValue;
12357
12703
  if (typeof option.label === "string") return option.label;
12358
12704
  return option.value;
@@ -12531,7 +12877,7 @@ var BaseSelect = forwardRef(
12531
12877
  for (let offset = 1; offset <= optionList.length; offset += 1) {
12532
12878
  const index = (startIndex + offset + optionList.length) % optionList.length;
12533
12879
  const option = optionList[index];
12534
- if (!option?.disabled && getOptionText2(option).trim().toLocaleLowerCase().startsWith(query)) {
12880
+ if (!option?.disabled && getOptionText3(option).trim().toLocaleLowerCase().startsWith(query)) {
12535
12881
  event.preventDefault();
12536
12882
  moveActive(index);
12537
12883
  return;
@@ -12837,7 +13183,7 @@ var BaseSelect = forwardRef(
12837
13183
  {
12838
13184
  value: option.value,
12839
13185
  disabled: option.disabled,
12840
- children: getOptionText2(option)
13186
+ children: getOptionText3(option)
12841
13187
  },
12842
13188
  option.value
12843
13189
  ))
@@ -25361,6 +25707,22 @@ function WorkbenchAssetGallery({
25361
25707
  }
25362
25708
  ) });
25363
25709
  }
25710
+
25711
+ // src/components/workbench/workbenchVisualizationTone.ts
25712
+ var toneVariable = {
25713
+ primary: "--radar-series-one",
25714
+ secondary: "--radar-series-two",
25715
+ accent: "--radar-series-three",
25716
+ muted: "--radar-series-four"
25717
+ };
25718
+ var toneFallback = {
25719
+ primary: "var(--primary)",
25720
+ secondary: "var(--secondary-foreground)",
25721
+ accent: "var(--accent-foreground)",
25722
+ muted: "var(--muted-foreground)"
25723
+ };
25724
+ var workbenchVisualizationToneColor = (tone) => `hsl(var(${toneVariable[tone]}, ${toneFallback[tone]}))`;
25725
+ var workbenchVisualizationToneColorWithAlpha = (tone, alpha) => `hsl(var(${toneVariable[tone]}, ${toneFallback[tone]}) / ${alpha})`;
25364
25726
  var radarWorkspaceStyle = {
25365
25727
  backgroundColor: "hsl(var(--radar-canvas, var(--background)))",
25366
25728
  color: "hsl(var(--foreground))"
@@ -25525,24 +25887,166 @@ function WorkbenchRadarInspectorSection({
25525
25887
  }
25526
25888
  );
25527
25889
  }
25890
+ function assertValidRadarFilterRowProps(props) {
25891
+ const { disclosure, onSelect } = props;
25892
+ const invalid = !disclosure && !onSelect || disclosure?.mode === "integrated" && (Boolean(onSelect) || props.selected !== void 0) || disclosure?.mode === "separate" && !onSelect;
25893
+ if (invalid) {
25894
+ throw new Error("Invalid WorkbenchRadarFilterRow props.");
25895
+ }
25896
+ }
25897
+ function WorkbenchRadarFilterRow(props) {
25898
+ assertValidRadarFilterRowProps(props);
25899
+ const {
25900
+ label,
25901
+ value,
25902
+ icon,
25903
+ selected,
25904
+ disabled = false,
25905
+ tone,
25906
+ onSelect,
25907
+ disclosure,
25908
+ className
25909
+ } = props;
25910
+ const isSelected = selected ?? false;
25911
+ const selectedClasses = isSelected ? void 0 : "monkeys-workbench-radar-filter-row--idle";
25912
+ const disabledClasses = disabled ? "monkeys-workbench-radar-filter-disabled" : void 0;
25913
+ const resolvedTone = tone ?? "primary";
25914
+ const toneColor = workbenchVisualizationToneColor(resolvedTone);
25915
+ const style = {
25916
+ "--workbench-radar-filter-tone": toneColor,
25917
+ "--tw-ring-color": tone ? toneColor : "hsl(var(--ring))",
25918
+ ...isSelected || tone ? {
25919
+ backgroundColor: workbenchVisualizationToneColorWithAlpha(
25920
+ resolvedTone,
25921
+ isSelected ? 0.14 : 0.08
25922
+ ),
25923
+ borderColor: toneColor
25924
+ } : {}
25925
+ };
25926
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
25927
+ hasRenderableNode(icon) ? /* @__PURE__ */ jsx(
25928
+ "span",
25929
+ {
25930
+ className: cn(
25931
+ "flex size-4 shrink-0 items-center justify-center",
25932
+ tone ? "text-[var(--workbench-radar-filter-tone)]" : "text-muted-foreground"
25933
+ ),
25934
+ "aria-hidden": "true",
25935
+ children: icon
25936
+ }
25937
+ ) : null,
25938
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: label }),
25939
+ hasRenderableNode(value) ? /* @__PURE__ */ jsx("span", { className: "ml-auto shrink-0 tabular-nums text-muted-foreground", children: value }) : null
25940
+ ] });
25941
+ const disclosureIcon = disclosure ? /* @__PURE__ */ jsx(
25942
+ "span",
25943
+ {
25944
+ "aria-hidden": "true",
25945
+ className: cn(
25946
+ "text-lg leading-none transition-transform motion-reduce:transition-none",
25947
+ disclosure.expanded && "rotate-90"
25948
+ ),
25949
+ children: "\u203A"
25950
+ }
25951
+ ) : null;
25952
+ if (disclosure?.mode === "separate") {
25953
+ const disclosureLabel2 = disclosure.expanded ? disclosure.collapseLabel : disclosure.expandLabel;
25954
+ return /* @__PURE__ */ jsxs(
25955
+ "div",
25956
+ {
25957
+ "data-monkeys-component": "workbench-radar-filter-row",
25958
+ className: cn(
25959
+ "monkeys-workbench-radar-filter-row monkeys-workbench-radar-filter-row--separate",
25960
+ selectedClasses,
25961
+ disabledClasses,
25962
+ className
25963
+ ),
25964
+ style,
25965
+ children: [
25966
+ /* @__PURE__ */ jsx(
25967
+ "button",
25968
+ {
25969
+ type: "button",
25970
+ "aria-pressed": selected,
25971
+ disabled,
25972
+ onClick: onSelect,
25973
+ className: cn(
25974
+ "monkeys-workbench-radar-filter-control monkeys-workbench-radar-filter-row__action",
25975
+ disabledClasses
25976
+ ),
25977
+ children: content
25978
+ }
25979
+ ),
25980
+ /* @__PURE__ */ jsx(
25981
+ "button",
25982
+ {
25983
+ type: "button",
25984
+ "aria-expanded": disclosure.expanded,
25985
+ "aria-controls": disclosure.controls,
25986
+ "aria-label": disclosureLabel2,
25987
+ disabled,
25988
+ onClick: disclosure.onToggle,
25989
+ className: cn(
25990
+ "monkeys-workbench-radar-filter-row__disclosure",
25991
+ disabledClasses
25992
+ ),
25993
+ children: disclosureIcon
25994
+ }
25995
+ )
25996
+ ]
25997
+ }
25998
+ );
25999
+ }
26000
+ const integratedDisclosure = disclosure?.mode === "integrated" ? disclosure : void 0;
26001
+ const disclosureLabel = integratedDisclosure ? integratedDisclosure.expanded ? integratedDisclosure.collapseLabel : integratedDisclosure.expandLabel : void 0;
26002
+ return /* @__PURE__ */ jsxs(
26003
+ "button",
26004
+ {
26005
+ type: "button",
26006
+ "data-monkeys-component": "workbench-radar-filter-row",
26007
+ "aria-label": disclosureLabel,
26008
+ "aria-pressed": integratedDisclosure ? void 0 : selected,
26009
+ "aria-expanded": integratedDisclosure?.expanded,
26010
+ "aria-controls": integratedDisclosure?.controls,
26011
+ disabled,
26012
+ onClick: integratedDisclosure?.onToggle ?? onSelect,
26013
+ className: cn(
26014
+ "monkeys-workbench-radar-filter-control monkeys-workbench-radar-filter-row",
26015
+ selectedClasses,
26016
+ disabledClasses,
26017
+ className
26018
+ ),
26019
+ style,
26020
+ children: [
26021
+ content,
26022
+ integratedDisclosure ? /* @__PURE__ */ jsx("span", { className: "ml-auto shrink-0 text-muted-foreground", children: disclosureIcon }) : null
26023
+ ]
26024
+ }
26025
+ );
26026
+ }
25528
26027
  function WorkbenchRadarFilterChip({
25529
26028
  label,
25530
26029
  value,
25531
26030
  icon,
25532
26031
  selected = false,
26032
+ disabled = false,
25533
26033
  onSelect,
25534
26034
  className
25535
26035
  }) {
25536
- const Comp = onSelect ? "button" : "div";
26036
+ const interactive = Boolean(onSelect) || disabled;
26037
+ const Comp = interactive ? "button" : "div";
25537
26038
  return /* @__PURE__ */ jsxs(
25538
26039
  Comp,
25539
26040
  {
25540
- type: onSelect ? "button" : void 0,
25541
- "aria-pressed": onSelect ? selected : void 0,
26041
+ type: interactive ? "button" : void 0,
26042
+ "aria-pressed": onSelect && !disabled ? selected : void 0,
26043
+ disabled: interactive ? disabled : void 0,
25542
26044
  onClick: onSelect,
25543
26045
  className: cn(
25544
- "flex min-h-9 min-w-0 items-center gap-2 rounded-full border px-3 text-xs font-semibold outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none",
26046
+ "flex min-w-0 items-center border text-xs font-semibold outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none",
26047
+ "monkeys-workbench-radar-filter-control rounded-full",
25545
26048
  selected ? "border-primary bg-primary/20 text-primary" : "border-border bg-background/40 text-foreground hover:border-primary/60 hover:bg-primary/10",
26049
+ disabled && "cursor-not-allowed opacity-50",
25546
26050
  className
25547
26051
  ),
25548
26052
  children: [
@@ -25563,20 +26067,6 @@ var getDomain2 = (values, min5, max5) => {
25563
26067
  };
25564
26068
  var scale2 = (value, domain, start, end) => start + (value - domain[0]) / (domain[1] - domain[0]) * (end - start);
25565
26069
  var clamp7 = (value, min5, max5) => Math.min(max5, Math.max(min5, value));
25566
- var toneVariable = {
25567
- primary: "--radar-series-one",
25568
- secondary: "--radar-series-two",
25569
- accent: "--radar-series-three",
25570
- muted: "--radar-series-four"
25571
- };
25572
- var toneFallback = {
25573
- primary: "var(--primary)",
25574
- secondary: "var(--secondary-foreground)",
25575
- accent: "var(--accent-foreground)",
25576
- muted: "var(--muted-foreground)"
25577
- };
25578
- var toneColor = (tone) => `hsl(var(${toneVariable[tone]}, ${toneFallback[tone]}))`;
25579
- var toneColorWithAlpha = (tone, alpha) => `hsl(var(${toneVariable[tone]}, ${toneFallback[tone]}) / ${alpha})`;
25580
26070
  var activatePoint2 = (event, point, onPointSelect) => {
25581
26071
  if (!onPointSelect || event.key !== "Enter" && event.key !== " ") return;
25582
26072
  event.preventDefault();
@@ -25751,12 +26241,12 @@ function WorkbenchRadarMatrix({
25751
26241
  const radius = labelled ? clamp7(scale2(point.size ?? 1, sizeDomain, 5, 9), 5, 9) : 3.5;
25752
26242
  const fontSize = labelled ? clamp7(scale2(point.size ?? 1, sizeDomain, 14, 31), 14, 31) : 0;
25753
26243
  const pointStyle = {
25754
- fill: toneColor(tone),
26244
+ fill: workbenchVisualizationToneColor(tone),
25755
26245
  stroke: "hsl(var(--foreground) / 0.74)"
25756
26246
  };
25757
26247
  const labelStyle = {
25758
- fill: toneColor(tone),
25759
- filter: `drop-shadow(0 0 0.65rem ${toneColorWithAlpha(tone, 0.72)})`
26248
+ fill: workbenchVisualizationToneColor(tone),
26249
+ filter: `drop-shadow(0 0 0.65rem ${workbenchVisualizationToneColorWithAlpha(tone, 0.72)})`
25760
26250
  };
25761
26251
  return /* @__PURE__ */ jsxs(
25762
26252
  "g",
@@ -25776,7 +26266,7 @@ function WorkbenchRadarMatrix({
25776
26266
  r: radius + 10,
25777
26267
  fill: "none",
25778
26268
  strokeWidth: "2",
25779
- style: { stroke: toneColorWithAlpha(tone, 0.48) }
26269
+ style: { stroke: workbenchVisualizationToneColorWithAlpha(tone, 0.48) }
25780
26270
  }
25781
26271
  ) : null,
25782
26272
  /* @__PURE__ */ jsx("circle", { r: radius, strokeWidth: "1.25", style: pointStyle }),
@@ -25854,7 +26344,7 @@ function WorkbenchRadarMatrix({
25854
26344
  cx: clamp7(scale2(point.x, xDomain, 40, width - 40), 40, width - 40),
25855
26345
  cy: clamp7(scale2(point.y, yDomain, height - 48, 54), 54, height - 48),
25856
26346
  r: "8",
25857
- style: { fill: toneColor(point.tone || (index % 2 === 0 ? "primary" : "accent")) }
26347
+ style: { fill: workbenchVisualizationToneColor(point.tone || (index % 2 === 0 ? "primary" : "accent")) }
25858
26348
  },
25859
26349
  point.id
25860
26350
  )),
@@ -25877,7 +26367,7 @@ function WorkbenchRadarMatrix({
25877
26367
  legend.length ? /* @__PURE__ */ jsx("div", { className: "absolute bottom-4 left-1/2 hidden -translate-x-1/2 items-center gap-4 rounded-full border border-border bg-card/95 px-4 py-2 text-xs font-semibold shadow-xl md:flex", children: legend.map((item) => {
25878
26368
  const tone = item.tone || "muted";
25879
26369
  return /* @__PURE__ */ jsxs("span", { className: "flex items-center gap-2 text-muted-foreground", children: [
25880
- /* @__PURE__ */ jsx("span", { className: "size-2 rounded-full", style: { backgroundColor: toneColor(tone) } }),
26370
+ /* @__PURE__ */ jsx("span", { className: "size-2 rounded-full", style: { backgroundColor: workbenchVisualizationToneColor(tone) } }),
25881
26371
  item.label
25882
26372
  ] }, item.id);
25883
26373
  }) }) : null
@@ -31226,6 +31716,6 @@ function useDarkMode() {
31226
31716
  return { mode, setMode, resolvedMode };
31227
31717
  }
31228
31718
 
31229
- export { AgentWorkbenchActivity, AgentWorkbenchExploreSidebar, AgentWorkbenchSidebar, AgentWorkbenchTaskDetails, AgentWorkbenchTool, AppHeader, AppLayout, AppShellSidebar, AppSidebar, ApplicationHandoffLink, BaseAccordion, BaseAspectRatio, BaseAvatar, BaseBadge, BaseBreadcrumb, BaseButton, BaseCheckbox, BaseCode, BaseContainer, BaseContextMenu, BaseContextMenuCheckboxItem, BaseContextMenuContent, BaseContextMenuItem, BaseContextMenuLabel, BaseContextMenuRadioGroup, BaseContextMenuRadioItem, BaseContextMenuSeparator, BaseContextMenuSub, BaseContextMenuSubContent, BaseContextMenuSubTrigger, BaseContextMenuTrigger, BaseDescriptionList, BaseDialog, BaseDivider, BaseDropdownMenu, BaseEmptyState, BaseField, BaseFieldset, BaseGrid, BaseHeading, BaseInline, BaseInput, BaseInputGroup, BaseKbd, BaseLayout, BaseLayoutPane, BaseLayoutResizeHandle, BaseLayoutSplit, BaseLink, BaseList, BaseListFooter, BaseListItem, BaseLoadingState, BaseMultiSelect, BaseNotice, BaseNumberInput, BasePagination, BasePanel, BasePasswordInput, BasePortal, BaseProgress, BaseRadioGroup, BaseScrollArea, BaseSectionHeader, BaseSegmentedControl, BaseSelect, BaseSkeleton, BaseSpinner, BaseStack, BaseSteps, BaseSwitch, BaseSystemState, BaseTable, BaseTableBody, BaseTableCaption, BaseTableCell, BaseTableContainer, BaseTableEmpty, BaseTableFooter, BaseTableFooterBar, BaseTableHead, BaseTableHeader, BaseTableLoading, BaseTableRow, BaseTabs, BaseText, BaseTextarea, BaseToolbar, BaseTooltip, BaseVisuallyHidden, DarkModeSelector, DarkModeSubMenu, DataExplorerActionBar, DataExplorerButton, DataExplorerCheckbox, DataExplorerCollectionFooter, DataExplorerDetailField, DataExplorerDetailSection, DataExplorerDetailShell, DataExplorerDisplayActionMenu, DataExplorerDisplayCard, DataExplorerDisplayCollectionView, DataExplorerDisplayListItem, DataExplorerDisplayMedia, DataExplorerImagePreview, DataExplorerPage, DataExplorerRecordCard, DataExplorerSelect, DataExplorerToolbarActions, DataExplorerToolbarShell, DataExplorerTree, DataExplorerTreeShell, DataExplorerView, DataExplorerViewCollection, DataExplorerViewItem, DataExplorerViewItemShell, DataExplorerViewShell, DataExplorerViewTree, I18nSelector, InteractiveTable, InteractiveTableEditableTextCell, InteractiveTableReadonlyCell, InteractiveTableSelectCell, LoginPage, MonkeysProvider, MonkeysToastProvider, MonkeysToaster, NavButton, NavigationLayout, OverlayNodeHost, RenderNodeHost, MonkeysToastProvider as ToastProvider, MonkeysToaster as Toaster, UserAccountMenu, WorkbenchAssetGallery, WorkbenchCollection, WorkbenchContentPane, WorkbenchContentToolbar, WorkbenchDetailSidebar, WorkbenchEvidenceList, WorkbenchGalleryCard, WorkbenchGallerySettingsButton, WorkbenchGallerySettingsPanel, WorkbenchGalleryView, WorkbenchJourneyNavigation, WorkbenchLaneView, WorkbenchMasonryLayout, WorkbenchMetricGrid, WorkbenchRadarFilterChip, WorkbenchRadarInspectorSection, WorkbenchRadarMatrix, WorkbenchRadarNavigation, WorkbenchRadarWorkspace, WorkbenchRankedList, WorkbenchRelationshipGraph, WorkbenchResizableSidebar, WorkbenchScatterPlot, WorkbenchSelectionTray, WorkbenchTableView, applyThemeTokens, browserOverlayHistoryAdapter, buildOverlayUrl, calculateHue, calculateLightness, calculateSaturation, cn2 as cn, compileThemeTokens, createAgentWorkbenchActivityModel, createAgentWorkbenchDetailsModel, createSolidColorScale, defaultMonkeysLocale, enUS, extractToastMessage, genTailwindTheme, getBaseBadgeToneClassName, getBaseButtonToneClassName, getBaseMenuItemToneClassName, getBaseNoticeToneClassName, getDataExplorerActionToneClassName, getDataExplorerMenuItemToneClassName, getOverlayPresentationClassNames, getOverlayZIndex, getRenderNodeDataAttributes, getThemeTokenCssValue, isOverlayUrlActive, markDarkColor, mergeMonkeysLocaleMessages, resolveBaseAppearance, resolveDataExplorerAppearance, resolveMonkeysLocale, resolveRenderNodePolicyState, resolveToastVariantForMessage, sessionRenderNodeScrollRestoration, setTailwindTheme, toast, useDarkMode, useMonkeysBaseAppearance, useMonkeysComponentAttributes, useMonkeysDataExplorerAppearance, useMonkeysDirection, useMonkeysEnvironment, useMonkeysListFooter, useMonkeysLocale, useMonkeysLocaleMessages, useMonkeysPortalOptions, useMonkeysResolvedTheme, useMonkeysStatusStates, useToastFeed, useToastOnValue, zhCN };
31719
+ export { AgentWorkbenchActivity, AgentWorkbenchExploreSidebar, AgentWorkbenchSidebar, AgentWorkbenchTaskDetails, AgentWorkbenchTool, AppHeader, AppLayout, AppShellSidebar, AppSidebar, ApplicationHandoffLink, BaseAccordion, BaseAspectRatio, BaseAvatar, BaseBadge, BaseBreadcrumb, BaseButton, BaseCheckbox, BaseCode, BaseContainer, BaseContextMenu, BaseContextMenuCheckboxItem, BaseContextMenuContent, BaseContextMenuItem, BaseContextMenuLabel, BaseContextMenuRadioGroup, BaseContextMenuRadioItem, BaseContextMenuSeparator, BaseContextMenuSub, BaseContextMenuSubContent, BaseContextMenuSubTrigger, BaseContextMenuTrigger, BaseDescriptionList, BaseDialog, BaseDivider, BaseDropdownMenu, BaseEmptyState, BaseField, BaseFieldset, BaseGrid, BaseHeading, BaseInline, BaseInput, BaseInputGroup, BaseKbd, BaseLayout, BaseLayoutPane, BaseLayoutResizeHandle, BaseLayoutSplit, BaseLink, BaseList, BaseListFooter, BaseListItem, BaseLoadingState, BaseMultiSelect, BaseNotice, BaseNumberInput, BasePagination, BasePanel, BasePasswordInput, BasePortal, BaseProgress, BaseRadioGroup, BaseScrollArea, BaseSectionHeader, BaseSegmentedControl, BaseSelect, BaseSkeleton, BaseSpinner, BaseStack, BaseSteps, BaseSwitch, BaseSystemState, BaseTable, BaseTableBody, BaseTableCaption, BaseTableCell, BaseTableContainer, BaseTableEmpty, BaseTableFooter, BaseTableFooterBar, BaseTableHead, BaseTableHeader, BaseTableLoading, BaseTableRow, BaseTabs, BaseText, BaseTextarea, BaseToolbar, BaseTooltip, BaseVisuallyHidden, DarkModeSelector, DarkModeSubMenu, DataExplorerActionBar, DataExplorerButton, DataExplorerCheckbox, DataExplorerCollectionFooter, DataExplorerDetailField, DataExplorerDetailSection, DataExplorerDetailShell, DataExplorerDisplayActionMenu, DataExplorerDisplayCard, DataExplorerDisplayCollectionView, DataExplorerDisplayListItem, DataExplorerDisplayMedia, DataExplorerImagePreview, DataExplorerPage, DataExplorerRecordCard, DataExplorerSelect, DataExplorerToolbarActions, DataExplorerToolbarShell, DataExplorerTree, DataExplorerTreeShell, DataExplorerView, DataExplorerViewCollection, DataExplorerViewItem, DataExplorerViewItemShell, DataExplorerViewShell, DataExplorerViewTree, I18nSelector, InteractiveTable, InteractiveTableEditableTextCell, InteractiveTableReadonlyCell, InteractiveTableSelectCell, LoginPage, MonkeysProvider, MonkeysToastProvider, MonkeysToaster, NavButton, NavigationLayout, OverlayNodeHost, RenderNodeHost, MonkeysToastProvider as ToastProvider, MonkeysToaster as Toaster, UnifiedDropdown, UserAccountMenu, WorkbenchAssetGallery, WorkbenchCollection, WorkbenchContentPane, WorkbenchContentToolbar, WorkbenchDetailSidebar, WorkbenchEvidenceList, WorkbenchGalleryCard, WorkbenchGallerySettingsButton, WorkbenchGallerySettingsPanel, WorkbenchGalleryView, WorkbenchJourneyNavigation, WorkbenchLaneView, WorkbenchMasonryLayout, WorkbenchMetricGrid, WorkbenchRadarFilterChip, WorkbenchRadarFilterRow, WorkbenchRadarInspectorSection, WorkbenchRadarMatrix, WorkbenchRadarNavigation, WorkbenchRadarWorkspace, WorkbenchRankedList, WorkbenchRelationshipGraph, WorkbenchResizableSidebar, WorkbenchScatterPlot, WorkbenchSelectionTray, WorkbenchTableView, applyThemeTokens, browserOverlayHistoryAdapter, buildOverlayUrl, calculateHue, calculateLightness, calculateSaturation, cn2 as cn, compileThemeTokens, createAgentWorkbenchActivityModel, createAgentWorkbenchDetailsModel, createSolidColorScale, defaultMonkeysLocale, enUS, extractToastMessage, genTailwindTheme, getBaseBadgeToneClassName, getBaseButtonToneClassName, getBaseMenuItemToneClassName, getBaseNoticeToneClassName, getDataExplorerActionToneClassName, getDataExplorerMenuItemToneClassName, getOverlayPresentationClassNames, getOverlayZIndex, getRenderNodeDataAttributes, getThemeTokenCssValue, isOverlayUrlActive, markDarkColor, mergeMonkeysLocaleMessages, resolveBaseAppearance, resolveDataExplorerAppearance, resolveMonkeysLocale, resolveRenderNodePolicyState, resolveToastVariantForMessage, sessionRenderNodeScrollRestoration, setTailwindTheme, toast, useDarkMode, useMonkeysBaseAppearance, useMonkeysComponentAttributes, useMonkeysDataExplorerAppearance, useMonkeysDirection, useMonkeysEnvironment, useMonkeysListFooter, useMonkeysLocale, useMonkeysLocaleMessages, useMonkeysPortalOptions, useMonkeysResolvedTheme, useMonkeysStatusStates, useToastFeed, useToastOnValue, zhCN };
31230
31720
  //# sourceMappingURL=index.mjs.map
31231
31721
  //# sourceMappingURL=index.mjs.map