diff --git a/app/MindWork AI Studio/Components/Blocks/SplitButton.razor b/app/MindWork AI Studio/Components/Blocks/SplitButton.razor
new file mode 100644
index 00000000..972e11aa
--- /dev/null
+++ b/app/MindWork AI Studio/Components/Blocks/SplitButton.razor
@@ -0,0 +1,24 @@
+@typeparam T
+
+
+ @if (string.IsNullOrWhiteSpace(this.Icon))
+ {
+
+ @this.SelectedValueName()
+
+ }
+ else
+ {
+
+ @this.SelectedValueName()
+
+ }
+
+ @foreach(var item in this.Items)
+ {
+
+ @this.NameFunc(item)
+
+ }
+
+
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Components/Blocks/SplitButton.razor.cs b/app/MindWork AI Studio/Components/Blocks/SplitButton.razor.cs
new file mode 100644
index 00000000..9a5e2434
--- /dev/null
+++ b/app/MindWork AI Studio/Components/Blocks/SplitButton.razor.cs
@@ -0,0 +1,64 @@
+using Microsoft.AspNetCore.Components;
+
+namespace AIStudio.Components.Blocks;
+
+public partial class SplitButton : ComponentBase
+{
+ [Parameter]
+ public Color Color { get; set; } = Color.Default;
+
+ [Parameter]
+ public string Icon { get; set; } = string.Empty;
+
+ [Parameter]
+ public IReadOnlyCollection Items { get; set; } = [];
+
+ [Parameter]
+ public Func NameFunc { get; set; } = _ => string.Empty;
+
+ [Parameter]
+ public T? PreselectedValue { get; set; }
+
+ [Parameter]
+ public Func OnClick { get; set; } = _ => Task.CompletedTask;
+
+ ///
+ /// What happens when the user selects an item by the dropdown?
+ /// Immediate = true means that the OnClick event is triggered immediately
+ /// after the user selects an item. Immediate = false means that the OnClick
+ /// event is triggered only when the user clicks the button.
+ ///
+ [Parameter]
+ public bool Immediate { get; set; }
+
+ #region Overrides of ComponentBase
+
+ protected override async Task OnInitializedAsync()
+ {
+ if(this.PreselectedValue is not null)
+ this.selectedValue = this.PreselectedValue;
+ else
+ this.selectedValue = this.Items.FirstOrDefault();
+
+ await base.OnInitializedAsync();
+ }
+
+ #endregion
+
+ private T? selectedValue;
+
+ private string SelectedValueName()
+ {
+ if(this.selectedValue is null)
+ return "Select...";
+
+ return this.NameFunc(this.selectedValue!);
+ }
+
+ private void SelectItem(T item)
+ {
+ this.selectedValue = item;
+ if(this.Immediate)
+ this.OnClick(this.selectedValue);
+ }
+}
\ No newline at end of file