@arbidocs/blocks 0.4.87 → 0.4.89

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/agents/index.cjs +284 -284
  2. package/dist/agents/index.js +8 -8
  3. package/dist/chat/index.cjs +125 -125
  4. package/dist/chat/index.js +3 -3
  5. package/dist/{chunk-2EI7NCUA.cjs → chunk-2CFW2ELM.cjs} +8 -2
  6. package/dist/chunk-2CFW2ELM.cjs.map +1 -0
  7. package/dist/{chunk-2FBQSQDW.js → chunk-3D5MDCQ7.js} +299 -215
  8. package/dist/chunk-3D5MDCQ7.js.map +1 -0
  9. package/dist/{chunk-OR4CO743.cjs → chunk-5YXG342J.cjs} +3 -3
  10. package/dist/{chunk-OR4CO743.cjs.map → chunk-5YXG342J.cjs.map} +1 -1
  11. package/dist/{chunk-R26OHONI.js → chunk-6S5FLMWG.js} +83 -72
  12. package/dist/chunk-6S5FLMWG.js.map +1 -0
  13. package/dist/{chunk-X5K5PCRJ.cjs → chunk-CNI5QJ5B.cjs} +58 -58
  14. package/dist/{chunk-X5K5PCRJ.cjs.map → chunk-CNI5QJ5B.cjs.map} +1 -1
  15. package/dist/{chunk-P5ST47VY.js → chunk-DDF5GPIJ.js} +3 -3
  16. package/dist/{chunk-P5ST47VY.js.map → chunk-DDF5GPIJ.js.map} +1 -1
  17. package/dist/{chunk-PFA43QNX.js → chunk-EWSEQEPL.js} +3 -3
  18. package/dist/{chunk-PFA43QNX.js.map → chunk-EWSEQEPL.js.map} +1 -1
  19. package/dist/{chunk-YX466FWL.js → chunk-I44NX2ZB.js} +3 -3
  20. package/dist/{chunk-YX466FWL.js.map → chunk-I44NX2ZB.js.map} +1 -1
  21. package/dist/{chunk-LBE36YNZ.js → chunk-ICBAFX5B.js} +3 -3
  22. package/dist/{chunk-LBE36YNZ.js.map → chunk-ICBAFX5B.js.map} +1 -1
  23. package/dist/{chunk-C3DRLFU7.cjs → chunk-IF6VAYIA.cjs} +5 -5
  24. package/dist/{chunk-C3DRLFU7.cjs.map → chunk-IF6VAYIA.cjs.map} +1 -1
  25. package/dist/{chunk-5XZU64E2.cjs → chunk-MOJ5JQDN.cjs} +3 -3
  26. package/dist/{chunk-5XZU64E2.cjs.map → chunk-MOJ5JQDN.cjs.map} +1 -1
  27. package/dist/{chunk-O5NDG4EA.cjs → chunk-MP6FK43E.cjs} +3 -3
  28. package/dist/{chunk-O5NDG4EA.cjs.map → chunk-MP6FK43E.cjs.map} +1 -1
  29. package/dist/{chunk-AFSOUS5X.cjs → chunk-N26CXGXC.cjs} +83 -72
  30. package/dist/chunk-N26CXGXC.cjs.map +1 -0
  31. package/dist/{chunk-UJM7TG44.js → chunk-QLHW7JGN.js} +9 -9
  32. package/dist/{chunk-UJM7TG44.js.map → chunk-QLHW7JGN.js.map} +1 -1
  33. package/dist/{chunk-QOADH2YB.cjs → chunk-TF6YMDZL.cjs} +300 -216
  34. package/dist/chunk-TF6YMDZL.cjs.map +1 -0
  35. package/dist/{chunk-GFYGYME3.js → chunk-W7NZRZ54.js} +3 -3
  36. package/dist/{chunk-GFYGYME3.js.map → chunk-W7NZRZ54.js.map} +1 -1
  37. package/dist/{chunk-HUJLKDWX.cjs → chunk-XMBYDLZQ.cjs} +4 -4
  38. package/dist/{chunk-HUJLKDWX.cjs.map → chunk-XMBYDLZQ.cjs.map} +1 -1
  39. package/dist/{chunk-WDD255XQ.js → chunk-XQDM6T6C.js} +3 -3
  40. package/dist/{chunk-WDD255XQ.js.map → chunk-XQDM6T6C.js.map} +1 -1
  41. package/dist/{chunk-ZV3BKLFY.cjs → chunk-Z5VUZ6YD.cjs} +3 -3
  42. package/dist/{chunk-ZV3BKLFY.cjs.map → chunk-Z5VUZ6YD.cjs.map} +1 -1
  43. package/dist/{chunk-YU2KUMGE.js → chunk-ZX2VPMBJ.js} +8 -2
  44. package/dist/chunk-ZX2VPMBJ.js.map +1 -0
  45. package/dist/connect/index.cjs +116 -74
  46. package/dist/connect/index.cjs.map +1 -1
  47. package/dist/connect/index.js +61 -19
  48. package/dist/connect/index.js.map +1 -1
  49. package/dist/connection/WorkflowRunnerDialogs.d.ts +2 -0
  50. package/dist/facts/index.cjs +7 -7
  51. package/dist/facts/index.js +4 -4
  52. package/dist/files/index.cjs +4 -23
  53. package/dist/files/index.cjs.map +1 -1
  54. package/dist/files/index.js +4 -22
  55. package/dist/files/index.js.map +1 -1
  56. package/dist/files/views/TagFormParts.d.ts +0 -8
  57. package/dist/files/views/index.d.ts +1 -1
  58. package/dist/home/index.cjs +17 -17
  59. package/dist/home/index.js +3 -3
  60. package/dist/index.cjs +636 -544
  61. package/dist/index.cjs.map +1 -1
  62. package/dist/index.js +116 -25
  63. package/dist/index.js.map +1 -1
  64. package/dist/retrieval/index.cjs +1 -1
  65. package/dist/retrieval/index.js +1 -1
  66. package/dist/settings/index.cjs +38 -38
  67. package/dist/settings/index.js +3 -3
  68. package/dist/shell/FilterInput.d.ts +3 -1
  69. package/dist/shell/index.cjs +5 -5
  70. package/dist/shell/index.js +2 -2
  71. package/dist/studio/index.cjs +4 -4
  72. package/dist/studio/index.js +3 -3
  73. package/dist/tags/TagDetail.d.ts +14 -2
  74. package/dist/tags/TagTable.d.ts +20 -11
  75. package/dist/tags/TagsNav.d.ts +28 -4
  76. package/dist/tags/index.d.ts +1 -1
  77. package/dist/tags/tagTableModel.d.ts +10 -2
  78. package/dist/workflow-canvas/index.cjs +51 -51
  79. package/dist/workflow-canvas/index.js +8 -8
  80. package/dist/workspaces/index.cjs +2 -2
  81. package/dist/workspaces/index.js +2 -2
  82. package/package.json +4 -4
  83. package/dist/chunk-2EI7NCUA.cjs.map +0 -1
  84. package/dist/chunk-2FBQSQDW.js.map +0 -1
  85. package/dist/chunk-AFSOUS5X.cjs.map +0 -1
  86. package/dist/chunk-QOADH2YB.cjs.map +0 -1
  87. package/dist/chunk-R26OHONI.js.map +0 -1
  88. package/dist/chunk-YU2KUMGE.js.map +0 -1
