From 8437c95a28343d6b24971d41776b8fd65e831810 Mon Sep 17 00:00:00 2001 From: Ku6epXBOCTuK Date: Thu, 27 Aug 2026 21:10:25 +0500 Subject: [PATCH] feat: add ui components --- docs/plan-redesign.md | 5 +- web/src/lib/components/kit/Button.svelte | 69 +++++++++++++++++++ .../lib/components/kit/CheckboxField.svelte | 32 +++++++++ web/src/lib/components/kit/CodeBlock.svelte | 50 ++++++++++++++ web/src/lib/components/kit/ColorField.svelte | 56 +++++++++++++++ .../lib/components/kit/DownloadButton.svelte | 23 +++++++ web/src/lib/components/kit/EmptyState.svelte | 42 +++++++++++ web/src/lib/components/kit/Field.svelte | 35 ++++++++++ web/src/lib/components/kit/Icon.svelte | 11 +++ web/src/lib/components/kit/IconButton.svelte | 64 +++++++++++++++++ web/src/lib/components/kit/SelectField.svelte | 42 +++++++++++ web/src/lib/components/kit/SliderField.svelte | 54 +++++++++++++++ web/src/lib/components/kit/TextField.svelte | 47 +++++++++++++ web/src/lib/components/kit/Toggle.svelte | 56 +++++++++++++++ 14 files changed, 584 insertions(+), 2 deletions(-) create mode 100644 web/src/lib/components/kit/Button.svelte create mode 100644 web/src/lib/components/kit/CheckboxField.svelte create mode 100644 web/src/lib/components/kit/CodeBlock.svelte create mode 100644 web/src/lib/components/kit/ColorField.svelte create mode 100644 web/src/lib/components/kit/DownloadButton.svelte create mode 100644 web/src/lib/components/kit/EmptyState.svelte create mode 100644 web/src/lib/components/kit/Field.svelte create mode 100644 web/src/lib/components/kit/Icon.svelte create mode 100644 web/src/lib/components/kit/IconButton.svelte create mode 100644 web/src/lib/components/kit/SelectField.svelte create mode 100644 web/src/lib/components/kit/SliderField.svelte create mode 100644 web/src/lib/components/kit/TextField.svelte create mode 100644 web/src/lib/components/kit/Toggle.svelte diff --git a/docs/plan-redesign.md b/docs/plan-redesign.md index 8fa10dd..d236c01 100644 --- a/docs/plan-redesign.md +++ b/docs/plan-redesign.md @@ -309,9 +309,10 @@ src/routes/preview/tools/[id]/+page.svelte - [x] **[C6]** Примитивы batch 2: `Panel`, `PanelHeading`, `SettingGroup`, `SettingsFooter`, `MetaRow`/`MetaList`, `Segmented`, `Badge`, `StepCard`, `ToolCard`, `ImageCard`/`PreviewTile`. -- [ ] **[C7]** Контролы: `Icon`, `IconButton`, `Button`, `Field`, `SliderField`, +- [x] **[C7]** Контролы: `Icon`, `IconButton`, `Button`, `Field`, `SliderField`, `ColorField`, `TextField`, `SelectField`, `CheckboxField`, `Toggle`, - `SegmentedControl`, `EmptyState`, `CodeBlock`, `DownloadButton`. + `SegmentedControl` (= `Segmented` из C6), `EmptyState`, `CodeBlock`, + `DownloadButton`. ### Шаг 2. Витрина kit (проверка компонентов) diff --git a/web/src/lib/components/kit/Button.svelte b/web/src/lib/components/kit/Button.svelte new file mode 100644 index 0000000..e052f1c --- /dev/null +++ b/web/src/lib/components/kit/Button.svelte @@ -0,0 +1,69 @@ + + + + + diff --git a/web/src/lib/components/kit/CheckboxField.svelte b/web/src/lib/components/kit/CheckboxField.svelte new file mode 100644 index 0000000..57f17dd --- /dev/null +++ b/web/src/lib/components/kit/CheckboxField.svelte @@ -0,0 +1,32 @@ + + + + + diff --git a/web/src/lib/components/kit/CodeBlock.svelte b/web/src/lib/components/kit/CodeBlock.svelte new file mode 100644 index 0000000..e072598 --- /dev/null +++ b/web/src/lib/components/kit/CodeBlock.svelte @@ -0,0 +1,50 @@ + + +
+ {#if lang}{lang}{/if} +
{code}
+ {#if copyable} +
+ oncopy?.()} /> +
+ {/if} +
+ + diff --git a/web/src/lib/components/kit/ColorField.svelte b/web/src/lib/components/kit/ColorField.svelte new file mode 100644 index 0000000..59de9ac --- /dev/null +++ b/web/src/lib/components/kit/ColorField.svelte @@ -0,0 +1,56 @@ + + + +
+ + +
+
+ + diff --git a/web/src/lib/components/kit/DownloadButton.svelte b/web/src/lib/components/kit/DownloadButton.svelte new file mode 100644 index 0000000..d933243 --- /dev/null +++ b/web/src/lib/components/kit/DownloadButton.svelte @@ -0,0 +1,23 @@ + + + + + diff --git a/web/src/lib/components/kit/EmptyState.svelte b/web/src/lib/components/kit/EmptyState.svelte new file mode 100644 index 0000000..5ece40c --- /dev/null +++ b/web/src/lib/components/kit/EmptyState.svelte @@ -0,0 +1,42 @@ + + +
+ {#if icon}{/if} + {title} + {#if description}{description}{/if} + {#if children}
{@render children()}
{/if} +
+ + diff --git a/web/src/lib/components/kit/Field.svelte b/web/src/lib/components/kit/Field.svelte new file mode 100644 index 0000000..4a47d9c --- /dev/null +++ b/web/src/lib/components/kit/Field.svelte @@ -0,0 +1,35 @@ + + +
+ {label} +
{@render children()}
+ {#if hint}{hint}{/if} +
+ + diff --git a/web/src/lib/components/kit/Icon.svelte b/web/src/lib/components/kit/Icon.svelte new file mode 100644 index 0000000..aa23c8c --- /dev/null +++ b/web/src/lib/components/kit/Icon.svelte @@ -0,0 +1,11 @@ + + + diff --git a/web/src/lib/components/kit/IconButton.svelte b/web/src/lib/components/kit/IconButton.svelte new file mode 100644 index 0000000..6726e5b --- /dev/null +++ b/web/src/lib/components/kit/IconButton.svelte @@ -0,0 +1,64 @@ + + + + + diff --git a/web/src/lib/components/kit/SelectField.svelte b/web/src/lib/components/kit/SelectField.svelte new file mode 100644 index 0000000..1995251 --- /dev/null +++ b/web/src/lib/components/kit/SelectField.svelte @@ -0,0 +1,42 @@ + + + + + + + diff --git a/web/src/lib/components/kit/SliderField.svelte b/web/src/lib/components/kit/SliderField.svelte new file mode 100644 index 0000000..8a9b9d8 --- /dev/null +++ b/web/src/lib/components/kit/SliderField.svelte @@ -0,0 +1,54 @@ + + + +
+ + {value}{suffix} +
+
+ + diff --git a/web/src/lib/components/kit/TextField.svelte b/web/src/lib/components/kit/TextField.svelte new file mode 100644 index 0000000..be8ab0f --- /dev/null +++ b/web/src/lib/components/kit/TextField.svelte @@ -0,0 +1,47 @@ + + + + + diff --git a/web/src/lib/components/kit/Toggle.svelte b/web/src/lib/components/kit/Toggle.svelte new file mode 100644 index 0000000..5da111c --- /dev/null +++ b/web/src/lib/components/kit/Toggle.svelte @@ -0,0 +1,56 @@ + + + + +