@stigmer/react 3.0.6 → 3.0.7-dev.20260611143057

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 (94) hide show
  1. package/agent-instance/AgentInstanceDetailPanel.d.ts.map +1 -1
  2. package/agent-instance/AgentInstanceDetailPanel.js +2 -9
  3. package/agent-instance/AgentInstanceDetailPanel.js.map +1 -1
  4. package/agent-instance/AgentInstanceList.d.ts.map +1 -1
  5. package/agent-instance/AgentInstanceList.js +2 -9
  6. package/agent-instance/AgentInstanceList.js.map +1 -1
  7. package/agent-instance/CreateAgentInstanceDialog.d.ts.map +1 -1
  8. package/agent-instance/CreateAgentInstanceDialog.js +1 -1
  9. package/agent-instance/CreateAgentInstanceDialog.js.map +1 -1
  10. package/composer/SessionComposer.d.ts +14 -0
  11. package/composer/SessionComposer.d.ts.map +1 -1
  12. package/composer/SessionComposer.js +15 -9
  13. package/composer/SessionComposer.js.map +1 -1
  14. package/index.d.ts +1 -1
  15. package/index.d.ts.map +1 -1
  16. package/index.js.map +1 -1
  17. package/library/InstanceVisibilitySelector.d.ts +23 -9
  18. package/library/InstanceVisibilitySelector.d.ts.map +1 -1
  19. package/library/InstanceVisibilitySelector.js +14 -9
  20. package/library/InstanceVisibilitySelector.js.map +1 -1
  21. package/library/VisibilityOptionRow.d.ts +52 -0
  22. package/library/VisibilityOptionRow.d.ts.map +1 -0
  23. package/library/VisibilityOptionRow.js +92 -0
  24. package/library/VisibilityOptionRow.js.map +1 -0
  25. package/library/VisibilitySelector.d.ts +47 -24
  26. package/library/VisibilitySelector.d.ts.map +1 -1
  27. package/library/VisibilitySelector.js +137 -115
  28. package/library/VisibilitySelector.js.map +1 -1
  29. package/library/visibilityLevels.d.ts +25 -3
  30. package/library/visibilityLevels.d.ts.map +1 -1
  31. package/library/visibilityLevels.js +8 -2
  32. package/library/visibilityLevels.js.map +1 -1
  33. package/package.json +4 -4
  34. package/session/NewSessionViewer.d.ts +32 -1
  35. package/session/NewSessionViewer.d.ts.map +1 -1
  36. package/session/NewSessionViewer.js +20 -9
  37. package/session/NewSessionViewer.js.map +1 -1
  38. package/session/SessionViewer.d.ts +24 -1
  39. package/session/SessionViewer.d.ts.map +1 -1
  40. package/session/SessionViewer.js +18 -12
  41. package/session/SessionViewer.js.map +1 -1
  42. package/session/audience.d.ts +21 -0
  43. package/session/audience.d.ts.map +1 -0
  44. package/session/audience.js +2 -0
  45. package/session/audience.js.map +1 -0
  46. package/session/index.d.ts +2 -0
  47. package/session/index.d.ts.map +1 -1
  48. package/session/index.js.map +1 -1
  49. package/session/runtime-env.d.ts +47 -0
  50. package/session/runtime-env.d.ts.map +1 -0
  51. package/session/runtime-env.js +20 -0
  52. package/session/runtime-env.js.map +1 -0
  53. package/session/useNewSessionFlow.d.ts +25 -0
  54. package/session/useNewSessionFlow.d.ts.map +1 -1
  55. package/session/useNewSessionFlow.js +20 -8
  56. package/session/useNewSessionFlow.js.map +1 -1
  57. package/session/useSessionPageFlow.d.ts +27 -2
  58. package/session/useSessionPageFlow.d.ts.map +1 -1
  59. package/session/useSessionPageFlow.js +34 -13
  60. package/session/useSessionPageFlow.js.map +1 -1
  61. package/src/agent-instance/AgentInstanceDetailPanel.tsx +7 -27
  62. package/src/agent-instance/AgentInstanceList.tsx +7 -27
  63. package/src/agent-instance/CreateAgentInstanceDialog.tsx +1 -0
  64. package/src/composer/SessionComposer.tsx +30 -8
  65. package/src/composer/__tests__/SessionComposer-lockAgent.test.tsx +150 -0
  66. package/src/index.ts +2 -0
  67. package/src/library/InstanceVisibilitySelector.tsx +27 -9
  68. package/src/library/VisibilityOptionRow.tsx +244 -0
  69. package/src/library/VisibilitySelector.tsx +303 -260
  70. package/src/library/__tests__/VisibilitySelector.test.tsx +256 -0
  71. package/src/library/visibilityLevels.ts +35 -5
  72. package/src/session/NewSessionViewer.tsx +61 -12
  73. package/src/session/SessionViewer.tsx +51 -15
  74. package/src/session/__tests__/audienceWiring.test.tsx +274 -0
  75. package/src/session/__tests__/useNewSessionFlow.test.tsx +122 -0
  76. package/src/session/__tests__/useSessionPageFlow.runtimeEnv.test.tsx +170 -0
  77. package/src/session/audience.ts +20 -0
  78. package/src/session/index.ts +3 -0
  79. package/src/session/runtime-env.ts +57 -0
  80. package/src/session/useNewSessionFlow.ts +44 -9
  81. package/src/session/useSessionPageFlow.ts +65 -17
  82. package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +1 -0
  83. package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +7 -27
  84. package/src/workflow/instance/WorkflowInstanceList.tsx +7 -27
  85. package/styles.css +1 -1
  86. package/workflow/instance/CreateWorkflowInstanceDialog.d.ts.map +1 -1
  87. package/workflow/instance/CreateWorkflowInstanceDialog.js +1 -1
  88. package/workflow/instance/CreateWorkflowInstanceDialog.js.map +1 -1
  89. package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
  90. package/workflow/instance/WorkflowInstanceDetailPanel.js +2 -9
  91. package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
  92. package/workflow/instance/WorkflowInstanceList.d.ts.map +1 -1
  93. package/workflow/instance/WorkflowInstanceList.js +2 -9
  94. package/workflow/instance/WorkflowInstanceList.js.map +1 -1
@@ -1,26 +1,41 @@
1
1
  "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useCallback, useMemo, useRef, useState } from "react";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
+ import { Popover } from "@base-ui/react/popover";
4
5
  import { cn } from "@stigmer/theme";
6
+ import { useStigmerPortalContainer } from "../portal-container";
7
+ import { ConfirmDialog } from "../resource-detail/ConfirmDialog";
8
+ import { useConfirmAction } from "../resource-detail/useConfirmAction";
9
+ import { PROMPT_STYLES, VISIBILITY_CHIP_CLASS, VisibilityIcon, VisibilityOptionRow, } from "./VisibilityOptionRow";
5
10
  import { visibilityOption, } from "./visibilityLevels";
