# Components
This directory contains reusable React components for the Pivoine Docs Hub.
## Icons
Custom animated icons for documentation projects.
### KomposeIcon
A beautifully animated icon for the Kompose documentation project.
#### Features
- ✨ Smooth hover animations with glowing effects
- 🎯 Click/tap interactions with ripple effects
- 🎨 Custom gradient backgrounds with carbon fiber pattern
- 💫 Animated status indicator (pulsing dot)
- 📱 Responsive and touch-optimized
- ♿ Supports reduced motion preferences
- 🎭 3D rotation effects on interaction
#### Usage
```tsx
import { KomposeIcon } from '@/components/icons'
// Basic usage
// Custom size
// Non-interactive (no hover/click effects)
// With custom className
```
#### Props
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `size` | `string` | `'192px'` | Size of the icon (CSS width/height) |
| `interactive` | `boolean` | `true` | Enable/disable hover and click animations |
| `className` | `string` | `''` | Additional CSS classes |
#### Animations
**On Hover:**
- Icon scales up slightly with shadow enhancement
- Letter "K" glows with animated glow effect
- Status dot pulses and expands
- Corner decorations animate in
- Lines redraw with slide animation
**On Click/Tap:**
- 3D rotation flip effect
- Bright flash with intense glow
- Ripple effect emanates from center
- Bounce animation
**Default State:**
- Subtle pulsing status indicator
- Gentle shadow glow
#### Customization
The icon uses these main colors from the Kompose brand:
- Primary: `#00DC82` (emerald green)
- Background: Dark gradient (`#1a1d2e` to `#0a0e27`)
- Accent: `#00a86b` (darker green)
#### Accessibility
- Respects `prefers-reduced-motion` settings
- Touch-optimized for mobile devices
- Proper cursor states
- Keyboard accessible (when interactive)
#### Performance
- Uses CSS animations (GPU accelerated)
- SVG filters for visual effects
- Minimal re-renders with React hooks
- Scoped styles with CSS-in-JS
#### Browser Support
Works in all modern browsers that support:
- SVG filters (`feGaussianBlur`, `feMerge`)
- CSS animations
- CSS transforms (3D)
#### Converting from Vue
This component was converted from a Vue 3 component. Key differences:
- Vue `ref()` → React `useState()`
- Vue `@click` → React `onClick`
- Vue `:class` → React `className` with template literals
- Vue `v-if` → React conditional rendering `{showRipple && ...}`
- Scoped styles → CSS-in-JS with `