diff --git a/Wave/Components/ToastComponent.razor b/Wave/Components/ToastComponent.razor
new file mode 100644
index 0000000..1c931db
--- /dev/null
+++ b/Wave/Components/ToastComponent.razor
@@ -0,0 +1,35 @@
+
+ @foreach (var message in Messages) {
+
Messages.Remove(message)">
+ @if (message.Title is null) {
+ @message.Body
+ } else {
+ @message.Title
+ @message.Body
+ }
+
+ }
+
+
+@code {
+ private List Messages { get; } = [];
+
+ public void ShowInfo(string message, string? title = null) {
+ Messages.Add(new Message(message, "alert-info", title, DateTimeOffset.UtcNow));
+ StateHasChanged();
+ }
+ public void ShowSuccess(string message, string? title = null) {
+ Messages.Add(new Message(message, "alert-success", title, DateTimeOffset.UtcNow));
+ StateHasChanged();
+ }
+ public void ShowWarning(string message, string? title = null) {
+ Messages.Add(new Message(message, "alert-warning", title, DateTimeOffset.UtcNow));
+ StateHasChanged();
+ }
+ public void ShowError(string message, string? title = null) {
+ Messages.Add(new Message(message, "alert-error", title, DateTimeOffset.UtcNow));
+ StateHasChanged();
+ }
+
+ private sealed record Message(string Body, string Type, string? Title, DateTimeOffset Created);
+}