ExampleComponents/ColorOverTime.cs
using Sandbox;

public sealed class ColorOverTime : Component
{
	[Property] public Gradient Gradient { get; set; } = new Gradient( new Gradient.ColorFrame( 0.0f, Color.Cyan ), new Gradient.ColorFrame( 1.0f, Color.Red ) );
	[Property] public float Speed { get; set; } = 1.0f;

	float delta = 0.0f;

	protected override void OnUpdate()
	{
		delta += Time.Delta * Speed;

		var color = Gradient.Evaluate( (delta) % 1.0f );

		GameObject.Components.ForEach<ITintable>( "ChangeColor", false, t =>
		{
			t.Color = color;
		} );
	}
}