@@ -174,80 +174,91 @@ function TriStateFilterMenu({
174
174
  });
175
175
  };
176
176
  const tone = isActive ? "text-primary" : "text-muted-foreground";
177
- return /* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu, { modal: false, open, onOpenChange, children: [
178
- /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
179
- "span",
180
- {
181
- role: "button",
182
- tabIndex: 0,
183
- "data-slot": "tri-state-filter-trigger",
184
- className: triggerClassName ?? "inline-flex cursor-pointer items-center gap-1 rounded-sm px-1.5 py-0.5 text-sm font-medium transition-colors hover:bg-foreground/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:h-11! pointer-coarse:min-w-11 pointer-coarse:justify-center",
185
- "data-testid": testId,
186
- onMouseEnter: handleMouseEnter,
187
- onMouseLeave: handleMouseLeave,
188
- onClick: handleTriggerClick,
189
- children: [
190
- /* @__PURE__ */ jsxRuntime.jsx(
191
- lucideReact.Filter,
192
- {
193
- className: ui.cn(
194
- "size-3 transition-colors",
195
- isActive ? "fill-primary text-primary" : tone
196
- )
197
- }
198
- ),
199
- triggerLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: tone, children: triggerLabel }),
200
- renderChevron ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: ui.cn("size-3 transition-colors", tone) }) : triggerLabel && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreVertical, { className: ui.cn("size-3 transition-colors", tone) })
201
- ]
202
- }
203
- ) }),
204
- /* @__PURE__ */ jsxRuntime.jsxs(
205
- ui.DropdownMenuContent,
206
- {
207
- align,
208
- className: "w-80 border-0 bg-muted",
209
- onCloseAutoFocus: (e) => e.preventDefault(),
210
- onMouseEnter: cancelPendingClose,
211
- onMouseLeave: () => {
212
- if (!isClickOpen) onOpenChange(false);
213
- },
214
- onPointerDownOutside: (e) => {
215
- if (!isClickOpen) return;
216
- if (!e.target.closest('[role="menu"]')) {
217
- setIsClickOpen(false);
218
- onOpenChange(false);
219
- } else {
220
- e.preventDefault();
177
+ return /* @__PURE__ */ jsxRuntime.jsxs(
178
+ ui.DropdownMenu,
179
+ {
180
+ modal: false,
181
+ open,
182
+ onOpenChange: (next) => {
183
+ if (!next) setIsClickOpen(false);
184
+ onOpenChange(next);
185
+ },
186
+ children: [
187
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
188
+ "span",
189
+ {
190
+ role: "button",
191
+ tabIndex: 0,
192
+ "data-slot": "tri-state-filter-trigger",
193
+ className: triggerClassName ?? "inline-flex cursor-pointer items-center gap-1 rounded-sm px-1.5 py-0.5 text-sm font-medium transition-colors hover:bg-foreground/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:h-11! pointer-coarse:min-w-11 pointer-coarse:justify-center",
194
+ "data-testid": testId,
195
+ onMouseEnter: handleMouseEnter,
196
+ onMouseLeave: handleMouseLeave,
197
+ onClick: handleTriggerClick,
198
+ children: [
199
+ /* @__PURE__ */ jsxRuntime.jsx(
200
+ lucideReact.Filter,
201
+ {
202
+ className: ui.cn(
203
+ "size-3 transition-colors",
204
+ isActive ? "fill-primary text-primary" : tone
205
+ )
206
+ }
207
+ ),
208
+ triggerLabel && /* @__PURE__ */ jsxRuntime.jsx("span", { className: tone, children: triggerLabel }),
209
+ renderChevron ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: ui.cn("size-3 transition-colors", tone) }) : triggerLabel && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreVertical, { className: ui.cn("size-3 transition-colors", tone) })
210
+ ]
211
+ }
212
+ ) }),
213
+ /* @__PURE__ */ jsxRuntime.jsxs(
214
+ ui.DropdownMenuContent,
215
+ {
216
+ align,
217
+ className: "w-80 border-0 bg-muted",
218
+ onCloseAutoFocus: (e) => e.preventDefault(),
219
+ onMouseEnter: cancelPendingClose,
220
+ onMouseLeave: () => {
221
+ if (!isClickOpen) onOpenChange(false);
222
+ },
223
+ onPointerDownOutside: (e) => {
224
+ if (!isClickOpen) return;
225
+ if (!e.target.closest('[role="menu"]')) {
226
+ setIsClickOpen(false);
227
+ onOpenChange(false);
228
+ } else {
229
+ e.preventDefault();
230
+ }
231
+ },
232
+ children: [
233
+ (title || hasActiveFilters && !suppressTriggerActiveStyle && !showInlineClear) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
234
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-2 py-1.5", children: [
235
+ title && /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuLabel, { className: "p-0 text-primary", children: title }),
236
+ hasActiveFilters && !showInlineClear && clearButton
237
+ ] }),
238
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuSeparator, {})
239
+ ] }),
240
+ topContent && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
241
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1.5", children: topContent }),
242
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuSeparator, {})
243
+ ] }),
244
+ folderContent && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
245
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-1 py-0.5", children: folderContent }),
246
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuSeparator, {})
247
+ ] }),
248
+ renderOptions(),
249
+ bottomContent && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
250
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuSeparator, {}),
251
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1.5", children: bottomContent })
252
+ ] })
253
+ ]
221
254
  }
