Icons are the visual shorthand of the interface, providing fast
recognition and universal meaning. A single icon library — Lucide —
ensures total visual consistency.
Icon System
VirtualLife AI Imagine uses
Lucide (@lucide/svelte) as its
exclusive icon library. Lucide is an open-source fork of Feather
Icons with broader coverage, consistent geometry, and an active
community.
24px (renders to 16px inline with text at base font)
Fill
none — outlined style always (never filled)
License
ISC (open source, free for commercial use)
Import Pattern
<!-- Tree-shaking: import only what you use -->import { Sparkles, Settings, Download } from'@lucide/svelte';
<!-- Usage -->
<Sparkles size={16}strokeWidth={2} />
<Settings class="size-4" />
<Download size={20}class="text-muted-foreground" />
Never mix icon libraries. If Lucide doesn't have
an icon you need, request it from the Lucide project or create a
custom SVG following their geometry constraints (24×24 viewbox,
2px stroke, rounded joins, 2px minimum padding from edges).
Size Scale
Icons scale across five levels depending on context. Smaller for
dense UI, larger for focal points and onboarding.
Hero icons, image overlay play buttons, title bar logo
Stroke Width
Stroke width affects visual weight. The default is 2, but we
adjust for specific contexts.
1
strokeWidth: 1
1.5
strokeWidth: 1.5
2
strokeWidth: 2 ★
2.5
strokeWidth: 2.5
Stroke Width
When to Use
1.5
Large icons (32px+) — lighter weight prevents visual
heaviness at scale. Used on startup screen.
2 (default)
Standard — all regular UI icons (14–24px). Matches Lucide
default weight.
2.5
Small icons (10–12px) where extra weight improves
readability at tiny sizes. Rare.
Consistency rule: Within a single component or
region, all icons must use the same stroke width. Never mix stroke
widths in a toolbar, card, or menu.
Icon Catalog
Icons used throughout the app, organized by function. Each icon
has a single semantic meaning — the same icon is never used for
two different purposes.
Navigation
Icon
Component
Meaning
Sparkles
Generate
PenLine
Edit
LayoutGrid
Gallery
ArrowUpDown
Quick Sort
Store
Model Catalog
GitCompareArrows
Model Compare
Settings
Settings page
BrainCircuit
App icon / AI brain
Actions
Icon
Component
Meaning
Download
Save / download image
Share2
Share image
Copy
Copy to clipboard
Trash2
Delete
Heart
Favorite / like
Star
Best / starred
RefreshCw
Rerun / regenerate
RotateCcw
Undo / revert
ZoomIn
Zoom in / enlarge
Maximize2
Fullscreen
Status & Indicators
Icon
Component
Meaning
Check
Success / confirmed
X
Close / dismiss / error
AlertTriangle
Warning
Info
Information
Loader2
Loading (animated spin)
CircleDot
Online / connected status
CircleOff
Offline / disconnected
Media & Content
Icon
Component
Meaning
Image
Image file
Video
Video file
Wand2
AI enhancement / magic
Eraser
Remove background
ArrowUpFromLine
Upscale
SlidersHorizontal
Parameters / settings
Palette
Theme / appearance
FolderOpen
Open folder / browse
Search
Search
Filter
Filter options
Auth & User
Icon
Component
Meaning
User
User account (signed in)
LogIn
Sign in prompt (signed out)
LogOut
Sign out
Shield
Security / auth
Pairing Rules
How icons combine with text, buttons, and other UI elements.
Context
Icon Size
Gap
Position
Button with label
sm (16px)
gap-2 (8px)
Leading (before text). Trailing only for directional arrows.
Icon-only button
sm (16px)
—
Centered. Must have aria-label or tooltip.
Sidebar nav item
md (20px)
—
Centered in 40×40px hit area. Tooltip on hover.
Input prefix
sm (16px)
gap-2 (8px)
Leading inside input field (absolute positioned).
Badge
2xs (10px)
gap-1 (4px)
Leading, vertically centered.
Card header
sm–md (16–20px)
gap-2 (8px)
Leading the title text.
Toast
sm (16px)
gap-2 (8px)
Leading, vertically aligned to first line of text.
Radial menu item
sm (16px)
—
Centered in 40×40px circle. Label on hover.
Color Rules
State
Icon Color
Tailwind Class
Default
Matches text color
text-foreground
(inherits)
Secondary / muted
Reduced emphasis
text-muted-foreground
Destructive action
Error red
text-destructive
Success indicator
Status green
text-green-500
Warning indicator
Status amber
text-yellow-500
Disabled
Very low contrast
text-muted-foreground opacity-50
Accessibility: Icons are always decorative when
paired with text (add aria-hidden="true"). When used
alone (icon-only buttons), they must have
aria-label describing the action, and a visible
tooltip on hover for sighted users.
Custom Marks
Beyond Lucide icons, the app uses two custom visual marks that
carry special meaning.
1. Sparkle Mark (✦)
✦
The four-pointed star (Unicode ✦ or Lucide
Sparkles) is the signature mark of the app. It
appears on the Generate button, in the sidebar, and as a
decorative element on the startup screen. It represents the
moment of AI creation — the spark where imagination becomes
image.
2. Brain Circuit (App Icon)
🧠
BrainCircuit from Lucide serves as the app icon.
It's displayed in the title bar at 24px. The brain represents
the "human creativity" side (Life), while the circuit traces
represent the "AI technology" side (Virtual). This duality is
core to the brand.
Window Controls
Window control buttons (minimize, maximize/restore, close) use
Lucide icons:
Minus, Maximize2 /
Minimize2, X. Size 14px, stroke-width 2.
These are the only icons that deviate from the Lucide default
sizing, rendered at 14px to match platform conventions.