From 8a2059ac4a52f87e503b9941a0ec02d5e0baab22 Mon Sep 17 00:00:00 2001 From: Ilia Mashkov Date: Sat, 24 Jan 2026 23:56:26 +0300 Subject: [PATCH] feat(ExtendableWrapper): create reusable extendable wrapper with animations --- .../ExpandableWrapper.svelte | 188 ++++++++++++++++++ src/shared/ui/index.ts | 2 + 2 files changed, 190 insertions(+) create mode 100644 src/shared/ui/ExpandableWrapper/ExpandableWrapper.svelte diff --git a/src/shared/ui/ExpandableWrapper/ExpandableWrapper.svelte b/src/shared/ui/ExpandableWrapper/ExpandableWrapper.svelte new file mode 100644 index 0000000..d075456 --- /dev/null +++ b/src/shared/ui/ExpandableWrapper/ExpandableWrapper.svelte @@ -0,0 +1,188 @@ + + + +
+ {@render badge?.({ expanded, disabled })} + +
+ {@render visibleContent?.({ expanded, disabled })} + + {#if expanded} +
+ {@render hiddenContent?.({ expanded, disabled })} +
+ {/if} +
+
diff --git a/src/shared/ui/index.ts b/src/shared/ui/index.ts index 86fcf01..eec2f82 100644 --- a/src/shared/ui/index.ts +++ b/src/shared/ui/index.ts @@ -8,6 +8,7 @@ import CheckboxFilter from './CheckboxFilter/CheckboxFilter.svelte'; import ComboControl from './ComboControl/ComboControl.svelte'; import ComboControlV2 from './ComboControlV2/ComboControlV2.svelte'; import ContentEditable from './ContentEditable/ContentEditable.svelte'; +import ExpandableWrapper from './ExpandableWrapper/ExpandableWrapper.svelte'; import SearchBar from './SearchBar/SearchBar.svelte'; import VirtualList from './VirtualList/VirtualList.svelte'; @@ -16,6 +17,7 @@ export { ComboControl, ComboControlV2, ContentEditable, + ExpandableWrapper, SearchBar, VirtualList, };