222
- },
223
- children: [
224
- (title || hasActiveFilters && !suppressTriggerActiveStyle && !showInlineClear) && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
225
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between px-2 py-1.5", children: [
226
- title && /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuLabel, { className: "p-0 text-primary", children: title }),
227
- hasActiveFilters && !showInlineClear && clearButton
228
- ] }),
229
- /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuSeparator, {})
230
- ] }),
231
- topContent && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
232
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1.5", children: topContent }),
233
- /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuSeparator, {})
234
- ] }),
235
- folderContent && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
236
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-1 py-0.5", children: folderContent }),
237
- /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuSeparator, {})
238
- ] }),
239
- renderOptions(),
240
- bottomContent && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
241
- /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuSeparator, {}),
242
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-2 py-1.5", children: bottomContent })
243
- ] })
244
- ]
245
- }
246
- )
247
- ] });
255
+ )
256
+ ]
257
+ }
258
+ );
248
259
  }
249
260
 
250
261
  exports.DEFAULT_TRI_STATE_FILTER_MENU_LABELS = DEFAULT_TRI_STATE_FILTER_MENU_LABELS;
251
262
  exports.TriStateFilterMenu = TriStateFilterMenu;
252
- //# sourceMappingURL=chunk-AFSOUS5X.cjs.map
253
- //# sourceMappingURL=chunk-AFSOUS5X.cjs.map
263
+ //# sourceMappingURL=chunk-N26CXGXC.cjs.map
264
+ //# sourceMappingURL=chunk-N26CXGXC.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/settings/TriStateFilterMenu.tsx"],"names":["useState","useRef","useEffect","useMemo","jsxs","Button","jsx","FunnelX","Check","Ban","DropdownMenuItem","Badge","cn","Fragment","DropdownMenuSeparator","ChevronRight","ChevronDown","DropdownMenuLabel","DropdownMenu","DropdownMenuTrigger","Filter","MoreVertical","DropdownMenuContent"],"mappings":"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","file":"chunk-N26CXGXC.cjs","sourcesContent":["import {\n Fragment,\n useEffect,\n useMemo,\n useRef,\n useState,\n type MouseEvent,\n type ReactNode,\n} from 'react'\nimport { Ban, Check, ChevronDown, ChevronRight, Filter, FunnelX, MoreVertical } from 'lucide-react'\nimport {\n Badge,\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n cn,\n} from '@arbidocs/react/ui'\n\n/** include keeps matches, exclude drops them, null is indifferent. */\nexport type TriState = 'include' | 'exclude' | null\n\nexport interface TriStateOption<T extends string = string> {\n id: T\n label: string\n icon?: ReactNode\n count: number\n disabled?: boolean\n /** Indent level (nested options such as folders). */\n depth?: number\n}\n\nexport interface TriStateGroup<T extends string = string> {\n label: string\n options: T[]\n collapsible?: boolean\n}\n\n/** Every fixed string of the filter menu. */\nexport interface TriStateFilterMenuLabels {\n clear: string\n}\n\nexport const DEFAULT_TRI_STATE_FILTER_MENU_LABELS: TriStateFilterMenuLabels = { clear: 'Clear' }\n\nexport interface HoverHandlers {\n onMouseEnter: () => void\n onMouseLeave: () => void\n}\n\nexport interface TriStateFilterMenuProps<T extends string> {\n /** Test id of the trigger. */\n testId: string\n open: boolean\n onOpenChange: (open: boolean) => void\n title?: string\n filterStates: Map<T, TriState>\n onFiltersChange: (filters: Map<T, TriState>) => void\n options: TriStateOption<T>[]\n groups?: TriStateGroup<T>[]\n /** Between the header and the options (e.g. a toggle). */\n topContent?: ReactNode\n /** Before a group, keyed by the group's label. */\n groupTopContent?: Record<string, ReactNode>\n /** After `topContent` (e.g. a folder navigator). */\n folderContent?: ReactNode\n /** After every group (e.g. a source toggle). */\n bottomContent?: ReactNode\n /** Label next to the filter icon of the trigger. */\n triggerLabel?: string\n /** Shows the active styling even with no tri-state filter set. */\n hasExternalActiveState?: boolean\n /** Never show the active styling (chips carry the indication instead). */\n suppressTriggerActiveStyle?: boolean\n /** Replaces the default trigger styling (e.g. flush inside a unified widget). */\n triggerClassName?: string\n /** A chevron after the icon/label instead of the dots: the trigger reads as a dropdown segment. */\n renderChevron?: boolean\n /** Open only on an explicit click, never on hover (trigger embedded in another control). */\n disableHoverOpen?: boolean\n /** Which edge of the trigger the menu lines up with (default: centered on it). */\n align?: 'start' | 'center' | 'end'\n /** Exposes the hover handlers so a wider hover target (a tab header) can drive the menu. */\n onHoverHandlers?: (handlers: HoverHandlers) => void\n labels?: Partial<TriStateFilterMenuLabels>\n}\n\n/**\n * Tri-state filter dropdown. Opens on hover (pointer) or click (locks it open until clicked\n * away); the open state is controlled so a host can persist it. Options cycle\n * neutral, include, exclude.\n */\nexport function TriStateFilterMenu<T extends string>({\n testId,\n open,\n onOpenChange,\n title,\n filterStates,\n onFiltersChange,\n options,\n groups,\n topContent,\n groupTopContent,\n folderContent,\n bottomContent,\n triggerLabel,\n hasExternalActiveState = false,\n suppressTriggerActiveStyle = false,\n triggerClassName,\n renderChevron = false,\n disableHoverOpen = false,\n align = 'center',\n onHoverHandlers,\n labels,\n}: TriStateFilterMenuProps<T>) {\n const l = { ...DEFAULT_TRI_STATE_FILTER_MENU_LABELS, ...labels }\n const [collapsedGroups, setCollapsedGroups] = useState<Set<string>>(\n () => new Set((groups ?? []).filter((g) => g.collapsible).map((g) => g.label))\n )\n // Opened by click: stays open until clicked away.\n const [isClickOpen, setIsClickOpen] = useState(false)\n const hoverTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n const cancelPendingClose = () => {\n if (hoverTimeoutRef.current) {\n clearTimeout(hoverTimeoutRef.current)\n hoverTimeoutRef.current = null\n }\n }\n\n const handleMouseEnter = () => {\n if (disableHoverOpen) return\n cancelPendingClose()\n if (!isClickOpen) onOpenChange(true)\n }\n\n const handleMouseLeave = () => {\n if (disableHoverOpen || isClickOpen) return\n // Delay so the pointer can travel to the content.\n hoverTimeoutRef.current = setTimeout(() => {\n if (!isClickOpen) onOpenChange(false)\n }, 150)\n }\n\n const handleTriggerClick = () => {\n setIsClickOpen(!isClickOpen)\n onOpenChange(!isClickOpen)\n }\n\n useEffect(() => {\n onHoverHandlers?.({ onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave })\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => cancelPendingClose, [])\n\n const optionMap = useMemo(() => new Map(options.map((o) => [o.id, o])), [options])\n\n // neutral -> include -> exclude -> neutral\n const handleFilterToggle = (filterId: T) => {\n const next = new Map(filterStates)\n const current = next.get(filterId) ?? null\n next.set(filterId, current === null ? 'include' : current === 'include' ? 'exclude' : null)\n onFiltersChange(next)\n }\n\n const handleClearFilters = (e: MouseEvent) => {\n e.stopPropagation()\n // Only option ids: other keys (e.g. folder filters) stay.\n const cleared = new Map(filterStates)\n options.forEach((opt) => cleared.set(opt.id, null))\n onFiltersChange(cleared)\n }\n\n const clearButton = (\n <Button\n variant=\"ghost\"\n size=\"default\"\n onClick={handleClearFilters}\n className=\"ml-auto h-8 px-3 text-sm text-primary hover:text-primary pointer-coarse:h-11\"\n >\n <FunnelX className=\"mr-1.5 h-4 w-4 text-primary\" />\n {l.clear}\n </Button>\n )\n\n const hasActiveFilters = useMemo(() => {\n const ids = new Set(options.map((o) => o.id))\n return (\n hasExternalActiveState ||\n Array.from(filterStates.entries()).some(([k, v]) => ids.has(k) && v !== null)\n )\n }, [filterStates, options, hasExternalActiveState])\n const isActive = !suppressTriggerActiveStyle && hasActiveFilters\n\n // Without a title the Clear button rides on the first group's label row.\n const showInlineClear =\n !title &&\n hasActiveFilters &&\n !suppressTriggerActiveStyle &&\n !!groups &&\n groups.length > 0 &&\n !groups[0].collapsible\n\n const renderTriStateItem = (option: TriStateOption<T>) => {\n const state = filterStates.get(option.id) ?? null\n const badgeClass =\n state === null\n ? 'bg-card border-border text-foreground hover:bg-muted'\n : state === 'include'\n ? 'bg-primary text-primary-foreground border-primary hover:bg-primary'\n : 'bg-card text-red-text border-red-text hover:bg-red-bg'\n const stateIcon =\n state === null ? (\n <div className=\"size-3.5 rounded-sm border-2 border-border bg-transparent\" />\n ) : state === 'include' ? (\n <Check className=\"size-3\" strokeWidth={3} />\n ) : (\n <Ban className=\"size-3 text-red-text\" strokeWidth={3} />\n )\n const depthPadding = option.depth ? option.depth * 16 : 0\n\n return (\n <DropdownMenuItem\n key={option.id}\n onClick={() => handleFilterToggle(option.id)}\n onSelect={(e) => e.preventDefault()}\n disabled={option.disabled}\n className=\"cursor-pointer p-1\"\n style={depthPadding ? { paddingLeft: `${depthPadding + 4}px` } : undefined}\n >\n <Badge\n variant=\"outline\"\n className={cn(\n 'flex w-full items-center gap-2 px-3 py-1.5 text-sm pointer-coarse:min-h-11',\n badgeClass\n )}\n >\n {stateIcon}\n {option.icon && <span className=\"[&>svg]:size-3.5\">{option.icon}</span>}\n <span className=\"font-medium\">{option.label}</span>\n <span className=\"ml-auto font-semibold\">{option.count}</span>\n </Badge>\n </DropdownMenuItem>\n )\n }\n\n const toggleGroupCollapse = (label: string) => {\n setCollapsedGroups((prev) => {\n const next = new Set(prev)\n if (!next.delete(label)) next.add(label)\n return next\n })\n }\n\n const renderOptions = () => {\n if (!groups || groups.length === 0) return options.map(renderTriStateItem)\n\n return groups.map((group, groupIndex) => {\n const isCollapsed = !!group.collapsible && collapsedGroups.has(group.label)\n const activeCount = group.collapsible\n ? group.options.filter((id) => filterStates.get(id) !== null).length\n : 0\n\n return (\n <Fragment key={group.label}>\n {groupIndex > 0 && <DropdownMenuSeparator />}\n {groupTopContent?.[group.label] && (\n <>\n <div className=\"px-2 py-1.5\">{groupTopContent[group.label]}</div>\n <DropdownMenuSeparator />\n </>\n )}\n {group.collapsible ? (\n <button\n type=\"button\"\n onClick={() => toggleGroupCollapse(group.label)}\n aria-expanded={!isCollapsed}\n className=\"flex w-full cursor-pointer items-center gap-1 rounded-sm px-2 py-1.5 text-sm font-semibold text-primary hover:bg-accent/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11\"\n >\n {isCollapsed ? (\n <ChevronRight className=\"size-3.5\" />\n ) : (\n <ChevronDown className=\"size-3.5\" />\n )}\n <span>{group.label}</span>\n {isCollapsed && activeCount > 0 && (\n <Badge\n variant=\"outline\"\n className=\"ml-auto flex h-4 min-w-4 items-center justify-center rounded-md px-1 text-xs leading-none\"\n >\n {activeCount}\n </Badge>\n )}\n </button>\n ) : groupIndex === 0 && showInlineClear ? (\n <div className=\"flex items-center justify-between pr-1\">\n <DropdownMenuLabel className=\"text-primary\">{group.label}</DropdownMenuLabel>\n {clearButton}\n </div>\n ) : (\n <DropdownMenuLabel className=\"text-primary\">{group.label}</DropdownMenuLabel>\n )}\n {!isCollapsed &&\n group.options\n .map((id) => optionMap.get(id))\n .filter((opt): opt is TriStateOption<T> => opt !== undefined)\n .map(renderTriStateItem)}\n </Fragment>\n )\n })\n }\n\n const tone = isActive ? 'text-primary' : 'text-muted-foreground'\n\n return (\n <DropdownMenu\n modal={false}\n open={open}\n onOpenChange={(next) => {\n // Closed by the menu itself (Escape, choosing): the next click opens it again, rather than\n // toggling a stale click-open state shut as it opens.\n if (!next) setIsClickOpen(false)\n onOpenChange(next)\n }}\n >\n <DropdownMenuTrigger asChild>\n <span\n role=\"button\"\n tabIndex={0}\n data-slot=\"tri-state-filter-trigger\"\n className={\n triggerClassName ??\n 'inline-flex cursor-pointer items-center gap-1 rounded-sm px-1.5 py-0.5 text-sm font-medium transition-colors hover:bg-foreground/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:h-11! pointer-coarse:min-w-11 pointer-coarse:justify-center'\n }\n data-testid={testId}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={handleTriggerClick}\n >\n <Filter\n className={cn(\n 'size-3 transition-colors',\n isActive ? 'fill-primary text-primary' : tone\n )}\n />\n {triggerLabel && <span className={tone}>{triggerLabel}</span>}\n {renderChevron ? (\n <ChevronDown className={cn('size-3 transition-colors', tone)} />\n ) : (\n triggerLabel && <MoreVertical className={cn('size-3 transition-colors', tone)} />\n )}\n </span>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={align}\n className=\"w-80 border-0 bg-muted\"\n onCloseAutoFocus={(e) => e.preventDefault()}\n onMouseEnter={cancelPendingClose}\n onMouseLeave={() => {\n if (!isClickOpen) onOpenChange(false)\n }}\n onPointerDownOutside={(e) => {\n // Click-opened menus close only on a real outside click.\n if (!isClickOpen) return\n if (!(e.target as HTMLElement).closest('[role=\"menu\"]')) {\n setIsClickOpen(false)\n onOpenChange(false)\n } else {\n e.preventDefault()\n }\n }}\n >\n {(title || (hasActiveFilters && !suppressTriggerActiveStyle && !showInlineClear)) && (\n <>\n <div className=\"flex items-center justify-between px-2 py-1.5\">\n {title && <DropdownMenuLabel className=\"p-0 text-primary\">{title}</DropdownMenuLabel>}\n {hasActiveFilters && !showInlineClear && clearButton}\n </div>\n <DropdownMenuSeparator />\n </>\n )}\n {topContent && (\n <>\n <div className=\"px-2 py-1.5\">{topContent}</div>\n <DropdownMenuSeparator />\n </>\n )}\n {folderContent && (\n <>\n <div className=\"px-1 py-0.5\">{folderContent}</div>\n <DropdownMenuSeparator />\n </>\n )}\n {renderOptions()}\n {bottomContent && (\n <>\n <DropdownMenuSeparator />\n <div className=\"px-2 py-1.5\">{bottomContent}</div>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n"]}
@@ -1,24 +1,24 @@
1
1
  "use client";
