enabled, type, count, spread, size/color/opacity/speed aliases.
appearance, movement, lifecycle, and area with strict formats.
solid, random, palette, and area modes are runtime-supported.
enabled, type, count, spread, size/color/opacity/speed aliases.
appearance, movement, lifecycle, and area with strict formats.
solid, random, palette, and area modes are runtime-supported.
enabled, type, count, spread, size/color/opacity/speed aliases.
appearance, movement, lifecycle, and area with strict formats.
solid, random, palette, and area modes are runtime-supported.
enabled, type, count, spread, size/color/opacity/speed aliases.
appearance, movement, lifecycle, and area with strict formats.
solid, random, palette, and area modes are runtime-supported.
enabled, type, count, spread, size/color/opacity/speed aliases.
appearance, movement, lifecycle, and area with strict formats.
solid, random, palette, and area modes are runtime-supported.
enabled, type, count, spread, size/color/opacity/speed aliases.
appearance, movement, lifecycle, and area with strict formats.
solid, random, palette, and area modes are runtime-supported.
enabled, type, count, spread, size/color/opacity/speed aliases.
appearance, movement, lifecycle, and area with strict formats.
solid, random, palette, and area modes are runtime-supported.
enabled, type, count, spread, size/color/opacity/speed aliases.
appearance, movement, lifecycle, and area with strict formats.
solid, random, palette, and area modes are runtime-supported.
Primary focus: exact key formats consumed by ParticleSystem.vue.
hero:
background:
type: particles
particles:
...hero.background.particles.*) | Key | Type | Default | Description |
|---|---|---|---|
enabled | boolean | true | Disables renderer when false. |
type | 'stars' | 'snow' | 'rain' | 'bubbles' | 'sparks' | 'custom' | stars | Preset profile with type-based defaults. |
count | number | 420 | Particle count, clamped to 40..deviceLimit (roughly 600-2200). |
spread | number | 3 | Distribution scale, clamped to 1..12. |
size | number | by type | Alias of appearance.size. |
color | RgbaColor | ThemeValue<RgbaColor> | by type | Alias of appearance.color. |
opacity | number | ThemeValue<number> | by type | Alias of appearance.opacity, clamped to 0.04..1. |
speed | number | { min?: number; max?: number } | by type | Alias of movement.speed. |
RgbaColor = rgba(r, g, b, a) string.
| Key | Domain |
|---|---|
particles.type | Motion/behavior preset (stars/snow/rain/bubbles/sparks/custom). |
particles.appearance.type | Visual sprite shape (dot/circle/square/star/custom). |
Use particles.type to control movement defaults.
Use appearance.type (or alias appearance.shape) to control the rendered point look.
appearance | Key | Type | Default | Notes |
|---|---|---|---|
appearance.size | number | by type | Runtime-normalized to render size. |
appearance.type | 'dot' | 'circle' | 'square' | 'star' | 'custom' | by type | Visual sprite type. dot maps to circle. |
appearance.shape | 'dot' | 'circle' | 'square' | 'star' | 'custom' | by type | Backward-compatible alias of appearance.type. |
appearance.texture | string | ThemeValue<string> | unset | Path/URL, loaded as point texture. |
appearance.textureColorMode | 'mask' | 'image' | 'mask' | mask: color comes from rgba settings. image: keep texture original colors. |
appearance.color | RgbaColor | ThemeValue<RgbaColor> | by type | Preferred color key. |
appearance.opacity | number | ThemeValue<number> | by type | Preferred opacity key. |
appearance.colorMode | 'solid' | 'random' | 'palette' | 'area' | auto | Color distribution strategy. |
appearance.randomColorChance | number | 1 | Chance for random/palette color per spawn (0..1). |
appearance.palette | RgbaColor[] | [] | Palette source for palette mode. |
appearance.areaColor.axis | 'x' | 'y' | 'z' | 'radius' | x | Axis used by area mode. |
appearance.areaColor.colors | RgbaColor[] | [] | Area gradient palette. |
movement | Key | Type | Default | Notes |
|---|---|---|---|
movement.speed | number | { min?: number; max?: number } | by type | Number expands to approx 0.75x..1.25x. |
movement.direction | [number, number, number] | by type | Direction vector for velocity initialization. |
movement.gravity | number | by type | Clamped to -1..1. |
movement.turbulence | number | by type | Clamped to 0..2. |
movement.tiltVariance | number | auto (small particle boost) | Adds positive/negative lateral tilt variance, useful for tiny particles. |
lifecycle | Key | Type | Default | Notes |
|---|---|---|---|
lifecycle.respawn | boolean | true | false makes out-of-bounds particles bounce instead of respawn. |
area | Key | Type | Default | Notes |
|---|---|---|---|
area.type | 'box' | 'sphere' | 'plane' | by type | Spawn volume geometry. |
area.size | number | [number, number, number] | by type | Number expands to [n, n, n]. |
area.position | [number, number, number] | by type | Spawn volume center. |
hero:
background:
type: particles
particles:
enabled: true
type: custom
count: 360
spread: 3.8
appearance:
size: 0.11
type: star
textureColorMode: mask
colorMode: palette
randomColorChance: 0.72
palette:
- "rgba(62, 96, 210, 1)"
- "rgba(132, 102, 238, 1)"
- "rgba(242, 122, 168, 1)"
areaColor:
axis: x
colors:
- "rgba(62, 96, 210, 1)"
- "rgba(132, 102, 238, 1)"
- "rgba(242, 122, 168, 1)"
texture:
light: "/textures/particle-light.png"
dark: "/textures/particle-dark.png"
color:
light: "rgba(62, 96, 210, 1)"
dark: "rgba(190, 216, 255, 1)"
opacity:
light: 0.58
dark: 0.82
movement:
speed:
min: 0.05
max: 0.16
direction: [0.06, -0.52, 0.04]
gravity: -0.01
turbulence: 0.22
tiltVariance: 0.1
lifecycle:
respawn: true
area:
type: box
size: [8, 4, 8]
position: [0, 0.8, 0]stars particles:
type: stars
count: 280
spread: 3.4snow particles:
type: snow
count: 260
movement:
turbulence: 0.55rain particles:
type: rain
count: 460
area:
type: plane
size: [10, 2.5, 10]bubbles particles:
type: bubbles
count: 220
movement:
direction: [0, 1.1, 0]sparks particles:
type: sparks
count: 240
movement:
turbulence: 0.75custom particles:
type: custom
appearance:
type: custom
texture: "/textures/custom-particle.png"| Invalid key | Why |
|---|---|
particles.colorType | Not read by runtime. |
particles.colors | Not read by runtime. |
particles.theme | Not a supported particles contract. |
particles.appearance.frameType | Not part of particles appearance contract. |