|string> */ public function rules(): array { return [ 'settings' => ['required', 'array'], 'settings.theme' => ['nullable', 'string', 'max:50'], 'settings.floatingLines' => ['nullable', 'array'], 'settings.appearance' => ['nullable', 'string', 'max:50'], 'settings.accentColor' => ['nullable', 'string', 'max:50'], 'settings.language' => ['nullable', 'string', 'max:10'], 'settings.emotionGradientStart' => ['nullable', 'string', 'max:20'], 'settings.emotionGradientEnd' => ['nullable', 'string', 'max:20'], 'settings.timelineZoom' => ['nullable', 'numeric', 'min:0.1', 'max:10'], 'settings.timelineScrollLeft' => ['nullable', 'numeric', 'min:0'], 'settings.showFps' => ['nullable', 'boolean'], 'settings.presets' => ['nullable', 'array'], 'settings.activePresetId' => ['nullable', 'string', 'max:100'], ]; } }