6
11
  /**
7
- * Segmented visibility selector the single control for resource
8
- * visibility across blueprints AND instances. The offered levels are pure
9
- * data ({@link VisibilityLevelOption}); per-kind level sets live in
10
- * `visibilityLevels.ts`, so this component carries no kind-specific logic.
12
+ * The single control for resource visibility across blueprints AND
13
+ * instances. Offered levels are pure data ({@link VisibilityLevelOption});
14
+ * per-kind level sets live in `visibilityLevels.ts`, so this component
15
+ * carries no kind-specific logic.
11
16
  *
12
- * Escalating (moving right in the options list) shows an inline
13
- * confirmation prompt colored by the target level's tone, since expanding
14
- * access is consequential. De-escalating applies immediately.
17
+ * In `"manage"` mode it renders a current-state chip (icon + label + caret)
18
+ * that opens a popover listing each offered level with its own description —
19
+ * scaling cleanly to four levels without the layout shift of a segmented
20
+ * control, and explaining every choice at a glance (Recognition over
21
+ * Recall). Escalation is confirmed in proportion to how far access expands:
22
+ * de-escalation applies instantly, an Organization escalation shows a light
23
+ * inline prompt, and Platform/Public escalations open a blocking
24
+ * {@link ConfirmDialog} that names the exact audience. Confirmation is owned
25
+ * here so every consumer — blueprint detail, instance detail, and any
26
+ * standalone embed — behaves identically.
27
+ *
28
+ * In `"create"` mode it renders an inline radio list that applies
29
+ * immediately (initial value selection has no escalation semantics).
15
30
  *
16
31
  * If the current visibility is not among the offered options (e.g. a
17
32
  * platform-shared blueprint whose org no longer operates an
18
33
  * IdentityProvider), its canonical option is rendered in place so the
19
34
  * state stays legible and the user can still move to an offered level.
20
35
  *
21
- * WAI-ARIA Radio Group with roving tabindex, following the same visual
22
- * pattern as {@link ScopeToggle}. All visual properties flow through
23
- * `--stgm-*` design tokens.
36
+ * All visual properties flow through `--stgm-*` design tokens; portaled
37
+ * content targets the {@link useStigmerPortalContainer} so it inherits the
38
+ * active theme.
24
39
  *
25
40
  * @example
26
41
  * ```tsx
@@ -32,12 +47,17 @@ import { visibilityOption, } from "./visibilityLevels";
32
47
  * />
33
48
  * ```
34
49
  */
