@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/{WorkbenchRadarMatrix-3f0daea32926.d.ts → WorkbenchRadarMatrix-2ec5e4970f24.d.ts} +40 -3
- package/dist/{WorkbenchRadarMatrix-3b2384181e2d.d.mts → WorkbenchRadarMatrix-b50483af5a5d.d.mts} +40 -3
- package/dist/components/dropdown/index.d.mts +89 -0
- package/dist/components/dropdown/index.d.ts +89 -0
- package/dist/components/dropdown/index.js +382 -0
- package/dist/components/dropdown/index.js.map +1 -0
- package/dist/components/dropdown/index.mjs +360 -0
- package/dist/components/dropdown/index.mjs.map +1 -0
- package/dist/components/workbench/index.d.mts +1 -1
- package/dist/components/workbench/index.d.ts +1 -1
- package/dist/components/workbench/index.js +169 -24
- package/dist/components/workbench/index.js.map +1 -1
- package/dist/components/workbench/index.mjs +169 -25
- package/dist/components/workbench/index.mjs.map +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +529 -37
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +528 -38
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +6 -1
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,
|
|
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
|
|
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
|
|
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
|
|
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(
|
|
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
|
-
() =>
|
|
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 =
|
|
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 &&
|
|
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
|
|
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 &&
|
|
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:
|
|
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
|
|
26036
|
+
const interactive = Boolean(onSelect) || disabled;
|
|
26037
|
+
const Comp = interactive ? "button" : "div";
|
|
25537
26038
|
return /* @__PURE__ */ jsxs(
|
|
25538
26039
|
Comp,
|
|
25539
26040
|
{
|
|
25540
|
-
type:
|
|
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-
|
|
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:
|
|
26244
|
+
fill: workbenchVisualizationToneColor(tone),
|
|
25755
26245
|
stroke: "hsl(var(--foreground) / 0.74)"
|
|
25756
26246
|
};
|
|
25757
26247
|
const labelStyle = {
|
|
25758
|
-
fill:
|
|
25759
|
-
filter: `drop-shadow(0 0 0.65rem ${
|
|
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:
|
|
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:
|
|
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:
|
|
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
|