feat: add wallpaper types and animation metadata
AnimationType, WallpaperConfig, uniform definitions, and animation tier metadata (free/premium/pro).
This commit is contained in:
79
src/types/wallpaper.ts
Normal file
79
src/types/wallpaper.ts
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
export type AnimationType =
|
||||||
|
| "ken-burns"
|
||||||
|
| "color-shift"
|
||||||
|
| "particles"
|
||||||
|
| "vignette-pulse"
|
||||||
|
| "glitch"
|
||||||
|
| "depth-parallax";
|
||||||
|
|
||||||
|
export type ParticlePreset = "snow" | "rain" | "bokeh" | "dust" | "fireflies";
|
||||||
|
|
||||||
|
export interface AnimationUniforms {
|
||||||
|
intensity: number;
|
||||||
|
speed: number;
|
||||||
|
direction: number; // 0-360 degrees
|
||||||
|
scale: number;
|
||||||
|
[key: string]: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface WallpaperConfig {
|
||||||
|
id: string;
|
||||||
|
sourceUri: string;
|
||||||
|
depthMapUri?: string;
|
||||||
|
animation: AnimationType;
|
||||||
|
uniforms: AnimationUniforms;
|
||||||
|
particlePreset?: ParticlePreset;
|
||||||
|
fps: number;
|
||||||
|
createdAt: string;
|
||||||
|
updatedAt: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface WallpaperPreview {
|
||||||
|
id: string;
|
||||||
|
thumbnailUri: string;
|
||||||
|
animation: AnimationType;
|
||||||
|
config: WallpaperConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const DEFAULT_UNIFORMS: AnimationUniforms = {
|
||||||
|
intensity: 0.5,
|
||||||
|
speed: 0.3,
|
||||||
|
direction: 0,
|
||||||
|
scale: 1.0,
|
||||||
|
};
|
||||||
|
|
||||||
|
export const ANIMATION_META: Record<
|
||||||
|
AnimationType,
|
||||||
|
{ label: string; description: string; tier: "free" | "premium" | "pro" }
|
||||||
|
> = {
|
||||||
|
"ken-burns": {
|
||||||
|
label: "Ken Burns",
|
||||||
|
description: "Zoom lent et panoramique doux",
|
||||||
|
tier: "free",
|
||||||
|
},
|
||||||
|
"color-shift": {
|
||||||
|
label: "Color Shift",
|
||||||
|
description: "Variation cyclique teinte/saturation",
|
||||||
|
tier: "free",
|
||||||
|
},
|
||||||
|
particles: {
|
||||||
|
label: "Particules",
|
||||||
|
description: "Overlay animé de particules",
|
||||||
|
tier: "free",
|
||||||
|
},
|
||||||
|
"vignette-pulse": {
|
||||||
|
label: "Vignette",
|
||||||
|
description: "Vignette dynamique oscillante",
|
||||||
|
tier: "premium",
|
||||||
|
},
|
||||||
|
glitch: {
|
||||||
|
label: "Glitch",
|
||||||
|
description: "Décalage RGB avec noise",
|
||||||
|
tier: "premium",
|
||||||
|
},
|
||||||
|
"depth-parallax": {
|
||||||
|
label: "Parallax 3D",
|
||||||
|
description: "Effet de profondeur via depth map IA",
|
||||||
|
tier: "pro",
|
||||||
|
},
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user