UNPKG

@sikka/hawa

Version:

Modern UI Kit made with Tailwind

45 lines (44 loc) 1.25 kB
"use client"; // elements/scrollIndicator/ScrollIndicator.tsx import React, { useState, useEffect } from "react"; var ScrollIndicator = ({ anchor, inContainer = false }) => { const [scrollPercentage, setScrollPercentage] = useState(0); const onScroll = () => { const scrollElement = anchor.current; if (scrollElement) { const { scrollTop, scrollHeight, clientHeight } = scrollElement; const totalScroll = scrollHeight - clientHeight; const scrollPosition = scrollTop; const percentageScrolled = scrollPosition / totalScroll * 100; setScrollPercentage(percentageScrolled); } }; useEffect(() => { if (!anchor.current) return; anchor.current.addEventListener("scroll", onScroll); return () => { var _a; (_a = anchor.current) == null ? void 0 : _a.removeEventListener("scroll", onScroll); }; }, [anchor]); return /* @__PURE__ */ React.createElement( "div", { style: { position: inContainer ? "absolute" : "fixed", top: 0, left: 0, height: "5px", width: `${scrollPercentage}%`, backgroundColor: "hsl(var(--primary))" } } ); }; export { ScrollIndicator }; //# sourceMappingURL=index.mjs.map