From b2e3cf528c6b5d6abe7f62de7e9bf544e5c2a93f Mon Sep 17 00:00:00 2001 From: Ku6epXBOCTuK Date: Thu, 5 Feb 2026 14:01:27 +0500 Subject: [PATCH] feat: WIP: update to new components structure --- src/components/layout/AppHeader.svelte | 29 +- src/components/layout/Card.svelte | 60 +++ src/components/layout/PanelBar.svelte | 28 ++ src/components/layout/TextBar.svelte | 13 + src/components/text/TextManager.svelte | 416 +-------------------- src/components/text/TextManager_old.svelte | 414 ++++++++++++++++++++ src/routes/+page.svelte | 26 +- src/states/texts.state.svelte.ts | 25 ++ svelte.config.js | 1 + tsconfig.json | 3 +- 10 files changed, 582 insertions(+), 433 deletions(-) create mode 100644 src/components/layout/Card.svelte create mode 100644 src/components/layout/PanelBar.svelte create mode 100644 src/components/layout/TextBar.svelte create mode 100644 src/components/text/TextManager_old.svelte create mode 100644 src/states/texts.state.svelte.ts diff --git a/src/components/layout/AppHeader.svelte b/src/components/layout/AppHeader.svelte index 39f62a5..187bb23 100644 --- a/src/components/layout/AppHeader.svelte +++ b/src/components/layout/AppHeader.svelte @@ -1,4 +1,7 @@ + + +{#snippet emptySnippet()}{/snippet} + +
+
+

+ {#if typeof title === "string"} + {title} + {:else} + {@render title()} + {/if} +

+
+ {@render titleSnippet()} +
+
+
+ {@render children()} +
+
+ + diff --git a/src/components/layout/PanelBar.svelte b/src/components/layout/PanelBar.svelte new file mode 100644 index 0000000..87d1d74 --- /dev/null +++ b/src/components/layout/PanelBar.svelte @@ -0,0 +1,28 @@ + + +
+ фоновое изображение + + {#snippet panelTitle()} + Панели 0 + {/snippet} + + {#snippet panelControls()} + + 0 / 0 + + {/snippet} + + Панели +
+ + diff --git a/src/components/layout/TextBar.svelte b/src/components/layout/TextBar.svelte new file mode 100644 index 0000000..6995270 --- /dev/null +++ b/src/components/layout/TextBar.svelte @@ -0,0 +1,13 @@ + + +
+ + + Настройки текста +
+ + diff --git a/src/components/text/TextManager.svelte b/src/components/text/TextManager.svelte index 84a7d1f..ac989b9 100644 --- a/src/components/text/TextManager.svelte +++ b/src/components/text/TextManager.svelte @@ -1,414 +1,10 @@ -
-
-
- - -
- {#if errorMessage} -
- {errorMessage} -
- {/if} -
- - {#if texts.length > 0} -
-

Созданные тексты ({texts.length})

-
- {#each texts as textItem (textItem.id)} -
- handleUpdateText(textItem.id, e.currentTarget.value)} - class="text-edit-input" - maxlength={TYPOGRAPHY.MAX_TEXT_LENGTH} - /> - -
- {/each} -
-
- {/if} - -
-

Общие настройки текста

-

Настройки применятся ко всем создаваемым панелям

- -
-
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
- -
-
-
+
+ +
- - diff --git a/src/components/text/TextManager_old.svelte b/src/components/text/TextManager_old.svelte new file mode 100644 index 0000000..84a7d1f --- /dev/null +++ b/src/components/text/TextManager_old.svelte @@ -0,0 +1,414 @@ + + +
+
+
+ + +
+ {#if errorMessage} +
+ {errorMessage} +
+ {/if} +
+ + {#if texts.length > 0} +
+

Созданные тексты ({texts.length})

+
+ {#each texts as textItem (textItem.id)} +
+ handleUpdateText(textItem.id, e.currentTarget.value)} + class="text-edit-input" + maxlength={TYPOGRAPHY.MAX_TEXT_LENGTH} + /> + +
+ {/each} +
+
+ {/if} + +
+

Общие настройки текста

+

Настройки применятся ко всем создаваемым панелям

+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+
+
+ + diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index ebfb687..7f808b9 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -7,7 +7,8 @@ import { panelService } from "../services/panelService"; import { textSettingsStore } from "../stores/panelStore"; - import AppContainer from "../components/layout/AppContainer.svelte"; + import PanelBar from "$components/layout/PanelBar.svelte"; + import TextBar from "$components/layout/TextBar.svelte"; let uploadedImage = $state(undefined); let panels = $state([]); @@ -103,7 +104,12 @@ } - + + +
+ + + + diff --git a/src/states/texts.state.svelte.ts b/src/states/texts.state.svelte.ts new file mode 100644 index 0000000..f126835 --- /dev/null +++ b/src/states/texts.state.svelte.ts @@ -0,0 +1,25 @@ +export interface TextsState { + texts: string[]; + addText(text: string): void; + removeText(text: string): void; +} + +const defaultTexts: string[] = ["About me", "Links", "Projects"]; + +function createTextsState(): TextsState { + let texts: string[] = $state(defaultTexts); + + return { + get texts() { + return texts; + }, + addText(text: string) { + texts = [...texts, text]; + }, + removeText(text: string) { + texts = texts.filter((t) => t !== text); + }, + }; +} + +export const textsState = createTextsState(); diff --git a/svelte.config.js b/svelte.config.js index a9e4c85..20342dd 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -15,6 +15,7 @@ const config = { alias: { $components: "src/components", $stores: "src/stores", + $states: "src/states", $services: "src/services", }, }, diff --git a/tsconfig.json b/tsconfig.json index 8cb2497..d168008 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,6 +12,7 @@ "strict": true, "strictNullChecks": true, "exactOptionalPropertyTypes": true, - "moduleResolution": "bundler" + "moduleResolution": "bundler", + "allowArbitraryExtensions": true } }