use-glass-support
pane/use-glass-supportFreeHook
pane publishes no description for this item.
Install it
npx shadcn@latest add https://pane.theui.company/r/use-glass-support.jsonSource
1"use client";23import * as React from "react";4import type { GlassQuality } from "../lib/glass/types";56function detectQuality(): GlassQuality {7 if (8 typeof window === "undefined" ||9 typeof window.CSS?.supports !== "function"10 ) {11 return "none";12 }1314 const reducedTransparency = window.matchMedia?.(15 "(prefers-reduced-transparency: reduce)",16 ).matches;17 if (reducedTransparency) return "none";1819 const supportsBackdropFilter =20 CSS.supports("backdrop-filter", "blur(1px)") ||21 CSS.supports("-webkit-backdrop-filter", "blur(1px)");22 if (!supportsBackdropFilter) return "none";2324 // Only Chromium currently honors an SVG filter reference layered inside25 // backdrop-filter, so that's the signal we use to unlock the full26 // refraction pass. Everyone else still gets blur + saturate + specular.27 const isChromium =28 /Chrome|Chromium|Edg\//.test(navigator.userAgent) &&29 !/OPR\//.test(navigator.userAgent);3031 return isChromium ? "full" : "reduced";32}3334/**35 * Feature-detects how much of the glass effect the current browser/user36 * preference can render, so components can degrade gracefully instead of37 * shipping a broken filter.38 */39export function useGlassSupport(): GlassQuality {40 const [quality, setQuality] = React.useState<GlassQuality>("reduced");4142 React.useEffect(() => {43 setQuality(detectQuality());4445 const media = window.matchMedia?.("(prefers-reduced-transparency: reduce)");46 const handleChange = () => setQuality(detectQuality());47 media?.addEventListener("change", handleChange);48 return () => media?.removeEventListener("change", handleChange);49 }, []);5051 return quality;52}
What it pulls in
Other registry items
Files it writes
More from pane
All 25 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| use-glass-pointeruse-glass-pointer | pane | Hooks | Free | 1 dep |
