'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
)}
) }