From 17d9ca9640aee9618df722d253fcc56df1d9ab65 Mon Sep 17 00:00:00 2001 From: Scott Rhamy Date: Fri, 1 May 2026 17:20:26 -0400 Subject: [PATCH] fixed-height-md-tabs Add a height prop to the MDC :::tabs component to prevent layout shifts when switching between tabs with different content lengths. Usage: :::tabs{key="framework" height="185px"} --- docs/src/lib/markdown/components/Tab.svelte | 1 + docs/src/lib/markdown/components/Tabs.svelte | 39 ++++++++++++++++++- docs/src/lib/markdown/components/pre.svelte | 2 +- docs/src/routes/docs/getting-started/+page.md | 4 +- 4 files changed, 41 insertions(+), 5 deletions(-) diff --git a/docs/src/lib/markdown/components/Tab.svelte b/docs/src/lib/markdown/components/Tab.svelte index 8eec7cf23..226724842 100644 --- a/docs/src/lib/markdown/components/Tab.svelte +++ b/docs/src/lib/markdown/components/Tab.svelte @@ -14,6 +14,7 @@ const tabsContext = getContext<{ activeTab: number; + hasHeight: boolean; setActiveTab: (index: number) => void; registerTab: (label: string | undefined, icon: Component | undefined) => number; }>('tabs'); diff --git a/docs/src/lib/markdown/components/Tabs.svelte b/docs/src/lib/markdown/components/Tabs.svelte index 44838dd1b..8e2a8477f 100644 --- a/docs/src/lib/markdown/components/Tabs.svelte +++ b/docs/src/lib/markdown/components/Tabs.svelte @@ -23,9 +23,10 @@ interface Props extends HTMLAttributes { children: Snippet; key?: string; + height?: string; } - const { children, key, class: className, ...restProps }: Props = $props(); + const { children, key, class: className, height, ...restProps }: Props = $props(); // Use synced state if key is provided, otherwise use local state let localActiveIndex = $state(0); @@ -56,6 +57,9 @@ get activeTab() { return activeTab; }, + get hasHeight() { + return !!height; + }, setActiveTab: (index: number) => { if (syncedState) { syncedState.activeLabel = tabs[index]?.label ?? null; @@ -103,7 +107,38 @@ -
+
{@render children?.()}
+ + diff --git a/docs/src/lib/markdown/components/pre.svelte b/docs/src/lib/markdown/components/pre.svelte index 068e6f6b5..17c49dd62 100644 --- a/docs/src/lib/markdown/components/pre.svelte +++ b/docs/src/lib/markdown/components/pre.svelte @@ -49,7 +49,7 @@
{#if dataTitle}