From f386137fbaf2e2f56fb32f8656e802f592a41341 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Sun, 8 Mar 2026 06:34:02 -0500 Subject: chore: refactoring ui hooks --- packages/ui/src/hooks/index.ts | 2 -- packages/ui/src/hooks/use-element-height.ts | 25 ------------------------- packages/ui/src/hooks/use-page-visible.ts | 11 ----------- packages/ui/src/hooks/use-reduced-motion.ts | 17 +++++++++-------- 4 files changed, 9 insertions(+), 46 deletions(-) delete mode 100644 packages/ui/src/hooks/use-element-height.ts delete mode 100644 packages/ui/src/hooks/use-page-visible.ts (limited to 'packages/ui/src/hooks') diff --git a/packages/ui/src/hooks/index.ts b/packages/ui/src/hooks/index.ts index 4a218024d..0fcf6f086 100644 --- a/packages/ui/src/hooks/index.ts +++ b/packages/ui/src/hooks/index.ts @@ -1,5 +1,3 @@ export * from "./use-filtered-list" export * from "./create-auto-scroll" -export * from "./use-element-height" export * from "./use-reduced-motion" -export * from "./use-page-visible" diff --git a/packages/ui/src/hooks/use-element-height.ts b/packages/ui/src/hooks/use-element-height.ts deleted file mode 100644 index a9f06ec8b..000000000 --- a/packages/ui/src/hooks/use-element-height.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { createEffect, createSignal, onCleanup, type Accessor } from "solid-js" - -/** - * Tracks an element's height via ResizeObserver. - * Returns a reactive signal that updates whenever the element resizes. - */ -export function useElementHeight( - ref: Accessor | (() => HTMLElement | undefined), - initial = 0, -): Accessor { - const [height, setHeight] = createSignal(initial) - - createEffect(() => { - const el = ref() - if (!el) return - setHeight(el.getBoundingClientRect().height) - const observer = new ResizeObserver(() => { - setHeight(el.getBoundingClientRect().height) - }) - observer.observe(el) - onCleanup(() => observer.disconnect()) - }) - - return height -} diff --git a/packages/ui/src/hooks/use-page-visible.ts b/packages/ui/src/hooks/use-page-visible.ts deleted file mode 100644 index 88788ef4a..000000000 --- a/packages/ui/src/hooks/use-page-visible.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { createSignal } from "solid-js" - -export const pageVisible = /* @__PURE__ */ (() => { - const [visible, setVisible] = createSignal(true) - if (typeof document !== "undefined") { - const sync = () => setVisible(document.visibilityState !== "hidden") - sync() - document.addEventListener("visibilitychange", sync) - } - return visible -})() diff --git a/packages/ui/src/hooks/use-reduced-motion.ts b/packages/ui/src/hooks/use-reduced-motion.ts index 7fa815bbd..0038760ec 100644 --- a/packages/ui/src/hooks/use-reduced-motion.ts +++ b/packages/ui/src/hooks/use-reduced-motion.ts @@ -1,9 +1,10 @@ -import { createSignal } from "solid-js" +import { isHydrated } from "@solid-primitives/lifecycle" +import { createMediaQuery } from "@solid-primitives/media" +import { createHydratableSingletonRoot } from "@solid-primitives/rootless" -export const prefersReducedMotion = /* @__PURE__ */ (() => { - if (typeof window === "undefined") return () => false - const mql = window.matchMedia("(prefers-reduced-motion: reduce)") - const [reduced, setReduced] = createSignal(mql.matches) - mql.addEventListener("change", () => setReduced(mql.matches)) - return reduced -})() +const query = "(prefers-reduced-motion: reduce)" + +export const useReducedMotion = createHydratableSingletonRoot(() => { + const value = createMediaQuery(query) + return () => !isHydrated() || value() +}) -- cgit v1.2.3