name: generate-y1-theme description: Generates all SVG assets for a Y1 music player theme. Use this when asked to generate theme assets, create SVGs for a Y1 theme, or build a new theme from a style guide.
Y1 Theme Asset Generation
Generate all 86 SVG assets for a Y1 theme. Follow every instruction here precisely — coherence across all assets depends on it.
Before You Start
- Identify the theme directory. It will be under
themes/<name>/orexamples/<name>/. If not told, ask. - Read
<theme-dir>/style-guide.md— this is the locked aesthetic. Every decision must comply with it. - Read
<theme-dir>/icon-catalog.json— this is the complete asset registry. Every file you need to generate is listed here with itssvgFilename,dimensions,designIntent, andcategory. - Write all SVGs to
<theme-dir>/svg/. - Do not stop for review between assets. Generate all 86, then summarise.
SVG Technical Structure
Every SVG must follow this exact structure:
<svg xmlns="http://www.w3.org/2000/svg" width="W" height="H" viewBox="0 0 W H">
<defs>
<filter id="glow" x="-30%" y="-30%" width="160%" height="160%">
<feGaussianBlur stdDeviation="2.5" result="blur"/>
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
<filter id="glow-strong" x="-50%" y="-50%" width="200%" height="200%">
<feGaussianBlur stdDeviation="5" result="blur"/>
<feMerge><feMergeNode in="blur"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
</defs>
<!-- background always first -->
<rect width="W" height="H" fill="#0A0A14"/>
<!-- icon content -->
</svg>
WandHcome from thedimensionsfield in the catalog (e.g."166x166"→width="166" height="166")- Use
stroke-linecap="round"andstroke-linejoin="round"throughout - Add additional named filters in
<defs>as needed for specific glow colours
Palette (from style-guide.md)
| Role | Hex |
|---|---|
| Background | #0A0A14 |
| Primary/text | #F0EDE6 |
| Violet (accent) | #7B3FE4 |
| Cyan (active/on) | #3FFFD8 |
| Red (warning/media) | #E84040 |
| Sand (warm accent) | #C8A96E |
| Dim (off/inactive) | #3A3A5C |
Category Style Weight
| Category | Style |
|---|---|
main-menu (166×166) |
Rich, layered, multiple elements, glows prominent |
settings (146×146) |
Functional, 1-2 primary shapes, subtle glow |
status (64×64) |
Minimal silhouette only, thin strokes, glow optional |
battery (64×32) |
Horizontal pill, segmented fill — no glow on pill body |
ui-chrome (640×91) |
Backgrounds/rows — flat fills, left accent bar for selected |
wallpaper (320×240) |
Full scene — sky, horizon, foreground elements |
mask (480×272) |
Device frame outline only |
cover (200×200) |
Composite — combine 3-4 key motifs from the theme |
ON/OFF State Pairs
Assets with -on / -off suffixes are state pairs. The rules are strict:
- ON state: full palette colours + appropriate
filter="url(#glow)"orfilter="url(#glow-strong)"on key elements - OFF state: identical shapes, but ALL strokes and fills changed to
#3A3A5C, NOfilterattributes at all - The shape must be pixel-identical between on and off — only colour and filter change
Sequential Sets
Some assets are a progression (battery levels, backlight durations, timer durations):
- Use the same base shape for every step in the set
- Vary only fill amount, colour intensity, or segment count
- The progression should read visually as a clear sequence (e.g. battery-1 is almost empty → battery-4 is full)
Battery specifics (64×32)
- Pill shape: outer rect with rounded corners, small terminal nub on right
- 4 segments filled left-to-right: 1=
#E84040(1 seg), 2=#C8A96E(2 segs), 3=#F0EDE6(3 segs), 4=#3FFFD8(4 segs full) - Charging variants: identical pill + a lightning bolt centred over it (white stroke)
Backlight specifics (146×146)
- 8 steps from dim crescent moon (10s) → blazing full sun (always-on)
- Steps: crescent → quarter moon → half moon → 3/4 moon → full moon → sun with few rays → sun with many rays → blazing sun with glow-strong
Timer specifics (146×146)
timer-off: empty hourglass, crescent moon, all#3A3A5Ctimer-10throughtimer-120: hourglass with progressive sand fill (red → sand → cyan as duration increases) + crescent moon in corner
EQ Preset Icons (146×146)
10 EQ presets, each with a unique 5-bar frequency profile:
eq-normal: flat, all bars same height, whiteeq-classical: low, low, mid, low, low — a wide gentle curve, cyaneq-dance: tall bass, mid notch, tall treble — violeteq-flat: all bars at minimum height, dimeq-folk: mid-forward hump, sandeq-heavymetal: scooped mids (tall-short-tall-short-tall), redeq-hiphop: very tall bass (left 2), rest shorter, violeteq-jazz: moderate curve peaking at mid, cyaneq-pop: V-shape (tall bass + tall treble, low mids), sandeq-rock: tall bass, tall treble, moderate mids — red/white
Working Through the Catalog
For each entry in icon-catalog.json:
- Note the
svgFilename— that is the output filename, written to<theme-dir>/svg/<svgFilename> - Note
dimensionsfor the viewBox - Read
designIntentcarefully — it describes exactly what to draw - Read
descriptionfor additional context - Apply
categorystyle weight rules above - Create the SVG file
Work through all entries. When done, report a count of files created and any that were skipped.
Next step: run /validate-y1-theme to check dimensions, structure, and ON/OFF pairs before deploying.