diff --git a/web/src/lib/components/kit/CatalogGroup.svelte b/web/src/lib/components/kit/CatalogGroup.svelte index 0a5b464..864147d 100644 --- a/web/src/lib/components/kit/CatalogGroup.svelte +++ b/web/src/lib/components/kit/CatalogGroup.svelte @@ -46,6 +46,7 @@ } .tool-cards { display: grid; + grid-template-columns: 1fr 1fr; gap: var(--space-m); } diff --git a/web/src/lib/components/kit/CatalogToolbar.svelte b/web/src/lib/components/kit/CatalogToolbar.svelte index c5e5885..1b4e355 100644 --- a/web/src/lib/components/kit/CatalogToolbar.svelte +++ b/web/src/lib/components/kit/CatalogToolbar.svelte @@ -1,5 +1,5 @@
@@ -30,13 +32,15 @@ />
- + {#each FILTERS as f (f.value)} (category = f.value)} > + {f.label} + {/each}
@@ -79,7 +83,7 @@ } .catalog-filters button { border: var(--size-border) solid var(--color-border); - background: transparent; + background: var(--color-panel); color: var(--color-text-muted); font: var(--font-size-s) var(--font-mono); letter-spacing: var(--space-text-m); diff --git a/web/src/lib/components/kit/Dropzone.svelte b/web/src/lib/components/kit/Dropzone.svelte index 49e228a..72af9de 100644 --- a/web/src/lib/components/kit/Dropzone.svelte +++ b/web/src/lib/components/kit/Dropzone.svelte @@ -73,8 +73,8 @@ cursor: pointer; text-align: center; transition: - border-color var(--duration-m) ease, - background var(--duration-m) ease; + border-color var(--duration-s) ease, + background var(--duration-s) ease; } .dropzone:hover, .dropzone:focus-visible, diff --git a/web/src/lib/components/kit/PanelHeading.svelte b/web/src/lib/components/kit/PanelHeading.svelte index 3cd61dc..50bd367 100644 --- a/web/src/lib/components/kit/PanelHeading.svelte +++ b/web/src/lib/components/kit/PanelHeading.svelte @@ -26,6 +26,7 @@ gap: var(--space-xl); padding: var(--space-l) var(--space-xl); border-bottom: var(--size-border) solid var(--color-border); + margin-bottom: var(--space-m); } .heading-text { display: flex; diff --git a/web/src/lib/components/kit/SchemaResultTile.svelte b/web/src/lib/components/kit/SchemaResultTile.svelte index d010c2d..37bf7b5 100644 --- a/web/src/lib/components/kit/SchemaResultTile.svelte +++ b/web/src/lib/components/kit/SchemaResultTile.svelte @@ -1,8 +1,8 @@
-
RESULT {running ? "…" : ""}
+
+ + RESULT + {#if running} + + {/if} + +
{#if resultKind === "text" && textResult}
@@ -65,6 +72,9 @@ margin-bottom: var(--space-m); font: var(--font-size-s) var(--font-mono); color: var(--color-text-muted); + & :global(.rotating) { + animation: rotate var(--duration-l) linear infinite; + } } .canvas { display: flex; @@ -72,7 +82,7 @@ justify-content: center; min-height: clamp(var(--space-brand), 30vh, 60vh); border: var(--size-border) solid var(--color-border); - border-radius: var(--radius-m); + border-radius: var(--radius-s); overflow: hidden; background: var(--color-background-muted); color: var(--color-text-muted); @@ -98,4 +108,13 @@ padding: var(--space-l); box-sizing: border-box; } + + @keyframes rotate { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } diff --git a/web/src/lib/components/kit/SchemaSourceTile.svelte b/web/src/lib/components/kit/SchemaSourceTile.svelte index bf76982..2ab6b61 100644 --- a/web/src/lib/components/kit/SchemaSourceTile.svelte +++ b/web/src/lib/components/kit/SchemaSourceTile.svelte @@ -1,7 +1,7 @@ diff --git a/web/src/lib/registry.ts b/web/src/lib/registry.ts index b56fb78..e80c302 100644 --- a/web/src/lib/registry.ts +++ b/web/src/lib/registry.ts @@ -2,14 +2,16 @@ import type { OutputMime } from "./core/io"; import type { PixelImage } from "./core/types"; -import { convertEntries } from "./registry/convert"; -import { geometryEntries } from "./registry/geometry"; import { alphaEntries } from "./registry/alpha"; -import { colorEntries } from "./registry/color"; import { analyzeEntries } from "./registry/analyze"; -import { generateEntries } from "./registry/generate"; -import { textEntries } from "./registry/text"; +import { colorEntries } from "./registry/color"; +import { convertEntries } from "./registry/convert"; import { filterEntries } from "./registry/filters"; +import { generateEntries } from "./registry/generate"; +import { geometryEntries } from "./registry/geometry"; +import { textEntries } from "./registry/text"; + +// TODO: remove convert tools - move to load image \ download button flow export type ParamDef = | { @@ -119,7 +121,6 @@ export const TOOLS: ToolEntry[] = [ ..._analyze.slice(11, 13), ]; -import { TOOL_ICONS } from "./tools/tool-icons"; import { TOOL_POPULARITY } from "./tools/tool-popularity"; for (const entry of TOOLS) { diff --git a/web/src/preview.css b/web/src/preview.css index 4afd37e..7ef31a3 100644 --- a/web/src/preview.css +++ b/web/src/preview.css @@ -176,8 +176,9 @@ --radius-s: 0px; --radius-m: 4px; - --duration-s: 0.12s; - --duration-m: 0.15s; + --duration-s: 0.15s; + --duration-m: 0.3s; + --duration-l: 0.8s; } [data-theme="dark"] { diff --git a/web/src/routes/preview/+layout.svelte b/web/src/routes/preview/+layout.svelte index 757659b..0ac3488 100644 --- a/web/src/routes/preview/+layout.svelte +++ b/web/src/routes/preview/+layout.svelte @@ -56,12 +56,14 @@ diff --git a/web/src/routes/preview/+page.svelte b/web/src/routes/preview/+page.svelte index 3ea930c..395780f 100644 --- a/web/src/routes/preview/+page.svelte +++ b/web/src/routes/preview/+page.svelte @@ -1,108 +1,78 @@ -
-
- EASY PNG TOOLS -

Workspace

-

- Откройте PNG-инструмент, загрузите изображение и получите результат без - установки и регистрации. -

-
- - - -
- {#each results as tool (tool.id)} - - {/each} -
- -
+
+ + +
+ {#each groups as group (group.id)} + + {#each group.tools as tool, i (tool.id)} + + {/each} + + {/each} +
+
+ ALL OPERATIONS RUN LOCALLY YOUR FILES NEVER LEAVE THIS DEVICE +
+
diff --git a/web/src/routes/preview/list-tools/+page.svelte b/web/src/routes/preview/list-tools/+page.svelte index 18ef70f..2ee81e6 100644 --- a/web/src/routes/preview/list-tools/+page.svelte +++ b/web/src/routes/preview/list-tools/+page.svelte @@ -1,10 +1,10 @@
@@ -55,7 +57,6 @@ } .catalog-groups { display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-page-top) var(--space-xxl); } .catalog-footer {