@d34dman/flowdrop 0.0.61 → 0.0.63
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/README.md +6 -0
- package/dist/adapters/WorkflowAdapter.d.ts +1 -1
- package/dist/adapters/agentspec/AgentSpecAdapter.js +3 -1
- package/dist/api/client.d.ts +4 -0
- package/dist/api/client.js +6 -1
- package/dist/api/enhanced-client.js +7 -6
- package/dist/components/App.svelte +143 -219
- package/dist/components/CanvasBanner.stories.svelte +25 -0
- package/dist/components/CanvasBanner.stories.svelte.d.ts +27 -0
- package/dist/components/CanvasBanner.svelte +2 -2
- package/dist/components/ConfigForm.svelte +37 -36
- package/dist/components/ConfigPanel.stories.svelte +38 -0
- package/dist/components/ConfigPanel.stories.svelte.d.ts +27 -0
- package/dist/components/ConfigPanel.svelte +2 -2
- package/dist/components/ConnectionLine.svelte +2 -2
- package/dist/components/FlowDropZone.svelte +18 -2
- package/dist/components/FlowDropZone.svelte.d.ts +2 -0
- package/dist/components/LoadingSpinner.stories.svelte +30 -0
- package/dist/components/LoadingSpinner.stories.svelte.d.ts +27 -0
- package/dist/components/Logo.stories.svelte +22 -0
- package/dist/components/Logo.stories.svelte.d.ts +27 -0
- package/dist/components/Logo.svelte +33 -13
- package/dist/components/Logo.svelte.d.ts +1 -1
- package/dist/components/MarkdownDisplay.stories.svelte +21 -0
- package/dist/components/MarkdownDisplay.stories.svelte.d.ts +27 -0
- package/dist/components/MarkdownDisplay.svelte +4 -3
- package/dist/components/Navbar.stories.svelte +41 -0
- package/dist/components/Navbar.stories.svelte.d.ts +27 -0
- package/dist/components/Navbar.svelte +4 -4
- package/dist/components/NodeSidebar.svelte +12 -12
- package/dist/components/NodeStatusOverlay.stories.svelte +74 -0
- package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +27 -0
- package/dist/components/PipelineStatus.svelte +11 -4
- package/dist/components/PortCoordinateTracker.svelte +1 -1
- package/dist/components/SchemaForm.stories.svelte +101 -0
- package/dist/components/SchemaForm.stories.svelte.d.ts +27 -0
- package/dist/components/SchemaForm.svelte +17 -12
- package/dist/components/SettingsModal.svelte +3 -3
- package/dist/components/SettingsPanel.svelte +23 -22
- package/dist/components/StatusIcon.stories.svelte +60 -0
- package/dist/components/StatusIcon.stories.svelte.d.ts +27 -0
- package/dist/components/StatusIcon.svelte +7 -0
- package/dist/components/StatusLabel.stories.svelte +17 -0
- package/dist/components/StatusLabel.stories.svelte.d.ts +27 -0
- package/dist/components/ThemeToggle.stories.svelte +25 -0
- package/dist/components/ThemeToggle.stories.svelte.d.ts +27 -0
- package/dist/components/ThemeToggle.svelte +8 -8
- package/dist/components/UniversalNode.svelte +1 -1
- package/dist/components/WorkflowEditor.svelte +298 -298
- package/dist/components/form/FormAutocomplete.svelte +20 -19
- package/dist/components/form/FormCheckboxGroup.stories.svelte +28 -0
- package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormField.svelte +3 -3
- package/dist/components/form/FormFieldLight.svelte +2 -2
- package/dist/components/form/FormFieldWrapper.stories.svelte +31 -0
- package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormFieldset.svelte +7 -7
- package/dist/components/form/FormNumberField.stories.svelte +33 -0
- package/dist/components/form/FormNumberField.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormRangeField.stories.svelte +31 -0
- package/dist/components/form/FormRangeField.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormSelect.stories.svelte +50 -0
- package/dist/components/form/FormSelect.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormTemplateEditor.svelte +2 -1
- package/dist/components/form/FormTextField.stories.svelte +30 -0
- package/dist/components/form/FormTextField.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormTextarea.stories.svelte +31 -0
- package/dist/components/form/FormTextarea.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormToggle.stories.svelte +30 -0
- package/dist/components/form/FormToggle.stories.svelte.d.ts +27 -0
- package/dist/components/form/FormUISchemaRenderer.svelte +1 -1
- package/dist/components/form/types.d.ts +15 -47
- package/dist/components/interrupt/ChoicePrompt.stories.svelte +43 -0
- package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +27 -0
- package/dist/components/interrupt/ChoicePrompt.svelte +24 -24
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +49 -0
- package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +27 -0
- package/dist/components/interrupt/ConfirmationPrompt.svelte +19 -19
- package/dist/components/interrupt/FormPrompt.svelte +15 -15
- package/dist/components/interrupt/InterruptBubble.svelte +202 -236
- package/dist/components/interrupt/InterruptBubble.svelte.d.ts +1 -1
- package/dist/components/interrupt/ReviewPrompt.stories.svelte +46 -0
- package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +27 -0
- package/dist/components/interrupt/ReviewPrompt.svelte +842 -0
- package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +23 -0
- package/dist/components/interrupt/TextInputPrompt.stories.svelte +34 -0
- package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +27 -0
- package/dist/components/interrupt/TextInputPrompt.svelte +21 -21
- package/dist/components/nodes/GatewayNode.stories.svelte +76 -0
- package/dist/components/nodes/GatewayNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/GatewayNode.svelte +19 -17
- package/dist/components/nodes/IdeaNode.stories.svelte +48 -0
- package/dist/components/nodes/IdeaNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/IdeaNode.svelte +10 -26
- package/dist/components/nodes/NotesNode.stories.svelte +69 -0
- package/dist/components/nodes/NotesNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/NotesNode.svelte +8 -8
- package/dist/components/nodes/SimpleNode.stories.svelte +101 -0
- package/dist/components/nodes/SimpleNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/SimpleNode.svelte +16 -24
- package/dist/components/nodes/SquareNode.stories.svelte +56 -0
- package/dist/components/nodes/SquareNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/SquareNode.svelte +13 -21
- package/dist/components/nodes/TerminalNode.stories.svelte +25 -0
- package/dist/components/nodes/TerminalNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/TerminalNode.svelte +7 -7
- package/dist/components/nodes/ToolNode.stories.svelte +71 -0
- package/dist/components/nodes/ToolNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/ToolNode.svelte +7 -15
- package/dist/components/nodes/WorkflowNode.stories.svelte +50 -0
- package/dist/components/nodes/WorkflowNode.stories.svelte.d.ts +26 -0
- package/dist/components/nodes/WorkflowNode.svelte +13 -13
- package/dist/components/playground/ChatPanel.svelte +48 -48
- package/dist/components/playground/ExecutionLogs.svelte +23 -23
- package/dist/components/playground/InputCollector.svelte +24 -24
- package/dist/components/playground/MessageBubble.stories.svelte +49 -0
- package/dist/components/playground/MessageBubble.stories.svelte.d.ts +27 -0
- package/dist/components/playground/MessageBubble.svelte +49 -46
- package/dist/components/playground/Playground.svelte +194 -129
- package/dist/components/playground/PlaygroundModal.svelte +5 -5
- package/dist/components/playground/SessionManager.svelte +26 -26
- package/dist/config/constants.d.ts +22 -0
- package/dist/config/constants.js +22 -0
- package/dist/config/endpoints.d.ts +19 -0
- package/dist/config/runtimeConfig.js +2 -1
- package/dist/core/index.d.ts +5 -2
- package/dist/core/index.js +9 -1
- package/dist/editor/index.d.ts +13 -9
- package/dist/editor/index.js +15 -11
- package/dist/form/code.d.ts +2 -1
- package/dist/form/code.js +1 -3
- package/dist/form/markdown.d.ts +2 -1
- package/dist/form/markdown.js +1 -3
- package/dist/helpers/workflowEditorHelper.js +18 -33
- package/dist/mocks/app-forms.js +1 -0
- package/dist/mocks/app-navigation.js +3 -1
- package/dist/mocks/app-stores.d.ts +4 -4
- package/dist/playground/index.d.ts +4 -3
- package/dist/playground/index.js +12 -10
- package/dist/playground/mount.js +6 -13
- package/dist/services/agentSpecExecutionService.js +2 -1
- package/dist/services/api.js +10 -18
- package/dist/services/apiVariableService.js +2 -1
- package/dist/services/autoSaveService.d.ts +3 -3
- package/dist/services/autoSaveService.js +21 -17
- package/dist/services/categoriesApi.js +13 -5
- package/dist/services/draftStorage.js +5 -4
- package/dist/services/dynamicSchemaService.js +4 -4
- package/dist/services/globalSave.d.ts +60 -11
- package/dist/services/globalSave.js +160 -83
- package/dist/services/historyService.d.ts +2 -1
- package/dist/services/historyService.js +7 -3
- package/dist/services/interruptService.js +9 -8
- package/dist/services/nodeExecutionService.js +14 -6
- package/dist/services/playgroundService.js +2 -1
- package/dist/services/portConfigApi.js +11 -7
- package/dist/services/toastService.d.ts +1 -1
- package/dist/services/toastService.js +6 -5
- package/dist/services/variableService.js +3 -2
- package/dist/settings/index.d.ts +1 -1
- package/dist/settings/index.js +1 -1
- package/dist/stores/{categoriesStore.d.ts → categoriesStore.svelte.d.ts} +3 -3
- package/dist/stores/{categoriesStore.js → categoriesStore.svelte.js} +15 -18
- package/dist/stores/editorStateMachine.svelte.d.ts +42 -0
- package/dist/stores/editorStateMachine.svelte.js +132 -0
- package/dist/stores/{historyStore.d.ts → historyStore.svelte.d.ts} +18 -15
- package/dist/stores/{historyStore.js → historyStore.svelte.js} +40 -21
- package/dist/stores/{interruptStore.d.ts → interruptStore.svelte.d.ts} +16 -15
- package/dist/stores/{interruptStore.js → interruptStore.svelte.js} +85 -94
- package/dist/stores/{playgroundStore.d.ts → playgroundStore.svelte.d.ts} +41 -33
- package/dist/stores/{playgroundStore.js → playgroundStore.svelte.js} +164 -84
- package/dist/stores/{portCoordinateStore.d.ts → portCoordinateStore.svelte.d.ts} +10 -4
- package/dist/stores/{portCoordinateStore.js → portCoordinateStore.svelte.js} +38 -35
- package/dist/stores/{settingsStore.d.ts → settingsStore.svelte.d.ts} +45 -28
- package/dist/stores/{settingsStore.js → settingsStore.svelte.js} +169 -128
- package/dist/stores/{workflowStore.d.ts → workflowStore.svelte.d.ts} +101 -65
- package/dist/stores/{workflowStore.js → workflowStore.svelte.js} +285 -239
- package/dist/stories/CanvasDecorator.svelte +50 -0
- package/dist/stories/CanvasDecorator.svelte.d.ts +8 -0
- package/dist/stories/NodeDecorator.svelte +74 -0
- package/dist/stories/NodeDecorator.svelte.d.ts +8 -0
- package/dist/stories/utils.d.ts +93 -0
- package/dist/stories/utils.js +122 -0
- package/dist/styles/base.css +114 -61
- package/dist/styles/toast.css +2 -2
- package/dist/styles/tokens.css +250 -185
- package/dist/svelte-app.d.ts +0 -6
- package/dist/svelte-app.js +13 -31
- package/dist/types/index.d.ts +2 -0
- package/dist/types/interrupt.d.ts +89 -5
- package/dist/types/interrupt.js +13 -1
- package/dist/types/playground.d.ts +5 -0
- package/dist/types/settings.js +1 -1
- package/dist/utils/colors.js +4 -4
- package/dist/utils/connections.js +33 -8
- package/dist/utils/icons.js +1 -1
- package/dist/utils/logger.d.ts +47 -0
- package/dist/utils/logger.js +72 -0
- package/dist/utils/nodeWrapper.js +1 -1
- package/dist/utils/sanitize.d.ts +19 -0
- package/dist/utils/sanitize.js +31 -0
- package/dist/utils/validation.d.ts +29 -0
- package/dist/utils/validation.js +39 -0
- package/package.json +243 -232
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
3
|
+
import FormTextarea from "./FormTextarea.svelte";
|
|
4
|
+
import { fn } from "storybook/test";
|
|
5
|
+
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
title: "Form/FormTextarea",
|
|
8
|
+
component: FormTextarea,
|
|
9
|
+
tags: ["autodocs"],
|
|
10
|
+
argTypes: {
|
|
11
|
+
value: { control: "text" },
|
|
12
|
+
placeholder: { control: "text" },
|
|
13
|
+
rows: { control: { type: "number", min: 1, max: 20 } },
|
|
14
|
+
required: { control: "boolean" },
|
|
15
|
+
disabled: { control: "boolean" },
|
|
16
|
+
},
|
|
17
|
+
args: {
|
|
18
|
+
id: "demo-textarea",
|
|
19
|
+
value: "",
|
|
20
|
+
onChange: fn(),
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<Story name="Default" args={{ placeholder: "Enter your message..." }} />
|
|
26
|
+
|
|
27
|
+
<Story name="Custom Rows" args={{ rows: 8, placeholder: "Larger text area..." }} />
|
|
28
|
+
|
|
29
|
+
<Story name="With Value" args={{ value: "This is a multiline\ntext content\nwith several lines." }} />
|
|
30
|
+
|
|
31
|
+
<Story name="Disabled" args={{ value: "Read-only content", disabled: true }} />
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export default FormTextarea;
|
|
2
|
+
type FormTextarea = SvelteComponent<{
|
|
3
|
+
[x: string]: never;
|
|
4
|
+
}, {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
}, {}> & {
|
|
7
|
+
$$bindings?: string | undefined;
|
|
8
|
+
};
|
|
9
|
+
declare const FormTextarea: $$__sveltets_2_IsomorphicComponent<{
|
|
10
|
+
[x: string]: never;
|
|
11
|
+
}, {
|
|
12
|
+
[evt: string]: CustomEvent<any>;
|
|
13
|
+
}, {}, {}, string>;
|
|
14
|
+
import FormTextarea from "./FormTextarea.svelte";
|
|
15
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
16
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
17
|
+
$$bindings?: Bindings;
|
|
18
|
+
} & Exports;
|
|
19
|
+
(internal: unknown, props: {
|
|
20
|
+
$$events?: Events;
|
|
21
|
+
$$slots?: Slots;
|
|
22
|
+
}): Exports & {
|
|
23
|
+
$set?: any;
|
|
24
|
+
$on?: any;
|
|
25
|
+
};
|
|
26
|
+
z_$$bindings?: Bindings;
|
|
27
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
3
|
+
import FormToggle from "./FormToggle.svelte";
|
|
4
|
+
import { fn } from "storybook/test";
|
|
5
|
+
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
title: "Form/FormToggle",
|
|
8
|
+
component: FormToggle,
|
|
9
|
+
tags: ["autodocs"],
|
|
10
|
+
argTypes: {
|
|
11
|
+
value: { control: "boolean" },
|
|
12
|
+
onLabel: { control: "text" },
|
|
13
|
+
offLabel: { control: "text" },
|
|
14
|
+
disabled: { control: "boolean" },
|
|
15
|
+
},
|
|
16
|
+
args: {
|
|
17
|
+
id: "demo-toggle",
|
|
18
|
+
value: false,
|
|
19
|
+
onChange: fn(),
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<Story name="Off" args={{ value: false }} />
|
|
25
|
+
|
|
26
|
+
<Story name="On" args={{ value: true }} />
|
|
27
|
+
|
|
28
|
+
<Story name="Custom Labels" args={{ value: true, onLabel: "Yes", offLabel: "No" }} />
|
|
29
|
+
|
|
30
|
+
<Story name="Disabled" args={{ value: true, disabled: true }} />
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export default FormToggle;
|
|
2
|
+
type FormToggle = SvelteComponent<{
|
|
3
|
+
[x: string]: never;
|
|
4
|
+
}, {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
}, {}> & {
|
|
7
|
+
$$bindings?: string | undefined;
|
|
8
|
+
};
|
|
9
|
+
declare const FormToggle: $$__sveltets_2_IsomorphicComponent<{
|
|
10
|
+
[x: string]: never;
|
|
11
|
+
}, {
|
|
12
|
+
[evt: string]: CustomEvent<any>;
|
|
13
|
+
}, {}, {}, string>;
|
|
14
|
+
import FormToggle from "./FormToggle.svelte";
|
|
15
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
16
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
17
|
+
$$bindings?: Bindings;
|
|
18
|
+
} & Exports;
|
|
19
|
+
(internal: unknown, props: {
|
|
20
|
+
$$events?: Events;
|
|
21
|
+
$$slots?: Slots;
|
|
22
|
+
}): Exports & {
|
|
23
|
+
$set?: any;
|
|
24
|
+
$on?: any;
|
|
25
|
+
};
|
|
26
|
+
z_$$bindings?: Bindings;
|
|
27
|
+
}
|
|
@@ -76,11 +76,11 @@ export interface OneOfItem {
|
|
|
76
76
|
/**
|
|
77
77
|
* Base properties shared by all form fields
|
|
78
78
|
*/
|
|
79
|
-
export interface BaseFieldProps {
|
|
79
|
+
export interface BaseFieldProps<T = unknown> {
|
|
80
80
|
/** Unique identifier for the field (used for id and name attributes) */
|
|
81
81
|
id: string;
|
|
82
82
|
/** Current value of the field */
|
|
83
|
-
value:
|
|
83
|
+
value: T;
|
|
84
84
|
/** Whether the field is required */
|
|
85
85
|
required?: boolean;
|
|
86
86
|
/** Whether the field is disabled */
|
|
@@ -90,84 +90,69 @@ export interface BaseFieldProps {
|
|
|
90
90
|
/** ARIA description ID for accessibility */
|
|
91
91
|
ariaDescribedBy?: string;
|
|
92
92
|
/** Callback when the field value changes */
|
|
93
|
-
onChange: (value:
|
|
93
|
+
onChange: (value: T) => void;
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
96
96
|
* Properties for text input fields
|
|
97
97
|
*/
|
|
98
|
-
export interface TextFieldProps extends BaseFieldProps {
|
|
99
|
-
value: string;
|
|
100
|
-
onChange: (value: string) => void;
|
|
98
|
+
export interface TextFieldProps extends BaseFieldProps<string> {
|
|
101
99
|
}
|
|
102
100
|
/**
|
|
103
101
|
* Properties for multiline text fields (textarea)
|
|
104
102
|
*/
|
|
105
|
-
export interface TextareaFieldProps extends BaseFieldProps {
|
|
106
|
-
value: string;
|
|
103
|
+
export interface TextareaFieldProps extends BaseFieldProps<string> {
|
|
107
104
|
/** Number of visible rows */
|
|
108
105
|
rows?: number;
|
|
109
|
-
onChange: (value: string) => void;
|
|
110
106
|
}
|
|
111
107
|
/**
|
|
112
108
|
* Properties for number input fields
|
|
113
109
|
*/
|
|
114
|
-
export interface NumberFieldProps extends BaseFieldProps {
|
|
115
|
-
value: number | string;
|
|
110
|
+
export interface NumberFieldProps extends BaseFieldProps<number | string> {
|
|
116
111
|
/** Minimum allowed value */
|
|
117
112
|
min?: number;
|
|
118
113
|
/** Maximum allowed value */
|
|
119
114
|
max?: number;
|
|
120
115
|
/** Step increment for the input */
|
|
121
116
|
step?: number;
|
|
122
|
-
onChange: (value: number | string) => void;
|
|
123
117
|
}
|
|
124
118
|
/**
|
|
125
119
|
* Properties for boolean toggle fields
|
|
126
120
|
*/
|
|
127
|
-
export interface ToggleFieldProps extends BaseFieldProps {
|
|
128
|
-
value: boolean;
|
|
121
|
+
export interface ToggleFieldProps extends BaseFieldProps<boolean> {
|
|
129
122
|
/** Label shown when toggle is on */
|
|
130
123
|
onLabel?: string;
|
|
131
124
|
/** Label shown when toggle is off */
|
|
132
125
|
offLabel?: string;
|
|
133
|
-
onChange: (value: boolean) => void;
|
|
134
126
|
}
|
|
135
127
|
/**
|
|
136
128
|
* Properties for range slider fields
|
|
137
129
|
*/
|
|
138
|
-
export interface RangeFieldProps extends BaseFieldProps {
|
|
139
|
-
value: number | string;
|
|
130
|
+
export interface RangeFieldProps extends BaseFieldProps<number | string> {
|
|
140
131
|
/** Minimum allowed value */
|
|
141
132
|
min?: number;
|
|
142
133
|
/** Maximum allowed value */
|
|
143
134
|
max?: number;
|
|
144
135
|
/** Step increment for the slider */
|
|
145
136
|
step?: number;
|
|
146
|
-
onChange: (value: number) => void;
|
|
147
137
|
}
|
|
148
138
|
/**
|
|
149
139
|
* Properties for select dropdown fields
|
|
150
140
|
*/
|
|
151
|
-
export interface SelectFieldProps extends BaseFieldProps {
|
|
152
|
-
value: string;
|
|
141
|
+
export interface SelectFieldProps extends BaseFieldProps<string> {
|
|
153
142
|
/** Available options for selection */
|
|
154
143
|
options: FieldOption[] | string[];
|
|
155
|
-
onChange: (value: string) => void;
|
|
156
144
|
}
|
|
157
145
|
/**
|
|
158
146
|
* Properties for checkbox group fields (multiple selection)
|
|
159
147
|
*/
|
|
160
|
-
export interface CheckboxGroupFieldProps extends BaseFieldProps {
|
|
161
|
-
value: string[];
|
|
148
|
+
export interface CheckboxGroupFieldProps extends BaseFieldProps<string[]> {
|
|
162
149
|
/** Available options for selection */
|
|
163
150
|
options: string[];
|
|
164
|
-
onChange: (value: string[]) => void;
|
|
165
151
|
}
|
|
166
152
|
/**
|
|
167
153
|
* Properties for array fields (dynamic lists)
|
|
168
154
|
*/
|
|
169
|
-
export interface ArrayFieldProps extends BaseFieldProps {
|
|
170
|
-
value: unknown[];
|
|
155
|
+
export interface ArrayFieldProps extends BaseFieldProps<unknown[]> {
|
|
171
156
|
/** Schema for array items */
|
|
172
157
|
itemSchema: FieldSchema;
|
|
173
158
|
/** Minimum number of items required */
|
|
@@ -176,29 +161,22 @@ export interface ArrayFieldProps extends BaseFieldProps {
|
|
|
176
161
|
maxItems?: number;
|
|
177
162
|
/** Label for the add button */
|
|
178
163
|
addLabel?: string;
|
|
179
|
-
onChange: (value: unknown[]) => void;
|
|
180
164
|
}
|
|
181
165
|
/**
|
|
182
166
|
* Properties for code editor fields (CodeMirror-based)
|
|
183
167
|
*/
|
|
184
|
-
export interface CodeEditorFieldProps extends BaseFieldProps {
|
|
185
|
-
/** Current value - can be string (raw JSON) or object */
|
|
186
|
-
value: unknown;
|
|
168
|
+
export interface CodeEditorFieldProps extends BaseFieldProps<unknown> {
|
|
187
169
|
/** Whether to use dark theme */
|
|
188
170
|
darkTheme?: boolean;
|
|
189
171
|
/** Editor height in pixels or CSS value */
|
|
190
172
|
height?: string;
|
|
191
173
|
/** Whether to auto-format JSON on blur */
|
|
192
174
|
autoFormat?: boolean;
|
|
193
|
-
/** Callback when value changes */
|
|
194
|
-
onChange: (value: unknown) => void;
|
|
195
175
|
}
|
|
196
176
|
/**
|
|
197
177
|
* Properties for markdown editor fields (CodeMirror 6-based)
|
|
198
178
|
*/
|
|
199
|
-
export interface MarkdownEditorFieldProps extends BaseFieldProps {
|
|
200
|
-
/** Current value (markdown string) */
|
|
201
|
-
value: string;
|
|
179
|
+
export interface MarkdownEditorFieldProps extends BaseFieldProps<string> {
|
|
202
180
|
/** Editor height in pixels or CSS value */
|
|
203
181
|
height?: string;
|
|
204
182
|
/** Whether to show the toolbar */
|
|
@@ -207,15 +185,11 @@ export interface MarkdownEditorFieldProps extends BaseFieldProps {
|
|
|
207
185
|
showStatusBar?: boolean;
|
|
208
186
|
/** Whether to enable spell checking */
|
|
209
187
|
spellChecker?: boolean;
|
|
210
|
-
/** Callback when value changes */
|
|
211
|
-
onChange: (value: string) => void;
|
|
212
188
|
}
|
|
213
189
|
/**
|
|
214
190
|
* Properties for template editor fields (CodeMirror with Twig/Liquid syntax)
|
|
215
191
|
*/
|
|
216
|
-
export interface TemplateEditorFieldProps extends BaseFieldProps {
|
|
217
|
-
/** Current template value */
|
|
218
|
-
value: string;
|
|
192
|
+
export interface TemplateEditorFieldProps extends BaseFieldProps<string> {
|
|
219
193
|
/** Whether to use dark theme */
|
|
220
194
|
darkTheme?: boolean;
|
|
221
195
|
/** Editor height in pixels or CSS value */
|
|
@@ -233,22 +207,16 @@ export interface TemplateEditorFieldProps extends BaseFieldProps {
|
|
|
233
207
|
variableSchema?: VariableSchema;
|
|
234
208
|
/** Placeholder variable example for the hint */
|
|
235
209
|
placeholderExample?: string;
|
|
236
|
-
/** Callback when value changes */
|
|
237
|
-
onChange: (value: string) => void;
|
|
238
210
|
}
|
|
239
211
|
/**
|
|
240
212
|
* Properties for autocomplete fields
|
|
241
213
|
* Fetches suggestions from a callback URL with support for debouncing and keyboard navigation
|
|
242
214
|
*/
|
|
243
|
-
export interface AutocompleteFieldProps extends BaseFieldProps {
|
|
244
|
-
/** Current value (single string or array of strings for multiple selection) */
|
|
245
|
-
value: string | string[];
|
|
215
|
+
export interface AutocompleteFieldProps extends BaseFieldProps<string | string[]> {
|
|
246
216
|
/** Autocomplete configuration from schema */
|
|
247
217
|
autocomplete: AutocompleteConfig;
|
|
248
218
|
/** Base URL for resolving relative callback URLs */
|
|
249
219
|
baseUrl?: string;
|
|
250
|
-
/** Callback when value changes */
|
|
251
|
-
onChange: (value: string | string[]) => void;
|
|
252
220
|
}
|
|
253
221
|
/**
|
|
254
222
|
* Autocomplete configuration imported from main types
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
3
|
+
import ChoicePrompt from "./ChoicePrompt.svelte";
|
|
4
|
+
import { fn } from "storybook/test";
|
|
5
|
+
import { createChoiceConfig } from "../../stories/utils.js";
|
|
6
|
+
|
|
7
|
+
const { Story } = defineMeta({
|
|
8
|
+
title: "Interrupt/ChoicePrompt",
|
|
9
|
+
component: ChoicePrompt,
|
|
10
|
+
tags: ["autodocs"],
|
|
11
|
+
args: {
|
|
12
|
+
config: createChoiceConfig(),
|
|
13
|
+
isResolved: false,
|
|
14
|
+
isSubmitting: false,
|
|
15
|
+
onSubmit: fn(),
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<Story name="Single Select" />
|
|
21
|
+
|
|
22
|
+
<Story name="Multi Select" args={{
|
|
23
|
+
config: createChoiceConfig({
|
|
24
|
+
message: "Select the features to enable:",
|
|
25
|
+
multiple: true,
|
|
26
|
+
options: [
|
|
27
|
+
{ value: "auth", label: "Authentication", description: "User login and signup" },
|
|
28
|
+
{ value: "analytics", label: "Analytics", description: "Usage tracking and metrics" },
|
|
29
|
+
{ value: "notifications", label: "Notifications", description: "Email and push alerts" },
|
|
30
|
+
{ value: "export", label: "Data Export", description: "CSV and JSON export" },
|
|
31
|
+
],
|
|
32
|
+
}),
|
|
33
|
+
}} />
|
|
34
|
+
|
|
35
|
+
<Story name="Resolved" args={{
|
|
36
|
+
isResolved: true,
|
|
37
|
+
resolvedValue: "high",
|
|
38
|
+
resolvedByUserName: "Bob",
|
|
39
|
+
}} />
|
|
40
|
+
|
|
41
|
+
<Story name="Submitting" args={{
|
|
42
|
+
isSubmitting: true,
|
|
43
|
+
}} />
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export default ChoicePrompt;
|
|
2
|
+
type ChoicePrompt = SvelteComponent<{
|
|
3
|
+
[x: string]: never;
|
|
4
|
+
}, {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
}, {}> & {
|
|
7
|
+
$$bindings?: string | undefined;
|
|
8
|
+
};
|
|
9
|
+
declare const ChoicePrompt: $$__sveltets_2_IsomorphicComponent<{
|
|
10
|
+
[x: string]: never;
|
|
11
|
+
}, {
|
|
12
|
+
[evt: string]: CustomEvent<any>;
|
|
13
|
+
}, {}, {}, string>;
|
|
14
|
+
import ChoicePrompt from "./ChoicePrompt.svelte";
|
|
15
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
16
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
17
|
+
$$bindings?: Bindings;
|
|
18
|
+
} & Exports;
|
|
19
|
+
(internal: unknown, props: {
|
|
20
|
+
$$events?: Events;
|
|
21
|
+
$$slots?: Slots;
|
|
22
|
+
}): Exports & {
|
|
23
|
+
$set?: any;
|
|
24
|
+
$on?: any;
|
|
25
|
+
};
|
|
26
|
+
z_$$bindings?: Bindings;
|
|
27
|
+
}
|
|
@@ -211,7 +211,7 @@
|
|
|
211
211
|
.choice-prompt {
|
|
212
212
|
display: flex;
|
|
213
213
|
flex-direction: column;
|
|
214
|
-
gap:
|
|
214
|
+
gap: var(--fd-space-md);
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
.choice-prompt--resolved {
|
|
@@ -224,33 +224,33 @@
|
|
|
224
224
|
|
|
225
225
|
.choice-prompt__message {
|
|
226
226
|
margin: 0;
|
|
227
|
-
font-size:
|
|
228
|
-
line-height:
|
|
227
|
+
font-size: var(--fd-interrupt-font-message);
|
|
228
|
+
line-height: var(--fd-interrupt-line-height);
|
|
229
229
|
color: var(--fd-foreground);
|
|
230
230
|
}
|
|
231
231
|
|
|
232
232
|
.choice-prompt__error {
|
|
233
233
|
display: flex;
|
|
234
234
|
align-items: center;
|
|
235
|
-
gap:
|
|
236
|
-
padding:
|
|
235
|
+
gap: var(--fd-space-2xs);
|
|
236
|
+
padding: var(--fd-space-xs) var(--fd-space-md);
|
|
237
237
|
background-color: var(--fd-error-muted);
|
|
238
238
|
border-radius: var(--fd-radius-md);
|
|
239
239
|
color: var(--fd-error);
|
|
240
|
-
font-size:
|
|
240
|
+
font-size: var(--fd-interrupt-font-error);
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
.choice-prompt__options {
|
|
244
244
|
display: flex;
|
|
245
245
|
flex-direction: column;
|
|
246
|
-
gap:
|
|
246
|
+
gap: var(--fd-space-xs);
|
|
247
247
|
}
|
|
248
248
|
|
|
249
249
|
.choice-prompt__option {
|
|
250
250
|
display: flex;
|
|
251
251
|
align-items: flex-start;
|
|
252
|
-
gap:
|
|
253
|
-
padding:
|
|
252
|
+
gap: var(--fd-space-md);
|
|
253
|
+
padding: var(--fd-space-md) var(--fd-space-xl);
|
|
254
254
|
background-color: var(--fd-muted);
|
|
255
255
|
border: 1px solid var(--fd-border);
|
|
256
256
|
border-radius: var(--fd-radius-lg);
|
|
@@ -321,37 +321,37 @@
|
|
|
321
321
|
}
|
|
322
322
|
|
|
323
323
|
.choice-prompt__option-description {
|
|
324
|
-
font-size:
|
|
324
|
+
font-size: var(--fd-interrupt-font-error);
|
|
325
325
|
color: var(--fd-muted-foreground);
|
|
326
|
-
line-height:
|
|
326
|
+
line-height: var(--fd-leading-tight);
|
|
327
327
|
}
|
|
328
328
|
|
|
329
329
|
.choice-prompt__info {
|
|
330
330
|
font-size: var(--fd-text-xs);
|
|
331
331
|
color: var(--fd-muted-foreground);
|
|
332
|
-
padding-left:
|
|
332
|
+
padding-left: var(--fd-space-3xs);
|
|
333
333
|
}
|
|
334
334
|
|
|
335
335
|
.choice-prompt__actions {
|
|
336
336
|
display: flex;
|
|
337
|
-
gap:
|
|
338
|
-
margin-top:
|
|
337
|
+
gap: var(--fd-space-md);
|
|
338
|
+
margin-top: var(--fd-space-3xs);
|
|
339
339
|
}
|
|
340
340
|
|
|
341
341
|
.choice-prompt__submit {
|
|
342
342
|
display: inline-flex;
|
|
343
343
|
align-items: center;
|
|
344
344
|
justify-content: center;
|
|
345
|
-
gap:
|
|
346
|
-
padding:
|
|
345
|
+
gap: var(--fd-space-xs);
|
|
346
|
+
padding: var(--fd-space-sm) var(--fd-space-2xl);
|
|
347
347
|
border-radius: var(--fd-radius-lg);
|
|
348
348
|
font-size: var(--fd-text-sm);
|
|
349
349
|
font-weight: 600;
|
|
350
350
|
font-family: inherit;
|
|
351
351
|
cursor: pointer;
|
|
352
|
-
transition: all
|
|
352
|
+
transition: all var(--fd-transition-normal);
|
|
353
353
|
border: none;
|
|
354
|
-
min-height:
|
|
354
|
+
min-height: var(--fd-interrupt-btn-min-height);
|
|
355
355
|
background: var(--fd-interrupt-btn-primary-bg);
|
|
356
356
|
color: var(--fd-primary-foreground);
|
|
357
357
|
box-shadow: 0 1px 3px var(--fd-interrupt-btn-primary-shadow);
|
|
@@ -371,8 +371,8 @@
|
|
|
371
371
|
}
|
|
372
372
|
|
|
373
373
|
.choice-prompt__spinner {
|
|
374
|
-
width:
|
|
375
|
-
height:
|
|
374
|
+
width: var(--fd-interrupt-spinner-size);
|
|
375
|
+
height: var(--fd-interrupt-spinner-size);
|
|
376
376
|
border: 2px solid var(--fd-border);
|
|
377
377
|
border-top-color: currentColor;
|
|
378
378
|
border-radius: 50%;
|
|
@@ -389,12 +389,12 @@
|
|
|
389
389
|
.choice-prompt__resolved-badge {
|
|
390
390
|
display: inline-flex;
|
|
391
391
|
align-items: center;
|
|
392
|
-
gap:
|
|
393
|
-
padding:
|
|
392
|
+
gap: var(--fd-space-2xs);
|
|
393
|
+
padding: var(--fd-space-2xs) var(--fd-space-md);
|
|
394
394
|
background-color: var(--fd-interrupt-badge-completed-bg);
|
|
395
|
-
border-radius:
|
|
395
|
+
border-radius: var(--fd-radius-full);
|
|
396
396
|
color: var(--fd-interrupt-badge-completed-text);
|
|
397
|
-
font-size:
|
|
397
|
+
font-size: var(--fd-text-xs);
|
|
398
398
|
font-weight: 500;
|
|
399
399
|
align-self: flex-start;
|
|
400
400
|
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<script module>
|
|
2
|
+
import { defineMeta } from "@storybook/addon-svelte-csf";
|
|
3
|
+
import ConfirmationPrompt from "./ConfirmationPrompt.svelte";
|
|
4
|
+
import { fn } from "storybook/test";
|
|
5
|
+
import { createConfirmationConfig } from "../../stories/utils.js";
|
|
6
|
+
|
|
7
|
+
const { Story } = defineMeta({
|
|
8
|
+
title: "Interrupt/ConfirmationPrompt",
|
|
9
|
+
component: ConfirmationPrompt,
|
|
10
|
+
tags: ["autodocs"],
|
|
11
|
+
args: {
|
|
12
|
+
config: createConfirmationConfig(),
|
|
13
|
+
isResolved: false,
|
|
14
|
+
isSubmitting: false,
|
|
15
|
+
onConfirm: fn(),
|
|
16
|
+
onDecline: fn(),
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<Story name="Pending" />
|
|
22
|
+
|
|
23
|
+
<Story name="Custom Labels" args={{
|
|
24
|
+
config: createConfirmationConfig({ message: "Deploy to production?", confirmLabel: "Deploy", cancelLabel: "Abort" }),
|
|
25
|
+
}} />
|
|
26
|
+
|
|
27
|
+
<Story name="Confirmed" args={{
|
|
28
|
+
isResolved: true,
|
|
29
|
+
resolvedValue: true,
|
|
30
|
+
}} />
|
|
31
|
+
|
|
32
|
+
<Story name="Declined" args={{
|
|
33
|
+
isResolved: true,
|
|
34
|
+
resolvedValue: false,
|
|
35
|
+
}} />
|
|
36
|
+
|
|
37
|
+
<Story name="Submitting" args={{
|
|
38
|
+
isSubmitting: true,
|
|
39
|
+
}} />
|
|
40
|
+
|
|
41
|
+
<Story name="With Error" args={{
|
|
42
|
+
error: "Network error: Failed to submit response",
|
|
43
|
+
}} />
|
|
44
|
+
|
|
45
|
+
<Story name="Resolved By User" args={{
|
|
46
|
+
isResolved: true,
|
|
47
|
+
resolvedValue: true,
|
|
48
|
+
resolvedByUserName: "Alice",
|
|
49
|
+
}} />
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export default ConfirmationPrompt;
|
|
2
|
+
type ConfirmationPrompt = SvelteComponent<{
|
|
3
|
+
[x: string]: never;
|
|
4
|
+
}, {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
}, {}> & {
|
|
7
|
+
$$bindings?: string | undefined;
|
|
8
|
+
};
|
|
9
|
+
declare const ConfirmationPrompt: $$__sveltets_2_IsomorphicComponent<{
|
|
10
|
+
[x: string]: never;
|
|
11
|
+
}, {
|
|
12
|
+
[evt: string]: CustomEvent<any>;
|
|
13
|
+
}, {}, {}, string>;
|
|
14
|
+
import ConfirmationPrompt from "./ConfirmationPrompt.svelte";
|
|
15
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
16
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
17
|
+
$$bindings?: Bindings;
|
|
18
|
+
} & Exports;
|
|
19
|
+
(internal: unknown, props: {
|
|
20
|
+
$$events?: Events;
|
|
21
|
+
$$slots?: Slots;
|
|
22
|
+
}): Exports & {
|
|
23
|
+
$set?: any;
|
|
24
|
+
$on?: any;
|
|
25
|
+
};
|
|
26
|
+
z_$$bindings?: Bindings;
|
|
27
|
+
}
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
.confirmation-prompt {
|
|
130
130
|
display: flex;
|
|
131
131
|
flex-direction: column;
|
|
132
|
-
gap:
|
|
132
|
+
gap: var(--fd-space-md);
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
.confirmation-prompt--resolved {
|
|
@@ -142,25 +142,25 @@
|
|
|
142
142
|
|
|
143
143
|
.confirmation-prompt__message {
|
|
144
144
|
margin: 0;
|
|
145
|
-
font-size:
|
|
146
|
-
line-height:
|
|
145
|
+
font-size: var(--fd-interrupt-font-message);
|
|
146
|
+
line-height: var(--fd-interrupt-line-height);
|
|
147
147
|
color: var(--fd-foreground);
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
.confirmation-prompt__error {
|
|
151
151
|
display: flex;
|
|
152
152
|
align-items: center;
|
|
153
|
-
gap:
|
|
154
|
-
padding:
|
|
153
|
+
gap: var(--fd-space-2xs);
|
|
154
|
+
padding: var(--fd-space-xs) var(--fd-space-md);
|
|
155
155
|
background-color: var(--fd-error-muted);
|
|
156
156
|
border-radius: var(--fd-radius-md);
|
|
157
157
|
color: var(--fd-error);
|
|
158
|
-
font-size:
|
|
158
|
+
font-size: var(--fd-interrupt-font-error);
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
.confirmation-prompt__actions {
|
|
162
162
|
display: flex;
|
|
163
|
-
gap:
|
|
163
|
+
gap: var(--fd-space-md);
|
|
164
164
|
flex-wrap: wrap;
|
|
165
165
|
}
|
|
166
166
|
|
|
@@ -168,16 +168,16 @@
|
|
|
168
168
|
display: inline-flex;
|
|
169
169
|
align-items: center;
|
|
170
170
|
justify-content: center;
|
|
171
|
-
gap:
|
|
172
|
-
padding:
|
|
173
|
-
border-radius:
|
|
174
|
-
font-size:
|
|
171
|
+
gap: var(--fd-space-xs);
|
|
172
|
+
padding: var(--fd-space-sm) var(--fd-space-2xl);
|
|
173
|
+
border-radius: var(--fd-radius-lg);
|
|
174
|
+
font-size: var(--fd-text-sm);
|
|
175
175
|
font-weight: 600;
|
|
176
176
|
font-family: inherit;
|
|
177
177
|
cursor: pointer;
|
|
178
|
-
transition: all
|
|
178
|
+
transition: all var(--fd-transition-normal);
|
|
179
179
|
border: 1px solid transparent;
|
|
180
|
-
min-height:
|
|
180
|
+
min-height: var(--fd-interrupt-btn-min-height);
|
|
181
181
|
min-width: 100px;
|
|
182
182
|
}
|
|
183
183
|
|
|
@@ -257,8 +257,8 @@
|
|
|
257
257
|
}
|
|
258
258
|
|
|
259
259
|
.confirmation-prompt__spinner {
|
|
260
|
-
width:
|
|
261
|
-
height:
|
|
260
|
+
width: var(--fd-interrupt-spinner-size);
|
|
261
|
+
height: var(--fd-interrupt-spinner-size);
|
|
262
262
|
border: 2px solid var(--fd-border);
|
|
263
263
|
border-top-color: currentColor;
|
|
264
264
|
border-radius: 50%;
|
|
@@ -280,12 +280,12 @@
|
|
|
280
280
|
.confirmation-prompt__resolved-badge {
|
|
281
281
|
display: inline-flex;
|
|
282
282
|
align-items: center;
|
|
283
|
-
gap:
|
|
284
|
-
padding:
|
|
283
|
+
gap: var(--fd-space-2xs);
|
|
284
|
+
padding: var(--fd-space-2xs) var(--fd-space-md);
|
|
285
285
|
background-color: var(--fd-interrupt-badge-completed-bg);
|
|
286
|
-
border-radius:
|
|
286
|
+
border-radius: var(--fd-radius-full);
|
|
287
287
|
color: var(--fd-interrupt-badge-completed-text);
|
|
288
|
-
font-size:
|
|
288
|
+
font-size: var(--fd-text-xs);
|
|
289
289
|
font-weight: 500;
|
|
290
290
|
align-self: flex-start;
|
|
291
291
|
}
|