Switch to different navigation style

This commit is contained in:
Jon Staab
2026-02-27 14:40:51 -08:00
parent 247a5c0ec0
commit 034572cb58
24 changed files with 724 additions and 335 deletions
+41
View File
@@ -0,0 +1,41 @@
import { createEffect, createSignal, onCleanup } from "solid-js"
export default function useMinLoading(loading: () => boolean, minDurationMs = 200) {
const [visible, setVisible] = createSignal(false)
let startTime = 0
let timeout: number | undefined
createEffect(() => {
if (timeout) {
window.clearTimeout(timeout)
timeout = undefined
}
if (loading()) {
startTime = Date.now()
setVisible(true)
return
}
if (!visible()) return
const elapsed = Date.now() - startTime
const remaining = Math.max(minDurationMs - elapsed, 0)
if (remaining === 0) {
setVisible(false)
return
}
timeout = window.setTimeout(() => {
setVisible(false)
timeout = undefined
}, remaining)
onCleanup(() => {
if (timeout) window.clearTimeout(timeout)
})
})
return visible
}