From c0f48ecd9762f0c507933409525f5e22bf759a76 Mon Sep 17 00:00:00 2001 From: Ku6epXBOCTuK Date: Fri, 28 Aug 2026 17:02:52 +0500 Subject: [PATCH] feat: add new simple components --- web/src/lib/components/kit/FieldGrid.svelte | 31 +++++ web/src/lib/components/kit/FileChip.svelte | 37 ++++++ .../lib/components/kit/PipelineFooter.svelte | 44 +++++++ .../lib/components/kit/PreviewStack.svelte | 22 ++++ .../lib/components/kit/SectionLabel.svelte | 60 ++++++++++ web/src/lib/components/kit/ToggleRow.svelte | 28 +++++ .../lib/components/kit/WorkspaceLayout.svelte | 65 +++++++++++ .../preview/demo/WorkspaceHeader.svelte | 72 ++++++++++++ .../preview/tools/[id]/ParamControl.svelte | 65 +++++++++++ .../preview/tools/[id]/PreviewPanel.svelte | 108 ++++++++++++++++++ .../preview/tools/[id]/SettingsPanel.svelte | 108 ++++++++++++++++++ 11 files changed, 640 insertions(+) create mode 100644 web/src/lib/components/kit/FieldGrid.svelte create mode 100644 web/src/lib/components/kit/FileChip.svelte create mode 100644 web/src/lib/components/kit/PipelineFooter.svelte create mode 100644 web/src/lib/components/kit/PreviewStack.svelte create mode 100644 web/src/lib/components/kit/SectionLabel.svelte create mode 100644 web/src/lib/components/kit/ToggleRow.svelte create mode 100644 web/src/lib/components/kit/WorkspaceLayout.svelte create mode 100644 web/src/routes/preview/demo/WorkspaceHeader.svelte create mode 100644 web/src/routes/preview/tools/[id]/ParamControl.svelte create mode 100644 web/src/routes/preview/tools/[id]/PreviewPanel.svelte create mode 100644 web/src/routes/preview/tools/[id]/SettingsPanel.svelte diff --git a/web/src/lib/components/kit/FieldGrid.svelte b/web/src/lib/components/kit/FieldGrid.svelte new file mode 100644 index 0000000..ad44e02 --- /dev/null +++ b/web/src/lib/components/kit/FieldGrid.svelte @@ -0,0 +1,31 @@ + + +
+ {@render children()} +
+ + diff --git a/web/src/lib/components/kit/FileChip.svelte b/web/src/lib/components/kit/FileChip.svelte new file mode 100644 index 0000000..de2a9ac --- /dev/null +++ b/web/src/lib/components/kit/FileChip.svelte @@ -0,0 +1,37 @@ + + +
+ + {name} + {#if size}{size}{/if} +
+ + diff --git a/web/src/lib/components/kit/PipelineFooter.svelte b/web/src/lib/components/kit/PipelineFooter.svelte new file mode 100644 index 0000000..ffd9ef2 --- /dev/null +++ b/web/src/lib/components/kit/PipelineFooter.svelte @@ -0,0 +1,44 @@ + + + + + diff --git a/web/src/lib/components/kit/PreviewStack.svelte b/web/src/lib/components/kit/PreviewStack.svelte new file mode 100644 index 0000000..529aad1 --- /dev/null +++ b/web/src/lib/components/kit/PreviewStack.svelte @@ -0,0 +1,22 @@ + + +
+ {@render children()} +
+ + diff --git a/web/src/lib/components/kit/SectionLabel.svelte b/web/src/lib/components/kit/SectionLabel.svelte new file mode 100644 index 0000000..6d8eb3a --- /dev/null +++ b/web/src/lib/components/kit/SectionLabel.svelte @@ -0,0 +1,60 @@ + + +
+
+ {label} + {title}{#if meta}{meta}{/if} +
+ {#if actions} +
+ {@render actions()} +
+ {/if} +
+ + diff --git a/web/src/lib/components/kit/ToggleRow.svelte b/web/src/lib/components/kit/ToggleRow.svelte new file mode 100644 index 0000000..604a516 --- /dev/null +++ b/web/src/lib/components/kit/ToggleRow.svelte @@ -0,0 +1,28 @@ + + + + + diff --git a/web/src/lib/components/kit/WorkspaceLayout.svelte b/web/src/lib/components/kit/WorkspaceLayout.svelte new file mode 100644 index 0000000..9c6079e --- /dev/null +++ b/web/src/lib/components/kit/WorkspaceLayout.svelte @@ -0,0 +1,65 @@ + + +
+
{@render settings()}
+
{@render preview()}
+
+ + diff --git a/web/src/routes/preview/demo/WorkspaceHeader.svelte b/web/src/routes/preview/demo/WorkspaceHeader.svelte new file mode 100644 index 0000000..f95d3d5 --- /dev/null +++ b/web/src/routes/preview/demo/WorkspaceHeader.svelte @@ -0,0 +1,72 @@ + + +
+
+
+
+ {eyebrowA}{#if eyebrowB}/{eyebrowB}{/if} +
+

{title}

+ {#if lede}

{lede}

{/if} +
+ {#if file} + + {/if} +
+
+ + diff --git a/web/src/routes/preview/tools/[id]/ParamControl.svelte b/web/src/routes/preview/tools/[id]/ParamControl.svelte new file mode 100644 index 0000000..4e4bb41 --- /dev/null +++ b/web/src/routes/preview/tools/[id]/ParamControl.svelte @@ -0,0 +1,65 @@ + + +{#if param.type === "color"} + onInput(v)} + /> +{:else if param.type === "slider"} + onInput(v)} + /> +{:else if param.type === "select"} + onInput(v)} + /> +{:else if param.type === "checkbox"} + onInput(v)} + /> +{:else if param.type === "text"} + onInput(v)} + /> +{:else if param.type === "number"} + onInput(v)} + /> +{/if} diff --git a/web/src/routes/preview/tools/[id]/PreviewPanel.svelte b/web/src/routes/preview/tools/[id]/PreviewPanel.svelte new file mode 100644 index 0000000..e89aba4 --- /dev/null +++ b/web/src/routes/preview/tools/[id]/PreviewPanel.svelte @@ -0,0 +1,108 @@ + + + + + {#snippet actions()} + {#if resultUrl} + + {/if} + {/snippet} + +
+ {#if chainError} + + {/if} + {#if needsSource && !sourceImg} + + {:else if needsSource && sourceImg} + + {/if} + + {#if needsSource && sourceImg} + + + source + + + {/if} + {#each stepOutputs as out, i (out.toolId + i)} + + + {out.title} + + + {/each} + + {#if processing} + + {/if} + +
+
+ + diff --git a/web/src/routes/preview/tools/[id]/SettingsPanel.svelte b/web/src/routes/preview/tools/[id]/SettingsPanel.svelte new file mode 100644 index 0000000..087eff0 --- /dev/null +++ b/web/src/routes/preview/tools/[id]/SettingsPanel.svelte @@ -0,0 +1,108 @@ + + + + + {#snippet actions()} + AUTO + {/snippet} + +
+ {#if steps.length === 0} + + {/if} + {#each steps as step, i (step.toolId + i)} + {@const st = getTool(step.toolId)} + onRemoveStep(i)} + > + {#if st} +
+ {#each st.params as p (p.id)} + onSetParam(i, p.id, v)} + /> + {/each} +
+ {/if} +
+ {/each} +
+ +
+ onSetAddId(v)} + /> + +
+
+
+ +