"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) */}
) }