2
2
  import { DocumentPicker, MultiSelect } from './chunk-4XJZ6AAY.js';
3
3
  import { EmptyState } from './chunk-P6GHJSLR.js';
4
- import { defaultInputs, validateInputs, SchemaForm, isWorkflowScope, fieldToFrontmatter, workflowFromFrontmatter, workflowSteps, initialRunInputs, stepPhase, composeStepPrompt, useWorkflowView, composeWorkflowPrompt, DEFAULT_TASK_ACTIVITY_LABELS, TaskActivityTimeline, isRunFinished, StepBarFrame, stepLevels, eventWaitingDocuments, waitingForDocumentsText, buildLaunch, waitingDocuments, PhaseMark, STEP_LABEL_CURRENT, STEP_LABEL, STEP_LABEL_MAX, STEP_EXTRA, STEP_PILL, stepPillTone } from './chunk-YX466FWL.js';
5
- import { TriStateFilterMenu } from './chunk-R26OHONI.js';
4
+ import { defaultInputs, validateInputs, SchemaForm, isWorkflowScope, fieldToFrontmatter, workflowFromFrontmatter, workflowSteps, initialRunInputs, stepPhase, composeStepPrompt, useWorkflowView, composeWorkflowPrompt, DEFAULT_TASK_ACTIVITY_LABELS, TaskActivityTimeline, isRunFinished, StepBarFrame, stepLevels, eventWaitingDocuments, waitingForDocumentsText, buildLaunch, waitingDocuments, PhaseMark, STEP_LABEL_CURRENT, STEP_LABEL, STEP_LABEL_MAX, STEP_EXTRA, STEP_PILL, stepPillTone } from './chunk-I44NX2ZB.js';
5
+ import { TriStateFilterMenu } from './chunk-6S5FLMWG.js';
6
6
  import { TabHeader } from './chunk-4WWM3GQ5.js';
