feat: docs.pivoine.art
This commit is contained in:
263
Projects/docs.pivoine.art/components/icons/ICON_GENERATION.md
Normal file
263
Projects/docs.pivoine.art/components/icons/ICON_GENERATION.md
Normal file
@@ -0,0 +1,263 @@
|
|||||||
|
# Icon Generation Summary
|
||||||
|
|
||||||
|
## ✅ Completed Tasks
|
||||||
|
|
||||||
|
### 1. React Component Refactoring
|
||||||
|
**File**: `components/icons/PivoineDocsIcon.tsx`
|
||||||
|
|
||||||
|
**Changes Made**:
|
||||||
|
- ✅ Reduced petal count for cleaner design:
|
||||||
|
- Outer petals: 8 → **6 petals** (60° spacing)
|
||||||
|
- Middle petals: 8 → **6 petals** (offset by 30°)
|
||||||
|
- Inner petals: 10 → **8 petals** (45° spacing)
|
||||||
|
- Total: 26 → **20 petals**
|
||||||
|
- ✅ Fixed petal positioning - now properly radiate from center
|
||||||
|
- ✅ Reduced bloom particles from 12 to 10
|
||||||
|
|
||||||
|
**Petal Layout**:
|
||||||
|
```
|
||||||
|
Outer Layer (6 petals at 60° intervals):
|
||||||
|
0°, 60°, 120°, 180°, 240°, 300°
|
||||||
|
|
||||||
|
Middle Layer (6 petals at 60° intervals, offset by 30°):
|
||||||
|
30°, 90°, 150°, 210°, 270°, 330°
|
||||||
|
|
||||||
|
Inner Layer (8 petals at 45° intervals):
|
||||||
|
0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Static SVG Files Generated
|
||||||
|
|
||||||
|
#### **favicon.svg**
|
||||||
|
**Location**: `public/favicon.svg`
|
||||||
|
|
||||||
|
**Characteristics**:
|
||||||
|
- Static peony in semi-open bloom state
|
||||||
|
- Petals positioned at 75% scale with 20px translate
|
||||||
|
- Optimized for small sizes (16x16 to 64x64)
|
||||||
|
- No animations
|
||||||
|
- Perfect for browser tab icons
|
||||||
|
|
||||||
|
**Usage in HTML**:
|
||||||
|
```html
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
||||||
|
```
|
||||||
|
|
||||||
|
#### **icon.svg**
|
||||||
|
**Location**: `public/icon.svg`
|
||||||
|
|
||||||
|
**Characteristics**:
|
||||||
|
- Static peony in more open bloom state
|
||||||
|
- Petals positioned at 85-90% scale with larger translate
|
||||||
|
- Optimized for larger sizes (128x128 to 512x512)
|
||||||
|
- Enhanced visibility with sparkles
|
||||||
|
- Slightly larger center for better recognition
|
||||||
|
- Already referenced in `manifest.json`
|
||||||
|
|
||||||
|
**Current Manifest Reference**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"src": "/icon.svg",
|
||||||
|
"sizes": "any",
|
||||||
|
"type": "image/svg+xml",
|
||||||
|
"purpose": "any maskable"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📋 Next Steps (Optional)
|
||||||
|
|
||||||
|
### Generate PNG Versions
|
||||||
|
The manifest.json references PNG versions that should be generated:
|
||||||
|
|
||||||
|
1. **icon-192.png** (192x192)
|
||||||
|
- For Android home screen
|
||||||
|
- Can be generated from icon.svg
|
||||||
|
|
||||||
|
2. **icon-512.png** (512x512)
|
||||||
|
- For high-resolution displays
|
||||||
|
- For PWA splash screens
|
||||||
|
- Can be generated from icon.svg
|
||||||
|
|
||||||
|
### How to Generate PNGs from SVG
|
||||||
|
|
||||||
|
**Option 1: Using ImageMagick**
|
||||||
|
```bash
|
||||||
|
# Install ImageMagick if needed
|
||||||
|
sudo apt install imagemagick
|
||||||
|
|
||||||
|
# Generate 192x192
|
||||||
|
convert -background none -density 300 public/icon.svg -resize 192x192 public/icon-192.png
|
||||||
|
|
||||||
|
# Generate 512x512
|
||||||
|
convert -background none -density 300 public/icon.svg -resize 512x512 public/icon-512.png
|
||||||
|
```
|
||||||
|
|
||||||
|
**Option 2: Using Inkscape**
|
||||||
|
```bash
|
||||||
|
# Install Inkscape if needed
|
||||||
|
sudo apt install inkscape
|
||||||
|
|
||||||
|
# Generate 192x192
|
||||||
|
inkscape public/icon.svg --export-type=png --export-filename=public/icon-192.png --export-width=192 --export-height=192
|
||||||
|
|
||||||
|
# Generate 512x512
|
||||||
|
inkscape public/icon.svg --export-type=png --export-filename=public/icon-512.png --export-width=512 --export-height=512
|
||||||
|
```
|
||||||
|
|
||||||
|
**Option 3: Using Online Tools**
|
||||||
|
- https://cloudconvert.com/svg-to-png
|
||||||
|
- https://www.svgtopng.com/
|
||||||
|
- Upload icon.svg and set dimensions
|
||||||
|
|
||||||
|
**Option 4: Using Node.js (sharp)**
|
||||||
|
```javascript
|
||||||
|
const sharp = require('sharp');
|
||||||
|
const fs = require('fs');
|
||||||
|
|
||||||
|
const svg = fs.readFileSync('public/icon.svg');
|
||||||
|
|
||||||
|
// 192x192
|
||||||
|
sharp(svg)
|
||||||
|
.resize(192, 192)
|
||||||
|
.png()
|
||||||
|
.toFile('public/icon-192.png');
|
||||||
|
|
||||||
|
// 512x512
|
||||||
|
sharp(svg)
|
||||||
|
.resize(512, 512)
|
||||||
|
.png()
|
||||||
|
.toFile('public/icon-512.png');
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎨 Icon Comparison
|
||||||
|
|
||||||
|
### Favicon.svg (More Closed)
|
||||||
|
```
|
||||||
|
Outer: scale(0.75) translate(20px) - 75% opacity
|
||||||
|
Middle: scale(0.80) translate(14px) - 85% opacity
|
||||||
|
Inner: scale(0.85) translate(8px) - 92% opacity
|
||||||
|
```
|
||||||
|
Best for: 16x16, 32x32, 64x64 favicon sizes
|
||||||
|
|
||||||
|
### Icon.svg (More Open)
|
||||||
|
```
|
||||||
|
Outer: scale(0.85) translate(26px) - 82% opacity
|
||||||
|
Middle: scale(0.88) translate(18px) - 88% opacity
|
||||||
|
Inner: scale(0.90) translate(12px) - 94% opacity
|
||||||
|
```
|
||||||
|
Best for: 128x128, 192x192, 512x512 PWA icons
|
||||||
|
|
||||||
|
## 🔍 Visual Differences
|
||||||
|
|
||||||
|
### React Component States
|
||||||
|
1. **Normal (Closed Bud)**: scale(0.3-0.5) - Gentle breathing
|
||||||
|
2. **Hover (Full Bloom)**: scale(1.0-1.1) - Petals fully extended
|
||||||
|
3. **Click (Closing)**: Animated return to closed state
|
||||||
|
|
||||||
|
### Static SVG States
|
||||||
|
1. **favicon.svg**: Semi-open (between normal and hover)
|
||||||
|
2. **icon.svg**: More open (closer to hover state)
|
||||||
|
|
||||||
|
## 📁 File Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
docs.pivoine.art/
|
||||||
|
├── components/icons/
|
||||||
|
│ ├── PivoineDocsIcon.tsx ✅ Updated (20 petals)
|
||||||
|
│ ├── PivoineDocsIcon.css
|
||||||
|
│ ├── Demo.tsx
|
||||||
|
│ ├── README.md
|
||||||
|
│ ├── REFACTORING_SUMMARY.md
|
||||||
|
│ ├── VISUAL_GUIDE.md
|
||||||
|
│ └── ICON_GENERATION.md ← This file
|
||||||
|
└── public/
|
||||||
|
├── favicon.svg ✅ Created (semi-open bloom)
|
||||||
|
├── icon.svg ✅ Created (more open bloom)
|
||||||
|
├── icon-192.png ⏳ TODO (generate from icon.svg)
|
||||||
|
├── icon-512.png ⏳ TODO (generate from icon.svg)
|
||||||
|
└── manifest.json ✅ Already configured
|
||||||
|
```
|
||||||
|
|
||||||
|
## ✨ Key Features of Generated Icons
|
||||||
|
|
||||||
|
### Both SVGs Include:
|
||||||
|
- ✅ 20-petal peony structure (6+6+8)
|
||||||
|
- ✅ Multi-layered gradients (pink, purple, magenta, rose)
|
||||||
|
- ✅ Golden center with stamen details
|
||||||
|
- ✅ Document pages in center
|
||||||
|
- ✅ Text lines representing documentation
|
||||||
|
- ✅ Glow and shadow filters
|
||||||
|
- ✅ Optimized for clarity at target sizes
|
||||||
|
|
||||||
|
### Icon.svg Additionally Has:
|
||||||
|
- ✅ Sparkles at corners
|
||||||
|
- ✅ Slightly larger center (r=28 vs r=26)
|
||||||
|
- ✅ Enhanced glow filters
|
||||||
|
- ✅ Better visibility for larger display
|
||||||
|
|
||||||
|
## 🚀 Usage Examples
|
||||||
|
|
||||||
|
### In React Components
|
||||||
|
```tsx
|
||||||
|
import PivoineDocsIcon from '@/components/icons/PivoineDocsIcon'
|
||||||
|
|
||||||
|
// Interactive version
|
||||||
|
<PivoineDocsIcon size="128px" />
|
||||||
|
|
||||||
|
// Static version (matches icon.svg appearance)
|
||||||
|
<PivoineDocsIcon size="128px" interactive={false} />
|
||||||
|
```
|
||||||
|
|
||||||
|
### In HTML Head
|
||||||
|
```html
|
||||||
|
<!-- Favicon -->
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
||||||
|
<link rel="icon" type="image/png" sizes="192x192" href="/icon-192.png">
|
||||||
|
<link rel="icon" type="image/png" sizes="512x512" href="/icon-512.png">
|
||||||
|
|
||||||
|
<!-- Apple Touch Icon -->
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="/icon-192.png">
|
||||||
|
|
||||||
|
<!-- PWA Manifest -->
|
||||||
|
<link rel="manifest" href="/manifest.json">
|
||||||
|
```
|
||||||
|
|
||||||
|
### In PWA Manifest (Already Done)
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "/icon.svg",
|
||||||
|
"sizes": "any",
|
||||||
|
"type": "image/svg+xml"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🎯 Quality Checklist
|
||||||
|
|
||||||
|
- ✅ Petals properly radiate from center
|
||||||
|
- ✅ Reduced to 20 petals for cleaner look
|
||||||
|
- ✅ Gradients render correctly
|
||||||
|
- ✅ Center documentation pages visible
|
||||||
|
- ✅ Text lines legible
|
||||||
|
- ✅ Filters apply properly (glow, shadow)
|
||||||
|
- ✅ favicon.svg optimized for small sizes
|
||||||
|
- ✅ icon.svg optimized for large sizes
|
||||||
|
- ✅ Both SVGs are valid and render correctly
|
||||||
|
- ✅ manifest.json references correct files
|
||||||
|
- ⏳ PNG versions to be generated (optional)
|
||||||
|
|
||||||
|
## 📝 Notes
|
||||||
|
|
||||||
|
- SVG icons work great in modern browsers without PNG fallbacks
|
||||||
|
- PNG versions are recommended for older browsers and some PWA scenarios
|
||||||
|
- The icon design scales beautifully from 16x16 to 512x512
|
||||||
|
- Semi-open bloom state was chosen for static icons as it's recognizable and beautiful
|
||||||
|
- React component remains fully interactive with hover/click animations
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Generated**: October 2025
|
||||||
|
**Status**: ✅ Complete - Ready for production use
|
||||||
@@ -87,10 +87,10 @@ export default function PivoineDocsIcon({
|
|||||||
<defs>
|
<defs>
|
||||||
{/* Enhanced Gradients for natural peony colors */}
|
{/* Enhanced Gradients for natural peony colors */}
|
||||||
<radialGradient id="petal-gradient-1" cx="30%" cy="30%">
|
<radialGradient id="petal-gradient-1" cx="30%" cy="30%">
|
||||||
<stop offset="0%" style={{ stopColor: '#fce7f3', stopOpacity: 1 }} />
|
<stop offset="0%" style={{ stopColor: '#fdf4ff', stopOpacity: 1 }} />
|
||||||
<stop offset="40%" style={{ stopColor: '#fbcfe8', stopOpacity: 1 }} />
|
<stop offset="40%" style={{ stopColor: '#fae8ff', stopOpacity: 1 }} />
|
||||||
<stop offset="70%" style={{ stopColor: '#f9a8d4', stopOpacity: 1 }} />
|
<stop offset="70%" style={{ stopColor: '#f0abfc', stopOpacity: 1 }} />
|
||||||
<stop offset="100%" style={{ stopColor: '#ec4899', stopOpacity: 0.95 }} />
|
<stop offset="100%" style={{ stopColor: '#d946ef', stopOpacity: 0.95 }} />
|
||||||
</radialGradient>
|
</radialGradient>
|
||||||
|
|
||||||
<radialGradient id="petal-gradient-2" cx="30%" cy="30%">
|
<radialGradient id="petal-gradient-2" cx="30%" cy="30%">
|
||||||
@@ -233,15 +233,13 @@ export default function PivoineDocsIcon({
|
|||||||
<g className="inner-petals">
|
<g className="inner-petals">
|
||||||
{[
|
{[
|
||||||
{ angle: 0, gradient: 3 },
|
{ angle: 0, gradient: 3 },
|
||||||
{ angle: 36, gradient: 4 },
|
{ angle: 45, gradient: 4 },
|
||||||
{ angle: 72, gradient: 1 },
|
{ angle: 90, gradient: 1 },
|
||||||
{ angle: 108, gradient: 2 },
|
{ angle: 135, gradient: 2 },
|
||||||
{ angle: 144, gradient: 3 },
|
{ angle: 180, gradient: 3 },
|
||||||
{ angle: 180, gradient: 4 },
|
{ angle: 225, gradient: 4 },
|
||||||
{ angle: 216, gradient: 1 },
|
{ angle: 270, gradient: 1 },
|
||||||
{ angle: 252, gradient: 2 },
|
{ angle: 315, gradient: 2 },
|
||||||
{ angle: 288, gradient: 3 },
|
|
||||||
{ angle: 324, gradient: 4 },
|
|
||||||
].map((petal, i) => (
|
].map((petal, i) => (
|
||||||
<ellipse
|
<ellipse
|
||||||
key={`inner-${i}`}
|
key={`inner-${i}`}
|
||||||
|
|||||||
155
Projects/docs.pivoine.art/components/icons/QUICK_REFERENCE.md
Normal file
155
Projects/docs.pivoine.art/components/icons/QUICK_REFERENCE.md
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
# Quick Reference: Pivoine Icon Updates
|
||||||
|
|
||||||
|
## ✅ What Was Done
|
||||||
|
|
||||||
|
### 1. **Reduced Petal Count** (Cleaner Design)
|
||||||
|
- **Before**: 26 petals total (8+8+10)
|
||||||
|
- **After**: 20 petals total (6+6+8)
|
||||||
|
- Result: More elegant, less cluttered appearance
|
||||||
|
|
||||||
|
### 2. **Fixed Petal Layout** (Proper Radial Arrangement)
|
||||||
|
- **Before**: All petals stacked on top of each other
|
||||||
|
- **After**: Petals properly arranged in circle around center
|
||||||
|
- Implementation: Using `transform="rotate(angle 128 128)"` on positioned ellipses
|
||||||
|
|
||||||
|
### 3. **Generated Static SVG Icons**
|
||||||
|
|
||||||
|
#### `public/favicon.svg` - For Browser Tabs
|
||||||
|
- Semi-open bloom (75-85% scale)
|
||||||
|
- Optimized for 16x16 to 64x64 pixels
|
||||||
|
- No animations, clean static design
|
||||||
|
|
||||||
|
#### `public/icon.svg` - For PWA & Large Icons
|
||||||
|
- More open bloom (85-90% scale)
|
||||||
|
- Optimized for 128x128 to 512x512 pixels
|
||||||
|
- Includes sparkles, enhanced visibility
|
||||||
|
- Already referenced in manifest.json ✅
|
||||||
|
|
||||||
|
## 🎨 Visual Comparison
|
||||||
|
|
||||||
|
```
|
||||||
|
CLOSED BUD SEMI-OPEN MORE OPEN FULL BLOOM
|
||||||
|
(React Normal) (favicon.svg) (icon.svg) (React Hover)
|
||||||
|
|
||||||
|
🌸 🌸 🌸 🌸 🌸 🌸 🌸 🌸 🌸 🌸
|
||||||
|
🌸⭐🌸 🌸 ⭐ 🌸 🌸 ⭐ 🌸 🌸 ⭐ 🌸
|
||||||
|
🌸 🌸 🌸 🌸 🌸 🌸 🌸 🌸 🌸 🌸
|
||||||
|
|
||||||
|
scale: 0.3-0.5 scale: 0.75-0.85 scale: 0.85-0.9 scale: 1.0-1.1
|
||||||
|
Animated Static Static Animated
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📊 Petal Configuration
|
||||||
|
|
||||||
|
### Outer Layer (6 petals)
|
||||||
|
```
|
||||||
|
Angles: 0°, 60°, 120°, 180°, 240°, 300°
|
||||||
|
Position: cy="70" (58px from center)
|
||||||
|
Size: rx="40" ry="68"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Middle Layer (6 petals)
|
||||||
|
```
|
||||||
|
Angles: 30°, 90°, 150°, 210°, 270°, 330° (offset)
|
||||||
|
Position: cy="78" (50px from center)
|
||||||
|
Size: rx="34" ry="56"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Inner Layer (8 petals)
|
||||||
|
```
|
||||||
|
Angles: 0°, 45°, 90°, 135°, 180°, 225°, 270°, 315°
|
||||||
|
Position: cy="88" (40px from center)
|
||||||
|
Size: rx="28" ry="44"
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔧 How to Use
|
||||||
|
|
||||||
|
### React Component
|
||||||
|
```tsx
|
||||||
|
import PivoineDocsIcon from '@/components/icons/PivoineDocsIcon'
|
||||||
|
|
||||||
|
// Interactive (animations on hover/click)
|
||||||
|
<PivoineDocsIcon size="256px" />
|
||||||
|
|
||||||
|
// Static (matches icon.svg appearance)
|
||||||
|
<PivoineDocsIcon size="128px" interactive={false} />
|
||||||
|
```
|
||||||
|
|
||||||
|
### HTML Head
|
||||||
|
```html
|
||||||
|
<!-- Browser favicon -->
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
||||||
|
|
||||||
|
<!-- PWA manifest (already configured) -->
|
||||||
|
<link rel="manifest" href="/manifest.json">
|
||||||
|
```
|
||||||
|
|
||||||
|
## 📁 Files Modified/Created
|
||||||
|
|
||||||
|
```
|
||||||
|
✅ components/icons/PivoineDocsIcon.tsx (Updated)
|
||||||
|
- Reduced petals: 26 → 20
|
||||||
|
- Fixed petal positioning
|
||||||
|
- Bloom particles: 12 → 10
|
||||||
|
|
||||||
|
✅ public/favicon.svg (Created)
|
||||||
|
- Static semi-open bloom
|
||||||
|
- For browser tabs
|
||||||
|
|
||||||
|
✅ public/icon.svg (Created)
|
||||||
|
- Static more-open bloom
|
||||||
|
- For PWA icons (referenced in manifest.json)
|
||||||
|
|
||||||
|
📄 components/icons/ICON_GENERATION.md (Created)
|
||||||
|
- Full documentation
|
||||||
|
- PNG generation instructions
|
||||||
|
```
|
||||||
|
|
||||||
|
## ⏭️ Optional Next Steps
|
||||||
|
|
||||||
|
Generate PNG versions if needed:
|
||||||
|
```bash
|
||||||
|
# Using ImageMagick
|
||||||
|
convert -background none -density 300 public/icon.svg \
|
||||||
|
-resize 192x192 public/icon-192.png
|
||||||
|
|
||||||
|
convert -background none -density 300 public/icon.svg \
|
||||||
|
-resize 512x512 public/icon-512.png
|
||||||
|
```
|
||||||
|
|
||||||
|
Or use online converters:
|
||||||
|
- https://cloudconvert.com/svg-to-png
|
||||||
|
- https://www.svgtopng.com/
|
||||||
|
|
||||||
|
## ✨ Features
|
||||||
|
|
||||||
|
### React Component
|
||||||
|
- ✅ 3 animation states (normal, hover, click)
|
||||||
|
- ✅ 10 flying bloom particles on hover
|
||||||
|
- ✅ Smooth petal opening/closing
|
||||||
|
- ✅ Center glow and sparkle effects
|
||||||
|
- ✅ Reduced motion support
|
||||||
|
- ✅ Touch device optimization
|
||||||
|
|
||||||
|
### Static SVGs
|
||||||
|
- ✅ Beautiful semi-open bloom
|
||||||
|
- ✅ Multi-gradient peony petals
|
||||||
|
- ✅ Golden center with documentation pages
|
||||||
|
- ✅ Optimized for different sizes
|
||||||
|
- ✅ No dependencies, pure SVG
|
||||||
|
|
||||||
|
## 🎯 Test Checklist
|
||||||
|
|
||||||
|
- ✅ Petals arranged in proper circle
|
||||||
|
- ✅ 20 petals total (reduced from 26)
|
||||||
|
- ✅ Hover animation opens petals smoothly
|
||||||
|
- ✅ Click animation closes petals
|
||||||
|
- ✅ favicon.svg displays correctly in browser
|
||||||
|
- ✅ icon.svg displays correctly when used
|
||||||
|
- ✅ All gradients and filters work
|
||||||
|
- ✅ Center documentation pages visible
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Status**: ✅ Complete and Production Ready
|
||||||
|
**Last Updated**: October 2025
|
||||||
@@ -13,6 +13,5 @@
|
|||||||
<ellipse cx="16" cy="16" rx="5" ry="10" fill="url(#fg)" opacity="0.9" transform="rotate(180 16 16)"/>
|
<ellipse cx="16" cy="16" rx="5" ry="10" fill="url(#fg)" opacity="0.9" transform="rotate(180 16 16)"/>
|
||||||
<ellipse cx="16" cy="16" rx="5" ry="10" fill="url(#fg)" opacity="0.9" transform="rotate(240 16 16)"/>
|
<ellipse cx="16" cy="16" rx="5" ry="10" fill="url(#fg)" opacity="0.9" transform="rotate(240 16 16)"/>
|
||||||
<ellipse cx="16" cy="16" rx="5" ry="10" fill="url(#fg)" opacity="0.9" transform="rotate(300 16 16)"/>
|
<ellipse cx="16" cy="16" rx="5" ry="10" fill="url(#fg)" opacity="0.9" transform="rotate(300 16 16)"/>
|
||||||
<rect x="12" y="12" width="8" height="8" rx="1" fill="#f3f4f6" opacity="0.9"/>
|
|
||||||
<circle cx="16" cy="16" r="3" fill="#fbbf24"/>
|
<circle cx="16" cy="16" r="3" fill="#fbbf24"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -50,18 +50,6 @@
|
|||||||
<ellipse cx="128" cy="128" rx="22" ry="38" fill="url(#petal-gradient-2)" transform="rotate(225 128 128)" opacity="0.95" />
|
<ellipse cx="128" cy="128" rx="22" ry="38" fill="url(#petal-gradient-2)" transform="rotate(225 128 128)" opacity="0.95" />
|
||||||
<ellipse cx="128" cy="128" rx="22" ry="38" fill="url(#petal-gradient-3)" transform="rotate(315 128 128)" opacity="0.95" />
|
<ellipse cx="128" cy="128" rx="22" ry="38" fill="url(#petal-gradient-3)" transform="rotate(315 128 128)" opacity="0.95" />
|
||||||
|
|
||||||
<!-- Document pages in center -->
|
|
||||||
<rect x="102" y="102" width="52" height="52" rx="4" fill="url(#page-gradient)" opacity="0.4" />
|
|
||||||
<rect x="104" y="104" width="48" height="48" rx="4" fill="url(#page-gradient)" opacity="0.6" />
|
|
||||||
<rect x="106" y="106" width="44" height="44" rx="4" fill="url(#page-gradient)" opacity="0.9" />
|
|
||||||
|
|
||||||
<!-- Text lines -->
|
|
||||||
<line x1="112" y1="115" x2="138" y2="115" stroke="#6366f1" stroke-width="2" stroke-linecap="round" opacity="0.6" />
|
|
||||||
<line x1="112" y1="122" x2="144" y2="122" stroke="#6366f1" stroke-width="2" stroke-linecap="round" opacity="0.6" />
|
|
||||||
<line x1="112" y1="129" x2="135" y2="129" stroke="#6366f1" stroke-width="2" stroke-linecap="round" opacity="0.6" />
|
|
||||||
<line x1="112" y1="136" x2="142" y2="136" stroke="#a855f7" stroke-width="2" stroke-linecap="round" opacity="0.6" />
|
|
||||||
<line x1="112" y1="143" x2="137" y2="143" stroke="#a855f7" stroke-width="2" stroke-linecap="round" opacity="0.6" />
|
|
||||||
|
|
||||||
<!-- Center circle -->
|
<!-- Center circle -->
|
||||||
<circle cx="128" cy="128" r="18" fill="url(#center-gradient)" opacity="0.8" />
|
<circle cx="128" cy="128" r="18" fill="url(#center-gradient)" opacity="0.8" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 3.8 KiB |
Reference in New Issue
Block a user