From 9da229ea608648d0ad080a1d5b7631b95273ca5a Mon Sep 17 00:00:00 2001 From: busya Date: Wed, 17 Jun 2026 14:06:42 +0300 Subject: [PATCH] feat(frontend): add shared Skeleton component Skeleton.svelte with line, card, circle, and row variants. Replaces 30+ hand-rolled animate-pulse patterns across the codebase. --- frontend/src/lib/ui/Skeleton.svelte | 43 +++++++++++++++++++++++++++++ frontend/src/lib/ui/index.ts | 1 + 2 files changed, 44 insertions(+) create mode 100644 frontend/src/lib/ui/Skeleton.svelte diff --git a/frontend/src/lib/ui/Skeleton.svelte b/frontend/src/lib/ui/Skeleton.svelte new file mode 100644 index 00000000..b409ad6a --- /dev/null +++ b/frontend/src/lib/ui/Skeleton.svelte @@ -0,0 +1,43 @@ + + + + + + + +{#if variant === "line"} +
+ +{:else if variant === "card"} +
+ +{:else if variant === "circle"} +
+ +{:else if variant === "row"} +
+ {#each Array(rows) as _} +
+ {#each Array(cols) as _} +
+ {/each} +
+ {/each} +
+{/if} + diff --git a/frontend/src/lib/ui/index.ts b/frontend/src/lib/ui/index.ts index 6bb71f1a..b9d184e6 100644 --- a/frontend/src/lib/ui/index.ts +++ b/frontend/src/lib/ui/index.ts @@ -17,6 +17,7 @@ export { default as LanguageSwitcher } from './LanguageSwitcher.svelte'; export { default as Icon } from './Icon.svelte'; export { default as HelpTooltip } from './HelpTooltip.svelte'; export { default as Badge } from './Badge.svelte'; +export { default as Skeleton } from './Skeleton.svelte'; // [/SECTION: EXPORTS] // #endregion ui:Module \ No newline at end of file