"use client"; import React, { useState } from "react"; import "./PivoineDocsIcon.css"; interface PivoineDocsIconProps { size?: string; interactive?: boolean; className?: string; showLabel?: boolean; } export default function PivoineDocsIcon({ size = "256px", interactive = true, className = "", showLabel = false, }: PivoineDocsIconProps) { const [isHovered, setIsHovered] = useState(false); const [isClicked, setIsClicked] = useState(false); const handleMouseEnter = () => { if (!interactive) return; setIsHovered(true); }; const handleMouseLeave = () => { if (!interactive) return; setIsHovered(false); }; const handleClick = () => { if (!interactive) return; setIsClicked(true); setTimeout(() => { setIsClicked(false); }, 1200); }; const handleTouch = (e: React.TouchEvent) => { if (!interactive) return; e.preventDefault(); setIsHovered(true); setTimeout(() => { handleClick(); }, 50); setTimeout(() => { setIsHovered(false); }, 1500); }; const wrapperClasses = [ "pivoine-docs-icon-wrapper", isHovered && "is-hovered", isClicked && "is-clicked", interactive && "is-interactive", className, ] .filter(Boolean) .join(" "); // Generate bloom particles with varied properties const bloomParticles = Array.from({ length: 12 }, (_, i) => ({ id: i, angle: (360 / 12) * i, distance: 80 + Math.random() * 20, size: 2 + Math.random() * 2, delay: i * 0.08, })); return (
{/* Enhanced Gradients for natural peony colors */} {/* Enhanced Filters */} {/* Subtle background glow */} {/* Outer layer - Large petals (8 petals) */} {[ { angle: 0, scaleX: 1.1, scaleY: 1, gradient: 1 }, { angle: 45, scaleX: 1, scaleY: 1.05, gradient: 2 }, { angle: 90, scaleX: 1.05, scaleY: 1, gradient: 3 }, { angle: 135, scaleX: 1, scaleY: 1.1, gradient: 4 }, { angle: 180, scaleX: 1.08, scaleY: 1, gradient: 1 }, { angle: 225, scaleX: 1, scaleY: 1.02, gradient: 2 }, { angle: 270, scaleX: 1.02, scaleY: 1, gradient: 3 }, { angle: 315, scaleX: 1, scaleY: 1.06, gradient: 4 }, ].map((petal, i) => ( ))} {/* Middle layer - Medium petals (8 petals, offset) */} {[ { angle: 22.5, scaleX: 1, scaleY: 1, gradient: 2 }, { angle: 67.5, scaleX: 1.05, scaleY: 1, gradient: 3 }, { angle: 112.5, scaleX: 1, scaleY: 1.02, gradient: 4 }, { angle: 157.5, scaleX: 1.02, scaleY: 1, gradient: 1 }, { angle: 202.5, scaleX: 1, scaleY: 1.05, gradient: 2 }, { angle: 247.5, scaleX: 1.03, scaleY: 1, gradient: 3 }, { angle: 292.5, scaleX: 1, scaleY: 1, gradient: 4 }, { angle: 337.5, scaleX: 1.02, scaleY: 1, gradient: 1 }, ].map((petal, i) => ( ))} {/* Inner layer - Small petals (10 petals) */} {[ { angle: 0, gradient: 3 }, { angle: 45, gradient: 4 }, { angle: 90, gradient: 1 }, { angle: 135, gradient: 2 }, { angle: 180, gradient: 3 }, { angle: 225, gradient: 4 }, { angle: 270, gradient: 1 }, { angle: 315, gradient: 2 }, ].map((petal, i) => ( ))} {/* Center circles - Flower stamen */} {/* Center details - tiny stamens */} {Array.from({ length: 8 }).map((_, i) => { const angle = (360 / 8) * i; const x = 128 + Math.cos((angle * Math.PI) / 180) * 10; const y = 128 + Math.sin((angle * Math.PI) / 180) * 10; return ( ); })} {/* Sparkles - ambient magical effect */} {/* Flying bloom particles (visible on hover) */} {bloomParticles.map((particle) => ( ))} {/* Optional label */} {showLabel && (
Pivoine Docs
)}
); }