summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/hooks
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-03-08 06:34:02 -0500
committerAdam <[email protected]>2026-03-08 07:11:15 -0500
commitf386137fbaf2e2f56fb32f8656e802f592a41341 (patch)
tree0b020b9b40898ff4f545683bef117eede4684c09 /packages/ui/src/hooks
parentc797b60069df9b6510442e6e2d582c572f88d5c1 (diff)
downloadopencode-f386137fbaf2e2f56fb32f8656e802f592a41341.tar.gz
opencode-f386137fbaf2e2f56fb32f8656e802f592a41341.zip
chore: refactoring ui hooks
Diffstat (limited to 'packages/ui/src/hooks')
-rw-r--r--packages/ui/src/hooks/index.ts2
-rw-r--r--packages/ui/src/hooks/use-element-height.ts25
-rw-r--r--packages/ui/src/hooks/use-page-visible.ts11
-rw-r--r--packages/ui/src/hooks/use-reduced-motion.ts17
4 files changed, 9 insertions, 46 deletions
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> | (() => HTMLElement | undefined),
- initial = 0,
-): Accessor<number> {
- 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()
+})