35
- export function VisibilitySelector({ visibility, options, onVisibilityChange, isPending = false, disabled = false, ariaLabel = "Resource visibility", className, }) {
36
- const [confirming, setConfirming] = useState(null);
50
+ export function VisibilitySelector({ visibility, options, onVisibilityChange, mode = "manage", isPending = false, disabled = false, ariaLabel = "Resource visibility", className, }) {
51
+ const portalContainer = useStigmerPortalContainer();
52
+ const { confirmState, confirm, handleConfirm, handleCancel } = useConfirmAction();
53
+ const [open, setOpen] = useState(false);
54
+ // The Organization-style escalation awaiting its light inline confirm.
55
+ const [pendingInline, setPendingInline] = useState(null);
56
+ const [highlightIdx, setHighlightIdx] = useState(-1);
37
57
  const optionRefs = useRef([]);
38
58
  const effectivelyDisabled = disabled || isPending;
39
59
  // Keep the current state legible even when it is not offerable in the
40
- // current context: render its canonical option as an extra segment.
60
+ // current context: render its canonical option as an extra row.
41
61
  const effectiveOptions = useMemo(() => {
42
62
  if (options.some((o) => o.value === visibility))
43
63
  return options;
@@ -47,113 +67,114 @@ export function VisibilitySelector({ visibility, options, onVisibilityChange, is
47
67
  const values = effectiveOptions.map((o) => o.value);
48
68
  return values.indexOf(target) > values.indexOf(visibility);
49
69
  }, [effectiveOptions, visibility]);
50
- const handleSelect = useCallback((value) => {
51
- if (value === visibility)
70
+ const apply = useCallback((value) => {
71
+ setOpen(false);
72
+ setPendingInline(null);
73
+ onVisibilityChange(value);
74
+ }, [onVisibilityChange]);
75
+ const handleSelect = useCallback((option) => {
76
+ const value = option.value;
77
+ if (value === visibility) {
78
+ setPendingInline(null);
79
+ setOpen(false);
52
80
  return;
53
- if (isEscalation(value)) {
54
- setConfirming(value);
81
+ }
82
+ // De-escalation (and create mode) never confirm — narrowing access is
83
+ // always safe, and an initial pick has no escalation semantics.
84
+ if (mode === "create" || !isEscalation(value)) {
85
+ apply(value);
55
86
  return;
56
87
  }
57
- setConfirming(null);
58
- onVisibilityChange(value);
59
- }, [visibility, onVisibilityChange, isEscalation]);
60
- const confirmChange = useCallback(() => {
61
- if (confirming === null)
88
+ if (option.confirmDialog) {
89
+ setOpen(false);
90
+ setPendingInline(null);
91
+ void confirm({
92
+ title: option.confirmDialog.title,
93
+ description: option.confirmDialog.description,
94
+ confirmLabel: `Make ${option.label}`,
95
+ // Exposure is reversible, so this is a primary (not destructive)
96
+ // confirmation; the audience-naming copy carries the caution.
97
+ variant: "default",
98
+ }).then((ok) => {
99
+ if (ok)
100
+ onVisibilityChange(value);
101
+ });
62
102
  return;
63
- setConfirming(null);
64
- onVisibilityChange(confirming);
65
- }, [confirming, onVisibilityChange]);
66
- const cancelConfirm = useCallback(() => {
67
- setConfirming(null);
68
- }, []);
69
- const handleKeyDown = useCallback((e, index) => {
70
- let nextIndex = null;
71
- if (e.key === "ArrowRight" || e.key === "ArrowDown") {
72
- e.preventDefault();
73
- nextIndex = (index + 1) % effectiveOptions.length;
74
103
  }
75
- else if (e.key === "ArrowLeft" || e.key === "ArrowUp") {
76
- e.preventDefault();
77
- nextIndex =
78
- (index - 1 + effectiveOptions.length) % effectiveOptions.length;
104
+ if (option.confirmPrompt) {
105
+ setPendingInline(value);
106
+ return;
79
107
  }
80
- if (nextIndex !== null) {
81
- optionRefs.current[nextIndex]?.focus();
82
- handleSelect(effectiveOptions[nextIndex].value);
108
+ apply(value);
109
+ }, [visibility, mode, isEscalation, apply, confirm, onVisibilityChange]);
110
+ const moveFocus = useCallback((from, delta) => {
111
+ const count = effectiveOptions.length;
112
+ const next = (from + delta + count) % count;
113
+ setHighlightIdx(next);
114
+ optionRefs.current[next]?.focus();
115
+ }, [effectiveOptions.length]);
116
+ const handleRowKeyDown = useCallback((e, index) => {
117
+ switch (e.key) {
118
+ case "ArrowDown":
119
+ case "ArrowRight":
120
+ e.preventDefault();
121
+ moveFocus(index, 1);
122
+ break;
123
+ case "ArrowUp":
124
+ case "ArrowLeft":
125
+ e.preventDefault();
126
+ moveFocus(index, -1);
127
+ break;
128
+ case "Home":
129
+ e.preventDefault();
130
+ setHighlightIdx(0);
131
+ optionRefs.current[0]?.focus();
132
+ break;
133
+ case "End": {
134
+ e.preventDefault();
135
+ const last = effectiveOptions.length - 1;
136
+ setHighlightIdx(last);
137
+ optionRefs.current[last]?.focus();
138
+ break;
139
+ }
83
140
  }
84
- }, [effectiveOptions, handleSelect]);
85
- const confirmingOption = confirming !== null
86
- ? effectiveOptions.find((o) => o.value === confirming)
87
- : undefined;
88
- return (_jsxs("div", { className: cn("inline-flex flex-col gap-1.5", className), children: [_jsx("div", { role: "radiogroup", "aria-label": ariaLabel, "aria-disabled": effectivelyDisabled || undefined, className: cn("inline-flex rounded-md bg-muted p-0.5", effectivelyDisabled && "pointer-events-none opacity-50"), children: effectiveOptions.map((option, index) => {
89
- const isSelected = visibility === option.value;
90
- return (_jsxs("button", { ref: (el) => {
91
- optionRefs.current[index] = el;
92
- }, type: "button", role: "radio", "aria-checked": isSelected, "aria-label": `${option.label}: ${option.description}`, tabIndex: isSelected ? 0 : -1, disabled: effectivelyDisabled, onClick: () => handleSelect(option.value), onKeyDown: (e) => handleKeyDown(e, index), className: cn("inline-flex cursor-pointer items-center gap-1 rounded-sm px-2.5 py-1 text-xs font-medium transition-colors", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", isSelected
93
- ? SELECTED_STYLES[option.tone]
94
- : "text-muted-foreground hover:text-foreground"), children: [isPending && isSelected ? (_jsx("span", { className: "inline-block size-3 animate-spin rounded-full border-2 border-current border-t-transparent", "aria-hidden": "true" })) : (_jsx(VisibilityIcon, { tone: option.tone, className: "size-3" })), option.label] }, option.value));
95
- }) }), confirming === null && (_jsx("p", { className: "text-[0.65rem] text-muted-foreground", children: effectiveOptions.find((o) => o.value === visibility)?.description })), confirmingOption?.confirmPrompt && (_jsxs("div", { className: cn("flex items-center gap-2 rounded-md border px-3 py-1.5 text-xs", PROMPT_STYLES[confirmingOption.tone].container), role: "alert", children: [_jsx("span", { className: PROMPT_STYLES[confirmingOption.tone].text, children: confirmingOption.confirmPrompt }), _jsx("button", { type: "button", onClick: confirmChange, className: cn("rounded px-2 py-0.5 text-xs font-medium text-white", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", PROMPT_STYLES[confirmingOption.tone].confirm), children: "Confirm" }), _jsx("button", { type: "button", onClick: cancelConfirm, className: cn("rounded px-2 py-0.5 text-xs font-medium", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", PROMPT_STYLES[confirmingOption.tone].cancel), children: "Cancel" })] }))] }));
96
- }
97
- const SELECTED_STYLES = {
98
- private: "bg-amber-50 text-amber-800 shadow-sm dark:bg-amber-900/30 dark:text-amber-300",
99
- org: "bg-blue-100 text-blue-800 shadow-sm dark:bg-blue-900/40 dark:text-blue-300",
100
- platform: "bg-violet-100 text-violet-800 shadow-sm dark:bg-violet-900/40 dark:text-violet-300",
101
- public: "bg-emerald-100 text-emerald-800 shadow-sm dark:bg-emerald-900/40 dark:text-emerald-300",
102
- };
103
- const PROMPT_STYLES = {
104
- // Private never escalates, but the row keeps the Record total.
105
- private: {
106
- container: "border-amber-200 bg-amber-50 dark:border-amber-800/50 dark:bg-amber-950/30",
107
- text: "text-amber-800 dark:text-amber-200",
108
- confirm: "bg-amber-600 hover:bg-amber-700 dark:bg-amber-600 dark:hover:bg-amber-500",
109
- cancel: "text-amber-700 hover:text-amber-900 dark:text-amber-300 dark:hover:text-amber-100",
110
- },
111
- org: {
112
- container: "border-blue-200 bg-blue-50 dark:border-blue-800/50 dark:bg-blue-950/30",
113
- text: "text-blue-800 dark:text-blue-200",
114
- confirm: "bg-blue-600 hover:bg-blue-700 dark:bg-blue-600 dark:hover:bg-blue-500",
115
- cancel: "text-blue-700 hover:text-blue-900 dark:text-blue-300 dark:hover:text-blue-100",
116
- },
117
- platform: {
118
- container: "border-violet-200 bg-violet-50 dark:border-violet-800/50 dark:bg-violet-950/30",
119
- text: "text-violet-800 dark:text-violet-200",
120
- confirm: "bg-violet-600 hover:bg-violet-700 dark:bg-violet-600 dark:hover:bg-violet-500",
121
- cancel: "text-violet-700 hover:text-violet-900 dark:text-violet-300 dark:hover:text-violet-100",
122
- },
123
- public: {
124
- container: "border-amber-200 bg-amber-50 dark:border-amber-800/50 dark:bg-amber-950/30",
125
- text: "text-amber-800 dark:text-amber-200",
126
- confirm: "bg-amber-600 hover:bg-amber-700 dark:bg-amber-600 dark:hover:bg-amber-500",
127
- cancel: "text-amber-700 hover:text-amber-900 dark:text-amber-300 dark:hover:text-amber-100",
128
- },
129
- };
130
- // ---------------------------------------------------------------------------
131
- // Icons — inline SVGs following the SDK pattern (no icon library dependency)
132
- // ---------------------------------------------------------------------------
133
- /** Icon for a visibility tone; shared with {@link VisibilityBadge}. */
134
- export function VisibilityIcon({ tone, className, }) {
135
- switch (tone) {
136
- case "org":
137
- return _jsx(UsersIcon, { className: className });
138
- case "platform":
139
- return _jsx(BuildingsIcon, { className: className });
140
- case "public":
141
- return _jsx(GlobeIcon, { className: className });
142
- default:
143
- return _jsx(LockIcon, { className: className });
141
+ }, [moveFocus, effectiveOptions.length]);
142
+ // On open, focus the current level so keyboard users land on a sensible row.
143
+ useEffect(() => {
144
+ if (!open) {
145
+ setPendingInline(null);
146
+ setHighlightIdx(-1);
147
+ return;
148
+ }
149
+ const current = effectiveOptions.findIndex((o) => o.value === visibility);
150
+ const start = current >= 0 ? current : 0;
151
+ setHighlightIdx(start);
152
+ const raf = requestAnimationFrame(() => optionRefs.current[start]?.focus());
153
+ return () => cancelAnimationFrame(raf);
154
+ }, [open, effectiveOptions, visibility]);
155
+ const dialog = (_jsx(ConfirmDialog, { state: confirmState, onConfirm: handleConfirm, onCancel: handleCancel }));
156
+ const renderRows = (role) => effectiveOptions.map((option, index) => (_jsx(VisibilityOptionRow, { ref: (el) => {
157
+ optionRefs.current[index] = el;
158
+ }, option: option, role: role, isSelected: visibility === option.value, isHighlighted: role === "option" && highlightIdx === index, tabIndex: role === "radio"
159
+ ? visibility === option.value
160
+ ? 0
161
+ : -1
162
+ : highlightIdx === index
163
+ ? 0
164
+ : -1, disabled: effectivelyDisabled, onSelect: () => handleSelect(option), onMouseEnter: role === "option" ? () => setHighlightIdx(index) : undefined, onKeyDown: (e) => handleRowKeyDown(e, index) }, option.value)));
165
+ // ---- Create mode: inline radio list, applies immediately ---------------
166
+ if (mode === "create") {
167
+ return (_jsx("div", { role: "radiogroup", "aria-label": ariaLabel, "aria-disabled": effectivelyDisabled || undefined, className: cn("flex flex-col gap-0.5 rounded-md border border-border p-1", effectivelyDisabled && "pointer-events-none opacity-50", className), children: renderRows("radio") }));
144
168
  }
169
+ // ---- Manage mode: current-state chip + popover ladder ------------------
170
+ const current = visibilityOption(visibility);
171
+ const pendingOption = pendingInline !== null
172
+ ? effectiveOptions.find((o) => o.value === pendingInline)
173
+ : undefined;
174
+ return (_jsxs(_Fragment, { children: [_jsxs(Popover.Root, { open: open, onOpenChange: setOpen, children: [_jsxs(Popover.Trigger, { disabled: effectivelyDisabled, "aria-label": `${ariaLabel}: ${current.label}`, className: cn(VISIBILITY_CHIP_CLASS, "transition-colors hover:bg-accent-hover hover:text-foreground", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "disabled:pointer-events-none disabled:opacity-50", className), children: [isPending ? (_jsx("span", { className: "inline-block size-2.5 animate-spin rounded-full border-2 border-current border-t-transparent", "aria-hidden": "true" })) : (_jsx(VisibilityIcon, { tone: current.tone, className: "size-2.5" })), current.label, _jsx(CaretIcon, {})] }), _jsx(Popover.Portal, { container: portalContainer, children: _jsx(Popover.Positioner, { sideOffset: 4, align: "start", children: _jsxs(Popover.Popup, { role: "listbox", "aria-label": ariaLabel, className: cn("z-popover w-72 rounded-lg border border-border bg-popover p-1 shadow-md", "text-popover-foreground animate-in fade-in-0 zoom-in-95"), children: [renderRows("option"), pendingOption?.confirmPrompt && (_jsxs("div", { role: "alert", className: cn("mt-1 flex items-center gap-2 rounded-md border px-2.5 py-1.5", PROMPT_STYLES[pendingOption.tone].container), children: [_jsx("span", { className: cn("flex-1 text-[0.65rem] leading-snug", PROMPT_STYLES[pendingOption.tone].text), children: pendingOption.confirmPrompt }), _jsx("button", { type: "button", onClick: () => setPendingInline(null), className: cn("rounded px-2 py-0.5 text-[0.65rem] font-medium", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", PROMPT_STYLES[pendingOption.tone].cancel), children: "Cancel" }), _jsx("button", { type: "button", onClick: () => apply(pendingOption.value), className: cn("rounded px-2 py-0.5 text-[0.65rem] font-medium text-white", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", PROMPT_STYLES[pendingOption.tone].confirm), children: "Confirm" })] }))] }) }) })] }), dialog] }));
145
175
  }
146
- function LockIcon({ className }) {
147
- return (_jsxs("svg", { className: className, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("rect", { x: "3.5", y: "7", width: "9", height: "7", rx: "1.5" }), _jsx("path", { d: "M5.5 7V5a2.5 2.5 0 0 1 5 0v2" })] }));
148
- }
149
- function UsersIcon({ className }) {
150
- return (_jsxs("svg", { className: className, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("circle", { cx: "6", cy: "5", r: "2.5" }), _jsx("path", { d: "M2 13c0-2.21 1.79-4 4-4s4 1.79 4 4" }), _jsx("circle", { cx: "11.5", cy: "5.5", r: "2" }), _jsx("path", { d: "M14 13c0-1.66-1.12-3-2.5-3-.5 0-1 .14-1.4.4" })] }));
151
- }
152
- function BuildingsIcon({ className }) {
153
- return (_jsxs("svg", { className: className, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("path", { d: "M2 14V4.5L6.5 2v12" }), _jsx("path", { d: "M6.5 6.5 14 8.5V14" }), _jsx("path", { d: "M2 14h12" }), _jsx("path", { d: "M4.25 6h.01M4.25 8.5h.01M4.25 11h.01M10.5 10.5h.01M10.5 12.5h.01" })] }));
154
- }
155
- function GlobeIcon({ className }) {
156
- return (_jsxs("svg", { className: className, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [_jsx("circle", { cx: "8", cy: "8", r: "6" }), _jsx("path", { d: "M2 8h12" }), _jsx("path", { d: "M8 2c1.66 1.46 2.6 3.63 2.6 6s-.94 4.54-2.6 6c-1.66-1.46-2.6-3.63-2.6-6s.94-4.54 2.6-6Z" })] }));
176
+ function CaretIcon() {
177
+ return (_jsx("svg", { className: "size-2.5 shrink-0 text-muted-foreground", viewBox: "0 0 12 12", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "M3 4.5 6 7.5 9 4.5" }) }));
157
178
  }
158
179
  /**
159
180
  * Read-only visibility indicator with a matching icon, covering all four
@@ -162,10 +183,11 @@ function GlobeIcon({ className }) {
162
183
  * Rendered wherever the interactive {@link VisibilitySelector} is not
163
184
  * available — for viewers who lack `can_edit`, and while a permission check
164
185
  * is in flight — so a resource's visibility is always legible rather than
165
- * silently blank.
186
+ * silently blank. Shares the chip styling with the selector trigger so the
187
+ * read-only and editable states are visually consistent.
166
188
  */
167
189
  export function VisibilityBadge({ visibility, className, }) {
168
190
  const option = visibilityOption(visibility);
169
- return (_jsxs("span", { className: cn("inline-flex shrink-0 items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground", className), children: [_jsx(VisibilityIcon, { tone: option.tone, className: "size-2.5" }), option.label] }));
191
+ return (_jsxs("span", { className: cn(VISIBILITY_CHIP_CLASS, className), children: [_jsx(VisibilityIcon, { tone: option.tone, className: "size-2.5" }), option.label] }));
170
192
  }
171
193
  //# sourceMappingURL=VisibilitySelector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VisibilitySelector.js","sourceRoot":"","sources":["../../src/library/VisibilitySelector.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EACL,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AAyB5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,UAAU,EACV,OAAO,EACP,kBAAkB,EAClB,SAAS,GAAG,KAAK,EACjB,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,qBAAqB,EACjC,SAAS,GACe;IACxB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAC1C,IAAI,CACL,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,CAA+B,EAAE,CAAC,CAAC;IAC5D,MAAM,mBAAmB,GAAG,QAAQ,IAAI,SAAS,CAAC;IAElD,sEAAsE;IACtE,oEAAoE;IACpE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC;YAAE,OAAO,OAAO,CAAC;QAChE,OAAO,CAAC,GAAG,OAAO,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;IACpD,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAE1B,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,MAA6B,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC,EACD,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAC/B,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,KAA4B,EAAE,EAAE;QAC/B,IAAI,KAAK,KAAK,UAAU;YAAE,OAAO;QAEjC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC,EACD,CAAC,UAAU,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAC/C,CAAC;IAEF,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,IAAI,UAAU,KAAK,IAAI;YAAE,OAAO;QAChC,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAErC,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,CAAyC,EAAE,KAAa,EAAE,EAAE;QAC3D,IAAI,SAAS,GAAkB,IAAI,CAAC;QAEpC,IAAI,CAAC,CAAC,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;YACpD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC;QACpD,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACxD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,SAAS;gBACP,CAAC,KAAK,GAAG,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC;QACpE,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;YACvC,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,EACD,CAAC,gBAAgB,EAAE,YAAY,CAAC,CACjC,CAAC;IAEF,MAAM,gBAAgB,GACpB,UAAU,KAAK,IAAI;QACjB,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC;QACtD,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,8BAA8B,EAAE,SAAS,CAAC,aAC3D,cACE,IAAI,EAAC,YAAY,gBACL,SAAS,mBACN,mBAAmB,IAAI,SAAS,EAC/C,SAAS,EAAE,EAAE,CACX,uCAAuC,EACvC,mBAAmB,IAAI,gCAAgC,CACxD,YAEA,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBACtC,MAAM,UAAU,GAAG,UAAU,KAAK,MAAM,CAAC,KAAK,CAAC;oBAE/C,OAAO,CACL,kBAEE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;4BACV,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;wBACjC,CAAC,EACD,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,OAAO,kBACE,UAAU,gBACZ,GAAG,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,WAAW,EAAE,EACpD,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7B,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EACzC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,EACzC,SAAS,EAAE,EAAE,CACX,4GAA4G,EAC5G,yEAAyE,EACzE,UAAU;4BACR,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;4BAC9B,CAAC,CAAC,6CAA6C,CAClD,aAEA,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,CACzB,eACE,SAAS,EAAC,4FAA4F,iBAC1F,MAAM,GAClB,CACH,CAAC,CAAC,CAAC,CACF,KAAC,cAAc,IAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAC,QAAQ,GAAG,CACzD,EACA,MAAM,CAAC,KAAK,KA5BR,MAAM,CAAC,KAAK,CA6BV,CACV,CAAC;gBACJ,CAAC,CAAC,GACE,EAGL,UAAU,KAAK,IAAI,IAAI,CACtB,YAAG,SAAS,EAAC,sCAAsC,YAChD,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,EAAE,WAAW,GAChE,CACL,EAGA,gBAAgB,EAAE,aAAa,IAAI,CAClC,eACE,SAAS,EAAE,EAAE,CACX,+DAA+D,EAC/D,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,CAC/C,EACD,IAAI,EAAC,OAAO,aAEZ,eAAM,SAAS,EAAE,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,YACvD,gBAAgB,CAAC,aAAa,GAC1B,EACP,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,yEAAyE,EACzE,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,CAC7C,wBAGM,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,EAAE,CACX,yCAAyC,EACzC,yEAAyE,EACzE,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,CAC5C,uBAGM,IACL,CACP,IACG,CACP,CAAC;AACJ,CAAC;AAQD,MAAM,eAAe,GAAyB;IAC5C,OAAO,EACL,+EAA+E;IACjF,GAAG,EAAE,4EAA4E;IACjF,QAAQ,EACN,oFAAoF;IACtF,MAAM,EACJ,wFAAwF;CAC3F,CAAC;AAEF,MAAM,aAAa,GAGf;IACF,+DAA+D;IAC/D,OAAO,EAAE;QACP,SAAS,EACP,4EAA4E;QAC9E,IAAI,EAAE,oCAAoC;QAC1C,OAAO,EACL,2EAA2E;QAC7E,MAAM,EACJ,mFAAmF;KACtF;IACD,GAAG,EAAE;QACH,SAAS,EACP,wEAAwE;QAC1E,IAAI,EAAE,kCAAkC;QACxC,OAAO,EACL,uEAAuE;QACzE,MAAM,EACJ,+EAA+E;KAClF;IACD,QAAQ,EAAE;QACR,SAAS,EACP,gFAAgF;QAClF,IAAI,EAAE,sCAAsC;QAC5C,OAAO,EACL,+EAA+E;QACjF,MAAM,EACJ,uFAAuF;KAC1F;IACD,MAAM,EAAE;QACN,SAAS,EACP,4EAA4E;QAC9E,IAAI,EAAE,oCAAoC;QAC1C,OAAO,EACL,2EAA2E;QAC7E,MAAM,EACJ,mFAAmF;KACtF;CACF,CAAC;AAEF,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAE9E,uEAAuE;AACvE,MAAM,UAAU,cAAc,CAAC,EAC7B,IAAI,EACJ,SAAS,GAIV;IACC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,KAAC,SAAS,IAAC,SAAS,EAAE,SAAS,GAAI,CAAC;QAC7C,KAAK,UAAU;YACb,OAAO,KAAC,aAAa,IAAC,SAAS,EAAE,SAAS,GAAI,CAAC;QACjD,KAAK,QAAQ;YACX,OAAO,KAAC,SAAS,IAAC,SAAS,EAAE,SAAS,GAAI,CAAC;QAC7C;YACE,OAAO,KAAC,QAAQ,IAAC,SAAS,EAAE,SAAS,GAAI,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAmC;IAC9D,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,iBAAa,MAAM,aAChK,eAAM,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,GAAG,EAAC,MAAM,EAAC,GAAG,EAAC,EAAE,EAAC,KAAK,GAAG,EACpD,eAAM,CAAC,EAAC,8BAA8B,GAAG,IACrC,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAmC;IAC/D,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,iBAAa,MAAM,aAChK,iBAAQ,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,KAAK,GAAG,EAChC,eAAM,CAAC,EAAC,oCAAoC,GAAG,EAC/C,iBAAQ,EAAE,EAAC,MAAM,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,GAAG,GAAG,EACnC,eAAM,CAAC,EAAC,6CAA6C,GAAG,IACpD,CACP,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,SAAS,EAAmC;IACnE,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,iBAAa,MAAM,aAChK,eAAM,CAAC,EAAC,oBAAoB,GAAG,EAC/B,eAAM,CAAC,EAAC,oBAAoB,GAAG,EAC/B,eAAM,CAAC,EAAC,UAAU,GAAG,EACrB,eAAM,CAAC,EAAC,kEAAkE,GAAG,IACzE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,SAAS,EAAmC;IAC/D,OAAO,CACL,eAAK,SAAS,EAAE,SAAS,EAAE,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,cAAc,EAAC,WAAW,EAAC,KAAK,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,iBAAa,MAAM,aAChK,iBAAQ,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,GAAG,EAC9B,eAAM,CAAC,EAAC,SAAS,GAAG,EACpB,eAAM,CAAC,EAAC,yFAAyF,GAAG,IAChG,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,UAAU,EACV,SAAS,GAIV;IACC,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,CACL,gBACE,SAAS,EAAE,EAAE,CACX,yHAAyH,EACzH,SAAS,CACV,aAED,KAAC,cAAc,IAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAC,UAAU,GAAG,EACzD,MAAM,CAAC,KAAK,IACR,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"VisibilitySelector.js","sourceRoot":"","sources":["../../src/library/VisibilitySelector.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,cAAc,EACd,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gBAAgB,GAEjB,MAAM,oBAAoB,CAAC;AA6C5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,UAAU,EACV,OAAO,EACP,kBAAkB,EAClB,IAAI,GAAG,QAAQ,EACf,SAAS,GAAG,KAAK,EACjB,QAAQ,GAAG,KAAK,EAChB,SAAS,GAAG,qBAAqB,EACjC,SAAS,GACe;IACxB,MAAM,eAAe,GAAG,yBAAyB,EAAE,CAAC;IACpD,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,GAC1D,gBAAgB,EAAE,CAAC;IAErB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,uEAAuE;IACvE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GACrC,QAAQ,CAA+B,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,MAAM,CAA+B,EAAE,CAAC,CAAC;IAE5D,MAAM,mBAAmB,GAAG,QAAQ,IAAI,SAAS,CAAC;IAElD,sEAAsE;IACtE,gEAAgE;IAChE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC;YAAE,OAAO,OAAO,CAAC;QAChE,OAAO,CAAC,GAAG,OAAO,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;IACpD,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAE1B,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,MAA6B,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACpD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC,EACD,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAC/B,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CACvB,CAAC,KAA4B,EAAE,EAAE;QAC/B,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC,EACD,CAAC,kBAAkB,CAAC,CACrB,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,MAA6B,EAAE,EAAE;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,OAAO;QACT,CAAC;QAED,sEAAsE;QACtE,gEAAgE;QAChE,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,KAAK,CAAC,KAAK,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,KAAK,OAAO,CAAC;gBACX,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK;gBACjC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,WAAW;gBAC7C,YAAY,EAAE,QAAQ,MAAM,CAAC,KAAK,EAAE;gBACpC,iEAAiE;gBACjE,8DAA8D;gBAC9D,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBACb,IAAI,EAAE;oBAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC,EACD,CAAC,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,CAAC,CACrE,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE;QAC9B,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC;QACtC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;QAC5C,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACpC,CAAC,EACD,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAC1B,CAAC;IAEF,MAAM,gBAAgB,GAAG,WAAW,CAClC,CAAC,CAAyC,EAAE,KAAa,EAAE,EAAE;QAC3D,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,WAAW,CAAC;YACjB,KAAK,YAAY;gBACf,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,SAAS,CAAC;YACf,KAAK,WAAW;gBACd,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM;YACR,KAAK,MAAM;gBACT,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,eAAe,CAAC,CAAC,CAAC,CAAC;gBACnB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;gBAC/B,MAAM;YACR,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;gBACzC,eAAe,CAAC,IAAI,CAAC,CAAC;gBACtB,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;gBAClC,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC,EACD,CAAC,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,CACrC,CAAC;IAEF,6EAA6E;IAC7E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,qBAAqB,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5E,OAAO,GAAG,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,CACb,KAAC,aAAa,IACZ,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,YAAY,GACtB,CACH,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,IAAwB,EAAE,EAAE,CAC9C,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CACtC,KAAC,mBAAmB,IAElB,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;YACV,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACjC,CAAC,EACD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,KAAK,MAAM,CAAC,KAAK,EACvC,aAAa,EAAE,IAAI,KAAK,QAAQ,IAAI,YAAY,KAAK,KAAK,EAC1D,QAAQ,EACN,IAAI,KAAK,OAAO;YACd,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,KAAK;gBAC3B,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC,CAAC;YACN,CAAC,CAAC,YAAY,KAAK,KAAK;gBACtB,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC,CAAC,EAEV,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,EACpC,YAAY,EACV,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAE9D,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,KAAK,CAAC,IAtBvC,MAAM,CAAC,KAAK,CAuBjB,CACH,CAAC,CAAC;IAEL,2EAA2E;IAC3E,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,CACL,cACE,IAAI,EAAC,YAAY,gBACL,SAAS,mBACN,mBAAmB,IAAI,SAAS,EAC/C,SAAS,EAAE,EAAE,CACX,2DAA2D,EAC3D,mBAAmB,IAAI,gCAAgC,EACvD,SAAS,CACV,YAEA,UAAU,CAAC,OAAO,CAAC,GAChB,CACP,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,aAAa,GACjB,aAAa,KAAK,IAAI;QACpB,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC;QACzD,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO,CACL,8BACE,MAAC,OAAO,CAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,aAC7C,MAAC,OAAO,CAAC,OAAO,IACd,QAAQ,EAAE,mBAAmB,gBACjB,GAAG,SAAS,KAAK,OAAO,CAAC,KAAK,EAAE,EAC5C,SAAS,EAAE,EAAE,CACX,qBAAqB,EACrB,+DAA+D,EAC/D,yEAAyE,EACzE,kDAAkD,EAClD,SAAS,CACV,aAEA,SAAS,CAAC,CAAC,CAAC,CACX,eACE,SAAS,EAAC,8FAA8F,iBAC5F,MAAM,GAClB,CACH,CAAC,CAAC,CAAC,CACF,KAAC,cAAc,IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAC,UAAU,GAAG,CAC5D,EACA,OAAO,CAAC,KAAK,EACd,KAAC,SAAS,KAAG,IACG,EAElB,KAAC,OAAO,CAAC,MAAM,IAAC,SAAS,EAAE,eAAe,YACxC,KAAC,OAAO,CAAC,UAAU,IAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAC,OAAO,YAC9C,MAAC,OAAO,CAAC,KAAK,IACZ,IAAI,EAAC,SAAS,gBACF,SAAS,EACrB,SAAS,EAAE,EAAE,CACX,yEAAyE,EACzE,yDAAyD,CAC1D,aAEA,UAAU,CAAC,QAAQ,CAAC,EAEpB,aAAa,EAAE,aAAa,IAAI,CAC/B,eACE,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,EAAE,CACX,8DAA8D,EAC9D,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,CAC5C,aAED,eACE,SAAS,EAAE,EAAE,CACX,oCAAoC,EACpC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CACvC,YAEA,aAAa,CAAC,aAAa,GACvB,EACP,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACrC,SAAS,EAAE,EAAE,CACX,gDAAgD,EAChD,yEAAyE,EACzE,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CACzC,uBAGM,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EACzC,SAAS,EAAE,EAAE,CACX,2DAA2D,EAC3D,yEAAyE,EACzE,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,CAC1C,wBAGM,IACL,CACP,IACa,GACG,GACN,IACJ,EACd,MAAM,IACN,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CACL,cACE,SAAS,EAAC,yCAAyC,EACnD,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,iBACV,MAAM,YAElB,eAAM,CAAC,EAAC,oBAAoB,GAAG,GAC3B,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,UAAU,EACV,SAAS,GAIV;IACC,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,CACL,gBAAM,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC,aACnD,KAAC,cAAc,IAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAC,UAAU,GAAG,EACzD,MAAM,CAAC,KAAK,IACR,CACR,CAAC;AACJ,CAAC"}
@@ -13,11 +13,33 @@ export interface VisibilityLevelOption {
13
13
  /** One-line explanation shown under the selector for the current level. */
14
14
  readonly description: string;
15
15
  /**
16
- * Inline confirmation question shown when the user escalates TO this
17
- * level. Omitted for the least-exposed level (de-escalation never
18
- * confirms — revoking access is always safe).
16
+ * Light inline confirmation question shown inside the selector when the
17
+ * user escalates TO this level (e.g. private → org). Omitted for the
18
+ * least-exposed level (de-escalation never confirms — revoking access is
19
+ * always safe).
20
+ *
21
+ * Levels that expand access far beyond the owning org carry a
22
+ * {@link confirmDialog} instead; see the severity ladder on
23
+ * {@link VisibilityLevelOption}.
19
24
  */
20
25
  readonly confirmPrompt?: string;
26
+ /**
27
+ * Heavy confirmation shown as a modal {@link ConfirmDialog} when the user
28
+ * escalates TO this level. Reserved for levels that expose the resource
29
+ * beyond the owning organization (platform, public), where a blocking,
30
+ * audience-naming confirmation is warranted.
31
+ *
32
+ * The selector derives escalation severity purely from this data:
33
+ * `confirmDialog` present → modal; else `confirmPrompt` present → inline;
34
+ * else apply immediately. There is no per-level branching in the
35
+ * component.
36
+ */
37
+ readonly confirmDialog?: {
38
+ /** Modal title, phrased as a question (e.g. "Make this public?"). */
39
+ readonly title: string;
40
+ /** Body copy that names the exact audience and the consequence. */
41
+ readonly description: string;
42
+ };
21
43
  /** Color treatment for the selected segment and the confirmation prompt. */
22
44
  readonly tone: "private" | "org" | "platform" | "public";
23
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"visibilityLevels.d.ts","sourceRoot":"","sources":["../../src/library/visibilityLevels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC1D;AAiCD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC;IAC3C,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;CACvC;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,SAAS,qBAAqB,EAAE,CAOlC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,qBAAqB,EAUtE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,qBAAqB,GAChC,qBAAqB,CAWvB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM,CAEzE"}
1
+ {"version":3,"file":"visibilityLevels.d.ts","sourceRoot":"","sources":["../../src/library/visibilityLevels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;OASG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE;QACvB,qEAAqE;QACrE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,mEAAmE;QACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC1D;AAyCD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC;IAC3C,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;CACvC;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,SAAS,qBAAqB,EAAE,CAOlC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,qBAAqB,EAUtE,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,qBAAqB,GAChC,qBAAqB,CAWvB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM,CAEzE"}
@@ -16,14 +16,20 @@ const PLATFORM_OPTION = {
16
16
  value: ApiResourceVisibility.visibility_platform,
17
17
  label: "Platform",
18
18
  description: "All organizations managed by your platform",
19
- confirmPrompt: "Share with every organization managed by your platform?",
19
+ confirmDialog: {
20
+ title: "Share with your whole platform?",
21
+ description: "Every organization managed by your platform will be able to view and use this resource. You can return it to a narrower visibility at any time.",
22
+ },
20
23
  tone: "platform",
21
24
  };
22
25
  const PUBLIC_OPTION = {
23
26
  value: ApiResourceVisibility.visibility_public,
24
27
  label: "Public",
25
28
  description: "Anyone on Stigmer",
26
- confirmPrompt: "Make visible to all authenticated users?",
29
+ confirmDialog: {
30
+ title: "Make this public?",
31
+ description: "Anyone signed in to Stigmer will be able to view and use this resource. You can return it to a narrower visibility at any time.",
32
+ },
27
33
  tone: "public",
28
34
  };
29
35
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"visibilityLevels.js","sourceRoot":"","sources":["../../src/library/visibilityLevels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAyB/F,MAAM,cAAc,GAA0B;IAC5C,KAAK,EAAE,qBAAqB,CAAC,kBAAkB;IAC/C,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,qBAAqB;IAClC,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,UAAU,GAA0B;IACxC,KAAK,EAAE,qBAAqB,CAAC,cAAc;IAC3C,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,kCAAkC;IAC/C,aAAa,EAAE,kCAAkC;IACjD,IAAI,EAAE,KAAK;CACZ,CAAC;AAEF,MAAM,eAAe,GAA0B;IAC7C,KAAK,EAAE,qBAAqB,CAAC,mBAAmB;IAChD,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,4CAA4C;IACzD,aAAa,EAAE,yDAAyD;IACxE,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,MAAM,aAAa,GAA0B;IAC3C,KAAK,EAAE,qBAAqB,CAAC,iBAAiB;IAC9C,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE,0CAA0C;IACzD,IAAI,EAAE,QAAQ;CACf,CAAC;AAqBF;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAyC;IAEzC,IAAI,OAAO,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;QACvC,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,OAAO,CAAC,mBAAmB;QAChC,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,CAAC;QAC9D,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAqC;IAC1E,cAAc;IACd;QACE,GAAG,UAAU;QACb,WAAW,EAAE,qCAAqC;KACnD;IACD;QACE,GAAG,aAAa;QAChB,WAAW,EAAE,kCAAkC;KAChD;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAiC;IAEjC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,qBAAqB,CAAC,cAAc;YACvC,OAAO,UAAU,CAAC;QACpB,KAAK,qBAAqB,CAAC,mBAAmB;YAC5C,OAAO,eAAe,CAAC;QACzB,KAAK,qBAAqB,CAAC,iBAAiB;YAC1C,OAAO,aAAa,CAAC;QACvB;YACE,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAiC;IAC/D,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"visibilityLevels.js","sourceRoot":"","sources":["../../src/library/visibilityLevels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AA+C/F,MAAM,cAAc,GAA0B;IAC5C,KAAK,EAAE,qBAAqB,CAAC,kBAAkB;IAC/C,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,qBAAqB;IAClC,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,UAAU,GAA0B;IACxC,KAAK,EAAE,qBAAqB,CAAC,cAAc;IAC3C,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,kCAAkC;IAC/C,aAAa,EAAE,kCAAkC;IACjD,IAAI,EAAE,KAAK;CACZ,CAAC;AAEF,MAAM,eAAe,GAA0B;IAC7C,KAAK,EAAE,qBAAqB,CAAC,mBAAmB;IAChD,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,4CAA4C;IACzD,aAAa,EAAE;QACb,KAAK,EAAE,iCAAiC;QACxC,WAAW,EACT,iJAAiJ;KACpJ;IACD,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,MAAM,aAAa,GAA0B;IAC3C,KAAK,EAAE,qBAAqB,CAAC,iBAAiB;IAC9C,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE;QACb,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,iIAAiI;KACpI;IACD,IAAI,EAAE,QAAQ;CACf,CAAC;AAqBF;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAyC;IAEzC,IAAI,OAAO,CAAC,cAAc,KAAK,OAAO,EAAE,CAAC;QACvC,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,OAAO,CAAC,mBAAmB;QAChC,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,CAAC;QAC9D,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAqC;IAC1E,cAAc;IACd;QACE,GAAG,UAAU;QACb,WAAW,EAAE,qCAAqC;KACnD;IACD;QACE,GAAG,aAAa;QAChB,WAAW,EAAE,kCAAkC;KAChD;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,UAAiC;IAEjC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,qBAAqB,CAAC,cAAc;YACvC,OAAO,UAAU,CAAC;QACpB,KAAK,qBAAqB,CAAC,mBAAmB;YAC5C,OAAO,eAAe,CAAC;QACzB,KAAK,qBAAqB,CAAC,iBAAiB;YAC1C,OAAO,aAAa,CAAC;QACvB;YACE,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,UAAiC;IAC/D,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;AAC5C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stigmer/react",
3
- "version": "3.0.6",
3
+ "version": "3.0.7-dev.20260611143057",
4
4
  "description": "React provider and client hook for the Stigmer platform SDK",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -37,7 +37,7 @@
37
37
  "dependencies": {
38
38
  "@bufbuild/protovalidate": "^1.1.1",
39
39
  "@dagrejs/dagre": "^1.1.4",
40
- "@stigmer/theme": "3.0.6",
40
+ "@stigmer/theme": "3.0.7-dev.20260611143057",
41
41
  "diff": "^8.0.3",
42
42
  "fflate": "^0.8.2",
43
43
  "react-markdown": "^10.1.0",
@@ -49,8 +49,8 @@
49
49
  "peerDependencies": {
50
50
  "@base-ui/react": "^1.0.0",
51
51
  "@bufbuild/protobuf": "^2.8.0",
52
- "@stigmer/protos": "3.0.6",
53
- "@stigmer/sdk": "3.0.6",
52
+ "@stigmer/protos": "3.0.7-dev.20260611143057",
53
+ "@stigmer/sdk": "3.0.7-dev.20260611143057",
54
54
  "@tanstack/react-table": "^8.20.0",
55
55
  "@xyflow/react": "^12.0.0",
56
56
  "elkjs": "^0.9.0",
@@ -2,6 +2,9 @@ import { type ReactNode } from "react";
2
2
  import type { ResourceRef } from "@stigmer/sdk";
3
3
  import type { UseGitHubConnectionReturn } from "../github/useGitHubConnection";
4
4
  import type { WorkspaceFileLister } from "../workspace/WorkspaceFileLister";
5
+ import type { HarnessOption } from "../models/harness";
6
+ import type { RuntimeEnvProvider } from "./runtime-env";
7
+ import type { SessionAudience } from "./audience";
5
8
  /** Props for {@link NewSessionViewer}. */
6
9
  export interface NewSessionViewerProps {
7
10
  /** Organization slug. Required for session creation. */
@@ -31,6 +34,34 @@ export interface NewSessionViewerProps {
31
34
  * expandable file tree. (DD-004 capability injection, DD-011 opt-in.)
32
35
  */
33
36
  readonly workspaceFileLister?: WorkspaceFileLister;
37
+ /**
38
+ * Supplies host-app environment variables for the session's first
39
+ * execution (e.g. short-lived credentials for MCP tools, minted as
40
+ * the signed-in user). Evaluated at submit time, before the session
41
+ * is created; host values win over composer-collected env on key
42
+ * collisions. If the provider throws, the submission fails with an
43
+ * error surfaced via `onError` — see {@link RuntimeEnvProvider}.
44
+ */
45
+ readonly getRuntimeEnv?: RuntimeEnvProvider;
46
+ /**
47
+ * Presentation audience for the launcher. `"endUser"` locks the
48
+ * pinned agent (when `initialAgentRef` is set) and hides the MCP
49
+ * server, skill, and session-variable pickers — for product-embedded
50
+ * chat where the agent is configured upstream by the platform. The
51
+ * model selector, interaction mode, harness selector, attachments,
52
+ * and workspace picker remain. See {@link SessionAudience}.
53
+ *
54
+ * @default "integrator"
55
+ */
56
+ readonly audience?: SessionAudience;
57
+ /**
58
+ * Harness pre-selected for new sessions when the user has not made
59
+ * an explicit choice yet. The user can still switch before starting
60
+ * the session, and their explicit choice wins on subsequent visits.
61
+ *
62
+ * @default "native"
63
+ */
64
+ readonly defaultHarness?: HarnessOption;
34
65
  /** Agent to auto-select on mount (used for draft flows). */
35
66
  readonly initialAgentRef?: ResourceRef;
36
67
  /**
@@ -96,5 +127,5 @@ export interface NewSessionViewerProps {
96
127
  * />
97
128
  * ```
98
129
  */
99
- export declare function NewSessionViewer({ org, onSessionCreated, onError, gitHubConnection, enableGitHub, enableLocal, onBrowseLocalFolder, workspaceFileLister, initialAgentRef, initialInstanceId, initialAttachments, heading, placeholder, initialRows, autoFocus, footerContent, className, }: NewSessionViewerProps): import("react/jsx-runtime").JSX.Element;
130
+ export declare function NewSessionViewer({ org, onSessionCreated, onError, gitHubConnection, enableGitHub, enableLocal, onBrowseLocalFolder, workspaceFileLister, getRuntimeEnv, audience, defaultHarness, initialAgentRef, initialInstanceId, initialAttachments, heading, placeholder, initialRows, autoFocus, footerContent, className, }: NewSessionViewerProps): import("react/jsx-runtime").JSX.Element;
100
131
  //# sourceMappingURL=NewSessionViewer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NewSessionViewer.d.ts","sourceRoot":"","sources":["../../src/session/NewSessionViewer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAQ5E,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7C;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;IACtD,gEAAgE;IAChE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,gEAAgE;IAChE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE5D;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAEnD,4DAA4D;IAC5D,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,2DAA2D;IAC3D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC;IAErC,kFAAkF;IAClF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;IAEnC,yDAAyD;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,gBAAgB,EAChB,OAAO,EACP,gBAAgB,EAChB,YAAmB,EACnB,WAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,OAA2C,EAC3C,WAAsD,EACtD,WAAe,EACf,SAAgB,EAChB,aAAa,EACb,SAAS,GACV,EAAE,qBAAqB,2CAoKvB"}
1
+ {"version":3,"file":"NewSessionViewer.d.ts","sourceRoot":"","sources":["../../src/session/NewSessionViewer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAkC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAG5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,QAAQ,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAE7C;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;IACtD,gEAAgE;IAChE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,gEAAgE;IAChE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE5D;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAEnD;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAE5C;;;;;;;;;OASG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAEpC;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC;IAExC,4DAA4D;IAC5D,QAAQ,CAAC,eAAe,CAAC,EAAE,WAAW,CAAC;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,2DAA2D;IAC3D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC;IAErC,kFAAkF;IAClF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,CAAC;IAEnC,yDAAyD;IACzD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,gBAAgB,EAChB,OAAO,EACP,gBAAgB,EAChB,YAAmB,EACnB,WAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,QAAuB,EACvB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,OAA2C,EAC3C,WAAsD,EACtD,WAAe,EACf,SAAgB,EAChB,aAAa,EACb,SAAS,GACV,EAAE,qBAAqB,2CAgLvB"}