"use client"
import React from "react"
import { cn } from "@/lib/utils"
export interface ProgressiveBlurProps {
className?: string
height?: string
position?: "top" | "bottom" | "both"
blurLevels?: number[]
children?: React.ReactNode
}
export function ProgressiveBlur({
className,
height = "30%",
position = "bottom",
blurLevels = [0.5, 1, 2, 4, 8, 16, 32, 64],
}: ProgressiveBlurProps) {
// Create array with length equal to blurLevels.length - 2 (for before/after pseudo elements)
const divElements = Array(blurLevels.length - 2).fill(null)
return (
{/* First blur layer (pseudo element) */}
{/* Middle blur layers */}
{divElements.map((_, index) => {
const blurIndex = index + 1
const startPercent = blurIndex * 12.5
const midPercent = (blurIndex + 1) * 12.5
const endPercent = (blurIndex + 2) * 12.5
const maskGradient =
position === "bottom"
? `linear-gradient(to bottom, rgba(0,0,0,0) ${startPercent}%, rgba(0,0,0,1) ${midPercent}%, rgba(0,0,0,1) ${endPercent}%, rgba(0,0,0,0) ${endPercent + 12.5}%)`
: position === "top"
? `linear-gradient(to top, rgba(0,0,0,0) ${startPercent}%, rgba(0,0,0,1) ${midPercent}%, rgba(0,0,0,1) ${endPercent}%, rgba(0,0,0,0) ${endPercent + 12.5}%)`
: `linear-gradient(rgba(0,0,0,0) 0%, rgba(0,0,0,1) 5%, rgba(0,0,0,1) 95%, rgba(0,0,0,0) 100%)`
return (
)
})}
{/* Last blur layer (pseudo element) */}
)
}