2025-02-16 15:28:17 -05:00
|
|
|
"use client"
|
|
|
|
|
2025-02-21 00:01:34 -05:00
|
|
|
import { useEffect, useState } from "react"
|
|
|
|
import { TbNoCopyright } from "react-icons/tb";
|
2025-02-16 15:28:17 -05:00
|
|
|
|
|
|
|
export function Footer() {
|
|
|
|
const [renderTime, setRenderTime] = useState<number | null>(null)
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
const startTime = performance.now()
|
|
|
|
requestAnimationFrame(() => {
|
|
|
|
requestAnimationFrame(() => {
|
|
|
|
const endTime = performance.now()
|
|
|
|
const timeTaken = endTime - startTime
|
|
|
|
setRenderTime(timeTaken)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}, [])
|
|
|
|
|
|
|
|
return (
|
|
|
|
<footer className="py-2 px-4 text-sm text-muted-foreground bg-muted">
|
2025-02-21 00:01:34 -05:00
|
|
|
<div className="flex flex-col gap-2 md:flex-row md:items-center md:justify-between">
|
|
|
|
<div className="flex items-center justify-center">
|
|
|
|
<TbNoCopyright className="mr-2" />
|
|
|
|
<p className="text-center md:text-left">
|
|
|
|
Created by a community, not a company.
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
{renderTime !== null ? (
|
|
|
|
<p className="text-center md:text-right">
|
|
|
|
Page rendered in {renderTime.toFixed(2)} ms
|
|
|
|
</p>
|
|
|
|
) : (
|
|
|
|
<p className="text-center md:text-right">
|
|
|
|
Calculating render time...
|
|
|
|
</p>
|
|
|
|
)}
|
2025-02-16 15:28:17 -05:00
|
|
|
</div>
|
|
|
|
</footer>
|
|
|
|
)
|
|
|
|
}
|