diff --git a/app/MindWork AI Studio/Components/Blocks/MudTextSlider.razor b/app/MindWork AI Studio/Components/Blocks/MudTextSlider.razor
new file mode 100644
index 00000000..3c95b8dd
--- /dev/null
+++ b/app/MindWork AI Studio/Components/Blocks/MudTextSlider.razor
@@ -0,0 +1,7 @@
+@typeparam T
+
+
+
+ @this.Value @this.Unit
+
+
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Components/Blocks/MudTextSlider.razor.cs b/app/MindWork AI Studio/Components/Blocks/MudTextSlider.razor.cs
new file mode 100644
index 00000000..c3e24111
--- /dev/null
+++ b/app/MindWork AI Studio/Components/Blocks/MudTextSlider.razor.cs
@@ -0,0 +1,78 @@
+using System.Numerics;
+
+using Microsoft.AspNetCore.Components;
+
+namespace AIStudio.Components.Blocks;
+
+public partial class MudTextSlider : ComponentBase where T : struct, INumber
+{
+ ///
+ /// The minimum value for the slider.
+ ///
+ [Parameter]
+ public T Min { get; set; } = T.Zero;
+
+ ///
+ /// The maximum value for the slider.
+ ///
+ [Parameter]
+ public T Max { get; set; } = T.One;
+
+ ///
+ /// The step size for the slider.
+ ///
+ [Parameter]
+ public T Step { get; set; } = T.One;
+
+ ///
+ /// The unit to display next to the slider's value.
+ ///
+ [Parameter]
+ public string Unit { get; set; } = string.Empty;
+
+ [Parameter]
+ public T Value { get; set; }
+
+ [Parameter]
+ public EventCallback ValueChanged { get; set; }
+
+ ///
+ /// The label to display above the slider.
+ ///
+ [Parameter]
+ public string Label { get; set; } = string.Empty;
+
+ [Parameter]
+ public Func Disabled { get; set; } = () => false;
+
+ #region Overrides of ComponentBase
+
+ protected override async Task OnInitializedAsync()
+ {
+ await this.EnsureMinMax();
+ await base.OnInitializedAsync();
+ }
+
+ protected override async Task OnParametersSetAsync()
+ {
+ await this.EnsureMinMax();
+ await base.OnParametersSetAsync();
+ }
+
+ #endregion
+
+ private async Task EnsureMinMax()
+ {
+ if (this.Value < this.Min)
+ await this.ValueUpdated(this.Min);
+
+ else if(this.Value > this.Max)
+ await this.ValueUpdated(this.Max);
+ }
+
+ private async Task ValueUpdated(T value)
+ {
+ this.Value = value;
+ await this.ValueChanged.InvokeAsync(this.Value);
+ }
+}
\ No newline at end of file