7
+ import { QuickActionDialogHeader, AddFilesFirst, ScopePicker, StartTiles } from './chunk-DDF5GPIJ.js';
8
+ import { FoldSection } from './chunk-XD2M6LIG.js';
7
9
  import { CellHoverIcon } from './chunk-RFXJYIDV.js';
8
10
  import { ToneBadge } from './chunk-DPLRHEJZ.js';
9
11
  import { SelectionBar, SelectionBarAction } from './chunk-NUNKSZKU.js';
10
- import { FilterInput } from './chunk-YU2KUMGE.js';
11
- import { QuickActionDialogHeader, AddFilesFirst, ScopePicker, StartTiles } from './chunk-P5ST47VY.js';
12
- import { FoldSection } from './chunk-XD2M6LIG.js';
12
+ import { FilterInput } from './chunk-ZX2VPMBJ.js';
13
13
  import { ActionLink } from './chunk-S7PSMMRG.js';
14
14
  import { useMentionAutocomplete } from './chunk-HOXKR26S.js';
15
15
  import { toMessageMentions, extractMentions, MentionMenu } from './chunk-AA3PT6KR.js';
16
+ import { useBlocksEnvironment } from './chunk-76JDDMSP.js';
17
+ import { formatCount, initials } from './chunk-OXF2IFXG.js';
16
18
  import { ModalHeader } from './chunk-TX2ZICS7.js';
