Files
ERP_Distribution/distribution_fe/components/shared/top-loader.tsx
T
Kalana B. Thilakarathna 7b6c9ac92a
CI/CD - ERP Distribution / Build & Deploy Backend (pull_request) Failing after 10m33s
CI/CD - ERP Distribution / Build & Deploy Frontend (pull_request) Failing after 14m20s
feat: update row actions to include payment functionality and add corresponding icon
2026-10-19 22:12:40 +05:30

30 lines
767 B
TypeScript

'use client'
import { useEffect, useState } from 'react'
/**
* Thin top strip shown while `active` is true. Stays visible for at least
* `minDurationMs` so quick fetches don't produce an invisible flicker.
*/
export function TopLoader({ active, minDurationMs = 350 }: { active: boolean; minDurationMs?: number }) {
const [visible, setVisible] = useState(active)
useEffect(() => {
if (active) {
setVisible(true)
return
}
const t = setTimeout(() => setVisible(false), minDurationMs)
return () => clearTimeout(t)
}, [active, minDurationMs])
if (!visible) return null
return (
<div className="top-loader">
<div className="top-loader__bar">
<span className="top-loader__head" />
</div>
</div>
)
}