@sikka/hawa
Version:
Modern UI Kit made with Tailwind
45 lines (44 loc) • 1.25 kB
JavaScript
"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