17
19
  import { GridView } from './chunk-ZPLG7QYF.js';
18
20
  import { useIsPhone } from './chunk-SLSBJRWW.js';
19
21
  import { testIdOr, prefixedTestId } from './chunk-7F6CBP3Z.js';
20
- import { useBlocksEnvironment } from './chunk-76JDDMSP.js';
21
- import { formatCount, initials } from './chunk-OXF2IFXG.js';
22
22
  import { memo, forwardRef, useState, useMemo, useId, useEffect, useRef, useCallback, useLayoutEffect } from 'react';
23
23
  import { cn, Label, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, Textarea, Input, Switch, Button, Collapsible, CollapsibleTrigger, CollapsibleContent, Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, Tooltip, TooltipTrigger, TooltipContent, Badge, Slider, UserEntity, getEntityColorStyles, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, VisibilityToggle, EntityPill, ThreadVisibilityIcon, DialogClose, Popover, PopoverTrigger, PopoverContent, Command, CommandInput, CommandList, CommandEmpty, CommandItem, DropdownMenuSeparator, badgeVariants, Checkbox } from '@arbidocs/react/ui';
24
24
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -9906,5 +9906,5 @@ function AgentCreateView({
9906
9906
  }
9907
9907
 
9908
9908
  export { AgentAvatarField, AgentBar, AgentBarIconButton, AgentBarMenu, AgentBarNotes, AgentBarProbeAnswer, AgentBarQueuedNote, AgentBarStatus, AgentCard, AgentCreateView, AgentCreatedView, AgentCreator, AgentEditView, AgentGallery, AgentMainView, AgentSelect, AgentTypeSelector, CapabilityGrid, CapabilityTile, ConfigField, ConfigForm, ConsentActions, ConsentBulletList, ConsentCard, ConsentFootnote, ConsentHeader, ConsentMessage, ConsentNotice, ConsentPage, ConsentPermissionList, ConsentSection, ConsentStrong, ConsentText, ConversationListView, ConversationTurnSpeaker, CopyableUrl, DEFAULT_AGENT_AVATAR_FIELD_LABELS, DEFAULT_AGENT_BAR_LABELS, DEFAULT_AGENT_CARD_LABELS, DEFAULT_AGENT_CREATOR_LABELS, DEFAULT_AGENT_GALLERY_LABELS, DEFAULT_AGENT_SELECT_LABELS, DEFAULT_AGENT_STEPS_LABELS, DEFAULT_AGENT_TYPE_SELECTOR_LABELS, DEFAULT_AUTHORIZE_AGENT_LABELS, DEFAULT_CONFIG_FIELD_LABELS, DEFAULT_CONFIG_FORM_LABELS, DEFAULT_CONSENT_ACTIONS_LABELS, DEFAULT_COPYABLE_URL_LABELS, DEFAULT_NEW_THREAD_DIALOG_LABELS, DEFAULT_PILL_SELECT_LABELS, DEFAULT_RECURRENCE, DEFAULT_RECURRENCE_BUILDER_LABELS, DEFAULT_SKILL_CARD_LABELS, DEFAULT_SKILL_EDIT_FORM_LABELS, DEFAULT_SKILL_GENERATE_FORM_LABELS, DEFAULT_SKILL_GLOBAL_BADGE_LABELS, DEFAULT_SKILL_ROW_LABELS, DEFAULT_SKILL_VIEW_TOGGLE_LABELS, DEFAULT_SUBAGENT_ROSTER_LABELS, DEFAULT_TASKS_CHROME_LABELS, DEFAULT_TASK_COMPOSER_LABELS, DEFAULT_TASK_LIST_LABELS, DEFAULT_TASK_OUTPUTS_CELL_LABELS, DEFAULT_TASK_PLAN_LABELS, DEFAULT_TASK_RUNS_DIALOG_LABELS, DEFAULT_TASK_STATUS_PILL_LABELS, DEFAULT_TASK_THREAD_CHIP_LABELS, DEFAULT_TASK_TRIGGER_CHIP_LABELS, DEFAULT_TUPLE_ARRAY_FIELD_LABELS, DEFAULT_UPLOAD_TASK_ITEM_LABELS, DEFAULT_UPLOAD_TASK_LIST_LABELS, DEFAULT_WORKFLOWS_CHROME_LABELS, DEFAULT_WORKFLOW_CONFIG_DIALOG_LABELS, DEFAULT_WORKFLOW_LIST_LABELS, DEFAULT_WORKFLOW_THREAD_STRIP_LABELS, DERIVED_NAME_WORDS, EMPTY_NEW_THREAD, EntityChip, GoalCriteria, MAX_TASK_DEPTH, NewThreadDialog, PersonPill, PillSelect, RecurrenceBuilder, STATUS_LABELS, STATUS_ORDER, STATUS_TONE, SkillActionButton, SkillCard, SkillDetail, SkillDetailSection, SkillEditForm, SkillFilterChips, SkillGenerateForm, SkillGlobalBadge, SkillRow, SkillTile, SkillTypeBadge, SkillViewToggle, StepDetail, StepNarration, StepOutcome, StepParams, StepRow, StepSummary, StepTrace, StepTraceSummary, SubAgentLane, SubStepGroup, SubagentRoster, TASK_COLUMN_ORDER, TRIGGER_LABELS, TaskActivityDialog, TaskComposer, TaskFlow, TaskInbox, TaskMoveDialog, TaskOutputsCell, TaskPlan, TaskRunsDialog, TaskStartDialog, TaskStatusPill, TaskTable, TaskThreadChip, TaskTriggerChip, TasksToolbar, ThreadActivity, ThreadNotifyDialog, TupleArrayField, UploadTaskItem, UploadTaskList, WEEKDAYS, WORKFLOW_COLUMN_ORDER, WorkflowConfigDialog, WorkflowDocumentsField, WorkflowLauncher, WorkflowThreadStartedBy, WorkflowThreadStrip, WorkflowsTable, WorkflowsToolbar, agentConfigSectionToValues, agentCreatorToConfigSection, asTaskStatus, authModeFor, buildRRule, buildTaskRows, buildWorkflowScopeSource, compactThreadActivity, composePersona, composerToTaskQuery, composerToWorkRequest, composerToWorkflowRequest, composerToWorkflowUpdate, createTaskColumns, createWorkflowColumns, createsWork, defaultScopeRenderer, defaultTaskComposerValues, deriveAgentName, deriveWorkflowName, descendantIds, describeRRule, filterConversationRows, firstWords, formatElapsed, goalProgress, groupThreadActivity, hasTaskFields, hasTrigger, humanizeSection, indexTasks, inferType, inputDocumentIds, isAgenticWorkflow, isOutOfBounds, isPlainTodo, isSkillRow, isValidAgentName, isoToLocalInput, linkedRunsFromActivity, localInputToIso, matchWorkflowScope, moveTargets, newThreadToRequest, nextCriterionId, ownerExtId, parseRRule, prettifyKey, resolveScopeInputs, skillSlug, stripPersonaPreamble, summarizeAgent, summarizeCapabilities, taskComposerToCreateRequest, taskComposerToUpdateRequest, taskNeedsAccess, taskToComposerValues, useWorkflowPreview, workflowFromSkillMarkdown, workflowStatus, workflowTaskFields, workflowToComposerValues, workflowToSkillMarkdown, workflowTriggerType, workflowWhen };
9909
- //# sourceMappingURL=chunk-UJM7TG44.js.map
9910
- //# sourceMappingURL=chunk-UJM7TG44.js.map
9909
+ //# sourceMappingURL=chunk-QLHW7JGN.js.map
9910
+ //# sourceMappingURL=chunk-QLHW7JGN.js.map