From 97957de1227ca68d490706d9929dd6e049bff316 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 000000000..b409ad6a8 --- /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 6bb71f1a0..b9d184e66 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