@xyne/workflow-ui 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/automations/CreateWorkflowDialog.d.ts +1 -1
- package/dist/components/automations/CreateWorkflowDialog.d.ts.map +1 -1
- package/dist/components/automations/CreateWorkflowDialog.js +14 -27
- package/dist/components/automations/CreateWorkflowDialog.js.map +1 -1
- package/dist/components/browser/EntryGrid.d.ts +3 -1
- package/dist/components/browser/EntryGrid.d.ts.map +1 -1
- package/dist/components/browser/EntryGrid.js +43 -38
- package/dist/components/browser/EntryGrid.js.map +1 -1
- package/dist/components/browser/EntryList.d.ts +3 -1
- package/dist/components/browser/EntryList.d.ts.map +1 -1
- package/dist/components/browser/EntryList.js +39 -35
- package/dist/components/browser/EntryList.js.map +1 -1
- package/dist/components/browser/MoveDialog.d.ts.map +1 -1
- package/dist/components/browser/MoveDialog.js +3 -1
- package/dist/components/browser/MoveDialog.js.map +1 -1
- package/dist/components/browser/NameDialog.d.ts.map +1 -1
- package/dist/components/browser/NameDialog.js +5 -2
- package/dist/components/browser/NameDialog.js.map +1 -1
- package/dist/components/browser/SearchField.js +1 -1
- package/dist/components/browser/SearchField.js.map +1 -1
- package/dist/components/browser/ViewToggle.js +5 -5
- package/dist/components/browser/ViewToggle.js.map +1 -1
- package/dist/components/builder/v3/ConditionEditorPanel.js +2 -2
- package/dist/components/builder/v3/ConditionEditorPanel.js.map +1 -1
- package/dist/components/builder/v3/DeleteStepDialog.js +1 -1
- package/dist/components/builder/v3/DeleteStepDialog.js.map +1 -1
- package/dist/components/builder/v3/DiscriminatedUnionEditor.js +1 -1
- package/dist/components/builder/v3/DiscriminatedUnionEditor.js.map +1 -1
- package/dist/components/builder/v3/EnhancedSchemaFormRenderer.js +1 -1
- package/dist/components/builder/v3/EnhancedSchemaFormRenderer.js.map +1 -1
- package/dist/components/builder/v3/InputSchemaBuilder.js +1 -1
- package/dist/components/builder/v3/InputSchemaBuilder.js.map +1 -1
- package/dist/components/builder/v3/SaveValidationDialog.js +1 -1
- package/dist/components/builder/v3/SaveValidationDialog.js.map +1 -1
- package/dist/components/builder/v3/StringArrayInput.js +1 -1
- package/dist/components/builder/v3/StringArrayInput.js.map +1 -1
- package/dist/components/builder/v3/SummaryDialog.js +1 -1
- package/dist/components/builder/v3/SummaryDialog.js.map +1 -1
- package/dist/components/builder/v3/SwitchCaseEditor.js +1 -1
- package/dist/components/builder/v3/SwitchCaseEditor.js.map +1 -1
- package/dist/components/builder/v3/VariableRefInput.js +1 -1
- package/dist/components/builder/v3/VariableRefInput.js.map +1 -1
- package/dist/components/dashboard/TriggerFormModal.js +1 -1
- package/dist/components/dashboard/TriggerFormModal.js.map +1 -1
- package/dist/components/execution/ApprovalReviewDisplay.d.ts.map +1 -1
- package/dist/components/execution/ApprovalReviewDisplay.js +5 -3
- package/dist/components/execution/ApprovalReviewDisplay.js.map +1 -1
- package/dist/components/execution/ApprovalsView.d.ts.map +1 -1
- package/dist/components/execution/ApprovalsView.js +91 -17
- package/dist/components/execution/ApprovalsView.js.map +1 -1
- package/dist/components/execution/PauseFormRenderer.d.ts.map +1 -1
- package/dist/components/execution/PauseFormRenderer.js +3 -2
- package/dist/components/execution/PauseFormRenderer.js.map +1 -1
- package/dist/components/execution/PauseInteractionPanel.js +1 -1
- package/dist/components/execution/PauseInteractionPanel.js.map +1 -1
- package/dist/components/execution/RerunDialog.js +1 -1
- package/dist/components/execution/RerunDialog.js.map +1 -1
- package/dist/components/execution/SidePanelShell.d.ts.map +1 -1
- package/dist/components/execution/SidePanelShell.js +2 -2
- package/dist/components/execution/SidePanelShell.js.map +1 -1
- package/dist/components/execution/ValueEditor.js +21 -21
- package/dist/components/execution/ValueEditor.js.map +1 -1
- package/dist/components/execution/origin/OriginTrace.d.ts +4 -2
- package/dist/components/execution/origin/OriginTrace.d.ts.map +1 -1
- package/dist/components/execution/origin/OriginTrace.js +9 -6
- package/dist/components/execution/origin/OriginTrace.js.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/runs/RunsFilters.js +1 -1
- package/dist/components/runs/RunsFilters.js.map +1 -1
- package/dist/components/runs/RunsTable.d.ts +3 -1
- package/dist/components/runs/RunsTable.d.ts.map +1 -1
- package/dist/components/runs/RunsTable.js +18 -28
- package/dist/components/runs/RunsTable.js.map +1 -1
- package/dist/components/runs/RunsView.d.ts.map +1 -1
- package/dist/components/runs/RunsView.js +51 -3
- package/dist/components/runs/RunsView.js.map +1 -1
- package/dist/components/schema-form/AttachmentFieldInput.js +8 -8
- package/dist/components/schema-form/AttachmentFieldInput.js.map +1 -1
- package/dist/components/schema-form/SchemaFormRenderer.js +4 -4
- package/dist/components/schema-form/SchemaFormRenderer.js.map +1 -1
- package/dist/components/shared/JsonView.d.ts +13 -0
- package/dist/components/shared/JsonView.d.ts.map +1 -0
- package/dist/components/shared/JsonView.js +59 -0
- package/dist/components/shared/JsonView.js.map +1 -0
- package/dist/components/shared/MarkdownEditor.d.ts.map +1 -1
- package/dist/components/shared/MarkdownEditor.js +10 -5
- package/dist/components/shared/MarkdownEditor.js.map +1 -1
- package/dist/components/shared/MarkdownView.d.ts +1 -1
- package/dist/components/shared/MarkdownView.d.ts.map +1 -1
- package/dist/components/shared/MarkdownView.js +33 -20
- package/dist/components/shared/MarkdownView.js.map +1 -1
- package/dist/components/shared/Select.d.ts +20 -0
- package/dist/components/shared/Select.d.ts.map +1 -0
- package/dist/components/shared/Select.js +50 -0
- package/dist/components/shared/Select.js.map +1 -0
- package/dist/components/shared/Toolbar.d.ts +17 -0
- package/dist/components/shared/Toolbar.d.ts.map +1 -0
- package/dist/components/shared/Toolbar.js +26 -0
- package/dist/components/shared/Toolbar.js.map +1 -0
- package/dist/components/workflows/WorkflowBrowser.d.ts +4 -1
- package/dist/components/workflows/WorkflowBrowser.d.ts.map +1 -1
- package/dist/components/workflows/WorkflowBrowser.js +123 -30
- package/dist/components/workflows/WorkflowBrowser.js.map +1 -1
- package/dist/components/workflows/WorkflowHome.d.ts +22 -0
- package/dist/components/workflows/WorkflowHome.d.ts.map +1 -0
- package/dist/components/workflows/WorkflowHome.js +33 -0
- package/dist/components/workflows/WorkflowHome.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
|
@@ -18,9 +18,9 @@ export function SchemaFormRenderer({ fields, values, errors, onChange, readOnly,
|
|
|
18
18
|
return (_jsx("div", { className: cn('space-y-4', classNames?.root, className), children: fields.map((field) => (_jsx(FieldRenderer, { field: field, value: getNestedValue(values, field.path), error: errors[field.path], onChange: (val) => onChange(field.path, val), readOnly: readOnly, classNames: classNames }, field.path))) }));
|
|
19
19
|
}
|
|
20
20
|
function FieldRenderer({ field, value, error, onChange, readOnly, classNames }) {
|
|
21
|
-
const inputClasses = cn('w-full rounded-lg border px-3 py-2 text-sm', 'bg-
|
|
22
|
-
? 'border-
|
|
23
|
-
: 'border-[var(--wui-border)] focus:border-[var(--wui-primary)] focus:ring-2 focus:ring-[var(--wui-primary)]
|
|
21
|
+
const inputClasses = cn('w-full rounded-lg border px-3 py-2 text-sm', 'bg-[var(--wui-surface)] text-[var(--wui-fg)]', 'outline-none transition-all', error
|
|
22
|
+
? 'border-[var(--wui-status-failed)] focus:border-[var(--wui-status-failed)] focus:ring-2 focus:ring-[color-mix(in_srgb,var(--wui-status-failed)_25%,transparent)]'
|
|
23
|
+
: 'border-[var(--wui-border)] focus:border-[var(--wui-primary)] focus:ring-2 focus:ring-[color-mix(in_srgb,var(--wui-primary)_12%,transparent)]', readOnly && 'opacity-60 cursor-not-allowed bg-[var(--wui-bg-subtle)]', classNames?.input);
|
|
24
24
|
const renderInput = () => {
|
|
25
25
|
const isAttachmentField = field.format === 'attachment' ||
|
|
26
26
|
(field.type === 'array' && field.itemSchema?.['format'] === 'attachment');
|
|
@@ -81,6 +81,6 @@ function FieldRenderer({ field, value, error, onChange, readOnly, classNames })
|
|
|
81
81
|
return (_jsx("input", { type: field.format === 'password' ? 'password' : 'text', value: String(value ?? ''), onChange: (e) => onChange(e.target.value), placeholder: field.placeholder ?? field.description, disabled: readOnly, className: inputClasses }));
|
|
82
82
|
}
|
|
83
83
|
};
|
|
84
|
-
return (_jsxs("div", { className: cn('space-y-1.5', classNames?.field), children: [_jsxs("label", { className: cn('flex items-center gap-1 text-xs font-medium text-[var(--wui-fg)]', classNames?.label), children: [field.label, field.required && _jsx("span", { className: "text-
|
|
84
|
+
return (_jsxs("div", { className: cn('space-y-1.5', classNames?.field), children: [_jsxs("label", { className: cn('flex items-center gap-1 text-xs font-medium text-[var(--wui-fg)]', classNames?.label), children: [field.label, field.required && _jsx("span", { className: "text-[var(--wui-status-failed)]", children: "*" }), field.acceptsVariableRef && (_jsx("span", { className: "ml-auto rounded bg-[var(--wui-primary-light)] px-1 py-0.5 text-[9px] font-semibold text-[var(--wui-primary)]", children: '{{var}}' }))] }), renderInput(), field.description && (_jsx("p", { className: cn('text-[11px] leading-relaxed text-[var(--wui-fg-muted)]', classNames?.description), children: field.description })), error && (_jsxs("p", { className: cn('flex items-center gap-1 text-[11px] text-[var(--wui-status-failed)]', classNames?.error), children: [_jsxs("svg", { width: "10", height: "10", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", children: [_jsx("circle", { cx: "12", cy: "12", r: "10" }), _jsx("path", { d: "M12 8v4" }), _jsx("path", { d: "M12 16h.01" })] }), error] }))] }));
|
|
85
85
|
}
|
|
86
86
|
//# sourceMappingURL=SchemaFormRenderer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaFormRenderer.js","sourceRoot":"","sources":["../../../src/components/schema-form/SchemaFormRenderer.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAmBrC,SAAS,cAAc,CAAC,GAA4B,EAAE,IAAY;IAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAY,GAAG,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC/F,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,MAAM,EACN,MAAM,EACN,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,GACc;IACxB,OAAO,CACL,cAAK,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,YACzD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,aAAa,IAEZ,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EACzC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EACzB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,EAC5C,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,IANjB,KAAK,CAAC,IAAI,CAOf,CACH,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAWD,SAAS,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAsB;IAChG,MAAM,YAAY,GAAG,EAAE,CACrB,4CAA4C,EAC5C
|
|
1
|
+
{"version":3,"file":"SchemaFormRenderer.js","sourceRoot":"","sources":["../../../src/components/schema-form/SchemaFormRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collapsible, syntax-coloured JSON tree. Used wherever a value is structured
|
|
3
|
+
* data (markdown ```json blocks, the origin panel's full request/output) so the
|
|
4
|
+
* reviewer can fold deep objects and scan values by colour instead of reading a
|
|
5
|
+
* raw monospace dump. Colours map to --wui status/brand tokens so it blends.
|
|
6
|
+
*/
|
|
7
|
+
/** Parse text as JSON only when it actually looks like an object/array. */
|
|
8
|
+
export declare function tryParseJson(text: string): unknown;
|
|
9
|
+
export declare function JsonView({ data, className }: {
|
|
10
|
+
data: unknown;
|
|
11
|
+
className?: string | undefined;
|
|
12
|
+
}): import("react").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=JsonView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonView.d.ts","sourceRoot":"","sources":["../../../src/components/shared/JsonView.tsx"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CASlD;AA6FD,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,+BAM9F"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { cn } from './cn.js';
|
|
4
|
+
/**
|
|
5
|
+
* Collapsible, syntax-coloured JSON tree. Used wherever a value is structured
|
|
6
|
+
* data (markdown ```json blocks, the origin panel's full request/output) so the
|
|
7
|
+
* reviewer can fold deep objects and scan values by colour instead of reading a
|
|
8
|
+
* raw monospace dump. Colours map to --wui status/brand tokens so it blends.
|
|
9
|
+
*/
|
|
10
|
+
/** Parse text as JSON only when it actually looks like an object/array. */
|
|
11
|
+
export function tryParseJson(text) {
|
|
12
|
+
const t = text.trim();
|
|
13
|
+
if (!t || (t[0] !== '{' && t[0] !== '['))
|
|
14
|
+
return undefined;
|
|
15
|
+
try {
|
|
16
|
+
const parsed = JSON.parse(t);
|
|
17
|
+
return parsed !== null && typeof parsed === 'object' ? parsed : undefined;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function Primitive({ value }) {
|
|
24
|
+
if (value === null)
|
|
25
|
+
return _jsx("span", { className: "text-[var(--wui-fg-muted)]", children: "null" });
|
|
26
|
+
switch (typeof value) {
|
|
27
|
+
case 'string':
|
|
28
|
+
return _jsxs("span", { className: "break-all text-[var(--wui-status-completed)]", children: ["\"", value, "\""] });
|
|
29
|
+
case 'number':
|
|
30
|
+
return _jsx("span", { className: "text-[var(--wui-status-paused)]", children: String(value) });
|
|
31
|
+
case 'boolean':
|
|
32
|
+
return _jsx("span", { className: "text-[var(--wui-status-running)]", children: String(value) });
|
|
33
|
+
default:
|
|
34
|
+
return _jsx("span", { className: "text-[var(--wui-fg)]", children: String(value) });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function Key({ name }) {
|
|
38
|
+
return (_jsxs(_Fragment, { children: [_jsxs("span", { className: "text-[var(--wui-primary)]", children: ["\"", name, "\""] }), _jsx("span", { className: "text-[var(--wui-fg-muted)]", children: ": " })] }));
|
|
39
|
+
}
|
|
40
|
+
function Node({ name, value, depth, defaultOpen }) {
|
|
41
|
+
const isContainer = value !== null && typeof value === 'object';
|
|
42
|
+
const [open, setOpen] = useState(defaultOpen);
|
|
43
|
+
if (!isContainer) {
|
|
44
|
+
return (_jsxs("div", { className: "whitespace-nowrap pl-[1.05rem]", children: [name !== undefined && _jsx(Key, { name: name }), _jsx(Primitive, { value: value })] }));
|
|
45
|
+
}
|
|
46
|
+
const isArray = Array.isArray(value);
|
|
47
|
+
const entries = isArray
|
|
48
|
+
? value.map((v, i) => [String(i), v])
|
|
49
|
+
: Object.entries(value);
|
|
50
|
+
const [openBr, closeBr] = isArray ? ['[', ']'] : ['{', '}'];
|
|
51
|
+
if (entries.length === 0) {
|
|
52
|
+
return (_jsxs("div", { className: "whitespace-nowrap pl-[1.05rem]", children: [name !== undefined && _jsx(Key, { name: name }), _jsxs("span", { className: "text-[var(--wui-fg-muted)]", children: [openBr, closeBr] })] }));
|
|
53
|
+
}
|
|
54
|
+
return (_jsxs("div", { children: [_jsxs("button", { type: "button", onClick: () => { setOpen((o) => !o); }, className: "flex w-full items-start gap-1 rounded text-left transition-colors hover:bg-[color-mix(in_srgb,var(--wui-fg)_5%,transparent)]", children: [_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", className: cn('mt-[3px] h-3 w-3 shrink-0 text-[var(--wui-fg-muted)] transition-transform', open && 'rotate-90'), children: _jsx("polyline", { points: "9 18 15 12 9 6" }) }), _jsxs("span", { className: "min-w-0", children: [name !== undefined && _jsx(Key, { name: name }), _jsx("span", { className: "text-[var(--wui-fg-muted)]", children: openBr }), !open && (_jsxs("span", { className: "text-[var(--wui-fg-muted)]", children: [' ', entries.length, " ", isArray ? 'items' : 'keys', " ", closeBr] }))] })] }), open && (_jsxs("div", { className: "ml-[0.34rem] border-l border-[color-mix(in_srgb,var(--wui-fg)_16%,transparent)] pl-2", children: [entries.map(([k, v]) => (_jsx(Node, { name: isArray ? undefined : k, value: v, depth: depth + 1, defaultOpen: depth + 1 < 2 }, k))), _jsx("div", { className: "pl-[1.05rem] text-[var(--wui-fg-muted)]", children: closeBr })] }))] }));
|
|
55
|
+
}
|
|
56
|
+
export function JsonView({ data, className }) {
|
|
57
|
+
return (_jsx("div", { className: cn('font-mono text-[11.5px] leading-relaxed', className), children: _jsx(Node, { value: data, depth: 0, defaultOpen: true }) }));
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=JsonView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonView.js","sourceRoot":"","sources":["../../../src/components/shared/JsonView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../../../src/components/shared/MarkdownEditor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../../../src/components/shared/MarkdownEditor.tsx"],"names":[],"mappings":"AAQA,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,4EAA4E;IAC5E,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,mBAAmB,+BAwDjG"}
|
|
@@ -5,6 +5,7 @@ import StarterKit from '@tiptap/starter-kit';
|
|
|
5
5
|
import Link from '@tiptap/extension-link';
|
|
6
6
|
import { Markdown } from 'tiptap-markdown';
|
|
7
7
|
import { cn } from './cn.js';
|
|
8
|
+
import { Select } from './Select.js';
|
|
8
9
|
/**
|
|
9
10
|
* WYSIWYG markdown editor for runtime reviewer input (approval-form text fields).
|
|
10
11
|
* You edit the rendered view directly; the stored value is markdown, so it
|
|
@@ -31,7 +32,7 @@ export function MarkdownEditor({ value, onChange, disabled, className, bare }) {
|
|
|
31
32
|
onChange(md);
|
|
32
33
|
},
|
|
33
34
|
editorProps: {
|
|
34
|
-
attributes: { class: 'min-h-[
|
|
35
|
+
attributes: { class: 'min-h-[7rem] max-h-[28rem] resize-y overflow-y-auto px-2.5 py-2 outline-none' },
|
|
35
36
|
},
|
|
36
37
|
});
|
|
37
38
|
// Sync external value changes (e.g. AI form-fill) without clobbering the
|
|
@@ -48,7 +49,7 @@ export function MarkdownEditor({ value, onChange, disabled, className, bare }) {
|
|
|
48
49
|
}, [disabled, editor]);
|
|
49
50
|
return (_jsxs("div", { className: cn(!bare && 'rounded-[var(--wui-radius-sm)] border border-[var(--wui-border)] bg-[var(--wui-bg)] focus-within:border-[var(--wui-primary)] focus-within:ring-1 focus-within:ring-[var(--wui-primary)]', disabled && 'opacity-60',
|
|
50
51
|
// WYSIWYG content styling — mirrors MarkdownView so editing matches the render.
|
|
51
|
-
'text-[13px] text-[var(--wui-fg)]', '[&_.ProseMirror]:leading-relaxed', '[&_h1]:text-base [&_h1]:font-bold [&_h1]:my-2', '[&_h2]:text-sm [&_h2]:font-bold [&_h2]:my-1.5', '[&_h3]:text-[13px] [&_h3]:font-bold [&_h3]:my-1', '[&_p]:my-1.5', '[&_ul]:my-1.5 [&_ul]:list-disc [&_ul]:pl-5', '[&_ol]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5', '[&_blockquote]:border-l-2 [&_blockquote]:border-
|
|
52
|
+
'text-[13px] text-[var(--wui-fg)]', '[&_.ProseMirror]:leading-relaxed', '[&_h1]:text-base [&_h1]:font-bold [&_h1]:my-2', '[&_h2]:text-sm [&_h2]:font-bold [&_h2]:my-1.5', '[&_h3]:text-[13px] [&_h3]:font-bold [&_h3]:my-1', '[&_p]:my-1.5', '[&_ul]:my-1.5 [&_ul]:list-disc [&_ul]:pl-5', '[&_ol]:my-1.5 [&_ol]:list-decimal [&_ol]:pl-5', '[&_blockquote]:border-l-2 [&_blockquote]:border-[var(--wui-border-strong)] [&_blockquote]:pl-3 [&_blockquote]:italic [&_blockquote]:text-[var(--wui-fg-muted)]', '[&_code]:rounded [&_code]:bg-[var(--wui-bg-muted)] [&_code]:px-1 [&_code]:py-0.5 [&_code]:font-mono [&_code]:text-[12px]', '[&_pre]:my-2 [&_pre]:rounded-md [&_pre]:bg-[var(--wui-bg-muted)] [&_pre]:p-3 [&_pre]:text-[12px] [&_pre]:text-[var(--wui-fg)] [&_pre_code]:bg-transparent [&_pre_code]:p-0 [&_pre_code]:text-inherit', '[&_hr]:my-3 [&_hr]:border-[var(--wui-border)]', '[&_a]:text-[var(--wui-primary)] [&_a]:underline', className), children: [_jsx(MarkdownToolbar, { editor: editor, disabled: disabled }), _jsx(EditorContent, { editor: editor })] }));
|
|
52
53
|
}
|
|
53
54
|
const ICON = { width: 15, height: 15, viewBox: '0 0 24 24', fill: 'none', stroke: 'currentColor', strokeWidth: 2, strokeLinecap: 'round', strokeLinejoin: 'round' };
|
|
54
55
|
function headingValue(editor) {
|
|
@@ -78,13 +79,17 @@ function MarkdownToolbar({ editor, disabled }) {
|
|
|
78
79
|
else
|
|
79
80
|
chain.setLink({ href: url }).run();
|
|
80
81
|
};
|
|
81
|
-
return (_jsxs("div", { className: "flex flex-wrap items-center gap-0.5 border-b border-[var(--wui-border)] px-1.5 py-1", children: [
|
|
82
|
-
|
|
82
|
+
return (_jsxs("div", { className: "flex flex-wrap items-center gap-0.5 border-b border-[var(--wui-border)] px-1.5 py-1", children: [_jsx(Select, { compact: true, value: headingValue(editor), options: [
|
|
83
|
+
{ value: 'p', label: 'Normal' },
|
|
84
|
+
{ value: 'h1', label: 'Heading 1' },
|
|
85
|
+
{ value: 'h2', label: 'Heading 2' },
|
|
86
|
+
{ value: 'h3', label: 'Heading 3' },
|
|
87
|
+
], onChange: (v) => {
|
|
83
88
|
const c = editor.chain().focus();
|
|
84
89
|
if (v === 'p')
|
|
85
90
|
c.setParagraph().run();
|
|
86
91
|
else
|
|
87
92
|
c.setHeading({ level: Number(v.slice(1)) }).run();
|
|
88
|
-
},
|
|
93
|
+
}, disabled: disabled, ariaLabel: "Text style", className: "mr-0.5 w-[92px]" }), _jsx(Divider, {}), _jsx(Item, { on: () => editor.chain().focus().toggleBold().run(), active: editor.isActive('bold'), title: "Bold", children: _jsx("span", { className: "text-[13px] font-bold leading-none", children: "B" }) }), _jsx(Item, { on: () => editor.chain().focus().toggleItalic().run(), active: editor.isActive('italic'), title: "Italic", children: _jsx("span", { className: "text-[13px] italic leading-none", style: { fontFamily: 'Georgia, serif' }, children: "I" }) }), _jsx(Item, { on: () => editor.chain().focus().toggleStrike().run(), active: editor.isActive('strike'), title: "Strikethrough", children: _jsx("span", { className: "text-[13px] leading-none line-through", children: "S" }) }), _jsx(Divider, {}), _jsx(Item, { on: () => editor.chain().focus().toggleBulletList().run(), active: editor.isActive('bulletList'), title: "Bulleted list", children: _jsxs("svg", { ...ICON, children: [_jsx("line", { x1: "9", y1: "6", x2: "20", y2: "6" }), _jsx("line", { x1: "9", y1: "12", x2: "20", y2: "12" }), _jsx("line", { x1: "9", y1: "18", x2: "20", y2: "18" }), _jsx("circle", { cx: "4.5", cy: "6", r: "1.2", fill: "currentColor", stroke: "none" }), _jsx("circle", { cx: "4.5", cy: "12", r: "1.2", fill: "currentColor", stroke: "none" }), _jsx("circle", { cx: "4.5", cy: "18", r: "1.2", fill: "currentColor", stroke: "none" })] }) }), _jsx(Item, { on: () => editor.chain().focus().toggleOrderedList().run(), active: editor.isActive('orderedList'), title: "Numbered list", children: _jsxs("svg", { ...ICON, children: [_jsx("line", { x1: "10", y1: "6", x2: "20", y2: "6" }), _jsx("line", { x1: "10", y1: "12", x2: "20", y2: "12" }), _jsx("line", { x1: "10", y1: "18", x2: "20", y2: "18" }), _jsx("path", { d: "M4 4.5h1V8", strokeWidth: "1.6" }), _jsx("path", { d: "M3.6 14.2c0-.6.5-1 1-1s1 .4 1 .9c0 .9-1.6 1.2-1.9 2.4H5.8", strokeWidth: "1.6" })] }) }), _jsx(Divider, {}), _jsx(Item, { on: setLink, active: editor.isActive('link'), title: "Link", children: _jsxs("svg", { ...ICON, children: [_jsx("path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" }), _jsx("path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" })] }) }), _jsx(Item, { on: () => editor.chain().focus().toggleCode().run(), active: editor.isActive('code'), title: "Inline code", children: _jsxs("svg", { ...ICON, children: [_jsx("polyline", { points: "16 18 22 12 16 6" }), _jsx("polyline", { points: "8 6 2 12 8 18" })] }) }), _jsx(Item, { on: () => editor.chain().focus().toggleCodeBlock().run(), active: editor.isActive('codeBlock'), title: "Code block", children: _jsxs("svg", { ...ICON, children: [_jsx("rect", { x: "3", y: "4", width: "18", height: "16", rx: "2" }), _jsx("polyline", { points: "9 9.5 7.5 12 9 14.5" }), _jsx("polyline", { points: "15 9.5 16.5 12 15 14.5" })] }) }), _jsx(Divider, {}), _jsx(Item, { on: () => editor.chain().focus().toggleBlockquote().run(), active: editor.isActive('blockquote'), title: "Quote", children: _jsx("svg", { ...ICON, children: _jsx("path", { d: "M7 7H4v6h3l-1 4M17 7h-3v6h3l-1 4" }) }) }), _jsx(Item, { on: () => editor.chain().focus().setHorizontalRule().run(), title: "Divider", children: _jsx("svg", { ...ICON, children: _jsx("line", { x1: "4", y1: "12", x2: "20", y2: "12" }) }) })] }));
|
|
89
94
|
}
|
|
90
95
|
//# sourceMappingURL=MarkdownEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEditor.js","sourceRoot":"","sources":["../../../src/components/shared/MarkdownEditor.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAe,MAAM,eAAe,CAAC;AACtE,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,IAAI,MAAM,wBAAwB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"MarkdownEditor.js","sourceRoot":"","sources":["../../../src/components/shared/MarkdownEditor.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAe,MAAM,eAAe,CAAC;AACtE,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,IAAI,MAAM,wBAAwB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAarC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAuB;IAChG,MAAM,MAAM,GAAG,SAAS,CAAC;QACvB,UAAU,EAAE;YACV,UAAU,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACzE,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;SAC5F;QACD,OAAO,EAAE,KAAK,IAAI,EAAE;QACpB,QAAQ,EAAE,CAAC,QAAQ;QACnB,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;YACvB,MAAM,EAAE,GAAI,MAAM,CAAC,OAAoD,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YACtG,QAAQ,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;QACD,WAAW,EAAE;YACX,UAAU,EAAE,EAAE,KAAK,EAAE,8EAA8E,EAAE;SACtG;KACF,CAAC,CAAC;IAEH,yEAAyE;IACzE,oEAAoE;IACpE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,OAAO,GAAI,MAAM,CAAC,OAAoD,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC3G,IAAI,KAAK,KAAK,OAAO;YAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAEvB,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,CAAC,IAAI,IAAI,yLAAyL,EAClM,QAAQ,IAAI,YAAY;QACxB,gFAAgF;QAChF,kCAAkC,EAClC,kCAAkC,EAClC,+CAA+C,EAC/C,+CAA+C,EAC/C,iDAAiD,EACjD,cAAc,EACd,4CAA4C,EAC5C,+CAA+C,EAC/C,gKAAgK,EAChK,0HAA0H,EAC1H,sMAAsM,EACtM,+CAA+C,EAC/C,iDAAiD,EACjD,SAAS,CACV,aAED,KAAC,eAAe,IAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAI,EACvD,KAAC,aAAa,IAAC,MAAM,EAAE,MAAM,GAAI,IAC7B,CACP,CAAC;AACJ,CAAC;AAED,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,EAAE,aAAa,EAAE,OAAgB,EAAE,cAAc,EAAE,OAAgB,EAAE,CAAC;AAEtL,SAAS,YAAY,CAAC,MAAc;IAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAA6D;IACtG,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAA4E,EAAE,EAAE,CAAC,CAC1H,iBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,gBACA,KAAK,EACjB,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EACjD,SAAS,EAAE,EAAE,CACX,2DAA2D,EAC3D,MAAM;YACJ,CAAC,CAAC,sDAAsD;YACxD,CAAC,CAAC,uFAAuF,CAC5F,YAEA,QAAQ,GACF,CACV,CAAC;IACF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,eAAM,SAAS,EAAC,wCAAwC,GAAG,CAAC;IAElF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,IAAI,GAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,CAAwB,IAAI,EAAE,CAAC;QAChF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO;QACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,GAAG,KAAK,EAAE;YAAE,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC;;YACnC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1C,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,qFAAqF,aAElG,KAAC,MAAM,IACL,OAAO,QACP,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,EAC3B,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE;oBAC/B,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;oBACnC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;oBACnC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;iBACpC,EACD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACd,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC;oBACjC,IAAI,CAAC,KAAK,GAAG;wBAAE,CAAC,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,CAAC;;wBACjC,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAc,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;gBACtE,CAAC,EACD,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,YAAY,EACtB,SAAS,EAAC,iBAAiB,GAC3B,EACF,KAAC,OAAO,KAAG,EAEX,KAAC,IAAI,IAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAC,MAAM,YACtG,eAAM,SAAS,EAAC,oCAAoC,kBAAS,GACxD,EACP,KAAC,IAAI,IAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAC,QAAQ,YAC5G,eAAM,SAAS,EAAC,iCAAiC,EAAC,KAAK,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAU,GAC9F,EACP,KAAC,IAAI,IAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAC,eAAe,YACnH,eAAM,SAAS,EAAC,uCAAuC,kBAAS,GAC3D,EACP,KAAC,OAAO,KAAG,EAEX,KAAC,IAAI,IAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,EAAC,eAAe,YAC3H,kBAAS,IAAI,aAAE,eAAM,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,GAAG,EAAA,eAAM,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,EAAA,eAAM,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,EAAA,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,KAAK,EAAC,IAAI,EAAC,cAAc,EAAC,MAAM,EAAC,MAAM,GAAG,EAAA,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,KAAK,EAAC,IAAI,EAAC,cAAc,EAAC,MAAM,EAAC,MAAM,GAAG,EAAA,iBAAQ,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,KAAK,EAAC,IAAI,EAAC,cAAc,EAAC,MAAM,EAAC,MAAM,GAAG,IAAM,GACjV,EACP,KAAC,IAAI,IAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,EAAC,eAAe,YAC7H,kBAAS,IAAI,aAAE,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,GAAG,EAAA,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,EAAA,eAAM,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,EAAA,eAAM,CAAC,EAAC,YAAY,EAAC,WAAW,EAAC,KAAK,GAAG,EAAA,eAAM,CAAC,EAAC,2DAA2D,EAAC,WAAW,EAAC,KAAK,GAAG,IAAM,GACvQ,EACP,KAAC,OAAO,KAAG,EAEX,KAAC,IAAI,IAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAC,MAAM,YAC9D,kBAAS,IAAI,aAAE,eAAM,CAAC,EAAC,6DAA6D,GAAG,EAAA,eAAM,CAAC,EAAC,8DAA8D,GAAG,IAAM,GACjK,EACP,KAAC,IAAI,IAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAC,aAAa,YAC7G,kBAAS,IAAI,aAAE,mBAAU,MAAM,EAAC,kBAAkB,GAAG,EAAA,mBAAU,MAAM,EAAC,eAAe,GAAG,IAAM,GACzF,EACP,KAAC,IAAI,IAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,EAAC,YAAY,YACtH,kBAAS,IAAI,aAAE,eAAM,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,GAAG,GAAG,EAAA,mBAAU,MAAM,EAAC,qBAAqB,GAAG,EAAA,mBAAU,MAAM,EAAC,wBAAwB,GAAG,IAAM,GACvJ,EACP,KAAC,OAAO,KAAG,EAEX,KAAC,IAAI,IAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,EAAC,OAAO,YACnH,iBAAS,IAAI,YAAE,eAAM,CAAC,EAAC,kCAAkC,GAAG,GAAM,GAC7D,EACP,KAAC,IAAI,IAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAC,SAAS,YAC/E,iBAAS,IAAI,YAAE,eAAM,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,GAAG,GAAM,GACvD,IACH,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -3,7 +3,7 @@ export interface MarkdownViewProps {
|
|
|
3
3
|
children: string;
|
|
4
4
|
className?: string | undefined;
|
|
5
5
|
/**
|
|
6
|
-
* Drop the default body typography (`text-[13px] text-
|
|
6
|
+
* Drop the default body typography (`text-[13px] text-[var(--wui-fg)]`) so the
|
|
7
7
|
* caller's `className` fully controls size/colour — used when embedding
|
|
8
8
|
* markdown into an existing styled slot (a label, reason line, theme vars).
|
|
9
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownView.d.ts","sourceRoot":"","sources":["../../../src/components/shared/MarkdownView.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MarkdownView.d.ts","sourceRoot":"","sources":["../../../src/components/shared/MarkdownView.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,iBAAiB,+BA2D5E"}
|
|
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import ReactMarkdown from 'react-markdown';
|
|
3
3
|
import remarkGfm from 'remark-gfm';
|
|
4
4
|
import { cn } from './cn.js';
|
|
5
|
+
import { JsonView, tryParseJson } from './JsonView.js';
|
|
5
6
|
/**
|
|
6
7
|
* Renders markdown (GitHub-flavored) to safe React nodes — no
|
|
7
8
|
* `dangerouslySetInnerHTML`. Used for the workflow summary in both the builder
|
|
@@ -9,27 +10,39 @@ import { cn } from './cn.js';
|
|
|
9
10
|
* it works without a Tailwind typography plugin.
|
|
10
11
|
*/
|
|
11
12
|
export function MarkdownView({ children, className, bare }) {
|
|
12
|
-
return (_jsx("div", { className: cn('wui-markdown min-w-0 max-w-full', !bare && 'text-[13px] leading-relaxed text-
|
|
13
|
-
h1: ({ node: _n, ...p }) => _jsx("h1", { className: "mb-2 mt-
|
|
14
|
-
h2: ({ node: _n, ...p }) => _jsx("h2", { className: "mb-
|
|
15
|
-
h3: ({ node: _n, ...p }) => _jsx("h3", { className: "mb-1 mt-
|
|
16
|
-
p: ({ node: _n, ...p }) => _jsx("p", { className: "my-2 first:mt-0 last:mb-0", ...p }),
|
|
17
|
-
ul: ({ node: _n, ...p }) => _jsx("ul", { className: "my-2 list-disc space-y-
|
|
18
|
-
ol: ({ node: _n, ...p }) => _jsx("ol", { className: "my-2 list-decimal space-y-
|
|
19
|
-
li: ({ node: _n, ...p }) => _jsx("li", { className: "pl-0.5", ...p }),
|
|
20
|
-
a: ({ node: _n, ...p }) => _jsx("a", { className: "text-
|
|
21
|
-
code: ({ node: _n, className: c, ...p }) => c?.includes('language-') ? (_jsx("code", { className: cn('font-mono text-[12px]', c), ...p })) : (_jsx("code", { className: "rounded bg-
|
|
22
|
-
// Block code:
|
|
13
|
+
return (_jsx("div", { className: cn('wui-markdown min-w-0 max-w-full', !bare && 'text-[13px] leading-relaxed text-[var(--wui-fg)]', className), children: _jsx(ReactMarkdown, { remarkPlugins: [remarkGfm], components: {
|
|
14
|
+
h1: ({ node: _n, ...p }) => _jsx("h1", { className: "mb-2.5 mt-4 border-b border-[var(--wui-border)] pb-1.5 text-[15px] font-semibold text-[var(--wui-fg)] first:mt-0", ...p }),
|
|
15
|
+
h2: ({ node: _n, ...p }) => _jsx("h2", { className: "mb-2 mt-4 border-b border-[var(--wui-border)] pb-1 text-[13.5px] font-semibold text-[var(--wui-fg)] first:mt-0", ...p }),
|
|
16
|
+
h3: ({ node: _n, ...p }) => _jsx("h3", { className: "mb-1.5 mt-3 text-[12.5px] font-semibold text-[var(--wui-fg)] first:mt-0", ...p }),
|
|
17
|
+
p: ({ node: _n, ...p }) => _jsx("p", { className: "my-2 leading-relaxed first:mt-0 last:mb-0", ...p }),
|
|
18
|
+
ul: ({ node: _n, ...p }) => _jsx("ul", { className: "my-2 list-disc space-y-1 pl-5 marker:text-[var(--wui-fg-muted)]", ...p }),
|
|
19
|
+
ol: ({ node: _n, ...p }) => _jsx("ol", { className: "my-2 list-decimal space-y-1 pl-5 marker:text-[var(--wui-fg-muted)]", ...p }),
|
|
20
|
+
li: ({ node: _n, ...p }) => _jsx("li", { className: "pl-0.5 leading-relaxed", ...p }),
|
|
21
|
+
a: ({ node: _n, ...p }) => _jsx("a", { className: "font-medium text-[var(--wui-primary)] underline underline-offset-2 hover:text-[var(--wui-primary-hover)]", target: "_blank", rel: "noreferrer noopener", ...p }),
|
|
22
|
+
code: ({ node: _n, className: c, ...p }) => c?.includes('language-') ? (_jsx("code", { className: cn('font-mono text-[12px]', c), ...p })) : (_jsx("code", { className: "rounded-[4px] border border-[var(--wui-border)] bg-[var(--wui-bg-muted)] px-1.5 py-0.5 font-mono text-[0.85em] text-[var(--wui-fg)]", ...p })),
|
|
23
|
+
// Block code: the <pre> owns the styling and neutralizes the inline-code
|
|
23
24
|
// chrome on its <code> child (an indented/no-language block otherwise gets
|
|
24
|
-
// the
|
|
25
|
-
pre: ({ node: _n, ...p }) =>
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
// the inline-code background, leaving boxes inside the block).
|
|
26
|
+
pre: ({ node: _n, children, ...p }) => {
|
|
27
|
+
// A fenced block whose body is JSON renders as a collapsible tree.
|
|
28
|
+
const child = Array.isArray(children) ? children[0] : children;
|
|
29
|
+
const raw = child && typeof child === 'object' && 'props' in child
|
|
30
|
+
? child.props?.children
|
|
31
|
+
: undefined;
|
|
32
|
+
const text = typeof raw === 'string' ? raw : Array.isArray(raw) ? raw.map(String).join('') : '';
|
|
33
|
+
const json = tryParseJson(text);
|
|
34
|
+
if (json !== undefined) {
|
|
35
|
+
return (_jsx("div", { className: "my-2.5 overflow-x-auto rounded-lg border border-[var(--wui-border)] bg-[var(--wui-bg-muted)] p-3", children: _jsx(JsonView, { data: json }) }));
|
|
36
|
+
}
|
|
37
|
+
return _jsx("pre", { className: "my-2.5 overflow-x-auto rounded-lg border border-[var(--wui-border)] bg-[var(--wui-bg-muted)] p-3.5 text-[12px] leading-relaxed text-[var(--wui-fg)] [&_code]:border-0 [&_code]:bg-transparent [&_code]:p-0 [&_code]:text-inherit [&_code]:ring-0", ...p, children: children });
|
|
38
|
+
},
|
|
39
|
+
blockquote: ({ node: _n, ...p }) => _jsx("blockquote", { className: "my-2.5 border-l-[3px] border-[var(--wui-border-strong)] pl-3.5 text-[var(--wui-fg-muted)]", ...p }),
|
|
40
|
+
// GitHub-style tables: rounded bordered frame, header fill, zebra rows,
|
|
41
|
+
// and cell separators — scrolls horizontally inside the frame when wide.
|
|
42
|
+
table: ({ node: _n, ...p }) => (_jsx("div", { className: "my-3 max-w-full overflow-hidden rounded-lg border border-[var(--wui-border)]", children: _jsx("div", { className: "max-w-full overflow-x-auto", children: _jsx("table", { className: "w-full border-collapse text-[12px] [&_tbody_tr:nth-child(2n)]:bg-[color-mix(in_srgb,var(--wui-fg)_4%,transparent)] [&_tbody_tr:last-child_td]:border-b-0", ...p }) }) })),
|
|
43
|
+
th: ({ node: _n, ...p }) => _jsx("th", { className: "border-b border-[var(--wui-border)] bg-[var(--wui-bg-muted)] px-3 py-2 text-left font-semibold text-[var(--wui-fg)] [&:not(:last-child)]:border-r [&:not(:last-child)]:border-[var(--wui-border)]", ...p }),
|
|
44
|
+
td: ({ node: _n, ...p }) => _jsx("td", { className: "border-b border-[var(--wui-border)] px-3 py-2 align-top text-[var(--wui-fg)] [&:not(:last-child)]:border-r [&:not(:last-child)]:border-[var(--wui-border)]", ...p }),
|
|
45
|
+
hr: ({ node: _n, ...p }) => _jsx("hr", { className: "my-4 border-t border-[var(--wui-border)]", ...p }),
|
|
33
46
|
}, children: children }) }));
|
|
34
47
|
}
|
|
35
48
|
//# sourceMappingURL=MarkdownView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownView.js","sourceRoot":"","sources":["../../../src/components/shared/MarkdownView.tsx"],"names":[],"mappings":";AAAA,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAC3C,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"MarkdownView.js","sourceRoot":"","sources":["../../../src/components/shared/MarkdownView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface SelectOption {
|
|
2
|
+
value: string;
|
|
3
|
+
label: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Fully custom dropdown — a styled trigger + a themed option menu. Replaces the
|
|
7
|
+
* native <select> so the open popup is styled too (the native popup can't be).
|
|
8
|
+
* Closes on outside-click / Escape; the chosen option is highlighted in brand.
|
|
9
|
+
*/
|
|
10
|
+
export declare function Select({ value, options, onChange, placeholder, disabled, compact, className, ariaLabel, }: {
|
|
11
|
+
value: string;
|
|
12
|
+
options: SelectOption[];
|
|
13
|
+
onChange: (value: string) => void;
|
|
14
|
+
placeholder?: string | undefined;
|
|
15
|
+
disabled?: boolean | undefined;
|
|
16
|
+
compact?: boolean | undefined;
|
|
17
|
+
className?: string | undefined;
|
|
18
|
+
ariaLabel?: string | undefined;
|
|
19
|
+
}): import("react").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=Select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/shared/Select.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,OAAO,EACP,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,+BA0GA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { cn } from './cn.js';
|
|
4
|
+
/**
|
|
5
|
+
* Fully custom dropdown — a styled trigger + a themed option menu. Replaces the
|
|
6
|
+
* native <select> so the open popup is styled too (the native popup can't be).
|
|
7
|
+
* Closes on outside-click / Escape; the chosen option is highlighted in brand.
|
|
8
|
+
*/
|
|
9
|
+
export function Select({ value, options, onChange, placeholder, disabled, compact, className, ariaLabel, }) {
|
|
10
|
+
const [open, setOpen] = useState(false);
|
|
11
|
+
const [openUp, setOpenUp] = useState(false);
|
|
12
|
+
const ref = useRef(null);
|
|
13
|
+
const current = options.find((o) => o.value === value);
|
|
14
|
+
const toggle = () => {
|
|
15
|
+
if (!open) {
|
|
16
|
+
// Flip the menu above the trigger when there isn't room below (e.g. the
|
|
17
|
+
// last field, where the menu would otherwise clip under the action bar).
|
|
18
|
+
const rect = ref.current?.getBoundingClientRect();
|
|
19
|
+
setOpenUp(!!rect && rect.bottom > window.innerHeight - 290);
|
|
20
|
+
}
|
|
21
|
+
setOpen((o) => !o);
|
|
22
|
+
};
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (!open)
|
|
25
|
+
return undefined;
|
|
26
|
+
const onDoc = (e) => {
|
|
27
|
+
if (ref.current && !ref.current.contains(e.target))
|
|
28
|
+
setOpen(false);
|
|
29
|
+
};
|
|
30
|
+
const onKey = (e) => {
|
|
31
|
+
if (e.key === 'Escape')
|
|
32
|
+
setOpen(false);
|
|
33
|
+
};
|
|
34
|
+
document.addEventListener('mousedown', onDoc);
|
|
35
|
+
document.addEventListener('keydown', onKey);
|
|
36
|
+
return () => {
|
|
37
|
+
document.removeEventListener('mousedown', onDoc);
|
|
38
|
+
document.removeEventListener('keydown', onKey);
|
|
39
|
+
};
|
|
40
|
+
}, [open]);
|
|
41
|
+
return (_jsxs("div", { ref: ref, className: cn('relative', className), children: [_jsxs("button", { type: "button", disabled: disabled, "aria-haspopup": "listbox", "aria-expanded": open, "aria-label": ariaLabel, onClick: toggle, className: cn('flex w-full items-center justify-between gap-1.5 rounded-[var(--wui-radius-sm)] border bg-[var(--wui-bg)] text-left text-[var(--wui-fg)] transition-colors', compact ? 'h-7 px-1.5 text-[11px]' : 'px-2.5 py-1.5 text-sm', 'disabled:cursor-not-allowed disabled:opacity-50', open
|
|
42
|
+
? 'border-[var(--wui-primary)] ring-1 ring-[var(--wui-primary)]'
|
|
43
|
+
: 'border-[var(--wui-border)] hover:border-[var(--wui-border-strong)]'), children: [_jsx("span", { className: cn('min-w-0 truncate', !current && 'text-[var(--wui-fg-muted)]'), children: current?.label ?? placeholder ?? 'Select…' }), _jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round", className: cn('shrink-0 text-[var(--wui-fg-muted)] transition-transform', compact ? 'h-3 w-3' : 'h-3.5 w-3.5', open && 'rotate-180'), children: _jsx("polyline", { points: "6 9 12 15 18 9" }) })] }), open && (_jsx("div", { role: "listbox", className: cn('absolute left-0 z-50 max-h-56 w-max min-w-full max-w-[280px] overflow-y-auto rounded-[var(--wui-radius-sm)] border border-[var(--wui-border)] bg-[color-mix(in_srgb,var(--wui-bg-muted)_96%,var(--wui-fg)_4%)] py-1 shadow-lg', openUp ? 'bottom-full mb-1' : 'top-full mt-1'), children: options.length === 0 ? (_jsx("div", { className: "px-2.5 py-1.5 text-[13px] text-[var(--wui-fg-muted)]", children: "No options" })) : (options.map((opt) => {
|
|
44
|
+
const selected = opt.value === value;
|
|
45
|
+
return (_jsxs("button", { type: "button", role: "option", "aria-selected": selected, onClick: () => { onChange(opt.value); setOpen(false); }, className: cn('flex w-full items-center justify-between gap-2 whitespace-nowrap px-2.5 py-1.5 text-left text-[13px] transition-colors', selected
|
|
46
|
+
? 'bg-[color-mix(in_srgb,var(--wui-primary)_12%,transparent)] font-medium text-[var(--wui-primary)]'
|
|
47
|
+
: 'text-[var(--wui-fg)] hover:bg-[color-mix(in_srgb,var(--wui-fg)_6%,transparent)]'), children: [_jsx("span", { className: "min-w-0 truncate", children: opt.label }), selected && (_jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, strokeLinecap: "round", strokeLinejoin: "round", className: "h-3.5 w-3.5 shrink-0", children: _jsx("polyline", { points: "20 6 9 17 4 12" }) }))] }, opt.value));
|
|
48
|
+
})) }))] }));
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=Select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../src/components/shared/Select.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ButtonHTMLAttributes, ReactNode, SelectHTMLAttributes } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Shared section toolbar — one consistent bar across the workflow tabs
|
|
4
|
+
* (Workflows / Executions / Approvals) so every tab reads as the same surface.
|
|
5
|
+
* `left` holds context (breadcrumb / label); `right` holds controls.
|
|
6
|
+
*/
|
|
7
|
+
export declare function SectionToolbar({ left, right, className, }: {
|
|
8
|
+
left?: ReactNode;
|
|
9
|
+
right?: ReactNode;
|
|
10
|
+
className?: string | undefined;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
12
|
+
/** Base styling shared by every compact toolbar control (h-8, one radius). */
|
|
13
|
+
export declare const toolbarControl: string;
|
|
14
|
+
export declare function ToolbarButton({ className, ...props }: ButtonHTMLAttributes<HTMLButtonElement>): import("react").JSX.Element;
|
|
15
|
+
export declare function ToolbarIconButton({ className, ...props }: ButtonHTMLAttributes<HTMLButtonElement>): import("react").JSX.Element;
|
|
16
|
+
export declare function ToolbarSelect({ className, children, ...props }: SelectHTMLAttributes<HTMLSelectElement>): import("react").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=Toolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../../src/components/shared/Toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAGnF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,KAAK,EACL,SAAS,GACV,EAAE;IACD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC,+BAaA;AAED,8EAA8E;AAC9E,eAAO,MAAM,cAAc,QAKwB,CAAC;AAEpD,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,+BAEzC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,+BAEzC;AAED,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,+BAMzC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from './cn.js';
|
|
3
|
+
/**
|
|
4
|
+
* Shared section toolbar — one consistent bar across the workflow tabs
|
|
5
|
+
* (Workflows / Executions / Approvals) so every tab reads as the same surface.
|
|
6
|
+
* `left` holds context (breadcrumb / label); `right` holds controls.
|
|
7
|
+
*/
|
|
8
|
+
export function SectionToolbar({ left, right, className, }) {
|
|
9
|
+
return (_jsxs("div", { className: cn('flex h-12 shrink-0 flex-wrap items-center justify-between gap-x-3 gap-y-2 px-5', 'border-b border-[var(--wui-border)]', className), children: [_jsx("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: left }), right ? _jsx("div", { className: "flex items-center gap-1.5", children: right }) : null] }));
|
|
10
|
+
}
|
|
11
|
+
/** Base styling shared by every compact toolbar control (h-8, one radius). */
|
|
12
|
+
export const toolbarControl = 'inline-flex h-7 items-center justify-center gap-1 rounded-[var(--wui-control-radius)] border border-[var(--wui-control-border)] ' +
|
|
13
|
+
'bg-[var(--wui-control-bg)] text-[12px] font-medium text-[var(--wui-control-fg)] transition-colors ' +
|
|
14
|
+
'hover:bg-[var(--wui-control-bg-hover)] ' +
|
|
15
|
+
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[color-mix(in_srgb,var(--wui-primary)_30%,transparent)] ' +
|
|
16
|
+
'disabled:cursor-not-allowed disabled:opacity-50';
|
|
17
|
+
export function ToolbarButton({ className, ...props }) {
|
|
18
|
+
return _jsx("button", { type: "button", className: cn(toolbarControl, 'px-2', className), ...props });
|
|
19
|
+
}
|
|
20
|
+
export function ToolbarIconButton({ className, ...props }) {
|
|
21
|
+
return _jsx("button", { type: "button", className: cn(toolbarControl, 'w-7', className), ...props });
|
|
22
|
+
}
|
|
23
|
+
export function ToolbarSelect({ className, children, ...props }) {
|
|
24
|
+
return (_jsx("select", { className: cn(toolbarControl, 'cursor-pointer px-2 pr-7', className), ...props, children: children }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=Toolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../src/components/shared/Toolbar.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAE7B;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,IAAI,EACJ,KAAK,EACL,SAAS,GAKV;IACC,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,gFAAgF,EAChF,qCAAqC,EACrC,SAAS,CACV,aAED,cAAK,SAAS,EAAC,wCAAwC,YAAE,IAAI,GAAO,EACnE,KAAK,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,2BAA2B,YAAE,KAAK,GAAO,CAAC,CAAC,CAAC,IAAI,IACpE,CACP,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,cAAc,GACzB,kIAAkI;IAClI,oGAAoG;IACpG,yCAAyC;IACzC,6HAA6H;IAC7H,iDAAiD,CAAC;AAEpD,MAAM,UAAU,aAAa,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACgC;IACxC,OAAO,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,SAAS,EACT,GAAG,KAAK,EACgC;IACxC,OAAO,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,SAAS,CAAC,KAAM,KAAK,GAAI,CAAC;AAC9F,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAC5B,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACgC;IACxC,OAAO,CACL,iBAAQ,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,0BAA0B,EAAE,SAAS,CAAC,KAAM,KAAK,YACpF,QAAQ,GACF,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -8,7 +8,10 @@ export interface WorkflowBrowserProps {
|
|
|
8
8
|
path: FolderCrumb[];
|
|
9
9
|
onPathChange: (path: FolderCrumb[]) => void;
|
|
10
10
|
onToast?: (kind: 'success' | 'error', message: string) => void;
|
|
11
|
+
/** Suppress the embedded "waiting for approval" banner + inline approvals view
|
|
12
|
+
* (used when approvals live in a sibling tab, e.g. WorkflowHome). */
|
|
13
|
+
hideApprovals?: boolean;
|
|
11
14
|
className?: string;
|
|
12
15
|
}
|
|
13
|
-
export declare function WorkflowBrowser({ onSelectWorkflow, onViewRun, path: breadcrumb, onPathChange, onToast, className, }: WorkflowBrowserProps): import("react").JSX.Element;
|
|
16
|
+
export declare function WorkflowBrowser({ onSelectWorkflow, onViewRun, path: breadcrumb, onPathChange, onToast, hideApprovals, className, }: WorkflowBrowserProps): import("react").JSX.Element;
|
|
14
17
|
//# sourceMappingURL=WorkflowBrowser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowBrowser.d.ts","sourceRoot":"","sources":["../../../src/components/workflows/WorkflowBrowser.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WorkflowBrowser.d.ts","sourceRoot":"","sources":["../../../src/components/workflows/WorkflowBrowser.tsx"],"names":[],"mappings":"AAuKA,MAAM,WAAW,WAAW;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAEzD,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IACpE,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D;0EACsE;IACtE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,wBAAgB,eAAe,CAAC,EAC9B,gBAAgB,EAChB,SAAS,EACT,IAAI,EAAE,UAAU,EAChB,YAAY,EACZ,OAAO,EACP,aAAqB,EACrB,SAAS,GACV,EAAE,oBAAoB,+BAumBtB"}
|