\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/AiIntegration/GeminiIntegration.razor b/AiAssistview/Components/Pages/AiIntegration/GeminiIntegration.razor
new file mode 100644
index 00000000..57b1bf39
--- /dev/null
+++ b/AiAssistview/Components/Pages/AiIntegration/GeminiIntegration.razor
@@ -0,0 +1,72 @@
+@page "/geminiintegration"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+@using Mscc.GenerativeAI
+@using Markdig
+
+
+
+
+// Initializes the AI Assist component
+
+
+
+
+
+
+
AI Assistance
+ To get started, provide input or choose a suggestion.
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private SfAIAssistView sfAIAssistView = new SfAIAssistView();
+ private List promptSuggestions = new List
+ {
+ "What are the best tools for organizing my tasks?",
+ "How can I maintain work-life balance effectively?"
+ };
+ // Initialize Gemini API
+ private readonly string geminiApiKey = "";
+ // Handle user prompt: call Gemini model
+ private async Task OnPromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ try
+ {
+ var gemini = new GoogleAI(apiKey: geminiApiKey); // Replace with your Gemini API key
+ var model = gemini.GenerativeModel(model: "gemini-2.5-flash"); // Select the Gemini model (update model name as needed)
+ var response = await model.GenerateContent(args.Prompt);
+ var responseText = response.Text;
+ var pipeline = new MarkdownPipelineBuilder()
+ .UseAdvancedExtensions()
+ .UsePipeTables()
+ .UseTaskLists()
+ .Build();
+ // Add the response to the AIAssistView
+ await Task.Delay(1000); // Simulate delay as in original code
+ args.Response = Markdown.ToHtml(responseText, pipeline);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"Error fetching Gemini response: {ex.Message}");
+ await Task.Delay(1000);
+ args.Response = "⚠️ Something went wrong while connecting to the AI service. Please check your API key or try again later.";
+ }
+ }
+
+ private void ToolbarItemClicked(AssistViewToolbarItemClickedEventArgs args)
+ {
+ sfAIAssistView.Prompts.Clear();
+ StateHasChanged();
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/AiIntegration/OllamaLLMIntegration.razor b/AiAssistview/Components/Pages/AiIntegration/OllamaLLMIntegration.razor
new file mode 100644
index 00000000..94cc929b
--- /dev/null
+++ b/AiAssistview/Components/Pages/AiIntegration/OllamaLLMIntegration.razor
@@ -0,0 +1,140 @@
+@page "/ollamallmintegration"
+@rendermode InteractiveServer
+
+@using Markdig
+@using Microsoft.Extensions.AI
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
AI Assistance
+ Live responses streamed from your local Ollama model.
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private SfAIAssistView AIAssist = new();
+ private bool responseStopped = false;
+ private bool isStreaming = false;
+
+ // Suggestion list
+ private List suggestions = new()
+ {
+ "What are the best tools for organizing my tasks?",
+ "How can I maintain work-life balance effectively?"
+ };
+
+ [Inject] private IChatClient ChatClient { get; set; } = default!;
+
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ responseStopped = false;
+ isStreaming = true; // turn on Stop button
+
+ try
+ {
+ var pipeline = new MarkdownPipelineBuilder()
+ .UseAdvancedExtensions()
+ .UsePipeTables()
+ .UseTaskLists()
+ .Build();
+
+ var messages = new List
+ {
+ new(ChatRole.System, "You are a helpful AI assistant. Respond with clear, concise explanations. Use Markdown when helpful."),
+ new(ChatRole.User, args.Prompt)
+ };
+
+ var buffer = new System.Text.StringBuilder();
+ const int updateRateChars = 5;
+ int lastLenPushed = 0;
+
+ await foreach (var update in ChatClient.GetStreamingResponseAsync(messages))
+ {
+ if (responseStopped) break;
+ if (string.IsNullOrEmpty(update?.Text)) continue;
+
+ buffer.Append(update.Text);
+
+ if (buffer.Length - lastLenPushed >= updateRateChars)
+ {
+ string html = Markdown.ToHtml(buffer.ToString(), pipeline);
+ await AIAssist.UpdateResponseAsync(html);
+ await AIAssist.ScrollToBottomAsync();
+ lastLenPushed = buffer.Length;
+ }
+ }
+
+ if (!responseStopped)
+ {
+ string finalHtml = Markdown.ToHtml(buffer.ToString(), pipeline);
+ await AIAssist.UpdateResponseAsync(finalHtml);
+ await AIAssist.ScrollToBottomAsync();
+ }
+
+ args.PromptSuggestions = suggestions;
+ }
+ catch (Exception ex)
+ {
+ await AIAssist.UpdateResponseAsync($"Error generating response: {ex.Message}");
+ await AIAssist.ScrollToBottomAsync();
+ }
+ finally
+ {
+ responseStopped = false;
+ isStreaming = true;
+ StateHasChanged();
+ }
+ }
+
+ private void ToolbarItemClicked(AssistViewToolbarItemClickedEventArgs args)
+ {
+ // Handle Refresh
+ if (args.Item.IconCss == "e-icons e-refresh")
+ {
+ AIAssist.Prompts.Clear();
+
+ AIAssist.PromptSuggestions = suggestions;
+ }
+ }
+
+ private void HandleStopResponse(ResponseStoppedEventArgs args)
+ {
+ responseStopped = true;
+ }
+}
+
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/AiIntegration/OpenAiIntegration.razor b/AiAssistview/Components/Pages/AiIntegration/OpenAiIntegration.razor
new file mode 100644
index 00000000..ae8d7a69
--- /dev/null
+++ b/AiAssistview/Components/Pages/AiIntegration/OpenAiIntegration.razor
@@ -0,0 +1,77 @@
+@page "/openaiintegration"
+@rendermode InteractiveServer
+
+@using AIAssistView_AzureAI.Components.Services
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+@inject AzureOpenAIService OpenAIService
+
+
+
+// Initialize AI AssistView component
+
+
+
+
+
+
+
+
AI Assistance
+ To get started, provide input or choose a suggestion.
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private SfAIAssistView assistView;
+ private string finalResponse { get; set; }
+ private List promptSuggestions = new List
+ {
+ "What are the best tools for organizing my tasks?",
+ "How can I maintain work-life balance effectively?"
+ };
+
+ // Handle user prompt: call Azure OpenAI Chat Completions
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ // Reset the response for this prompt
+ var lastIdx = assistView.Prompts.Count - 1;
+ assistView.Prompts[lastIdx].Response = string.Empty;
+ finalResponse = string.Empty;
+ try
+ {
+ await foreach (var chunk in OpenAIService.GetChatResponseStreamAsync(args.Prompt))
+ {
+ await UpdateResponse(args, chunk);
+ }
+
+ args.Response = finalResponse;
+ }
+ catch (Exception ex)
+ {
+ args.Response = $"Error: {ex.Message}";
+ }
+ }
+
+ private async Task UpdateResponse(AssistViewPromptRequestedEventArgs args, string response)
+ {
+ var lastIdx = assistView.Prompts.Count - 1;
+ await Task.Delay(10); // Small delay for UI updates
+ assistView.Prompts[lastIdx].Response += response.Replace("\n", " ");
+ finalResponse = assistView.Prompts[lastIdx].Response;
+ StateHasChanged();
+ }
+
+ private void ToolbarItemClicked(AssistViewToolbarItemClickedEventArgs args)
+ {
+ assistView.Prompts.Clear();
+ StateHasChanged();
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Appearance/AppearanceNav.razor b/AiAssistview/Components/Pages/Appearance/AppearanceNav.razor
new file mode 100644
index 00000000..d151f6f4
--- /dev/null
+++ b/AiAssistview/Components/Pages/Appearance/AppearanceNav.razor
@@ -0,0 +1,10 @@
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Appearance/Height.razor b/AiAssistview/Components/Pages/Appearance/Height.razor
new file mode 100644
index 00000000..10243c32
--- /dev/null
+++ b/AiAssistview/Components/Pages/Appearance/Height.razor
@@ -0,0 +1,19 @@
+@page "/height"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Appearance/Width.razor b/AiAssistview/Components/Pages/Appearance/Width.razor
new file mode 100644
index 00000000..338d3b7e
--- /dev/null
+++ b/AiAssistview/Components/Pages/Appearance/Width.razor
@@ -0,0 +1,19 @@
+@page "/width"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Assistview/AssistviewNav.razor b/AiAssistview/Components/Pages/Assistview/AssistviewNav.razor
new file mode 100644
index 00000000..185e09cf
--- /dev/null
+++ b/AiAssistview/Components/Pages/Assistview/AssistviewNav.razor
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Assistview/PromptIconCss.razor b/AiAssistview/Components/Pages/Assistview/PromptIconCss.razor
new file mode 100644
index 00000000..1df3757c
--- /dev/null
+++ b/AiAssistview/Components/Pages/Assistview/PromptIconCss.razor
@@ -0,0 +1,24 @@
+@page "/prompticoncss"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private List prompts = new List()
+ {
+ new AssistViewPrompt() { Prompt = "What is AI?", Response = "
AI stands for Artificial Intelligence, enabling machines to mimic human intelligence for tasks such as learning, problem-solving, and decision-making.
" }
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var promptData = prompts.FirstOrDefault(prompt => prompt.Prompt == args.Prompt);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = string.IsNullOrEmpty(promptData.Response) ? defaultResponse : promptData.Response;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Assistview/PromptPlaceholder.razor b/AiAssistview/Components/Pages/Assistview/PromptPlaceholder.razor
new file mode 100644
index 00000000..5aa462b5
--- /dev/null
+++ b/AiAssistview/Components/Pages/Assistview/PromptPlaceholder.razor
@@ -0,0 +1,19 @@
+@page "/promptplaceholder"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Assistview/PromptSuggestion.razor b/AiAssistview/Components/Pages/Assistview/PromptSuggestion.razor
new file mode 100644
index 00000000..53e689d7
--- /dev/null
+++ b/AiAssistview/Components/Pages/Assistview/PromptSuggestion.razor
@@ -0,0 +1,22 @@
+@page "/promptsuggestion"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ List suggestions = new List { "Best practices for clean, maintainable code?", "How to optimize code editor for speed?" };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var response1 = "Use clear naming, break code into small functions, avoid repetition, write tests, and follow coding standards.";
+ var response2 = "Install useful extensions, set up shortcuts, enable linting, and customize settings for smoother development.";
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = args.Prompt == suggestions[0] ? response1 : args.Prompt == suggestions[1] ? response2 : defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Assistview/PromptSuggestionHeader.razor b/AiAssistview/Components/Pages/Assistview/PromptSuggestionHeader.razor
new file mode 100644
index 00000000..b868166a
--- /dev/null
+++ b/AiAssistview/Components/Pages/Assistview/PromptSuggestionHeader.razor
@@ -0,0 +1,22 @@
+@page "/promptsuggestionheader"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ List suggestions = new List { "Best practices for clean, maintainable code?", "How to optimize code editor for speed?" };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var response1 = "Use clear naming, break code into small functions, avoid repetition, write tests, and follow coding standards.";
+ var response2 = "Install useful extensions, set up shortcuts, enable linting, and customize settings for smoother development.";
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = args.Prompt == suggestions[0] ? response1 : args.Prompt == suggestions[1] ? response2 : defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Assistview/PromptText.razor b/AiAssistview/Components/Pages/Assistview/PromptText.razor
new file mode 100644
index 00000000..b794eb7a
--- /dev/null
+++ b/AiAssistview/Components/Pages/Assistview/PromptText.razor
@@ -0,0 +1,19 @@
+@page "/promptText"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Assistview/Prompts.razor b/AiAssistview/Components/Pages/Assistview/Prompts.razor
new file mode 100644
index 00000000..20a9a4d8
--- /dev/null
+++ b/AiAssistview/Components/Pages/Assistview/Prompts.razor
@@ -0,0 +1,24 @@
+@page "/prompts"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private List prompts = new List()
+ {
+ new AssistViewPrompt() { Prompt = "What is AI?", Response = "
AI stands for Artificial Intelligence, enabling machines to mimic human intelligence for tasks such as learning, problem-solving, and decision-making.
" }
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var promptData = prompts.FirstOrDefault(prompt => prompt.Prompt == args.Prompt);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = string.IsNullOrEmpty(promptData.Response) ? defaultResponse : promptData.Response;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Assistview/ResponseIconCss.razor b/AiAssistview/Components/Pages/Assistview/ResponseIconCss.razor
new file mode 100644
index 00000000..ab339e74
--- /dev/null
+++ b/AiAssistview/Components/Pages/Assistview/ResponseIconCss.razor
@@ -0,0 +1,24 @@
+@page "/responseiconcss"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private List prompts = new List()
+ {
+ new AssistViewPrompt() { Prompt = "What is AI?", Response = "
AI stands for Artificial Intelligence, enabling machines to mimic human intelligence for tasks such as learning, problem-solving, and decision-making.
" }
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var promptData = prompts.FirstOrDefault(prompt => prompt.Prompt == args.Prompt);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = string.IsNullOrEmpty(promptData.Response) ? defaultResponse : promptData.Response;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Counter.razor b/AiAssistview/Components/Pages/Counter.razor
new file mode 100644
index 00000000..1a4f8e75
--- /dev/null
+++ b/AiAssistview/Components/Pages/Counter.razor
@@ -0,0 +1,19 @@
+@page "/counter"
+@rendermode InteractiveServer
+
+Counter
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Customview/ClearButton.razor b/AiAssistview/Components/Pages/Customview/ClearButton.razor
new file mode 100644
index 00000000..89b94b61
--- /dev/null
+++ b/AiAssistview/Components/Pages/Customview/ClearButton.razor
@@ -0,0 +1,23 @@
+@page "/clearbutton"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Customview/CustomviewNav.razor b/AiAssistview/Components/Pages/Customview/CustomviewNav.razor
new file mode 100644
index 00000000..71122136
--- /dev/null
+++ b/AiAssistview/Components/Pages/Customview/CustomviewNav.razor
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Customview/ViewIconCss.razor b/AiAssistview/Components/Pages/Customview/ViewIconCss.razor
new file mode 100644
index 00000000..fb62039a
--- /dev/null
+++ b/AiAssistview/Components/Pages/Customview/ViewIconCss.razor
@@ -0,0 +1,28 @@
+@page "/viewiconcss"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
Response view content
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Customview/ViewName.razor b/AiAssistview/Components/Pages/Customview/ViewName.razor
new file mode 100644
index 00000000..113ba4dd
--- /dev/null
+++ b/AiAssistview/Components/Pages/Customview/ViewName.razor
@@ -0,0 +1,28 @@
+@page "/viewname"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
Response view content
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Customview/ViewTemplate.razor b/AiAssistview/Components/Pages/Customview/ViewTemplate.razor
new file mode 100644
index 00000000..7028e318
--- /dev/null
+++ b/AiAssistview/Components/Pages/Customview/ViewTemplate.razor
@@ -0,0 +1,30 @@
+@page "/viewtemplate"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
Prompt view content
+
+
+
+
+
Response view content
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Customview/ViewType.razor b/AiAssistview/Components/Pages/Customview/ViewType.razor
new file mode 100644
index 00000000..b9a63550
--- /dev/null
+++ b/AiAssistview/Components/Pages/Customview/ViewType.razor
@@ -0,0 +1,28 @@
+@page "/viewtype"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
Response view content
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Error.razor b/AiAssistview/Components/Pages/Error.razor
new file mode 100644
index 00000000..576cc2d2
--- /dev/null
+++ b/AiAssistview/Components/Pages/Error.razor
@@ -0,0 +1,36 @@
+@page "/Error"
+@using System.Diagnostics
+
+Error
+
+
Error.
+
An error occurred while processing your request.
+
+@if (ShowRequestId)
+{
+
+ Request ID:@RequestId
+
+}
+
+
Development Mode
+
+ Swapping to Development environment will display more detailed information about the error that occurred.
+
+
+ The Development environment shouldn't be enabled for deployed applications.
+ It can result in displaying sensitive information from exceptions to end users.
+ For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development
+ and restarting the app.
+
+
+@code {
+ private void OnAttachmentRemoved(RemovingEventArgs args)
+ {
+ // Your required action here
+ }
+ private AssistViewAttachmentSettings attachmentSettings = new AssistViewAttachmentSettings()
+ {
+ Enable = true,
+ SaveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Save",
+ RemoveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Remove"
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Events/AttachmentUploadFailed.razor b/AiAssistview/Components/Pages/Events/AttachmentUploadFailed.razor
new file mode 100644
index 00000000..a9964fa7
--- /dev/null
+++ b/AiAssistview/Components/Pages/Events/AttachmentUploadFailed.razor
@@ -0,0 +1,34 @@
+@page "/attachmentuploadfailed"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Inputs
+
+
+
+
+
+
+
+
+@code {
+ private void OnAttachmentUploadFailed(FailureEventArgs args)
+ {
+ //Your required action here
+ }
+ private AssistViewAttachmentSettings attachmentSettings = new AssistViewAttachmentSettings()
+ {
+ Enable = true,
+ SaveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Save",
+ RemoveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Remove"
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Events/AttachmentUploadSuccess.razor b/AiAssistview/Components/Pages/Events/AttachmentUploadSuccess.razor
new file mode 100644
index 00000000..f6fb8835
--- /dev/null
+++ b/AiAssistview/Components/Pages/Events/AttachmentUploadSuccess.razor
@@ -0,0 +1,30 @@
+@page "/attachmentuploadsuccess"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Inputs
+
+
+
+
+
+
+
+@code {
+ private void OnAttachmentUploadSuccess(SuccessEventArgs args)
+ {
+ // Your required action here
+ }
+ private AssistViewAttachmentSettings attachmentSettings = new AssistViewAttachmentSettings()
+ {
+ Enable = true,
+ SaveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Save",
+ RemoveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Remove"
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Events/AttachmentuploadStart.razor b/AiAssistview/Components/Pages/Events/AttachmentuploadStart.razor
new file mode 100644
index 00000000..9a9aa726
--- /dev/null
+++ b/AiAssistview/Components/Pages/Events/AttachmentuploadStart.razor
@@ -0,0 +1,30 @@
+@page "/attachmentuploadstart"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Inputs
+
+
+
+
+
+
+
+@code {
+ private void AttachmentUploadStart(UploadingEventArgs args)
+ {
+ // Your required action here
+ }
+ private AssistViewAttachmentSettings attachmentSettings = new AssistViewAttachmentSettings()
+ {
+ Enable = true,
+ SaveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Save",
+ RemoveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Remove"
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Events/Created.razor b/AiAssistview/Components/Pages/Events/Created.razor
new file mode 100644
index 00000000..5137c3e6
--- /dev/null
+++ b/AiAssistview/Components/Pages/Events/Created.razor
@@ -0,0 +1,23 @@
+@page "/created"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private void OnCreated()
+ {
+ // Your required action here
+ }
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Events/EventsNav.razor b/AiAssistview/Components/Pages/Events/EventsNav.razor
new file mode 100644
index 00000000..c2580335
--- /dev/null
+++ b/AiAssistview/Components/Pages/Events/EventsNav.razor
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Events/PromptChanged.razor b/AiAssistview/Components/Pages/Events/PromptChanged.razor
new file mode 100644
index 00000000..0f16ac87
--- /dev/null
+++ b/AiAssistview/Components/Pages/Events/PromptChanged.razor
@@ -0,0 +1,23 @@
+@page "/promptchanged"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private void PromptChange()
+ {
+ // Your required action here
+ }
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Events/PromptRequested.razor b/AiAssistview/Components/Pages/Events/PromptRequested.razor
new file mode 100644
index 00000000..c90e2407
--- /dev/null
+++ b/AiAssistview/Components/Pages/Events/PromptRequested.razor
@@ -0,0 +1,19 @@
+@page "/promptrequested"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/FileAttachments/EnableAttachments.razor b/AiAssistview/Components/Pages/FileAttachments/EnableAttachments.razor
new file mode 100644
index 00000000..e4996f9c
--- /dev/null
+++ b/AiAssistview/Components/Pages/FileAttachments/EnableAttachments.razor
@@ -0,0 +1,25 @@
+@page "/enableattachments"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private AssistViewAttachmentSettings attachmentSettings = new AssistViewAttachmentSettings()
+ {
+ Enable = true,
+ SaveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Save",
+ RemoveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Remove"
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/FileAttachments/FileAttachmentsNav.razor b/AiAssistview/Components/Pages/FileAttachments/FileAttachmentsNav.razor
new file mode 100644
index 00000000..4dcb8eaa
--- /dev/null
+++ b/AiAssistview/Components/Pages/FileAttachments/FileAttachmentsNav.razor
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/FileAttachments/FileSize.razor b/AiAssistview/Components/Pages/FileAttachments/FileSize.razor
new file mode 100644
index 00000000..4a37b2b6
--- /dev/null
+++ b/AiAssistview/Components/Pages/FileAttachments/FileSize.razor
@@ -0,0 +1,26 @@
+@page "/filesize"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private AssistViewAttachmentSettings attachmentSettings = new AssistViewAttachmentSettings()
+ {
+ Enable = true,
+ SaveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Save",
+ RemoveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Remove",
+ MaxFileSize = 1000000
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/FileAttachments/FileType.razor b/AiAssistview/Components/Pages/FileAttachments/FileType.razor
new file mode 100644
index 00000000..2e9961a7
--- /dev/null
+++ b/AiAssistview/Components/Pages/FileAttachments/FileType.razor
@@ -0,0 +1,26 @@
+@page "/filetype"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private AssistViewAttachmentSettings attachmentSettings = new AssistViewAttachmentSettings()
+ {
+ Enable = true,
+ SaveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Save",
+ RemoveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Remove",
+ AllowedFileTypes = ".png",
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/FileAttachments/SaveRemoveUrl.razor b/AiAssistview/Components/Pages/FileAttachments/SaveRemoveUrl.razor
new file mode 100644
index 00000000..c246a791
--- /dev/null
+++ b/AiAssistview/Components/Pages/FileAttachments/SaveRemoveUrl.razor
@@ -0,0 +1,25 @@
+@page "/saveremoveurl"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private AssistViewAttachmentSettings attachmentSettings = new AssistViewAttachmentSettings()
+ {
+ Enable = true,
+ SaveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Save",
+ RemoveUrl = "https://blazor.syncfusion.com/services/production/api/FileUploader/Remove"
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/GettingStarted/GettingStarted.razor b/AiAssistview/Components/Pages/GettingStarted/GettingStarted.razor
new file mode 100644
index 00000000..3b3f21a7
--- /dev/null
+++ b/AiAssistview/Components/Pages/GettingStarted/GettingStarted.razor
@@ -0,0 +1,30 @@
+@page "/"
+@rendermode InteractiveServer
+
+
+
+
+
+
+
+@code {
+ List promptSuggestions = new List { "How do I prioritize my tasks?", "How can I improve my time management skills?" };
+ public class AssistModel
+ {
+ public string Prompt { get; set; }
+ public string Response { get; set; }
+ }
+ private List prompts = new List()
+ {
+ new AssistModel() { Prompt = "How do I prioritize my tasks?", Response = "Prioritize tasks by urgency and impact: tackle high-impact tasks first, delegate when possible, and break large tasks into smaller steps. For more assistance, feel free to ask—I’m here to help!" },
+ new AssistModel() { Prompt = "How can I improve my time management skills?", Response = "To improve time management skills, try setting clear goals, using a planner or digital tools, prioritizing tasks, breaking tasks into smaller steps, and minimizing distractions. Regularly review and adjust your approach for better efficiency" }
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(3000);
+ var isPromptFound = prompts.Any(prompt => prompt.Prompt == args.Prompt);
+ var promptData = prompts.FirstOrDefault(prompt => prompt.Prompt == args.Prompt);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = isPromptFound ? promptData.Response : defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/GettingStarted/GettingStartedNav.razor b/AiAssistview/Components/Pages/GettingStarted/GettingStartedNav.razor
new file mode 100644
index 00000000..0cc0f7cc
--- /dev/null
+++ b/AiAssistview/Components/Pages/GettingStarted/GettingStartedNav.razor
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Home.razor b/AiAssistview/Components/Pages/Home.razor
new file mode 100644
index 00000000..e22a3435
--- /dev/null
+++ b/AiAssistview/Components/Pages/Home.razor
@@ -0,0 +1,7 @@
+@page "/home"
+
+Home
+
+
Hello, world!
+
+Welcome to your new app.
diff --git a/AiAssistview/Components/Pages/HowTo/HowToNav.razor b/AiAssistview/Components/Pages/HowTo/HowToNav.razor
new file mode 100644
index 00000000..011dfaf1
--- /dev/null
+++ b/AiAssistview/Components/Pages/HowTo/HowToNav.razor
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/HowTo/IntegrationWithAI.razor b/AiAssistview/Components/Pages/HowTo/IntegrationWithAI.razor
new file mode 100644
index 00000000..d6fd9497
--- /dev/null
+++ b/AiAssistview/Components/Pages/HowTo/IntegrationWithAI.razor
@@ -0,0 +1,29 @@
+@page "/integrationwithai"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Microsoft.Extensions.AI
+@using Markdig;
+@using System.Text.RegularExpressions;
+@inject IChatClient ChatClient
+
+
+
+
+
+
+
+@code {
+
+ private async Task OnPromptRequested(AssistViewPromptRequestedEventArgs args)
+ {
+ // Send the user’s prompt to the AI model
+ var chatResponse = await ChatClient.GetResponseAsync(args.Prompt, new ChatOptions());
+ // Convert markdown to HTML
+ var htmlContent = Markdown.ToHtml(chatResponse.Text);
+ // Clean up extra whitespace
+ htmlContent = Regex.Replace(htmlContent, @"\s+", " ").Trim();
+ // Set the cleaned HTML as the response
+ args.Response = htmlContent;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Methods/ExecutingPrompt.razor b/AiAssistview/Components/Pages/Methods/ExecutingPrompt.razor
new file mode 100644
index 00000000..966ef1c8
--- /dev/null
+++ b/AiAssistview/Components/Pages/Methods/ExecutingPrompt.razor
@@ -0,0 +1,33 @@
+@page "/executingprompt"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+@code {
+ private SfAIAssistView AIAssist;
+ private async Task GenerateContent()
+ {
+ await AIAssist.ExecutePromptAsync("What is the current temperature?");
+ }
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Methods/MethodsNav.razor b/AiAssistview/Components/Pages/Methods/MethodsNav.razor
new file mode 100644
index 00000000..35610e4f
--- /dev/null
+++ b/AiAssistview/Components/Pages/Methods/MethodsNav.razor
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Speech/SpeechNav.razor b/AiAssistview/Components/Pages/Speech/SpeechNav.razor
new file mode 100644
index 00000000..c66904f5
--- /dev/null
+++ b/AiAssistview/Components/Pages/Speech/SpeechNav.razor
@@ -0,0 +1,8 @@
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Template/FooterTemplate.razor b/AiAssistview/Components/Pages/Template/FooterTemplate.razor
new file mode 100644
index 00000000..a5a5cb49
--- /dev/null
+++ b/AiAssistview/Components/Pages/Template/FooterTemplate.razor
@@ -0,0 +1,61 @@
+@page "/footertemplate"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private SfAIAssistView AIAssist;
+ private string textAreaValue = string.Empty;
+ private async Task GenerateContent()
+ {
+ if (!string.IsNullOrEmpty(textAreaValue))
+ {
+ var value = textAreaValue;
+ textAreaValue = String.Empty;
+ await AIAssist.ExecutePromptAsync(value);
+ }
+ }
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Template/PromptItemTemplate.razor b/AiAssistview/Components/Pages/Template/PromptItemTemplate.razor
new file mode 100644
index 00000000..2f6e5a6d
--- /dev/null
+++ b/AiAssistview/Components/Pages/Template/PromptItemTemplate.razor
@@ -0,0 +1,65 @@
+@page "/promptitemtemplate"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
+ You
+
+
+
@context.Prompt.Replace(@"", "")
+
+
+
+
+
+
+
+@code {
+ private List prompts = new List()
+ {
+ new AssistViewPrompt() { Prompt = "What is AI?", Response = "
AI stands for Artificial Intelligence, enabling machines to mimic human intelligence for tasks such as learning, problem-solving, and decision-making.
" }
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var promptData = prompts.FirstOrDefault(prompt => prompt.Prompt == args.Prompt);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = string.IsNullOrEmpty(promptData.Response) ? defaultResponse : promptData.Response;
+ }
+}
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Template/ResponseItemTemplate.razor b/AiAssistview/Components/Pages/Template/ResponseItemTemplate.razor
new file mode 100644
index 00000000..51884d9f
--- /dev/null
+++ b/AiAssistview/Components/Pages/Template/ResponseItemTemplate.razor
@@ -0,0 +1,65 @@
+@page "/responseitemtemplate"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
+
+ AI Assist
+
+
@((MarkupString)context.Response)
+
+
+
+
+
+
+
+@code {
+ private List prompts = new List()
+ {
+ new AssistViewPrompt() { Prompt = "What is AI?", Response = "
AI stands for Artificial Intelligence, enabling machines to mimic human intelligence for tasks such as learning, problem-solving, and decision-making.
" }
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var promptData = prompts.FirstOrDefault(prompt => prompt.Prompt == args.Prompt);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = string.IsNullOrEmpty(promptData.Response) ? defaultResponse : promptData.Response;
+ }
+}
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Template/SuggestionItemTemplate.razor b/AiAssistview/Components/Pages/Template/SuggestionItemTemplate.razor
new file mode 100644
index 00000000..c523731f
--- /dev/null
+++ b/AiAssistview/Components/Pages/Template/SuggestionItemTemplate.razor
@@ -0,0 +1,58 @@
+@page "/suggestionitemtemplate"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
+
@context.PromptSuggestion
+
+
+
+
+
+
+
+@code {
+ List suggestions = new List { "Best practices for clean, maintainable code?", "How to optimize code editor for speed?" };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var response1 = "Use clear naming, break code into small functions, avoid repetition, write tests, and follow coding standards.";
+ var response2 = "Install useful extensions, set up shortcuts, enable linting, and customize settings for smoother development.";
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = args.Prompt == suggestions[0] ? response1 : args.Prompt == suggestions[1] ? response2 : defaultResponse;
+ }
+}
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Template/TemplateNav.razor b/AiAssistview/Components/Pages/Template/TemplateNav.razor
new file mode 100644
index 00000000..96b9bb46
--- /dev/null
+++ b/AiAssistview/Components/Pages/Template/TemplateNav.razor
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/CssClass.razor b/AiAssistview/Components/Pages/ToolbarItems/CssClass.razor
new file mode 100644
index 00000000..2be683cd
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/CssClass.razor
@@ -0,0 +1,35 @@
+@page "/toolbarcssclass"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/Disabled.razor b/AiAssistview/Components/Pages/ToolbarItems/Disabled.razor
new file mode 100644
index 00000000..b38b6623
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/Disabled.razor
@@ -0,0 +1,26 @@
+@page "/disabled"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/IconCss.razor b/AiAssistview/Components/Pages/ToolbarItems/IconCss.razor
new file mode 100644
index 00000000..37411e17
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/IconCss.razor
@@ -0,0 +1,25 @@
+@page "/iconcss"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/ItemClick.razor b/AiAssistview/Components/Pages/ToolbarItems/ItemClick.razor
new file mode 100644
index 00000000..83d1b55e
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/ItemClick.razor
@@ -0,0 +1,28 @@
+@page "/itemclick"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+ private void ToolbarItemClicked(AssistViewToolbarItemClickedEventArgs args)
+ {
+ // Your required action here
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/PromptItemclick.razor b/AiAssistview/Components/Pages/ToolbarItems/PromptItemclick.razor
new file mode 100644
index 00000000..a12d1b3a
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/PromptItemclick.razor
@@ -0,0 +1,30 @@
+@page "/promptitemclick"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+@code {
+ private List prompts = new List()
+ {
+ new AssistViewPrompt() { Prompt = "What is AI?", Response = "
AI stands for Artificial Intelligence, enabling machines to mimic human intelligence for tasks such as learning, problem-solving, and decision-making.
" }
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var promptData = prompts.FirstOrDefault(prompt => prompt.Prompt == args.Prompt);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = string.IsNullOrEmpty(promptData.Response) ? defaultResponse : promptData.Response;
+ }
+ private void ToolbarItemClicked(AssistViewToolbarItemClickedEventArgs args)
+ {
+ // Your required action here
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/PromptToolbarItems.razor b/AiAssistview/Components/Pages/ToolbarItems/PromptToolbarItems.razor
new file mode 100644
index 00000000..b1fd74b9
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/PromptToolbarItems.razor
@@ -0,0 +1,28 @@
+@page "/prompttoolbaritem"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private List prompts = new List()
+ {
+ new AssistViewPrompt() { Prompt = "What is AI?", Response = "
AI stands for Artificial Intelligence, enabling machines to mimic human intelligence for tasks such as learning, problem-solving, and decision-making.
" }
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var promptData = prompts.FirstOrDefault(prompt => prompt.Prompt == args.Prompt);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = string.IsNullOrEmpty(promptData.Response) ? defaultResponse : promptData.Response;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/PromptWidth.razor b/AiAssistview/Components/Pages/ToolbarItems/PromptWidth.razor
new file mode 100644
index 00000000..7044496f
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/PromptWidth.razor
@@ -0,0 +1,26 @@
+@page "/promptwidth"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+@code {
+ private List prompts = new List()
+ {
+ new AssistViewPrompt() { Prompt = "What is AI?", Response = "
AI stands for Artificial Intelligence, enabling machines to mimic human intelligence for tasks such as learning, problem-solving, and decision-making.
" }
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var promptData = prompts.FirstOrDefault(prompt => prompt.Prompt == args.Prompt);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = string.IsNullOrEmpty(promptData.Response) ? defaultResponse : promptData.Response;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/ResponseItemclick.razor b/AiAssistview/Components/Pages/ToolbarItems/ResponseItemclick.razor
new file mode 100644
index 00000000..51fa8830
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/ResponseItemclick.razor
@@ -0,0 +1,30 @@
+@page "/responseitemclick"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+@code {
+ private List prompts = new List()
+ {
+ new AssistViewPrompt() { Prompt = "What is AI?", Response = "
AI stands for Artificial Intelligence, enabling machines to mimic human intelligence for tasks such as learning, problem-solving, and decision-making.
" }
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var promptData = prompts.FirstOrDefault(prompt => prompt.Prompt == args.Prompt);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = string.IsNullOrEmpty(promptData.Response) ? defaultResponse : promptData.Response;
+ }
+ private void ToolbarItemClicked(AssistViewToolbarItemClickedEventArgs args)
+ {
+ // Your required action here
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/ResponseToolbarItems.razor b/AiAssistview/Components/Pages/ToolbarItems/ResponseToolbarItems.razor
new file mode 100644
index 00000000..0229e58a
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/ResponseToolbarItems.razor
@@ -0,0 +1,31 @@
+@page "/responsetoolbaritem"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private List prompts = new List()
+ {
+ new AssistViewPrompt() { Prompt = "What is AI?", Response = "
AI stands for Artificial Intelligence, enabling machines to mimic human intelligence for tasks such as learning, problem-solving, and decision-making.
" }
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var promptData = prompts.FirstOrDefault(prompt => prompt.Prompt == args.Prompt);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = string.IsNullOrEmpty(promptData.Response) ? defaultResponse : promptData.Response;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/ResponseWidth.razor b/AiAssistview/Components/Pages/ToolbarItems/ResponseWidth.razor
new file mode 100644
index 00000000..99817de4
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/ResponseWidth.razor
@@ -0,0 +1,26 @@
+@page "/responsewidth"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+@code {
+ private List prompts = new List()
+ {
+ new AssistViewPrompt() { Prompt = "What is AI?", Response = "
AI stands for Artificial Intelligence, enabling machines to mimic human intelligence for tasks such as learning, problem-solving, and decision-making.
" }
+ };
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var promptData = prompts.FirstOrDefault(prompt => prompt.Prompt == args.Prompt);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = string.IsNullOrEmpty(promptData.Response) ? defaultResponse : promptData.Response;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/Tabindex.razor b/AiAssistview/Components/Pages/ToolbarItems/Tabindex.razor
new file mode 100644
index 00000000..d3a4400f
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/Tabindex.razor
@@ -0,0 +1,16 @@
+@page "/tabindex"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/Template.razor b/AiAssistview/Components/Pages/ToolbarItems/Template.razor
new file mode 100644
index 00000000..59d232c2
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/Template.razor
@@ -0,0 +1,41 @@
+@page "/template"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+@using Syncfusion.Blazor.SplitButtons
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/ToolbarItemType.razor b/AiAssistview/Components/Pages/ToolbarItems/ToolbarItemType.razor
new file mode 100644
index 00000000..ae2a5200
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/ToolbarItemType.razor
@@ -0,0 +1,25 @@
+@page "/itemtype"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/ToolbarItemsNav.razor b/AiAssistview/Components/Pages/ToolbarItems/ToolbarItemsNav.razor
new file mode 100644
index 00000000..cd15a93d
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/ToolbarItemsNav.razor
@@ -0,0 +1,22 @@
+
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/ToolbarText.razor b/AiAssistview/Components/Pages/ToolbarItems/ToolbarText.razor
new file mode 100644
index 00000000..bc7b3598
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/ToolbarText.razor
@@ -0,0 +1,25 @@
+@page "/toolbartext"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/Tooltip.razor b/AiAssistview/Components/Pages/ToolbarItems/Tooltip.razor
new file mode 100644
index 00000000..06458302
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/Tooltip.razor
@@ -0,0 +1,25 @@
+@page "/tooltip"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/ToolbarItems/Visible.razor b/AiAssistview/Components/Pages/ToolbarItems/Visible.razor
new file mode 100644
index 00000000..c2366527
--- /dev/null
+++ b/AiAssistview/Components/Pages/ToolbarItems/Visible.razor
@@ -0,0 +1,26 @@
+@page "/visible"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private async Task PromptRequest(AssistViewPromptRequestedEventArgs args)
+ {
+ await Task.Delay(1000);
+ var defaultResponse = "For real-time prompt processing, connect the AI AssistView component to your preferred AI service, such as OpenAI or Azure Cognitive Services. Ensure you obtain the necessary API credentials to authenticate and enable seamless integration.";
+ args.Response = defaultResponse;
+ }
+}
\ No newline at end of file
diff --git a/AiAssistview/Components/Pages/Weather.razor b/AiAssistview/Components/Pages/Weather.razor
new file mode 100644
index 00000000..381bbd21
--- /dev/null
+++ b/AiAssistview/Components/Pages/Weather.razor
@@ -0,0 +1,64 @@
+@page "/weather"
+@attribute [StreamRendering]
+
+Weather
+
+
+ Swapping to Development environment will display more detailed information about the error that occurred.
+
+
+ The Development environment shouldn't be enabled for deployed applications.
+ It can result in displaying sensitive information from exceptions to end users.
+ For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development
+ and restarting the app.
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Footer/ShowFooter.razor b/ChatUI/Components/Pages/Footer/ShowFooter.razor
new file mode 100644
index 00000000..b995d0cf
--- /dev/null
+++ b/ChatUI/Components/Pages/Footer/ShowFooter.razor
@@ -0,0 +1,22 @@
+@page "/showfooter"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/GettingStarted/GettingStarted.razor b/ChatUI/Components/Pages/GettingStarted/GettingStarted.razor
new file mode 100644
index 00000000..c7a15dcb
--- /dev/null
+++ b/ChatUI/Components/Pages/GettingStarted/GettingStarted.razor
@@ -0,0 +1,20 @@
+@page "/gettingstarted"
+@rendermode InteractiveServer
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Want to get coffee tomorrow?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Sure! What time?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "How about 10 AM?", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/GettingStarted/GettingStartedNav.razor b/ChatUI/Components/Pages/GettingStarted/GettingStartedNav.razor
new file mode 100644
index 00000000..15d40355
--- /dev/null
+++ b/ChatUI/Components/Pages/GettingStarted/GettingStartedNav.razor
@@ -0,0 +1,8 @@
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Want to get coffee tomorrow?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Sure! What time?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "How about 10 AM?", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/CssClass.razor b/ChatUI/Components/Pages/Header/CssClass.razor
new file mode 100644
index 00000000..d7d0f8e5
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/CssClass.razor
@@ -0,0 +1,39 @@
+@page "/headercssclass"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
+
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/Disabled.razor b/ChatUI/Components/Pages/Header/Disabled.razor
new file mode 100644
index 00000000..b44ea92b
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/Disabled.razor
@@ -0,0 +1,29 @@
+@page "/disabled"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/HeaderIconcss.razor b/ChatUI/Components/Pages/Header/HeaderIconcss.razor
new file mode 100644
index 00000000..22cef5ad
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/HeaderIconcss.razor
@@ -0,0 +1,28 @@
+@page "/headericoncss"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
+
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/HeaderItemType.razor b/ChatUI/Components/Pages/Header/HeaderItemType.razor
new file mode 100644
index 00000000..a776550b
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/HeaderItemType.razor
@@ -0,0 +1,28 @@
+@page "/itemtype"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/HeaderNav.razor b/ChatUI/Components/Pages/Header/HeaderNav.razor
new file mode 100644
index 00000000..9e79116c
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/HeaderNav.razor
@@ -0,0 +1,19 @@
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/HeaderText.razor b/ChatUI/Components/Pages/Header/HeaderText.razor
new file mode 100644
index 00000000..3ac76a50
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/HeaderText.razor
@@ -0,0 +1,22 @@
+@page "/headertext"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/Iconcss.razor b/ChatUI/Components/Pages/Header/Iconcss.razor
new file mode 100644
index 00000000..6d677112
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/Iconcss.razor
@@ -0,0 +1,28 @@
+@page "/iconcss"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/ItemClicked.razor b/ChatUI/Components/Pages/Header/ItemClicked.razor
new file mode 100644
index 00000000..959163f6
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/ItemClicked.razor
@@ -0,0 +1,23 @@
+@page "/itemclicked"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private void ToolbarItemClicked(ChatToolbarItemClickedEventArgs args)
+ {
+ // Your required action here
+ }
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/ShowHeader.razor b/ChatUI/Components/Pages/Header/ShowHeader.razor
new file mode 100644
index 00000000..924a3729
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/ShowHeader.razor
@@ -0,0 +1,22 @@
+@page "/showheader"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/TabIndex.razor b/ChatUI/Components/Pages/Header/TabIndex.razor
new file mode 100644
index 00000000..f9ace597
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/TabIndex.razor
@@ -0,0 +1,16 @@
+@page "/tabindex"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/Template.razor b/ChatUI/Components/Pages/Header/Template.razor
new file mode 100644
index 00000000..dbea6790
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/Template.razor
@@ -0,0 +1,46 @@
+@page "/template"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+@using Syncfusion.Blazor.SplitButtons
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
+
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/ToolbarText.razor b/ChatUI/Components/Pages/Header/ToolbarText.razor
new file mode 100644
index 00000000..0c276716
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/ToolbarText.razor
@@ -0,0 +1,28 @@
+@page "/toolbartext"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/Tooltip.razor b/ChatUI/Components/Pages/Header/Tooltip.razor
new file mode 100644
index 00000000..5543bb33
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/Tooltip.razor
@@ -0,0 +1,28 @@
+@page "/tooltip"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Header/Visible.razor b/ChatUI/Components/Pages/Header/Visible.razor
new file mode 100644
index 00000000..4a6eb9fe
--- /dev/null
+++ b/ChatUI/Components/Pages/Header/Visible.razor
@@ -0,0 +1,29 @@
+@page "/visible"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.Navigations
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Home.razor b/ChatUI/Components/Pages/Home.razor
new file mode 100644
index 00000000..e22a3435
--- /dev/null
+++ b/ChatUI/Components/Pages/Home.razor
@@ -0,0 +1,7 @@
+@page "/home"
+
+Home
+
+
Hello, world!
+
+Welcome to your new app.
diff --git a/ChatUI/Components/Pages/LoadOnDemand/LoadOnDemand.razor b/ChatUI/Components/Pages/LoadOnDemand/LoadOnDemand.razor
new file mode 100644
index 00000000..2d27285f
--- /dev/null
+++ b/ChatUI/Components/Pages/LoadOnDemand/LoadOnDemand.razor
@@ -0,0 +1,28 @@
+@page "/loadondemand"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+ private List ChatUserMessages = new List();
+
+ protected override void OnInitialized()
+ {
+ for (int i = 1; i <= 150; i++)
+ {
+ ChatUserMessages.Add(new ChatMessage
+ {
+ Text = i % 2 == 0 ? $"Message {i} from Michale" : $"Message {i} from Albert",
+ Author = i % 2 == 0 ? MichaleUserModel : CurrentUserModel
+ });
+ }
+ }
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/LoadOnDemand/LoadOnDemandNav.razor b/ChatUI/Components/Pages/LoadOnDemand/LoadOnDemandNav.razor
new file mode 100644
index 00000000..16d1c47a
--- /dev/null
+++ b/ChatUI/Components/Pages/LoadOnDemand/LoadOnDemandNav.razor
@@ -0,0 +1,8 @@
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "user1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "user2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() {
+ Author = CurrentUserModel,
+ Text = "Hi {0}, are we on track for the deadline?",
+ MentionUsers = new List() { MichaleUserModel }
+ },
+ new ChatMessage() { Author = MichaleUserModel, Text = "Yes {0}, the design phase is complete.", MentionUsers = new List() { CurrentUserModel }},
+ new ChatMessage() { Author = CurrentUserModel, Text = "I’ll review it and send feedback by today." }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Mention/MentionUsers.razor b/ChatUI/Components/Pages/Mention/MentionUsers.razor
new file mode 100644
index 00000000..51a86859
--- /dev/null
+++ b/ChatUI/Components/Pages/Mention/MentionUsers.razor
@@ -0,0 +1,28 @@
+@page "/mentionusers"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+ private static UserModel ReenaUserModel = new UserModel() { ID = "custom-user", User = "Reena" };
+ private List OnMentionUsers = new List()
+ {
+ CurrentUserModel,
+ ReenaUserModel
+ };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Want to get coffee tomorrow?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Sure! What time?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "{0} How about 10 AM?", Author = CurrentUserModel, MentionUsers = new List() { MichaleUserModel } }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Mention/ValueSelecting.razor b/ChatUI/Components/Pages/Mention/ValueSelecting.razor
new file mode 100644
index 00000000..29e042e9
--- /dev/null
+++ b/ChatUI/Components/Pages/Mention/ValueSelecting.razor
@@ -0,0 +1,27 @@
+@page "/valueselecting"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Syncfusion.Blazor.DropDowns
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "user1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "user2", User = "Michale Suyama" };
+
+ private List MentionUsers = new List()
+ {
+ CurrentUserModel,
+ MichaleUserModel
+ };
+
+ private void OnValueSelecting(MentionValueSelectingEventArgs args)
+ {
+ // Your required action here
+ }
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/AutoScroll.razor b/ChatUI/Components/Pages/Messages/AutoScroll.razor
new file mode 100644
index 00000000..d090e328
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/AutoScroll.razor
@@ -0,0 +1,25 @@
+@page "/autoscroll"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Want to get coffee tomorrow?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Sure! What time?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "How about 10 AM?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Perfect.", Author = MichaleUserModel },
+ new ChatMessage() { Text = "See you!", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Bye!", Author = MichaleUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/AvatarBgColor.razor b/ChatUI/Components/Pages/Messages/AvatarBgColor.razor
new file mode 100644
index 00000000..220fdc20
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/AvatarBgColor.razor
@@ -0,0 +1,21 @@
+@page "/avatarbgcolor"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama", AvatarBgColor = "#ccc9f7" };
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/AvatarURL.razor b/ChatUI/Components/Pages/Messages/AvatarURL.razor
new file mode 100644
index 00000000..802c0205
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/AvatarURL.razor
@@ -0,0 +1,21 @@
+@page "/avatarurl"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama", AvatarUrl = "" };//Provide the URL for the image here.
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/CompactMode.razor b/ChatUI/Components/Pages/Messages/CompactMode.razor
new file mode 100644
index 00000000..3aad0ba3
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/CompactMode.razor
@@ -0,0 +1,22 @@
+@page "/compactmode"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi Michale, are we on track for the deadline?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Yes, the design phase is complete.", Author = MichaleUserModel },
+ new ChatMessage() { Text = "I’ll review it and send feedback by today.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/CssClass.razor b/ChatUI/Components/Pages/Messages/CssClass.razor
new file mode 100644
index 00000000..03761a42
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/CssClass.razor
@@ -0,0 +1,30 @@
+@page "/messagescssclass"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama", CssClass = "custom-user" };
+
+ private List ChatUserMessagesData = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
+
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/IconCss.razor b/ChatUI/Components/Pages/Messages/IconCss.razor
new file mode 100644
index 00000000..8e65aa8e
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/IconCss.razor
@@ -0,0 +1,28 @@
+@page "/messageiconcss"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() {
+ Text = "Maybe landscapes.",
+ Author = CurrentUserModel,
+ Status= new MessageStatusModel() {
+ IconCss = "e-icons e-chat-seen"
+ }
+ }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/IsForwarded.razor b/ChatUI/Components/Pages/Messages/IsForwarded.razor
new file mode 100644
index 00000000..f3c2e40d
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/IsForwarded.razor
@@ -0,0 +1,22 @@
+@page "/isforwarded"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi Michale, are we on track for the deadline?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Yes, the design phase is complete.", Author = MichaleUserModel },
+ new ChatMessage() { Text = "I’ll review it and send feedback by today.", Author = CurrentUserModel, IsForwarded = true }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/Markdowm.razor b/ChatUI/Components/Pages/Messages/Markdowm.razor
new file mode 100644
index 00000000..e86718f3
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/Markdowm.razor
@@ -0,0 +1,116 @@
+@page "/markdown"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+@using Markdig
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private SfChatUI ChatUI { get; set; }
+ private string headerText = "Chat UI with Markdown";
+ private UserModel currentUserModel = GetMarkdownUser("user1", "Albert");
+ private UserModel michaleUserModel = GetMarkdownUser("user2", "Michale Suyama");
+ private List chatMessages = new List();
+ private List suggestions = new List
+ {
+ new Suggestion
+ {
+ DisplayText = "Share quick link",
+ MarkdownText = "Check out our [project dashboard](https://help.syncfusion.com) for updates!"
+ },
+ new Suggestion
+ {
+ DisplayText = "Emphasize priority",
+ MarkdownText = "This is **high priority** and needs _immediate attention_."
+ }
+ };
+
+ protected override void OnInitialized()
+ {
+ chatMessages.Add(new ChatMessage
+ {
+ Author = currentUserModel,
+ Text = RenderMarkdown("Hey Michale, did you review the _new API documentation_?"),
+ Timestamp = DateTime.UtcNow.AddMinutes(-5)
+ });
+ chatMessages.Add(new ChatMessage
+ {
+ Author = michaleUserModel,
+ Text = RenderMarkdown("Yes! The **endpoint specifications** look great. Check the [integration guide](https://blazor.syncfusion.com/documentation/introduction) when you get a chance."),
+ Timestamp = DateTime.UtcNow.AddMinutes(-5)
+ });
+ }
+
+ private async Task HandleMessageSend(ChatMessageSendEventArgs args)
+ {
+ if (string.IsNullOrEmpty(args.Message.Text))
+ {
+ return;
+ }
+ args.Cancel = true;
+ var suggestion = suggestions.FirstOrDefault(s => s.DisplayText == args.Message.Text);
+ var messageText = suggestion != null ? suggestion.MarkdownText : args.Message.Text;
+
+ var newMessage = new ChatMessage
+ {
+ Text = RenderMarkdown(messageText),
+ Author = currentUserModel,
+ Timestamp = DateTime.Now
+ };
+
+ chatMessages.Add(newMessage);
+ await InvokeAsync(StateHasChanged);
+ }
+
+ private string RenderMarkdown(string markdownText)
+ {
+ var pipeline = new MarkdownPipelineBuilder().UseAdvancedExtensions().Build();
+ return Markdig.Markdown.ToHtml(markdownText, pipeline);
+ }
+
+ public static UserModel GetMarkdownUser(string Id, string Username)
+ {
+ return new UserModel()
+ {
+ ID = Id,
+ User = Username
+ };
+ }
+
+ private class Suggestion
+ {
+ public string DisplayText { get; set; } = string.Empty;
+ public string MarkdownText { get; set; } = string.Empty;
+ }
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/MessageText.razor b/ChatUI/Components/Pages/Messages/MessageText.razor
new file mode 100644
index 00000000..012975b7
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/MessageText.razor
@@ -0,0 +1,22 @@
+@page "/messagetext"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/MessageToolbarItemClicked.razor b/ChatUI/Components/Pages/Messages/MessageToolbarItemClicked.razor
new file mode 100644
index 00000000..d63a9610
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/MessageToolbarItemClicked.razor
@@ -0,0 +1,52 @@
+@page "/messagetoolbaritemclicked"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+ private SfChatUI ChatUIInstance { get; set; }
+
+ private void MessageToolbarClicked(MessageToolbarItemClickedEventArgs args)
+ {
+ if (args.Item.IconCss == "e-icons e-chat-forward")
+ {
+ var newMessageObj = new ChatMessage()
+ {
+ Text = args.Message.Text,
+ ID = "chat-message-" + (ChatUIInstance.Messages.Count + 1).ToString(),
+ Author = args.Message.Author,
+ IsForwarded = true,
+ Status = args.Message.Status,
+ Timestamp = args.Message.Timestamp,
+ TimestampFormat = args.Message.TimestampFormat,
+ IsPinned = args.Message.IsPinned,
+ RepliedTo = args.Message.RepliedTo
+ };
+ ChatUIInstance.Messages.Add(newMessageObj);
+ }
+ }
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi Michale, are we on track for the deadline?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Yes, the design phase is complete.", Author = MichaleUserModel },
+ new ChatMessage() { Text = "I’ll review it and send feedback by today.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/MessageToolbarItems.razor b/ChatUI/Components/Pages/Messages/MessageToolbarItems.razor
new file mode 100644
index 00000000..30e3e014
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/MessageToolbarItems.razor
@@ -0,0 +1,32 @@
+@page "/messagetoolbaritems"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi Michale, are we on track for the deadline?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Yes, the design phase is complete.", Author = MichaleUserModel },
+ new ChatMessage() { Text = "I’ll review it and send feedback by today.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/MessageToolbarWidth.razor b/ChatUI/Components/Pages/Messages/MessageToolbarWidth.razor
new file mode 100644
index 00000000..ccb186c7
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/MessageToolbarWidth.razor
@@ -0,0 +1,27 @@
+@page "/messagetoolbarwidth"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi Michale, are we on track for the deadline?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Yes, the design phase is complete.", Author = MichaleUserModel },
+ new ChatMessage() { Text = "I’ll review it and send feedback by today.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/MessageUser.razor b/ChatUI/Components/Pages/Messages/MessageUser.razor
new file mode 100644
index 00000000..6887862b
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/MessageUser.razor
@@ -0,0 +1,22 @@
+@page "/messageuser"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/MessagesNav.razor b/ChatUI/Components/Pages/Messages/MessagesNav.razor
new file mode 100644
index 00000000..2af6646d
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/MessagesNav.razor
@@ -0,0 +1,27 @@
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/Pinned.razor b/ChatUI/Components/Pages/Messages/Pinned.razor
new file mode 100644
index 00000000..253b6f2b
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/Pinned.razor
@@ -0,0 +1,22 @@
+@page "/pinned"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi Michale, are we on track for the deadline?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Yes, the design phase is complete.", Author = MichaleUserModel },
+ new ChatMessage() { Text = "I’ll review it and send feedback by today.", Author = CurrentUserModel, IsPinned = true }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/ReplyTo.razor b/ChatUI/Components/Pages/Messages/ReplyTo.razor
new file mode 100644
index 00000000..c827f322
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/ReplyTo.razor
@@ -0,0 +1,32 @@
+@page "/replyto"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi Michale, are we on track for the deadline?", Author = CurrentUserModel, ID = "msg1" },
+ new ChatMessage() { Text = "Yes, the design phase is complete.", Author = MichaleUserModel, ID = "msg2" },
+ new ChatMessage() {
+ Text = "I’ll review it and send feedback by today.",
+ Author = CurrentUserModel,
+ ID = "msg3",
+ RepliedTo = new MessageReplyModel()
+ {
+ Text = "Yes, the design phase is complete.",
+ User = MichaleUserModel,
+ MessageID = "msg2"
+ }
+ }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/StatusIconCss.razor b/ChatUI/Components/Pages/Messages/StatusIconCss.razor
new file mode 100644
index 00000000..3d76944a
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/StatusIconCss.razor
@@ -0,0 +1,22 @@
+@page "/statusiconcss"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert", StatusIconCss = "e-icons e-user-online" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama", StatusIconCss = "e-icons e-user-away" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi Michale, are we on track for the deadline?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Yes, the design phase is complete.", Author = MichaleUserModel },
+ new ChatMessage() { Text = "I’ll review it and send feedback by today.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/StatusText.razor b/ChatUI/Components/Pages/Messages/StatusText.razor
new file mode 100644
index 00000000..3b7a9ec5
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/StatusText.razor
@@ -0,0 +1,28 @@
+@page "/statustext"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() {
+ Text = "Maybe landscapes.",
+ Author = CurrentUserModel,
+ Status= new MessageStatusModel() {
+ Text = "Seen"
+ }
+ }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/StatusTooltip.razor b/ChatUI/Components/Pages/Messages/StatusTooltip.razor
new file mode 100644
index 00000000..c82062aa
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/StatusTooltip.razor
@@ -0,0 +1,29 @@
+@page "/statustooltip"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() {
+ Text = "Maybe landscapes.",
+ Author = CurrentUserModel,
+ Status= new MessageStatusModel() {
+ IconCss = "e-icons e-chat-seen",
+ Tooltip = "Seen"
+ }
+ }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/Suggestions.razor b/ChatUI/Components/Pages/Messages/Suggestions.razor
new file mode 100644
index 00000000..df17f2ae
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/Suggestions.razor
@@ -0,0 +1,22 @@
+@page "/suggestions"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+ private List Suggestion = new List() { "Landscapes", "Portrait" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/TimeStamp.razor b/ChatUI/Components/Pages/Messages/TimeStamp.razor
new file mode 100644
index 00000000..fa0e7260
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/TimeStamp.razor
@@ -0,0 +1,22 @@
+@page "/timestamp"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel, Timestamp = new DateTime(2024,12,25,7,30,0) },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel, Timestamp = new DateTime(2024,12,25,8,0,0) },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel, Timestamp = new DateTime(2024,12,25,11,0,0) }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Messages/TimeStampFormat.razor b/ChatUI/Components/Pages/Messages/TimeStampFormat.razor
new file mode 100644
index 00000000..c82791ce
--- /dev/null
+++ b/ChatUI/Components/Pages/Messages/TimeStampFormat.razor
@@ -0,0 +1,22 @@
+@page "/messagestimestampformat"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel, TimestampFormat = "MMMM hh:mm tt" },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Methods/EditMessage.razor b/ChatUI/Components/Pages/Methods/EditMessage.razor
new file mode 100644
index 00000000..b8125951
--- /dev/null
+++ b/ChatUI/Components/Pages/Methods/EditMessage.razor
@@ -0,0 +1,27 @@
+@page "/editmessage"
+@rendermode InteractiveServer
+
+
+
+
+
+
+
+
+@code {
+ private SfChatUI ChatUser;
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { ID = "msg1", Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+
+ private async void UpdateMessage()
+ {
+ await ChatUser.UpdateMessageAsync(new ChatMessage() { Text = "Hi Michale, thinking of painting today.", Author = CurrentUserModel }, "msg1");
+ }
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Methods/MethodsNav.razor b/ChatUI/Components/Pages/Methods/MethodsNav.razor
new file mode 100644
index 00000000..b7e092b9
--- /dev/null
+++ b/ChatUI/Components/Pages/Methods/MethodsNav.razor
@@ -0,0 +1,8 @@
+
+
+@code {
+ private SfChatUI ChatUser;
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Want to get coffee tomorrow?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Sure! What time?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "How about 10 AM?", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Perfect.", Author = MichaleUserModel },
+ new ChatMessage() { Text = "See you!", Author = CurrentUserModel },
+ new ChatMessage() { Text = "Bye!", Author = MichaleUserModel }
+ };
+
+ private async void OnScrollToBottom()
+ {
+ await ChatUser.ScrollToBottomAsync();
+ }
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Template/EmptyChatTemplate.razor b/ChatUI/Components/Pages/Template/EmptyChatTemplate.razor
new file mode 100644
index 00000000..434c7f5a
--- /dev/null
+++ b/ChatUI/Components/Pages/Template/EmptyChatTemplate.razor
@@ -0,0 +1,26 @@
+@page "/emptychattemplate"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
No Messages Yet
+
Start a conversation to see your messages here.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Template/FooterTemplate.razor b/ChatUI/Components/Pages/Template/FooterTemplate.razor
new file mode 100644
index 00000000..d6dc73c4
--- /dev/null
+++ b/ChatUI/Components/Pages/Template/FooterTemplate.razor
@@ -0,0 +1,60 @@
+@page "/footertemplate"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private SfChatUI ChatUI;
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+ private string textAreaValue = string.Empty;
+
+ private void AddMessage()
+ {
+ if (!string.IsNullOrEmpty(textAreaValue))
+ {
+ var value = textAreaValue;
+ textAreaValue = String.Empty;
+ ChatUI.Messages.Add(new ChatMessage() { Text = value, Author = CurrentUserModel });
+ }
+ }
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
+
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Template/MessageTemplate.razor b/ChatUI/Components/Pages/Template/MessageTemplate.razor
new file mode 100644
index 00000000..c480a6ed
--- /dev/null
+++ b/ChatUI/Components/Pages/Template/MessageTemplate.razor
@@ -0,0 +1,44 @@
+@page "/messagetemplate"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
@((MarkupString)context.Message.Text)
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
+
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Template/SuggestionTemplate.razor b/ChatUI/Components/Pages/Template/SuggestionTemplate.razor
new file mode 100644
index 00000000..7b170504
--- /dev/null
+++ b/ChatUI/Components/Pages/Template/SuggestionTemplate.razor
@@ -0,0 +1,54 @@
+@page "/suggestiontemplate"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+
@context.Suggestions
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+ private List Suggestions = new List() { "Portrait", "Landscape" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel }
+ };
+}
+
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Template/TemplateNav.razor b/ChatUI/Components/Pages/Template/TemplateNav.razor
new file mode 100644
index 00000000..4197a6f3
--- /dev/null
+++ b/ChatUI/Components/Pages/Template/TemplateNav.razor
@@ -0,0 +1,12 @@
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel, Timestamp = new DateTime(2024,12,25,7,30,0) },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel, Timestamp = new DateTime(2024,12,25,8,0,0) },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel, Timestamp = new DateTime(2024,12,25,11,0,0) }
+ };
+}
+
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/Template/TypingUserTemplate.razor b/ChatUI/Components/Pages/Template/TypingUserTemplate.razor
new file mode 100644
index 00000000..e27c34ba
--- /dev/null
+++ b/ChatUI/Components/Pages/Template/TypingUserTemplate.razor
@@ -0,0 +1,56 @@
+@page "/typingusertemplate"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+ @for (int i = 0; i < context.Users.Count; i++)
+ {
+ if (i == context.Users.Count - 1 && i > 0)
+ {
+ and
+ }
+ @context.Users[i].User
+ }
+ are typing...
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+ private static UserModel ReenaUserModel = new UserModel() { ID = "User2", User = "Reena" };
+ private List TypingUsers = new List() { MichaleUserModel, ReenaUserModel };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
+
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/TimeBreak/ShowTimeBreak.razor b/ChatUI/Components/Pages/TimeBreak/ShowTimeBreak.razor
new file mode 100644
index 00000000..1ed1c213
--- /dev/null
+++ b/ChatUI/Components/Pages/TimeBreak/ShowTimeBreak.razor
@@ -0,0 +1,22 @@
+@page "/showtimebreak"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel, Timestamp = new DateTime(2024,12,25,7,30,0) },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel, Timestamp = new DateTime(2024,12,25,8,0,0) },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel, Timestamp = new DateTime(2024,12,25,11,0,0) }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/TimeBreak/TimeBreakNav.razor b/ChatUI/Components/Pages/TimeBreak/TimeBreakNav.razor
new file mode 100644
index 00000000..6490a361
--- /dev/null
+++ b/ChatUI/Components/Pages/TimeBreak/TimeBreakNav.razor
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/TimeStamp/ShowTimeStamp.razor b/ChatUI/Components/Pages/TimeStamp/ShowTimeStamp.razor
new file mode 100644
index 00000000..d0931804
--- /dev/null
+++ b/ChatUI/Components/Pages/TimeStamp/ShowTimeStamp.razor
@@ -0,0 +1,22 @@
+@page "/showtimestamp"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel, Timestamp = new DateTime(2024,12,25,7,30,0) },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel, Timestamp = new DateTime(2024,12,25,8,0,0) },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel, Timestamp = new DateTime(2024,12,25,11,0,0) }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/TimeStamp/TimeStampFormat.razor b/ChatUI/Components/Pages/TimeStamp/TimeStampFormat.razor
new file mode 100644
index 00000000..63ad9dd7
--- /dev/null
+++ b/ChatUI/Components/Pages/TimeStamp/TimeStampFormat.razor
@@ -0,0 +1,22 @@
+@page "/timestampformat"
+@rendermode InteractiveServer
+
+@using Syncfusion.Blazor.InteractiveChat
+
+
+
+
+
+
+
+@code {
+ private static UserModel CurrentUserModel = new UserModel() { ID = "User1", User = "Albert" };
+ private static UserModel MichaleUserModel = new UserModel() { ID = "User2", User = "Michale Suyama" };
+
+ private List ChatUserMessages = new List()
+ {
+ new ChatMessage() { Text = "Hi, thinking of painting this weekend.", Author = CurrentUserModel },
+ new ChatMessage() { Text = "That’s fun! What will you paint?", Author = MichaleUserModel },
+ new ChatMessage() { Text = "Maybe landscapes.", Author = CurrentUserModel }
+ };
+}
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/TimeStamp/TimeStampNav.razor b/ChatUI/Components/Pages/TimeStamp/TimeStampNav.razor
new file mode 100644
index 00000000..d89eb0e7
--- /dev/null
+++ b/ChatUI/Components/Pages/TimeStamp/TimeStampNav.razor
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/ChatUI/Components/Pages/TypingIndicator/TypingIndicatorNav.razor b/ChatUI/Components/Pages/TypingIndicator/TypingIndicatorNav.razor
new file mode 100644
index 00000000..4fa5f442
--- /dev/null
+++ b/ChatUI/Components/Pages/TypingIndicator/TypingIndicatorNav.razor
@@ -0,0 +1,7 @@
+
;
+}
+
+
\ No newline at end of file
diff --git a/Ribbon/Components/Pages/Backstage/BackstageNav.razor b/Ribbon/Components/Pages/Backstage/BackstageNav.razor
new file mode 100644
index 00000000..b843c798
--- /dev/null
+++ b/Ribbon/Components/Pages/Backstage/BackstageNav.razor
@@ -0,0 +1,12 @@
+
+ Swapping to Development environment will display more detailed information about the error that occurred.
+
+
+ The Development environment shouldn't be enabled for deployed applications.
+ It can result in displaying sensitive information from exceptions to end users.
+ For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development
+ and restarting the app.
+