Skip to content

Commit 19e35fb

Browse files
committed
fix: avoid sliding in footer on hydration
1 parent 0513704 commit 19e35fb

1 file changed

Lines changed: 11 additions & 13 deletions

File tree

app/components/AppFooter.vue

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,17 @@ onUnmounted(() => {
7777
aria-label="Site footer"
7878
class="border-t border-border bg-bg/90 backdrop-blur-md"
7979
:class="[
80-
// Only apply dynamic positioning classes after mount to avoid hydration mismatch
81-
!isMounted
82-
? 'mt-auto'
83-
: // When CSS scroll-state queries are supported, use CSS-only approach
84-
supportsScrollStateQueries
85-
? 'footer-scroll-state'
86-
: // Fallback to JS-controlled classes
87-
isScrollable
88-
? [
89-
'fixed bottom-0 left-0 right-0 z-40 transition-transform duration-300 ease-out',
90-
isVisible ? 'translate-y-0' : 'translate-y-full',
91-
]
92-
: 'mt-auto',
80+
// When CSS scroll-state queries are supported, use CSS-only approach
81+
supportsScrollStateQueries
82+
? 'footer-scroll-state'
83+
: // JS-controlled: fixed position, hidden by default, transition only after mount
84+
isScrollable
85+
? [
86+
'fixed bottom-0 left-0 right-0 z-40 translate-y-full',
87+
isMounted && 'transition-transform duration-300 ease-out',
88+
isVisible && 'translate-y-0',
89+
]
90+
: 'mt-auto',
9391
]"
9492
>
9593
<div class="container py-2 sm:py-6 flex flex-col gap-1 sm:gap-3 text-fg-subtle text-sm">

0 commit comments

Comments
 (0)