mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-11-13 14:27:21 +00:00
Changed all icons of AI Studio to Lucide (#1187)
This commit is contained in:
1 parent
9a676101f7
commit
7ef26cd5c8
352 files changed
+6261
-1620
No files matched your search
@@ -13,13 +13,13 @@
|
||||
<InnerScrolling>
|
||||
|
||||
<AssistantCategoryBlock Title="@T("General")" HeaderClass="mb-2 mr-3">
|
||||
<AssistantBlock TSettings="SettingsDialogTextSummarizer" Component="Components.TEXT_SUMMARIZER_ASSISTANT" Name="@T("Text Summarizer")" Description="@T("Use an LLM to summarize a given text.")" Icon="@Icons.Material.Filled.TextSnippet" Link="@Routes.ASSISTANT_SUMMARIZER"/>
|
||||
<AssistantBlock TSettings="SettingsDialogTranslation" Component="Components.TRANSLATION_ASSISTANT" Name="@T("Translation")" Description="@T("Translate text into another language.")" Icon="@Icons.Material.Filled.Translate" Link="@Routes.ASSISTANT_TRANSLATION"/>
|
||||
<AssistantBlock TSettings="SettingsDialogGrammarSpelling" Component="Components.GRAMMAR_SPELLING_ASSISTANT" Name="@T("Grammar & Spelling")" Description="@T("Check grammar and spelling of a given text.")" Icon="@Icons.Material.Filled.Edit" Link="@Routes.ASSISTANT_GRAMMAR_SPELLING"/>
|
||||
<AssistantBlock TSettings="SettingsDialogRewrite" Component="Components.REWRITE_ASSISTANT" Name="@T("Rewrite & Improve")" Description="@T("Rewrite and improve a given text for a chosen style.")" Icon="@Icons.Material.Filled.Edit" Link="@Routes.ASSISTANT_REWRITE"/>
|
||||
<AssistantBlock TSettings="SettingsDialogPromptOptimizer" Component="Components.PROMPT_OPTIMIZER_ASSISTANT" Name="@T("Prompt Optimizer")" Description="@T("Optimize your prompt using a structured guideline.")" Icon="@Icons.Material.Filled.AutoFixHigh" Link="@Routes.ASSISTANT_PROMPT_OPTIMIZER"/>
|
||||
<AssistantBlock TSettings="SettingsDialogSynonyms" Component="Components.SYNONYMS_ASSISTANT" Name="@T("Synonyms")" Description="@T("Find synonyms for a given word or phrase.")" Icon="@Icons.Material.Filled.Spellcheck" Link="@Routes.ASSISTANT_SYNONYMS"/>
|
||||
<AssistantBlock TSettings="SettingsDialogAssistantBuilder" Component="Components.META_ASSISTANT" RequiredPreviewFeature="PreviewFeatures.PRE_META_ASSISTANT_V1" Name="@T("Assistant Builder")" Description="@T("Generate your own assistants.")" Icon="@Icons.Material.Filled.AutoMode" Link="@Routes.ASSISTANT_META_ASSISTANT"/>
|
||||
<AssistantBlock TSettings="SettingsDialogTextSummarizer" Component="Components.TEXT_SUMMARIZER_ASSISTANT" Name="@T("Text Summarizer")" Description="@T("Use an LLM to summarize a given text.")" Icon="@AppIcons.ASSISTANT_TEXT_SUMMARIZER" Link="@Routes.ASSISTANT_SUMMARIZER"/>
|
||||
<AssistantBlock TSettings="SettingsDialogTranslation" Component="Components.TRANSLATION_ASSISTANT" Name="@T("Translation")" Description="@T("Translate text into another language.")" Icon="@AppIcons.TRANSLATION" Link="@Routes.ASSISTANT_TRANSLATION"/>
|
||||
<AssistantBlock TSettings="SettingsDialogGrammarSpelling" Component="Components.GRAMMAR_SPELLING_ASSISTANT" Name="@T("Grammar & Spelling")" Description="@T("Check grammar and spelling of a given text.")" Icon="@AppIcons.ASSISTANT_GRAMMAR_SPELLING" Link="@Routes.ASSISTANT_GRAMMAR_SPELLING"/>
|
||||
<AssistantBlock TSettings="SettingsDialogRewrite" Component="Components.REWRITE_ASSISTANT" Name="@T("Rewrite & Improve")" Description="@T("Rewrite and improve a given text for a chosen style.")" Icon="@AppIcons.ASSISTANT_REWRITE" Link="@Routes.ASSISTANT_REWRITE"/>
|
||||
<AssistantBlock TSettings="SettingsDialogPromptOptimizer" Component="Components.PROMPT_OPTIMIZER_ASSISTANT" Name="@T("Prompt Optimizer")" Description="@T("Optimize your prompt using a structured guideline.")" Icon="@AppIcons.ASSISTANT_PROMPT_OPTIMIZER" Link="@Routes.ASSISTANT_PROMPT_OPTIMIZER"/>
|
||||
<AssistantBlock TSettings="SettingsDialogSynonyms" Component="Components.SYNONYMS_ASSISTANT" Name="@T("Synonyms")" Description="@T("Find synonyms for a given word or phrase.")" Icon="@AppIcons.ASSISTANT_SYNONYMS" Link="@Routes.ASSISTANT_SYNONYMS"/>
|
||||
<AssistantBlock TSettings="SettingsDialogAssistantBuilder" Component="Components.META_ASSISTANT" RequiredPreviewFeature="PreviewFeatures.PRE_META_ASSISTANT_V1" Name="@T("Assistant Builder")" Description="@T("Generate your own assistants.")" Icon="@AppIcons.ASSISTANT_BUILDER" Link="@Routes.ASSISTANT_META_ASSISTANT"/>
|
||||
</AssistantCategoryBlock>
|
||||
|
||||
@if (this.AssistantPlugins.Count > 0)
|
||||
@@ -34,7 +34,7 @@
|
||||
Component="Components.DYNAMIC_ASSISTANT"
|
||||
Name="@T(assistantPlugin.AssistantTitle)"
|
||||
Description="@T(assistantPlugin.Description)"
|
||||
Icon="@Icons.Material.Filled.FindInPage"
|
||||
Icon="@AppIcons.ASSISTANT_PLUGIN"
|
||||
Disabled="@(!securityState.CanStartAssistant)"
|
||||
AssistantSessionInstanceId="@assistantPlugin.Id.ToString()"
|
||||
Link="@launchLink"
|
||||
@@ -55,32 +55,32 @@
|
||||
}
|
||||
|
||||
<AssistantCategoryBlock Title="@T("Business")">
|
||||
<AssistantBlock TSettings="SettingsDialogWritingEMails" Component="Components.EMAIL_ASSISTANT" Name="@T("E-Mail")" Description="@T("Generate an e-mail for a given context.")" Icon="@Icons.Material.Filled.Email" Link="@Routes.ASSISTANT_EMAIL"/>
|
||||
<AssistantBlock TSettings="SettingsDialogSWOTAnalysis" Component="Components.SWOT_ANALYSIS_ASSISTANT" Name="@T("SWOT Analysis")" Description="@T("Identify strengths, weaknesses, opportunities, threats, and practical next steps from provided information.")" Icon="@Icons.Material.Filled.Assessment" Link="@Routes.ASSISTANT_SWOT_ANALYSIS"/>
|
||||
<AssistantBlock TSettings="NoSettingsPanel" Component="Components.DOCUMENT_ANALYSIS_ASSISTANT" Name="@T("Document Analysis")" Description="@T("Analyze a document regarding defined rules and extract key information.")" Icon="@Icons.Material.Filled.DocumentScanner" Link="@Routes.ASSISTANT_DOCUMENT_ANALYSIS"/>
|
||||
<AssistantBlock TSettings="SettingsDialogBatchProcessing" Component="Components.BATCH_PROCESSING_ASSISTANT" Name="@T("Batch Processing")" Description="@T("Process all documents of a folder in one batch run and collect the results.")" Icon="@Icons.Material.Filled.DynamicFeed" Link="@Routes.ASSISTANT_BATCH_PROCESSING"/>
|
||||
<AssistantBlock TSettings="SettingsDialogMyTasks" Component="Components.MY_TASKS_ASSISTANT" Name="@T("My Tasks")" Description="@T("Analyze a text or an email for tasks you need to complete.")" Icon="@Icons.Material.Filled.Task" Link="@Routes.ASSISTANT_MY_TASKS"/>
|
||||
<AssistantBlock TSettings="SettingsDialogAgenda" Component="Components.AGENDA_ASSISTANT" Name="@T("Agenda Planner")" Description="@T("Generate an agenda for a given meeting, seminar, etc.")" Icon="@Icons.Material.Filled.CalendarToday" Link="@Routes.ASSISTANT_AGENDA"/>
|
||||
<AssistantBlock TSettings="SettingsDialogJobPostings" Component="Components.JOB_POSTING_ASSISTANT" Name="@T("Job Posting")" Description="@T("Generate a job posting for a given job description.")" Icon="@Icons.Material.Filled.Work" Link="@Routes.ASSISTANT_JOB_POSTING"/>
|
||||
<AssistantBlock TSettings="SettingsDialogLegalCheck" Component="Components.LEGAL_CHECK_ASSISTANT" Name="@T("Legal Check")" Description="@T("Ask a question about a legal document.")" Icon="@Icons.Material.Filled.Gavel" Link="@Routes.ASSISTANT_LEGAL_CHECK"/>
|
||||
<AssistantBlock TSettings="SettingsDialogIconFinder" Component="Components.ICON_FINDER_ASSISTANT" Name="@T("Icon Finder")" Description="@T("Use an LLM to find an icon for a given context.")" Icon="@Icons.Material.Filled.FindInPage" Link="@Routes.ASSISTANT_ICON_FINDER"/>
|
||||
<AssistantBlock TSettings="SettingsDialogSlideBuilder" Component="Components.SLIDE_BUILDER_ASSISTANT" Name="@T("Slide Assistant")" Description="@T("Turn texts and documents into slides, also as a PowerPoint file in the design of your template.")" Icon="@Icons.Material.Filled.Slideshow" Link="@Routes.ASSISTANT_SLIDE_BUILDER"/>
|
||||
<AssistantBlock TSettings="SettingsDialogVisualBriefing" Component="Components.VISUAL_BRIEFING_ASSISTANT" RequiredPreviewFeature="Components.VISUAL_BRIEFING_ASSISTANT.RequiredPreviewFeature" Name="@T("Visual Briefing Assistant")" Description="@T("Turn documents, data, images, audio, and video into an audience-ready interactive briefing.")" Icon="@Icons.Material.Filled.DashboardCustomize" Link="@Routes.ASSISTANT_VISUAL_BRIEFING" />
|
||||
<AssistantBlock TSettings="SettingsDialogWritingEMails" Component="Components.EMAIL_ASSISTANT" Name="@T("E-Mail")" Description="@T("Generate an e-mail for a given context.")" Icon="@AppIcons.ASSISTANT_EMAIL" Link="@Routes.ASSISTANT_EMAIL"/>
|
||||
<AssistantBlock TSettings="SettingsDialogSWOTAnalysis" Component="Components.SWOT_ANALYSIS_ASSISTANT" Name="@T("SWOT Analysis")" Description="@T("Identify strengths, weaknesses, opportunities, threats, and practical next steps from provided information.")" Icon="@AppIcons.ASSISTANT_SWOT_ANALYSIS" Link="@Routes.ASSISTANT_SWOT_ANALYSIS"/>
|
||||
<AssistantBlock TSettings="NoSettingsPanel" Component="Components.DOCUMENT_ANALYSIS_ASSISTANT" Name="@T("Document Analysis")" Description="@T("Analyze a document regarding defined rules and extract key information.")" Icon="@AppIcons.ASSISTANT_DOCUMENT_ANALYSIS" Link="@Routes.ASSISTANT_DOCUMENT_ANALYSIS"/>
|
||||
<AssistantBlock TSettings="SettingsDialogBatchProcessing" Component="Components.BATCH_PROCESSING_ASSISTANT" Name="@T("Batch Processing")" Description="@T("Process all documents of a folder in one batch run and collect the results.")" Icon="@AppIcons.ASSISTANT_BATCH_PROCESSING" Link="@Routes.ASSISTANT_BATCH_PROCESSING"/>
|
||||
<AssistantBlock TSettings="SettingsDialogMyTasks" Component="Components.MY_TASKS_ASSISTANT" Name="@T("My Tasks")" Description="@T("Analyze a text or an email for tasks you need to complete.")" Icon="@AppIcons.ASSISTANT_MY_TASKS" Link="@Routes.ASSISTANT_MY_TASKS"/>
|
||||
<AssistantBlock TSettings="SettingsDialogAgenda" Component="Components.AGENDA_ASSISTANT" Name="@T("Agenda Planner")" Description="@T("Generate an agenda for a given meeting, seminar, etc.")" Icon="@AppIcons.ASSISTANT_AGENDA" Link="@Routes.ASSISTANT_AGENDA"/>
|
||||
<AssistantBlock TSettings="SettingsDialogJobPostings" Component="Components.JOB_POSTING_ASSISTANT" Name="@T("Job Posting")" Description="@T("Generate a job posting for a given job description.")" Icon="@AppIcons.ASSISTANT_JOB_POSTING" Link="@Routes.ASSISTANT_JOB_POSTING"/>
|
||||
<AssistantBlock TSettings="SettingsDialogLegalCheck" Component="Components.LEGAL_CHECK_ASSISTANT" Name="@T("Legal Check")" Description="@T("Ask a question about a legal document.")" Icon="@AppIcons.ASSISTANT_LEGAL_CHECK" Link="@Routes.ASSISTANT_LEGAL_CHECK"/>
|
||||
<AssistantBlock TSettings="SettingsDialogIconFinder" Component="Components.ICON_FINDER_ASSISTANT" Name="@T("Icon Finder")" Description="@T("Use an LLM to find an icon for a given context.")" Icon="@AppIcons.ASSISTANT_ICON_FINDER" Link="@Routes.ASSISTANT_ICON_FINDER"/>
|
||||
<AssistantBlock TSettings="SettingsDialogSlideBuilder" Component="Components.SLIDE_BUILDER_ASSISTANT" Name="@T("Slide Assistant")" Description="@T("Turn texts and documents into slides, also as a PowerPoint file in the design of your template.")" Icon="@AppIcons.ASSISTANT_SLIDES" Link="@Routes.ASSISTANT_SLIDE_BUILDER"/>
|
||||
<AssistantBlock TSettings="SettingsDialogVisualBriefing" Component="Components.VISUAL_BRIEFING_ASSISTANT" RequiredPreviewFeature="Components.VISUAL_BRIEFING_ASSISTANT.RequiredPreviewFeature" Name="@T("Visual Briefing Assistant")" Description="@T("Turn documents, data, images, audio, and video into an audience-ready interactive briefing.")" Icon="@AppIcons.ASSISTANT_VISUAL_BRIEFING" Link="@Routes.ASSISTANT_VISUAL_BRIEFING" />
|
||||
</AssistantCategoryBlock>
|
||||
|
||||
<AssistantCategoryBlock Title="@T("Learning & Reflecting")">
|
||||
<AssistantBlock TSettings="SettingsDialogAssistantBias" Component="Components.BIAS_DAY_ASSISTANT" Name="@T("Bias of the Day")" Description="@T("Learn about one cognitive bias every day.")" Icon="@Icons.Material.Filled.Psychology" Link="@Routes.ASSISTANT_BIAS"/>
|
||||
<AssistantBlock TSettings="SettingsDialogBeyondFactsLab" Component="Components.BEYOND_FACTS_LAB_ASSISTANT" RequiredPreviewFeature="Components.BEYOND_FACTS_LAB_ASSISTANT.RequiredPreviewFeature" Name="@T("BeyondFacts Lab")" Description="@T("Prepare step by step for a challenging appearance as a researcher, e.g., a panel discussion or an interview.")" Icon="@Icons.Material.Filled.RecordVoiceOver" Link="@Routes.ASSISTANT_BEYOND_FACTS_LAB"/>
|
||||
<AssistantBlock TSettings="SettingsDialogAssistantBias" Component="Components.BIAS_DAY_ASSISTANT" Name="@T("Bias of the Day")" Description="@T("Learn about one cognitive bias every day.")" Icon="@AppIcons.ASSISTANT_BIAS_OF_THE_DAY" Link="@Routes.ASSISTANT_BIAS"/>
|
||||
<AssistantBlock TSettings="SettingsDialogBeyondFactsLab" Component="Components.BEYOND_FACTS_LAB_ASSISTANT" RequiredPreviewFeature="Components.BEYOND_FACTS_LAB_ASSISTANT.RequiredPreviewFeature" Name="@T("BeyondFacts Lab")" Description="@T("Prepare step by step for a challenging appearance as a researcher, e.g., a panel discussion or an interview.")" Icon="@AppIcons.ASSISTANT_BEYOND_FACTS_LAB" Link="@Routes.ASSISTANT_BEYOND_FACTS_LAB"/>
|
||||
</AssistantCategoryBlock>
|
||||
|
||||
<AssistantCategoryBlock Title="@T("Software Engineering")">
|
||||
<AssistantBlock TSettings="SettingsDialogCoding" Component="Components.CODING_ASSISTANT" Name="@T("Coding")" Description="@T("Get coding and debugging support from an LLM.")" Icon="@Icons.Material.Filled.Code" Link="@Routes.ASSISTANT_CODING"/>
|
||||
<AssistantBlock TSettings="SettingsDialogERIServer" Component="Components.ERI_ASSISTANT" RequiredPreviewFeature="PreviewFeatures.PRE_RAG_2024" Name="@T("ERI Server")" Description="@T("Generate an ERI server to integrate business systems.")" Icon="@Icons.Material.Filled.PrivateConnectivity" Link="@Routes.ASSISTANT_ERI"/>
|
||||
<AssistantBlock TSettings="SettingsDialogCoding" Component="Components.CODING_ASSISTANT" Name="@T("Coding")" Description="@T("Get coding and debugging support from an LLM.")" Icon="@AppIcons.ASSISTANT_CODING" Link="@Routes.ASSISTANT_CODING"/>
|
||||
<AssistantBlock TSettings="SettingsDialogERIServer" Component="Components.ERI_ASSISTANT" RequiredPreviewFeature="PreviewFeatures.PRE_RAG_2024" Name="@T("ERI Server")" Description="@T("Generate an ERI server to integrate business systems.")" Icon="@AppIcons.ERI" Link="@Routes.ASSISTANT_ERI"/>
|
||||
</AssistantCategoryBlock>
|
||||
|
||||
<AssistantCategoryBlock Title="@T("AI Studio Development")">
|
||||
<AssistantBlock TSettings="SettingsDialogI18N" Component="Components.I18N_ASSISTANT" Name="@T("Localization")" Description="@T("Translate AI Studio text content into other languages")" Icon="@Icons.Material.Filled.Translate" Link="@Routes.ASSISTANT_AI_STUDIO_I18N"/>
|
||||
<AssistantBlock TSettings="NoSettingsPanel" Component="Components.LOG_VIEWER_ASSISTANT" Name="@T("Log Viewer")" Description="@T("View and filter AI Studio log files.")" Icon="@Icons.Material.Filled.Article" Link="@Routes.ASSISTANT_LOG_VIEWER"/>
|
||||
<AssistantBlock TSettings="SettingsDialogI18N" Component="Components.I18N_ASSISTANT" Name="@T("Localization")" Description="@T("Translate AI Studio text content into other languages")" Icon="@AppIcons.ASSISTANT_LOCALIZATION" Link="@Routes.ASSISTANT_AI_STUDIO_I18N"/>
|
||||
<AssistantBlock TSettings="NoSettingsPanel" Component="Components.LOG_VIEWER_ASSISTANT" Name="@T("Log Viewer")" Description="@T("View and filter AI Studio log files.")" Icon="@AppIcons.ASSISTANT_LOG_VIEWER" Link="@Routes.ASSISTANT_LOG_VIEWER"/>
|
||||
</AssistantCategoryBlock>
|
||||
|
||||
</InnerScrolling>
|
||||
|
||||
@@ -57,7 +57,7 @@ public partial class Assistants : MSGComponentBase
|
||||
var audit = await this.AssistantPluginAuditService.RunAuditAsync(assistantPlugin);
|
||||
if (audit.Level is AssistantAuditLevel.UNKNOWN)
|
||||
{
|
||||
await MessageBus.INSTANCE.SendError(new (Icons.Material.Filled.SettingsSuggest, string.Format(this.T("The automatic security audit for the assistant plugin '{0}' failed. Please run it manually from the plugins page."), assistantPlugin.Name)));
|
||||
await MessageBus.INSTANCE.SendError(new (AppIcons.AGENT, string.Format(this.T("The automatic security audit for the assistant plugin '{0}' failed. Please run it manually from the plugins page."), assistantPlugin.Name)));
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ public partial class Assistants : MSGComponentBase
|
||||
var result = await this.DirectChatService.TryCreateAssistantChatAsync(assistantPlugin);
|
||||
if (result.Request is null)
|
||||
{
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.ReportProblem, result.ErrorMessage));
|
||||
await this.MessageBus.SendError(new(AppIcons.ERROR, result.ErrorMessage));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,11 +22,11 @@
|
||||
@if (this.SettingsManager.ConfigurationData.Workspace.StorageBehavior is WorkspaceStorageBehavior.DISABLE_WORKSPACES)
|
||||
{
|
||||
<MudTooltip Text="@T("Configure your workspaces")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Settings" OnClick="@(async () => await this.OpenWorkspacesSettingsDialog())"/>
|
||||
<MudIconButton Icon="@AppIcons.SETTINGS" OnClick="@(async () => await this.OpenWorkspacesSettingsDialog())"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
<MudTooltip Text="@T("Show the chat options")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Settings" Color="Color.Default" OnClick="@this.OpenChatSettingsDialog"/>
|
||||
<MudIconButton Icon="@AppIcons.SETTINGS" Color="Color.Default" OnClick="@this.OpenChatSettingsDialog"/>
|
||||
</MudTooltip>
|
||||
</MudToolBar>
|
||||
</MudStack>
|
||||
@@ -48,10 +48,10 @@
|
||||
@T("Your workspaces")
|
||||
</MudText>
|
||||
<MudTooltip Text="@T("Configure your workspaces")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Settings" Size="Size.Medium" OnClick="@(async () => await this.OpenWorkspacesSettingsDialog())"/>
|
||||
<MudIconButton Icon="@AppIcons.SETTINGS" Size="Size.Medium" OnClick="@(async () => await this.OpenWorkspacesSettingsDialog())"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@T("Reload your workspaces")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Refresh" Size="Size.Medium" OnClick="@this.RefreshWorkspaces"/>
|
||||
<MudIconButton Icon="@AppIcons.REFRESH" Size="Size.Medium" OnClick="@this.RefreshWorkspaces"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@this.WorkspaceSearchTooltip" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@this.WorkspaceSearchIcon" Size="Size.Medium" OnClick="@this.ToggleWorkspaceSearch"/>
|
||||
@@ -77,10 +77,10 @@
|
||||
</MudText>
|
||||
<MudSpacer/>
|
||||
<MudTooltip Text="@T("Configure your workspaces")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Settings" Size="Size.Medium" OnClick="@(async () => await this.OpenWorkspacesSettingsDialog())"/>
|
||||
<MudIconButton Icon="@AppIcons.SETTINGS" Size="Size.Medium" OnClick="@(async () => await this.OpenWorkspacesSettingsDialog())"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@T("Reload your workspaces")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Refresh" Size="Size.Medium" OnClick="@this.RefreshWorkspaces"/>
|
||||
<MudIconButton Icon="@AppIcons.REFRESH" Size="Size.Medium" OnClick="@this.RefreshWorkspaces"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@this.WorkspaceSearchTooltip" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@this.WorkspaceSearchIcon" Size="Size.Medium" OnClick="@this.ToggleWorkspaceSearch"/>
|
||||
@@ -118,7 +118,7 @@
|
||||
@T("Your workspaces")
|
||||
</MudText>
|
||||
<MudTooltip Text="@T("Configure your workspaces")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Settings" Size="Size.Medium" OnClick="@(async () => await this.OpenWorkspacesSettingsDialog())"/>
|
||||
<MudIconButton Icon="@AppIcons.SETTINGS" Size="Size.Medium" OnClick="@(async () => await this.OpenWorkspacesSettingsDialog())"/>
|
||||
</MudTooltip>
|
||||
</MudStack>
|
||||
</MudPaper>
|
||||
@@ -158,15 +158,15 @@
|
||||
</MudText>
|
||||
|
||||
<MudTooltip Text="@T("Configure your workspaces")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Settings" Size="Size.Medium" OnClick="@(async () => await this.OpenWorkspacesSettingsDialog())"/>
|
||||
<MudIconButton Icon="@AppIcons.SETTINGS" Size="Size.Medium" OnClick="@(async () => await this.OpenWorkspacesSettingsDialog())"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@T("Reload your workspaces")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Refresh" Size="Size.Medium" OnClick="@this.RefreshWorkspaces"/>
|
||||
<MudIconButton Icon="@AppIcons.REFRESH" Size="Size.Medium" OnClick="@this.RefreshWorkspaces"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@this.WorkspaceSearchTooltip" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@this.WorkspaceSearchIcon" Size="Size.Medium" OnClick="@this.ToggleWorkspaceSearch"/>
|
||||
</MudTooltip>
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Close" Color="Color.Error" Size="Size.Medium" OnClick="@(() => this.ToggleWorkspacesOverlay())"/>
|
||||
<MudIconButton Icon="@AppIcons.CLOSE" Color="Color.Error" Size="Size.Medium" OnClick="@(() => this.ToggleWorkspacesOverlay())"/>
|
||||
</MudStack>
|
||||
</MudDrawerHeader>
|
||||
<MudDrawerContainer Class="ml-6">
|
||||
|
||||
@@ -97,9 +97,9 @@ public partial class Chat : MSGComponentBase
|
||||
|
||||
#endregion
|
||||
|
||||
private string WorkspaceSidebarToggleIcon => this.SettingsManager.ConfigurationData.Workspace.IsSidebarVisible ? Icons.Material.Filled.ArrowCircleLeft : Icons.Material.Filled.ArrowCircleRight;
|
||||
private string WorkspaceSidebarToggleIcon => this.SettingsManager.ConfigurationData.Workspace.IsSidebarVisible ? AppIcons.HIDE_SIDEBAR : AppIcons.SHOW_SIDEBAR;
|
||||
|
||||
private string WorkspaceSearchIcon => this.workspaceSearchVisible ? Icons.Material.Filled.SearchOff : Icons.Material.Filled.Search;
|
||||
private string WorkspaceSearchIcon => this.workspaceSearchVisible ? AppIcons.HIDE_SEARCH : AppIcons.SEARCH;
|
||||
|
||||
private string WorkspaceSearchTooltip => this.workspaceSearchVisible ? T("Hide search") : T("Search your workspaces");
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<MudText Typo="Typo.h5">@T("Background embeddings")</MudText>
|
||||
<MudSpacer/>
|
||||
<MudTooltip Text="@T("Manage your data sources")" Placement="Placement.Top">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Settings" OnClick="@this.OpenDataSourceSettings"/>
|
||||
<MudIconButton Icon="@AppIcons.SETTINGS" OnClick="@this.OpenDataSourceSettings"/>
|
||||
</MudTooltip>
|
||||
</MudStack>
|
||||
<MudText Typo="Typo.body1" Class="mt-2">
|
||||
@@ -69,13 +69,13 @@
|
||||
ExpansionPanel component, which behaves the same way.
|
||||
*@
|
||||
<MudTooltip Text="@T("Refresh this data source")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Sync" Color="Color.Info" Size="Size.Small" OnClick="@(async () => await this.RefreshDataSource(status))" />
|
||||
<MudIconButton Icon="@AppIcons.REFRESH" Color="Color.Info" Size="Size.Small" OnClick="@(async () => await this.RefreshDataSource(status))" />
|
||||
</MudTooltip>
|
||||
}
|
||||
@if (this.CanRepair(status))
|
||||
{
|
||||
<MudTooltip Text="@T("Repair this data source by indexing it anew")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Build" Color="Color.Warning" Size="Size.Small" OnClick="@(async () => await this.RepairDataSource(status))" />
|
||||
<MudIconButton Icon="@AppIcons.REPAIR" Color="Color.Warning" Size="Size.Small" OnClick="@(async () => await this.RepairDataSource(status))" />
|
||||
</MudTooltip>
|
||||
}
|
||||
</div>
|
||||
@@ -138,7 +138,7 @@
|
||||
}
|
||||
@if (group.Cause.NeedsProviderSettings)
|
||||
{
|
||||
<MudButton Variant="Variant.Text" Size="Size.Small" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Settings" OnClick="@this.OpenProviderSettings">
|
||||
<MudButton Variant="Variant.Text" Size="Size.Small" Color="Color.Primary" StartIcon="@AppIcons.SETTINGS" OnClick="@this.OpenProviderSettings">
|
||||
@T("Open the settings")
|
||||
</MudButton>
|
||||
}
|
||||
@@ -178,7 +178,7 @@
|
||||
@if (CanShowInFileManager(status, context))
|
||||
{
|
||||
<MudTooltip Text="@T("Show this file in the file browser of your system")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.FolderOpen" Color="Color.Info" Size="Size.Small" OnClick="@(async () => await this.ShowInFileManager(context))"/>
|
||||
<MudIconButton Icon="@AppIcons.FOLDER_OPEN" Color="Color.Info" Size="Size.Small" OnClick="@(async () => await this.ShowInFileManager(context))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
</MudTd>
|
||||
@@ -205,13 +205,13 @@
|
||||
}
|
||||
@if (group.Cause.NeedsTranscriptionSettings)
|
||||
{
|
||||
<MudButton Variant="Variant.Text" Size="Size.Small" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Settings" OnClick="@this.OpenProviderSettings">
|
||||
<MudButton Variant="Variant.Text" Size="Size.Small" Color="Color.Primary" StartIcon="@AppIcons.SETTINGS" OnClick="@this.OpenProviderSettings">
|
||||
@T("Open the transcription settings")
|
||||
</MudButton>
|
||||
}
|
||||
@if (group.Cause.NeedsDataSourceSettings)
|
||||
{
|
||||
<MudButton Variant="Variant.Text" Size="Size.Small" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Settings" OnClick="@this.OpenDataSourceSettings">
|
||||
<MudButton Variant="Variant.Text" Size="Size.Small" Color="Color.Primary" StartIcon="@AppIcons.SETTINGS" OnClick="@this.OpenDataSourceSettings">
|
||||
@T("Manage the data sources")
|
||||
</MudButton>
|
||||
}
|
||||
@@ -234,7 +234,7 @@
|
||||
@if (CanShowInFileManager(status, context.FilePath))
|
||||
{
|
||||
<MudTooltip Text="@T("Show this file in the file browser of your system")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.FolderOpen" Color="Color.Info" Size="Size.Small" OnClick="@(async () => await this.ShowInFileManager(context.FilePath))"/>
|
||||
<MudIconButton Icon="@AppIcons.FOLDER_OPEN" Color="Color.Info" Size="Size.Small" OnClick="@(async () => await this.ShowInFileManager(context.FilePath))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
</MudTd>
|
||||
@@ -254,10 +254,10 @@
|
||||
<MudPaper Class="pa-3 border-dashed border rounded-lg mt-2" Elevation="0">
|
||||
<MudStack Spacing="2">
|
||||
<MudStack Row="@true" AlignItems="AlignItems.Center" Spacing="2">
|
||||
<MudIcon Icon="@Icons.Material.Filled.FilterAlt" Color="Color.Default" Size="Size.Small"/>
|
||||
<MudIcon Icon="@AppIcons.FILE_FILTER" Color="Color.Default" Size="Size.Small"/>
|
||||
<MudText Typo="Typo.subtitle1">@T("Outside the selection")</MudText>
|
||||
<MudSpacer/>
|
||||
<MudButton Variant="Variant.Text" Size="Size.Small" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Settings" OnClick="@this.OpenDataSourceSettings">
|
||||
<MudButton Variant="Variant.Text" Size="Size.Small" Color="Color.Primary" StartIcon="@AppIcons.SETTINGS" OnClick="@this.OpenDataSourceSettings">
|
||||
@T("Manage the data sources")
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
@@ -267,7 +267,7 @@
|
||||
<MudStack Row="@true" Wrap="Wrap.Wrap" Spacing="1">
|
||||
@foreach (var group in status.ExcludedFolders)
|
||||
{
|
||||
<MudChip T="string" Size="Size.Small" Color="Color.Default" Variant="Variant.Outlined" Icon="@Icons.Material.Filled.FolderOff">
|
||||
<MudChip T="string" Size="Size.Small" Color="Color.Default" Variant="Variant.Outlined" Icon="@AppIcons.EXCLUDED_FOLDERS">
|
||||
@this.GetExcludedFolderGroupText(group)
|
||||
</MudChip>
|
||||
}
|
||||
@@ -302,10 +302,10 @@
|
||||
@if (status.Attention is DataSourceAttention.AUTH_FAILED)
|
||||
{
|
||||
<MudStack Row="@true" Wrap="Wrap.Wrap" Spacing="2">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Key" OnClick="@(async () => await this.ChangeMailboxSettings(status))">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@AppIcons.KEY" OnClick="@(async () => await this.ChangeMailboxSettings(status))">
|
||||
@T("Change the password")
|
||||
</MudButton>
|
||||
<MudButton Variant="Variant.Outlined" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Sync" OnClick="@(async () => await this.RefreshDataSource(status))">
|
||||
<MudButton Variant="Variant.Outlined" Color="Color.Primary" StartIcon="@AppIcons.REFRESH" OnClick="@(async () => await this.RefreshDataSource(status))">
|
||||
@T("Try to sign in again")
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
@@ -313,10 +313,10 @@
|
||||
else if (status is { Attention: DataSourceAttention.MASS_REMOVAL_PENDING, PendingRemovalCount: not null })
|
||||
{
|
||||
<MudStack Row="@true" Wrap="Wrap.Wrap" Spacing="2">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Warning" StartIcon="@Icons.Material.Filled.PlaylistRemove" OnClick="@(async () => await this.ApproveMailRemoval(status))">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Warning" StartIcon="@AppIcons.REMOVE_FROM_INDEX" OnClick="@(async () => await this.ApproveMailRemoval(status))">
|
||||
@T("Remove them from the index")
|
||||
</MudButton>
|
||||
<MudButton Variant="Variant.Outlined" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Settings" OnClick="@(async () => await this.ChangeMailboxSettings(status))">
|
||||
<MudButton Variant="Variant.Outlined" Color="Color.Primary" StartIcon="@AppIcons.SETTINGS" OnClick="@(async () => await this.ChangeMailboxSettings(status))">
|
||||
@T("Change the settings of the mailbox")
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
@@ -324,7 +324,7 @@
|
||||
else if (status.Attention is DataSourceAttention.LOCATION_UNREACHABLE && this.CanEditDataSource(status))
|
||||
{
|
||||
<MudStack Row="@true" Wrap="Wrap.Wrap" Spacing="2">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Edit" OnClick="@(async () => await this.EditDataSource(status))">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@AppIcons.EDIT" OnClick="@(async () => await this.EditDataSource(status))">
|
||||
@T("Edit this data source")
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
|
||||
@@ -322,7 +322,7 @@ public partial class Embeddings : MSGComponentBase
|
||||
if (failure.FailureReason is not ProviderRequestFailureReason.NONE)
|
||||
{
|
||||
var isFixedInSettings = failure.FailureReason.IsFixedInProviderSettings;
|
||||
return new FailureCause(isFixedInSettings ? 0 : 1, failure.FailureReason.Name, isFixedInSettings ? Icons.Material.Filled.Key : Icons.Material.Filled.CloudOff, Color.Error, false, isFixedInSettings, true);
|
||||
return new FailureCause(isFixedInSettings ? 0 : 1, failure.FailureReason.Name, isFixedInSettings ? AppIcons.KEY : AppIcons.PROVIDER_ERROR, Color.Error, false, isFixedInSettings, true);
|
||||
}
|
||||
|
||||
//
|
||||
@@ -335,8 +335,8 @@ public partial class Embeddings : MSGComponentBase
|
||||
|
||||
var showsMessagePerFile = !hasCauseName || failure.ExtractionCode is FileExtractionErrorCode.MEDIA_PROCESSING_FAILED;
|
||||
return failure.IsPermanent
|
||||
? new FailureCause(3, title, Icons.Material.Filled.SkipNext, Color.Default, true, false, showsMessagePerFile)
|
||||
: new FailureCause(2, title, Icons.Material.Filled.ReportProblem, Color.Warning, false, false, !hasCauseName);
|
||||
? new FailureCause(3, title, AppIcons.SKIPPED, Color.Default, true, false, showsMessagePerFile)
|
||||
: new FailureCause(2, title, AppIcons.WARNING, Color.Warning, false, false, !hasCauseName);
|
||||
}
|
||||
|
||||
private static string GetEmbeddingProviderName(IEnumerable<DataSourceEmbeddingFailure> failures) => failures
|
||||
@@ -359,7 +359,7 @@ public partial class Embeddings : MSGComponentBase
|
||||
0,
|
||||
T("Too large"),
|
||||
string.Format(T("These files match the data source patterns, but they are larger than its limit of {0}. You can raise the limit in the expert settings of the data source."), this.GetMaxFileSizeText(status)),
|
||||
Icons.Material.Filled.Straighten,
|
||||
AppIcons.FILE_SIZE,
|
||||
Color.Warning,
|
||||
true,
|
||||
false),
|
||||
@@ -367,7 +367,7 @@ public partial class Embeddings : MSGComponentBase
|
||||
0,
|
||||
T("No transcription provider"),
|
||||
T("These audio or video files match the data source patterns, but no transcription provider is configured that AI Studio may use. Once you choose one in the settings, AI Studio transcribes the files and adds their text to the index."),
|
||||
Icons.Material.Filled.MicOff,
|
||||
AppIcons.MICROPHONE_OFF,
|
||||
Color.Warning,
|
||||
false,
|
||||
true),
|
||||
@@ -375,7 +375,7 @@ public partial class Embeddings : MSGComponentBase
|
||||
0,
|
||||
T("Transcription provider not allowed"),
|
||||
T("These audio or video files match the data source patterns, but your transcription provider does not meet the confidence level this data source requires. Choose another transcription provider, or change the confidence level of the data source."),
|
||||
Icons.Material.Filled.GppBad,
|
||||
AppIcons.SECURITY_BLOCKED,
|
||||
Color.Warning,
|
||||
true,
|
||||
true),
|
||||
@@ -383,7 +383,7 @@ public partial class Embeddings : MSGComponentBase
|
||||
1,
|
||||
FileTypes.IMAGE.FilterName,
|
||||
T("These image files match the data source patterns, but images cannot currently be added to the index."),
|
||||
Icons.Material.Filled.ImageNotSupported,
|
||||
AppIcons.IMAGE_NOT_SUPPORTED,
|
||||
Color.Default,
|
||||
false,
|
||||
false),
|
||||
@@ -463,7 +463,7 @@ public partial class Embeddings : MSGComponentBase
|
||||
catch (Exception e)
|
||||
{
|
||||
this.Logger.LogWarning(e, "Could not show a file of the embedding failure list in the file manager.");
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.Folder, T("Could not open the file location.")));
|
||||
await this.MessageBus.SendError(new(AppIcons.FOLDER_OPEN, T("Could not open the file location.")));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -471,7 +471,7 @@ public partial class Embeddings : MSGComponentBase
|
||||
return;
|
||||
|
||||
var issue = string.IsNullOrWhiteSpace(response.Issue) ? T("Unknown error") : response.Issue;
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.Folder, string.Format(T("Could not open the file location: {0}"), issue)));
|
||||
await this.MessageBus.SendError(new(AppIcons.FOLDER_OPEN, string.Format(T("Could not open the file location: {0}"), issue)));
|
||||
}
|
||||
|
||||
/// <remarks>
|
||||
@@ -555,7 +555,7 @@ public partial class Embeddings : MSGComponentBase
|
||||
return;
|
||||
|
||||
if (!await this.DataSourceEmbeddingService.ApprovePendingMailRemovalAsync(status.DataSourceId, removalCount))
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.PlaylistRemove, T("Your agreement could not be recorded: either the number of mails to remove changed in the meantime, or the index cannot be reached. AI Studio asks you again after the next sync.")));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.REMOVE_FROM_INDEX, T("Your agreement could not be recorded: either the number of mails to remove changed in the meantime, or the index cannot be reached. AI Studio asks you again after the next sync.")));
|
||||
|
||||
this.ReloadStatuses();
|
||||
await this.InvokeAsync(this.StateHasChanged);
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
@if (this.SettingsManager.ConfigurationData.App.ShowIntroduction)
|
||||
{
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.MenuBook" HeaderText="@T("Introduction")" IsExpanded="@this.IsPanelExpanded(PANEL_ID_BUILT_IN_INTRODUCTION)" ExpandedChanged="@(isExpanded => this.SetPanelExpanded(PANEL_ID_BUILT_IN_INTRODUCTION, isExpanded))">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.INTRODUCTION" HeaderText="@T("Introduction")" IsExpanded="@this.IsPanelExpanded(PANEL_ID_BUILT_IN_INTRODUCTION)" ExpandedChanged="@(isExpanded => this.SetPanelExpanded(PANEL_ID_BUILT_IN_INTRODUCTION, isExpanded))">
|
||||
<MudText Typo="Typo.h5" Class="mb-3">
|
||||
@T("Welcome to MindWork AI Studio!")
|
||||
</MudText>
|
||||
@@ -29,7 +29,7 @@
|
||||
<MudText Typo="Typo.body1" Class="mb-3">
|
||||
@T("Here's what makes MindWork AI Studio stand out:")
|
||||
</MudText>
|
||||
<MudTextList Icon="@Icons.Material.Filled.CheckCircle" Clickable="@true" Items="@this.itemsAdvantages" Class="mb-3"/>
|
||||
<MudTextList Icon="@AppIcons.CHECKLIST_ITEM" Clickable="@true" Items="@this.itemsAdvantages" Class="mb-3"/>
|
||||
<MudText Typo="Typo.body1" Class="mb-3">
|
||||
@T("We hope you enjoy using MindWork AI Studio to bring your AI projects to life!")
|
||||
</MudText>
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
@foreach (var introduction in this.introductions)
|
||||
{
|
||||
<ExpansionPanel @key="@introduction.Id" HeaderIcon="@Icons.Material.Filled.Info" HeaderText="@introduction.Title" IsExpanded="@this.IsPanelExpanded(IntroductionPanelId(introduction))" ExpandedChanged="@(isExpanded => this.SetPanelExpanded(IntroductionPanelId(introduction), isExpanded))">
|
||||
<ExpansionPanel @key="@introduction.Id" HeaderIcon="@AppIcons.INFO" HeaderText="@introduction.Title" IsExpanded="@this.IsPanelExpanded(IntroductionPanelId(introduction))" ExpandedChanged="@(isExpanded => this.SetPanelExpanded(IntroductionPanelId(introduction), isExpanded))">
|
||||
<MudText Typo="Typo.body2" Class="mb-3">
|
||||
@T("Version"): @introduction.VersionText
|
||||
</MudText>
|
||||
@@ -48,21 +48,21 @@
|
||||
|
||||
@if (this.SettingsManager.ConfigurationData.App.ShowLastChangelog)
|
||||
{
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.EventNote" HeaderText="@T("Last Changelog")" IsExpanded="@this.IsPanelExpanded(PANEL_ID_LAST_CHANGELOG)" ExpandedChanged="@(isExpanded => this.SetPanelExpanded(PANEL_ID_LAST_CHANGELOG, isExpanded))">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.CHANGELOG" HeaderText="@T("Last Changelog")" IsExpanded="@this.IsPanelExpanded(PANEL_ID_LAST_CHANGELOG)" ExpandedChanged="@(isExpanded => this.SetPanelExpanded(PANEL_ID_LAST_CHANGELOG, isExpanded))">
|
||||
<MudMarkdown Value="@this.LastChangeContent" Props="Markdown.DefaultConfig" MarkdownPipeline="Markdown.SAFE_MARKDOWN_PIPELINE"/>
|
||||
</ExpansionPanel>
|
||||
}
|
||||
|
||||
@if (this.SettingsManager.ConfigurationData.App.ShowVision)
|
||||
{
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Lightbulb" HeaderText="@T("Vision")" IsExpanded="@this.IsPanelExpanded(PANEL_ID_VISION)" ExpandedChanged="@(isExpanded => this.SetPanelExpanded(PANEL_ID_VISION, isExpanded))">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.IDEA" HeaderText="@T("Vision")" IsExpanded="@this.IsPanelExpanded(PANEL_ID_VISION)" ExpandedChanged="@(isExpanded => this.SetPanelExpanded(PANEL_ID_VISION, isExpanded))">
|
||||
<Vision/>
|
||||
</ExpansionPanel>
|
||||
}
|
||||
|
||||
@if (this.SettingsManager.ConfigurationData.App.ShowQuickStartGuide)
|
||||
{
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.RocketLaunch" HeaderText="@T("Quick Start Guide")" IsExpanded="@this.IsPanelExpanded(PANEL_ID_QUICK_START_GUIDE)" ExpandedChanged="@(isExpanded => this.SetPanelExpanded(PANEL_ID_QUICK_START_GUIDE, isExpanded))">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.QUICK_START" HeaderText="@T("Quick Start Guide")" IsExpanded="@this.IsPanelExpanded(PANEL_ID_QUICK_START_GUIDE)" ExpandedChanged="@(isExpanded => this.SetPanelExpanded(PANEL_ID_QUICK_START_GUIDE, isExpanded))">
|
||||
<MudMarkdown Props="Markdown.DefaultConfig" Value="@QUICK_START_GUIDE" MarkdownPipeline="Markdown.SAFE_MARKDOWN_PIPELINE"/>
|
||||
</ExpansionPanel>
|
||||
}
|
||||
|
||||
@@ -10,16 +10,16 @@
|
||||
|
||||
<InnerScrolling>
|
||||
<MudExpansionPanels Class="mb-3" MultiExpansion="@false">
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Layers" HeaderText="@T("Versions")" IsExpanded="@true">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.VERSIONS" HeaderText="@T("Versions")" IsExpanded="@true">
|
||||
<MudText>
|
||||
@T("The following list shows the versions of the MindWork AI Studio, the used compilers, build time, etc.:")
|
||||
</MudText>
|
||||
<MudList T="string" Class="mb-3">
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Chat" Text="@VersionApp"/>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Timer" Text="@this.BuildTime"/>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Build" Text="@this.VersionDotnetSdk"/>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Memory" Text="@this.VersionDotnetRuntime"/>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Build" Text="@this.VersionRust"/>
|
||||
<MudListItem T="string" Icon="@AppIcons.APP" Text="@VersionApp"/>
|
||||
<MudListItem T="string" Icon="@AppIcons.TIME" Text="@this.BuildTime"/>
|
||||
<MudListItem T="string" Icon="@AppIcons.BUILD_TOOLCHAIN" Text="@this.VersionDotnetSdk"/>
|
||||
<MudListItem T="string" Icon="@AppIcons.RUNTIME" Text="@this.VersionDotnetRuntime"/>
|
||||
<MudListItem T="string" Icon="@AppIcons.BUILD_TOOLCHAIN" Text="@this.VersionRust"/>
|
||||
@foreach (var database in this.databaseSections)
|
||||
{
|
||||
<MudListItem T="string" Icon="@database.Icon">
|
||||
@@ -34,7 +34,7 @@
|
||||
}
|
||||
</MudText>
|
||||
</MudCollapse>
|
||||
<MudButton StartIcon="@(database.ShowDetails ? Icons.Material.Filled.ExpandLess : Icons.Material.Filled.ExpandMore)"
|
||||
<MudButton StartIcon="@(database.ShowDetails ? AppIcons.EXPAND_LESS : AppIcons.EXPAND_MORE)"
|
||||
Size="Size.Small"
|
||||
Variant="Variant.Text"
|
||||
OnClick="@(() => this.ToggleDatabaseDetails(database))">
|
||||
@@ -42,13 +42,13 @@
|
||||
</MudButton>
|
||||
</MudListItem>
|
||||
}
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.DocumentScanner" Text="@this.VersionPdfium"/>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Article" Text="@this.versionPandoc"/>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Widgets" Text="@MudBlazorVersion"/>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Memory" Text="@TauriVersion"/>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Translate" Text="@this.OSLanguage"/>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.AccountCircle" Text="@this.OSUserName"/>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Folder">
|
||||
<MudListItem T="string" Icon="@AppIcons.PDF_READER" Text="@this.VersionPdfium"/>
|
||||
<MudListItem T="string" Icon="@AppIcons.PANDOC" Text="@this.versionPandoc"/>
|
||||
<MudListItem T="string" Icon="@AppIcons.UI_FRAMEWORK" Text="@MudBlazorVersion"/>
|
||||
<MudListItem T="string" Icon="@AppIcons.RUNTIME" Text="@TauriVersion"/>
|
||||
<MudListItem T="string" Icon="@AppIcons.LANGUAGE" Text="@this.OSLanguage"/>
|
||||
<MudListItem T="string" Icon="@AppIcons.USER" Text="@this.OSUserName"/>
|
||||
<MudListItem T="string" Icon="@AppIcons.FOLDER">
|
||||
<div style="display: flex; align-items: center; gap: 8px;">
|
||||
<MudText Typo="Typo.body1">
|
||||
@this.WorkingDirectory
|
||||
@@ -56,7 +56,7 @@
|
||||
<MudCopyClipboardButton TooltipMessage="@(T("Copies the working directory to the clipboard"))" StringContent="@this.RuntimeInfo.WorkingDirectory"/>
|
||||
</div>
|
||||
</MudListItem>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Filled.InsertDriveFile">
|
||||
<MudListItem T="string" Icon="@AppIcons.FILE">
|
||||
<div style="display: flex; align-items: center; gap: 8px;">
|
||||
<MudText Typo="Typo.body1">
|
||||
@this.ExecutablePath
|
||||
@@ -66,10 +66,10 @@
|
||||
</MudListItem>
|
||||
@if (OperatingSystem.IsLinux())
|
||||
{
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Storage" Text="@this.LinuxPackageType"/>
|
||||
<MudListItem T="string" Icon="@AppIcons.LINUX_PACKAGE" Text="@this.LinuxPackageType"/>
|
||||
}
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.InstallDesktop" Text="@this.InstallationKind"/>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Business">
|
||||
<MudListItem T="string" Icon="@AppIcons.INSTALLATION" Text="@this.InstallationKind"/>
|
||||
<MudListItem T="string" Icon="@AppIcons.ORGANIZATION">
|
||||
@switch (HasAnyActiveEnvironment)
|
||||
{
|
||||
case false when this.configPlugins.Count == 0:
|
||||
@@ -85,10 +85,10 @@
|
||||
<MudCollapse Expanded="@this.showEnterpriseConfigDetails">
|
||||
@foreach (var plug in this.configPlugins)
|
||||
{
|
||||
<ConfigPluginInfoCard HeaderIcon="@Icons.Material.Filled.Extension"
|
||||
<ConfigPluginInfoCard HeaderIcon="@AppIcons.PLUGIN"
|
||||
HeaderText="@plug.Name"
|
||||
Items="@([
|
||||
new ConfigInfoRowItem(Icons.Material.Filled.ArrowRightAlt,
|
||||
new ConfigInfoRowItem(AppIcons.INFO_ROW,
|
||||
$"{T("Configuration plugin ID:")} {plug.Id}",
|
||||
plug.Id.ToString(),
|
||||
T("Copies the configuration plugin ID to the clipboard"))
|
||||
@@ -108,7 +108,7 @@
|
||||
<MudCollapse Expanded="@this.showEnterpriseConfigDetails">
|
||||
@foreach (var env in this.enterpriseEnvironments.Where(e => e.IsActive))
|
||||
{
|
||||
<ConfigPluginInfoCard HeaderIcon="@Icons.Material.Filled.HourglassBottom"
|
||||
<ConfigPluginInfoCard HeaderIcon="@AppIcons.PENDING"
|
||||
HeaderText="@T("Waiting for the configuration plugin...")"
|
||||
Items="@this.BuildEnterpriseConfigurationItems(env)"/>
|
||||
}
|
||||
@@ -138,13 +138,13 @@
|
||||
var matchingPlugin = this.FindManagedConfigurationPlugin(env.ConfigurationId);
|
||||
if (matchingPlugin is null)
|
||||
{
|
||||
<ConfigPluginInfoCard HeaderIcon="@Icons.Material.Filled.HourglassBottom"
|
||||
<ConfigPluginInfoCard HeaderIcon="@AppIcons.PENDING"
|
||||
HeaderText="@T("Waiting for the configuration plugin...")"
|
||||
Items="@this.BuildEnterpriseConfigurationItems(env)"/>
|
||||
continue;
|
||||
}
|
||||
|
||||
<ConfigPluginInfoCard HeaderIcon="@Icons.Material.Filled.Extension"
|
||||
<ConfigPluginInfoCard HeaderIcon="@AppIcons.PLUGIN"
|
||||
HeaderText="@matchingPlugin.Name"
|
||||
Items="@this.BuildEnterpriseConfigurationItems(env, matchingPlugin)"
|
||||
ShowWarning="@this.IsManagedConfigurationIdMismatch(matchingPlugin, env.ConfigurationId)"
|
||||
@@ -169,7 +169,7 @@
|
||||
</MudText>
|
||||
@foreach (var testConfigPlugin in this.testConfigPlugins)
|
||||
{
|
||||
<ConfigPluginInfoCard HeaderIcon="@Icons.Material.Filled.Science"
|
||||
<ConfigPluginInfoCard HeaderIcon="@AppIcons.TEST_CONFIGURATION"
|
||||
HeaderText="@testConfigPlugin.Name"
|
||||
Items="@this.BuildTestConfigurationItems(testConfigPlugin)"
|
||||
ShowWarning="@true"
|
||||
@@ -185,7 +185,7 @@
|
||||
|
||||
@if (this.HasEnterpriseConfigurationDetails)
|
||||
{
|
||||
<MudButton StartIcon="@(this.showEnterpriseConfigDetails ? Icons.Material.Filled.ExpandLess : Icons.Material.Filled.ExpandMore)"
|
||||
<MudButton StartIcon="@(this.showEnterpriseConfigDetails ? AppIcons.EXPAND_LESS : AppIcons.EXPAND_MORE)"
|
||||
Size="Size.Small"
|
||||
Variant="Variant.Text"
|
||||
OnClick="@this.ToggleEnterpriseConfigDetails">
|
||||
@@ -195,20 +195,20 @@
|
||||
</MudListItem>
|
||||
@if (ExternalHttpClientTimeout.CustomRootCertificateState.IsEnabled)
|
||||
{
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Security">
|
||||
<MudListItem T="string" Icon="@AppIcons.CERTIFICATE">
|
||||
<MudText Typo="Typo.body1">
|
||||
@(ExternalHttpClientTimeout.CustomRootCertificateState.IsUsable
|
||||
? T("External HTTPS custom root certificates are active.")
|
||||
: T("External HTTPS custom root certificates are configured but not active."))
|
||||
</MudText>
|
||||
<MudCollapse Expanded="@this.showExternalHttpCustomRootCertificateDetails">
|
||||
<ConfigPluginInfoCard HeaderIcon="@Icons.Material.Filled.Security"
|
||||
<ConfigPluginInfoCard HeaderIcon="@AppIcons.CERTIFICATE"
|
||||
HeaderText="@T("External HTTPS custom root certificates")"
|
||||
Items="@this.BuildExternalHttpCustomRootCertificateItems()"
|
||||
ShowWarning="@(!ExternalHttpClientTimeout.CustomRootCertificateState.IsUsable)"
|
||||
WarningText="@this.ExternalHttpCustomRootCertificateWarningText"/>
|
||||
</MudCollapse>
|
||||
<MudButton StartIcon="@(this.showExternalHttpCustomRootCertificateDetails ? Icons.Material.Filled.ExpandLess : Icons.Material.Filled.ExpandMore)"
|
||||
<MudButton StartIcon="@(this.showExternalHttpCustomRootCertificateDetails ? AppIcons.EXPAND_LESS : AppIcons.EXPAND_MORE)"
|
||||
Size="Size.Small"
|
||||
Variant="Variant.Text"
|
||||
OnClick="@this.ToggleExternalHttpCustomRootCertificateDetails">
|
||||
@@ -218,45 +218,45 @@
|
||||
}
|
||||
</MudList>
|
||||
<MudStack Row="true">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Update" OnClick="@this.CheckForUpdate">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@AppIcons.APP_UPDATE" OnClick="@this.CheckForUpdate">
|
||||
@(this.updatePolicyMode is UpdatePolicyMode.SELF_UPDATE ? T("Check for updates") : T("How to update"))
|
||||
</MudButton>
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Default" StartIcon="@Icons.Material.Filled.Download" OnClick="@(async () => await this.ShowPandocDialog())">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Default" StartIcon="@AppIcons.DOWNLOAD" OnClick="@(async () => await this.ShowPandocDialog())">
|
||||
@this.PandocButtonText
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
</ExpansionPanel>
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Custom.Brands.GitHub" HeaderText="@T("Community & Code")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.GITHUB" HeaderText="@T("Community & Code")">
|
||||
<MudList T="string" Class="mb-1">
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Home" Target="_blank" Href="https://mindworkai.org/">
|
||||
<MudListItem T="string" Icon="@AppIcons.WEBSITE" Target="_blank" Href="https://mindworkai.org/">
|
||||
@T("Discover MindWork AI's mission and vision on our official homepage.")
|
||||
</MudListItem>
|
||||
<MudListItem T="string" Icon="@Icons.Custom.Brands.GitHub" Target="_blank" Href="https://github.com/MindWorkAI/AI-Studio">
|
||||
<MudListItem T="string" Icon="@AppIcons.GITHUB" Target="_blank" Href="https://github.com/MindWorkAI/AI-Studio">
|
||||
@T("Browse AI Studio's source code on GitHub — we welcome your contributions.")
|
||||
</MudListItem>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.PrivateConnectivity" Target="_blank" Href="https://github.com/MindWorkAI/ERI">
|
||||
<MudListItem T="string" Icon="@AppIcons.ERI" Target="_blank" Href="https://github.com/MindWorkAI/ERI">
|
||||
@T("Connect AI Studio to your organization's data with our External Retrieval Interface (ERI).")
|
||||
</MudListItem>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Timeline" Target="_blank" Href="https://github.com/orgs/MindWorkAI/projects/2/views/3">
|
||||
<MudListItem T="string" Icon="@AppIcons.ROADMAP" Target="_blank" Href="https://github.com/orgs/MindWorkAI/projects/2/views/3">
|
||||
@T("View our project roadmap and help shape AI Studio's future development.")
|
||||
</MudListItem>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.BugReport" Target="_blank" Href="https://github.com/MindWorkAI/AI-Studio/issues">
|
||||
<MudListItem T="string" Icon="@AppIcons.BUG" Target="_blank" Href="https://github.com/MindWorkAI/AI-Studio/issues">
|
||||
@T("Did you find a bug or are you experiencing issues? Report your concern here.")
|
||||
</MudListItem>
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Lightbulb" Target="_blank" Href="https://github.com/MindWorkAI/Planning/issues">
|
||||
<MudListItem T="string" Icon="@AppIcons.IDEA" Target="_blank" Href="https://github.com/MindWorkAI/Planning/issues">
|
||||
@T("Have feature ideas? Submit suggestions for future AI Studio enhancements.")
|
||||
</MudListItem>
|
||||
</MudList>
|
||||
</ExpansionPanel>
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.EventNote" HeaderText="@T("Changelog")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.CHANGELOG" HeaderText="@T("Changelog")">
|
||||
<Changelog/>
|
||||
</ExpansionPanel>
|
||||
|
||||
@foreach (var mandatoryInfoPanel in this.mandatoryInfoPanels)
|
||||
{
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Gavel" HeaderText="@mandatoryInfoPanel.HeaderText">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.LEGAL" HeaderText="@mandatoryInfoPanel.HeaderText">
|
||||
<MudText Typo="Typo.body2" Class="mb-3">
|
||||
@string.Format(T("Provided by configuration plugin: {0}"), mandatoryInfoPanel.PluginName)
|
||||
</MudText>
|
||||
@@ -266,7 +266,7 @@
|
||||
</ExpansionPanel>
|
||||
}
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Book" HeaderText="@T("Logbook")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.LOG_FILES" HeaderText="@T("Logbook")">
|
||||
<MudText Typo="Typo.h4">
|
||||
@T("Explanation")
|
||||
</MudText>
|
||||
@@ -279,7 +279,7 @@
|
||||
</MudJustifiedText>
|
||||
|
||||
<MudButton Variant="Variant.Filled"
|
||||
StartIcon="@Icons.Material.Filled.Article"
|
||||
StartIcon="@AppIcons.ASSISTANT_LOG_VIEWER"
|
||||
Href="@Routes.ASSISTANT_LOG_VIEWER"
|
||||
Class="mb-3">
|
||||
@T("Open Log Viewer")
|
||||
@@ -289,13 +289,13 @@
|
||||
@T("Startup log file")
|
||||
</MudText>
|
||||
<MudList T="string" Class="mb-3">
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Folder">
|
||||
<MudListItem T="string" Icon="@AppIcons.FOLDER">
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween" Spacing="1" Style="width: 100%; min-width: 0;">
|
||||
<MudLink OnClick="@this.CopyStartupLogPath" Style="min-width: 0; overflow-wrap: anywhere;">
|
||||
@this.logPaths.LogStartupPath
|
||||
</MudLink>
|
||||
<MudTooltip Text="@T("Open in folder")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.FolderOpen"
|
||||
<MudIconButton Icon="@AppIcons.FOLDER_OPEN"
|
||||
Size="Size.Medium"
|
||||
Disabled="@string.IsNullOrWhiteSpace(this.logPaths.LogStartupPath)"
|
||||
OnClick="@(() => this.OpenLogInFileManager(this.logPaths.LogStartupPath))"/>
|
||||
@@ -308,13 +308,13 @@
|
||||
@T("Usage log file")
|
||||
</MudText>
|
||||
<MudList T="string" Class="mb-3">
|
||||
<MudListItem T="string" Icon="@Icons.Material.Outlined.Folder">
|
||||
<MudListItem T="string" Icon="@AppIcons.FOLDER">
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween" Spacing="1" Style="width: 100%; min-width: 0;">
|
||||
<MudLink OnClick="@this.CopyAppLogPath" Style="min-width: 0; overflow-wrap: anywhere;">
|
||||
@this.logPaths.LogAppPath
|
||||
</MudLink>
|
||||
<MudTooltip Text="@T("Open in folder")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.FolderOpen"
|
||||
<MudIconButton Icon="@AppIcons.FOLDER_OPEN"
|
||||
Size="Size.Medium"
|
||||
Disabled="@string.IsNullOrWhiteSpace(this.logPaths.LogAppPath)"
|
||||
OnClick="@(() => this.OpenLogInFileManager(this.logPaths.LogAppPath))"/>
|
||||
@@ -324,23 +324,23 @@
|
||||
</MudList>
|
||||
</ExpansionPanel>
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.SettingsBackupRestore" HeaderText="@T("Data Backup & Restore")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.DATA_BACKUP" HeaderText="@T("Data Backup & Restore")">
|
||||
<DataBackupPanel/>
|
||||
</ExpansionPanel>
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.FolderCopy" HeaderText="@T("Your Data Folders")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.FOLDERS" HeaderText="@T("Your Data Folders")">
|
||||
<DataFolders/>
|
||||
</ExpansionPanel>
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Engineering" HeaderText="@T("Motivation")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.MOTIVATION" HeaderText="@T("Motivation")">
|
||||
<Motivation/>
|
||||
</ExpansionPanel>
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Lightbulb" HeaderText="@T("Vision")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.IDEA" HeaderText="@T("Vision")">
|
||||
<Vision/>
|
||||
</ExpansionPanel>
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.AutoAwesomeMotion" HeaderText="@T("Used Open Source Projects")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.OPEN_SOURCE_PROJECTS" HeaderText="@T("Used Open Source Projects")">
|
||||
<MudGrid Spacing="1">
|
||||
<ThirdPartyComponent Name=".NET" Developer="Microsoft & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/dotnet/runtime/blob/main/LICENSE.TXT" RepositoryUrl="https://github.com/dotnet" UseCase="@T("The C# language is used for the implementation of the user interface and the backend. To implement the user interface with C#, the Blazor technology from ASP.NET Core is used. All these technologies are integrated into the .NET SDK.")"/>
|
||||
<ThirdPartyComponent Name="MudBlazor" Developer="Jonny Larsson, Meinrad Recheis & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/MudBlazor/MudBlazor/blob/dev/LICENSE" RepositoryUrl="https://github.com/MudBlazor/MudBlazor/" UseCase="@T("Building on .NET, ASP.NET Core, and Blazor, MudBlazor is used as a library for designing and developing the user interface. It is a great project that significantly accelerates the development of advanced user interfaces with Blazor.")"/>
|
||||
@@ -410,10 +410,11 @@
|
||||
<ThirdPartyComponent Name="Open XML SDK" Developer="Microsoft, Taylor Southwick, Tom Jebo, Michael Bowen, Eric White, Thomas Barnekow, Alfred Hellstern, lindexi, Simon Cropp & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/dotnet/Open-XML-SDK/blob/main/LICENSE" RepositoryUrl="https://github.com/dotnet/Open-XML-SDK" UseCase="@T("The Slide Assistant uses the Open XML SDK to read your PowerPoint templates and to write the presentations it plans with you as PowerPoint files.")"/>
|
||||
<ThirdPartyComponent Name="wikEd diff" Developer="Cacycle & Open Source Community" LicenseName="None (public domain)" LicenseUrl="https://en.wikipedia.org/wiki/User:Cacycle/diff#License" RepositoryUrl="https://en.wikipedia.org/wiki/User:Cacycle/diff" UseCase="@T("This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant.")"/>
|
||||
<ThirdPartyComponent Name="CodeJar" Developer="Anton Medvedev" LicenseName="MIT" LicenseUrl="https://github.com/antonmedv/codejar/blob/master/LICENSE" RepositoryUrl="https://github.com/antonmedv/codejar/" UseCase="@T("CodeJar is a lightweight embeddable code editor for the browser.")"/>
|
||||
<ThirdPartyComponent Name="Simple Icons" Developer="Simple Icons Contributors & Open Source Community" LicenseName="CC0-1.0" LicenseUrl="https://github.com/simple-icons/simple-icons/blob/16.21.0/LICENSE.md" RepositoryUrl="https://github.com/simple-icons/simple-icons" UseCase="@T("Several of the provider logos in AI Studio use the icon paths and brand colors published by the Simple Icons project, which releases them into the public domain under CC0. The trademarks themselves are not part of that release and remain the property of their respective owners.")"/>
|
||||
<ThirdPartyComponent Name="Simple Icons" Developer="Peter Noble, Álvaro Mondéjar Rubio, LitoMore, Eric Cornelissen, Florian Bernhart, Alexandre Paradis, Dan Leech & Open Source Community" LicenseName="CC0-1.0" LicenseUrl="https://github.com/simple-icons/simple-icons/blob/16.21.0/LICENSE.md" RepositoryUrl="https://github.com/simple-icons/simple-icons" UseCase="@T("Several of the provider logos in AI Studio use the icon paths and brand colors published by the Simple Icons project, which releases them into the public domain under CC0. The trademarks themselves are not part of that release and remain the property of their respective owners.")"/>
|
||||
<ThirdPartyComponent Name="Lucide" Developer="Eric Fennis, Karsa, Jakob Guddas, Daniel Bayley, Yashu Mittal, Jamie Law, SMAH1, Wojciech Maj & Open Source Community" LicenseName="ISC & MIT" LicenseUrl="https://github.com/lucide-icons/lucide/blob/1.71.0/LICENSE" RepositoryUrl="https://github.com/lucide-icons/lucide" UseCase="@T("The icons of AI Studio come from Lucide, an open-source icon set. AI Studio ships them as a font, so showing them never sends a request to the internet. Lucide is licensed under ISC; the icons it took over from Feather remain under MIT.")"/>
|
||||
</MudGrid>
|
||||
</ExpansionPanel>
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Copyright" HeaderText="@T("Trademarks & Brand Assets")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.TRADEMARKS" HeaderText="@T("Trademarks & Brand Assets")">
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1" Class="mb-3">
|
||||
<img src="images/tool-icons/confluence.svg" alt="Confluence" width="24" height="24" />
|
||||
<MudLink Href="https://www.atlassian.com/legal/trademark" Target="_blank">@T("The Confluence logo by Atlassian identifies the Search Confluence tool.")</MudLink>
|
||||
@@ -428,7 +429,7 @@
|
||||
@T("Organizations can replace these logos with their own icons through a configuration plugin. When your organization does so, it is responsible for holding the rights to the icons it provides.")
|
||||
</MudJustifiedText>
|
||||
</ExpansionPanel>
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Verified" HeaderText="License: FSL-1.1-MIT">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.LICENSE" HeaderText="License: FSL-1.1-MIT">
|
||||
<MudMarkdown Value="@LICENSE" Props="Markdown.DefaultConfig" MarkdownPipeline="Markdown.SAFE_MARKDOWN_PIPELINE"/>
|
||||
</ExpansionPanel>
|
||||
</MudExpansionPanels>
|
||||
|
||||
@@ -190,9 +190,9 @@ public partial class Information : MSGComponentBase
|
||||
/// </summary>
|
||||
private readonly IReadOnlyList<DatabaseSection> databaseSections =
|
||||
[
|
||||
new(DatabaseRole.VECTOR_STORE, Icons.Material.Outlined.Storage),
|
||||
new(DatabaseRole.INDEX_STORE, Icons.Material.Outlined.ManageSearch),
|
||||
new(DatabaseRole.PROVENANCE_STORE, Icons.Material.Outlined.Source),
|
||||
new(DatabaseRole.VECTOR_STORE, AppIcons.VECTOR_STORE),
|
||||
new(DatabaseRole.INDEX_STORE, AppIcons.SEARCH_INDEX),
|
||||
new(DatabaseRole.PROVENANCE_STORE, AppIcons.PROVENANCE_STORE),
|
||||
];
|
||||
|
||||
private bool HasAnyActiveEnvironment => this.enterpriseEnvironments.Any(e => e.IsActive);
|
||||
@@ -349,7 +349,7 @@ public partial class Information : MSGComponentBase
|
||||
|
||||
private IReadOnlyList<ConfigInfoRowItem> BuildDatabaseInfoItems(DatabaseSection section) => section.DisplayInfo
|
||||
.Select((item, index) => new ConfigInfoRowItem(
|
||||
Icons.Material.Filled.ArrowRightAlt,
|
||||
AppIcons.INFO_ROW,
|
||||
$"{item.Label}: {item.Value}",
|
||||
item.Value,
|
||||
$"{T("Copies the following to the clipboard")}: {item.Value}",
|
||||
@@ -441,18 +441,18 @@ public partial class Information : MSGComponentBase
|
||||
{
|
||||
var items = new List<ConfigInfoRowItem>
|
||||
{
|
||||
new(Icons.Material.Filled.ArrowRightAlt,
|
||||
new(AppIcons.INFO_ROW,
|
||||
$"{T("Enterprise configuration ID:")} {environment.ConfigurationId}",
|
||||
environment.ConfigurationId.ToString(),
|
||||
T("Copies the config ID to the clipboard")),
|
||||
|
||||
new(Icons.Material.Filled.ArrowRightAlt,
|
||||
new(AppIcons.INFO_ROW,
|
||||
$"{T("Configuration server:")} {environment.ConfigurationServerUrl}",
|
||||
environment.ConfigurationServerUrl,
|
||||
T("Copies the server URL to the clipboard"),
|
||||
"margin-top: 4px;"),
|
||||
|
||||
new(Icons.Material.Filled.ArrowRightAlt,
|
||||
new(AppIcons.INFO_ROW,
|
||||
$"{T("Configuration source:")} {environment.Source}",
|
||||
environment.Source,
|
||||
T("Copies the configuration source to the clipboard"),
|
||||
@@ -461,14 +461,14 @@ public partial class Information : MSGComponentBase
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(environment.SourceDetail))
|
||||
{
|
||||
items.Add(new ConfigInfoRowItem(Icons.Material.Filled.ArrowRightAlt,
|
||||
items.Add(new ConfigInfoRowItem(AppIcons.INFO_ROW,
|
||||
$"{T("Configuration origin:")} {environment.SourceDetail}",
|
||||
environment.SourceDetail,
|
||||
T("Copies the configuration origin to the clipboard"),
|
||||
"margin-top: 4px;"));
|
||||
}
|
||||
|
||||
items.Add(new ConfigInfoRowItem(Icons.Material.Filled.ArrowRightAlt,
|
||||
items.Add(new ConfigInfoRowItem(AppIcons.INFO_ROW,
|
||||
$"{T("Configuration slot:")} {environment.Slot}",
|
||||
environment.Slot,
|
||||
T("Copies the configuration slot to the clipboard"),
|
||||
@@ -476,7 +476,7 @@ public partial class Information : MSGComponentBase
|
||||
|
||||
if (plugin is not null)
|
||||
{
|
||||
items.Add(new ConfigInfoRowItem(Icons.Material.Filled.ArrowRightAlt,
|
||||
items.Add(new ConfigInfoRowItem(AppIcons.INFO_ROW,
|
||||
$"{T("Configuration plugin ID:")} {plugin.Id}",
|
||||
plugin.Id.ToString(),
|
||||
T("Copies the configuration plugin ID to the clipboard"),
|
||||
@@ -500,12 +500,12 @@ public partial class Information : MSGComponentBase
|
||||
/// </remarks>
|
||||
private IReadOnlyList<ConfigInfoRowItem> BuildTestConfigurationItems(IAvailablePlugin plugin) =>
|
||||
[
|
||||
new(Icons.Material.Filled.ArrowRightAlt,
|
||||
new(AppIcons.INFO_ROW,
|
||||
$"{T("Configuration plugin ID:")} {plugin.Id}",
|
||||
plugin.Id.ToString(),
|
||||
T("Copies the configuration plugin ID to the clipboard")),
|
||||
|
||||
new(Icons.Material.Filled.ArrowRightAlt,
|
||||
new(AppIcons.INFO_ROW,
|
||||
$"{T("Plugin directory:")} {plugin.LocalPath}",
|
||||
plugin.LocalPath,
|
||||
T("Copies the plugin directory to the clipboard"),
|
||||
@@ -528,24 +528,24 @@ public partial class Information : MSGComponentBase
|
||||
var state = ExternalHttpClientTimeout.CustomRootCertificateState;
|
||||
var items = new List<ConfigInfoRowItem>
|
||||
{
|
||||
new(Icons.Material.Filled.ArrowRightAlt,
|
||||
new(AppIcons.INFO_ROW,
|
||||
$"{T("Status:")} {(state.IsUsable ? T("active") : T("not active"))}",
|
||||
state.IsUsable ? T("active") : T("not active"),
|
||||
T("Copies the status to the clipboard")),
|
||||
|
||||
new(Icons.Material.Filled.ArrowRightAlt,
|
||||
new(AppIcons.INFO_ROW,
|
||||
$"{T("Configuration source:")} {state.Source}",
|
||||
state.Source,
|
||||
T("Copies the configuration source to the clipboard"),
|
||||
"margin-top: 4px;"),
|
||||
|
||||
new(Icons.Material.Filled.ArrowRightAlt,
|
||||
new(AppIcons.INFO_ROW,
|
||||
$"{T("Certificate bundle:")} {state.BundlePath}",
|
||||
state.BundlePath,
|
||||
T("Copies the certificate bundle path to the clipboard"),
|
||||
"margin-top: 4px;"),
|
||||
|
||||
new(Icons.Material.Filled.ArrowRightAlt,
|
||||
new(AppIcons.INFO_ROW,
|
||||
$"{T("Loaded root certificates:")} {state.CertificateCount}",
|
||||
state.CertificateCount.ToString(),
|
||||
T("Copies the number of loaded root certificates to the clipboard"),
|
||||
@@ -554,7 +554,7 @@ public partial class Information : MSGComponentBase
|
||||
|
||||
if (state.AllowedHostPatterns.Count == 0)
|
||||
{
|
||||
items.Add(new ConfigInfoRowItem(Icons.Material.Filled.ArrowRightAlt,
|
||||
items.Add(new ConfigInfoRowItem(AppIcons.INFO_ROW,
|
||||
T("Allowed hosts: none configured"),
|
||||
string.Empty,
|
||||
T("Copies the allowed host configuration to the clipboard"),
|
||||
@@ -564,7 +564,7 @@ public partial class Information : MSGComponentBase
|
||||
{
|
||||
foreach (var allowedHostPattern in state.AllowedHostPatterns)
|
||||
{
|
||||
items.Add(new ConfigInfoRowItem(Icons.Material.Filled.Dns,
|
||||
items.Add(new ConfigInfoRowItem(AppIcons.SERVER,
|
||||
$"{T("Allowed host:")} {allowedHostPattern}",
|
||||
allowedHostPattern,
|
||||
T("Copies the allowed host pattern to the clipboard"),
|
||||
@@ -574,7 +574,7 @@ public partial class Information : MSGComponentBase
|
||||
|
||||
foreach (var fingerprint in state.CertificateFingerprints)
|
||||
{
|
||||
items.Add(new ConfigInfoRowItem(Icons.Material.Filled.Fingerprint,
|
||||
items.Add(new ConfigInfoRowItem(AppIcons.IDENTIFIER,
|
||||
$"{T("Root certificate fingerprint:")} {fingerprint}",
|
||||
fingerprint,
|
||||
T("Copies the root certificate fingerprint to the clipboard"),
|
||||
@@ -605,7 +605,7 @@ public partial class Information : MSGComponentBase
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(path))
|
||||
{
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.Folder, T("The log file path is not available yet.")));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.FOLDER_OPEN, T("The log file path is not available yet.")));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -617,18 +617,18 @@ public partial class Information : MSGComponentBase
|
||||
catch (Exception e)
|
||||
{
|
||||
this.Logger.LogWarning(e, "Could not open the log file location in the file manager.");
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.Folder, T("Could not open the log file location.")));
|
||||
await this.MessageBus.SendError(new(AppIcons.FOLDER_OPEN, T("Could not open the log file location.")));
|
||||
return;
|
||||
}
|
||||
|
||||
if (response.Success)
|
||||
{
|
||||
await this.MessageBus.SendSuccess(new(Icons.Material.Filled.FolderOpen, T("Opened the log file location.")));
|
||||
await this.MessageBus.SendSuccess(new(AppIcons.FOLDER_OPEN, T("Opened the log file location.")));
|
||||
return;
|
||||
}
|
||||
|
||||
var issue = string.IsNullOrWhiteSpace(response.Issue) ? T("Unknown error") : response.Issue;
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.Folder, string.Format(T("Could not open the log file location: {0}"), issue)));
|
||||
await this.MessageBus.SendError(new(AppIcons.FOLDER_OPEN, string.Format(T("Could not open the log file location: {0}"), issue)));
|
||||
}
|
||||
|
||||
private const string LICENSE = """
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<MudSpacer />
|
||||
<LockableButton Text="@T("Import")"
|
||||
Tooltip="@T("Import plugin from a file")"
|
||||
Icon="@IMPORT_ICON"
|
||||
Icon="@AppIcons.IMPORT"
|
||||
ButtonVariant="Variant.Outlined"
|
||||
ButtonColor="Color.Default"
|
||||
NoMargin="@true"
|
||||
@@ -88,7 +88,7 @@
|
||||
@if (context is IAvailablePlugin { IsInternal: false } infoPlugin)
|
||||
{
|
||||
<MudTooltip Text="@T("Plugin information")">
|
||||
<MudIconButton Icon="@Icons.Material.Outlined.Info" Size="Size.Small" OnClick="@(() => this.ShowPluginInfoAsync(infoPlugin))"/>
|
||||
<MudIconButton Icon="@AppIcons.INFO" Size="Size.Small" OnClick="@(() => this.ShowPluginInfoAsync(infoPlugin))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
</MudStack>
|
||||
@@ -124,7 +124,7 @@
|
||||
@if (context is IAvailablePlugin editablePlugin && CanEditAssistantPlugin(editablePlugin))
|
||||
{
|
||||
<MudTooltip Text="@T("Edit assistant plugin")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Code" Size="Size.Medium" OnClick="@(() => this.OpenAssistantPluginEditorDialogAsync(editablePlugin))"/>
|
||||
<MudIconButton Icon="@AppIcons.CODE" Size="Size.Medium" OnClick="@(() => this.OpenAssistantPluginEditorDialogAsync(editablePlugin))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
{
|
||||
var isLauncher = IsDirectChatLauncher(revisionPlugin);
|
||||
<MudTooltip Text="@(isLauncher ? T("Change what this tile opens") : T("Revise assistant plugin with AI"))">
|
||||
<MudIconButton Icon="@(isLauncher ? Icons.Material.Filled.Tune : Icons.Material.Filled.AutoMode)" Size="Size.Medium" OnClick="@(() => this.OpenAssistantPluginRevisionDialogAsync(revisionPlugin))"/>
|
||||
<MudIconButton Icon="@(isLauncher ? AppIcons.LAUNCHER_SETTINGS : AppIcons.REVISE_ASSISTANT)" Size="Size.Medium" OnClick="@(() => this.OpenAssistantPluginRevisionDialogAsync(revisionPlugin))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
|
||||
|
||||
@@ -42,13 +42,6 @@ public partial class Plugins : MSGComponentBase
|
||||
|
||||
private bool isSharingPlugin;
|
||||
|
||||
private const string IMPORT_ICON =
|
||||
@"<svg class=""mud-icon-root mud-svg-icon mud-dark-text mud-icon-size-medium"" focusable=""false"" viewBox=""0 0 24 24"" aria-hidden=""true"" role=""img"">
|
||||
<path d=""M0 0h24v24H0V0z"" fill=""none""></path>
|
||||
<path d=""M16 5l-1.42 1.42-1.59-1.59V16h-1.98V4.83L9.42 6.42 8 5l4-4 4 4z"" transform=""rotate(180 12 10)""></path>
|
||||
<path d=""M20 10v11c0 1.1-.9 2-2 2H6c-1.11 0-2-.9-2-2V10c0-1.11.89-2 2-2h3v2H6v11h12V10h-3V8h3c1.1 0 2 .89 2 2z""></path>
|
||||
</svg>";
|
||||
|
||||
#region Overrides of ComponentBase
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
@@ -278,7 +271,7 @@ public partial class Plugins : MSGComponentBase
|
||||
/// user's choice instead: on Linux, which has none, and once the share sheet failed or did not
|
||||
/// respond, until AI Studio restarts. The action must be labeled accordingly.
|
||||
/// </summary>
|
||||
private string SharePluginIcon => this.PluginShareService.UsesExport ? Icons.Material.Filled.FileDownload : Icons.Material.Filled.IosShare;
|
||||
private string SharePluginIcon => this.PluginShareService.UsesExport ? AppIcons.EXPORT : AppIcons.SHARE;
|
||||
|
||||
private string SharePluginTooltip => this.PluginShareService.UsesExport ? this.T("Export plugin archive") : this.T("Share plugin archive");
|
||||
|
||||
@@ -297,7 +290,7 @@ public partial class Plugins : MSGComponentBase
|
||||
if (dialogResult is null || dialogResult.Canceled || dialogResult.Data is not AssistantPluginEditorDialogResult result)
|
||||
return;
|
||||
|
||||
await this.MessageBus.SendSuccess(new(Icons.Material.Filled.Save, string.Format(this.T("The assistant plugin '{0}' has been successfully saved."), result.PluginName)));
|
||||
await this.MessageBus.SendSuccess(new(AppIcons.SAVE, string.Format(this.T("The assistant plugin '{0}' has been successfully saved."), result.PluginName)));
|
||||
LOG.LogInformation($"The assistant plugin '{result.PluginName}' ({result.PluginId}) has been successfully updated.");
|
||||
|
||||
// Saving the plugin ran LoadAll, which already sent PLUGINS_RELOADED. Editing the plugin
|
||||
@@ -329,7 +322,7 @@ public partial class Plugins : MSGComponentBase
|
||||
if (dialogResult is null || dialogResult.Canceled || dialogResult.Data is not AssistantPluginRevisionDialogResult result)
|
||||
return;
|
||||
|
||||
await this.MessageBus.SendSuccess(new(Icons.Material.Filled.AutoFixHigh, string.Format(this.T("The assistant plugin '{0}' has been successfully revised."), result.PluginName)));
|
||||
await this.MessageBus.SendSuccess(new(AppIcons.REVISE_ASSISTANT, string.Format(this.T("The assistant plugin '{0}' has been successfully revised."), result.PluginName)));
|
||||
LOG.LogInformation($"The assistant plugin '{result.PluginName}' ({result.PluginId}) has been successfully revised.");
|
||||
|
||||
// Saving the revision ran LoadAll, which already sent PLUGINS_RELOADED. We still announce the
|
||||
@@ -351,7 +344,7 @@ public partial class Plugins : MSGComponentBase
|
||||
if (dialogResult is null || dialogResult.Canceled || dialogResult.Data is not DirectChatLauncherSettingsDialogResult result)
|
||||
return;
|
||||
|
||||
await this.MessageBus.SendSuccess(new(Icons.Material.Filled.Save, string.Format(this.T("The tile '{0}' has been updated."), result.PluginName)));
|
||||
await this.MessageBus.SendSuccess(new(AppIcons.SAVE, string.Format(this.T("The tile '{0}' has been updated."), result.PluginName)));
|
||||
LOG.LogInformation($"The chat launcher '{result.PluginName}' ({result.PluginId}) has been successfully updated.");
|
||||
|
||||
// Saving ran LoadAll, which already sent PLUGINS_RELOADED. We still announce the
|
||||
@@ -395,12 +388,12 @@ public partial class Plugins : MSGComponentBase
|
||||
// that would only unpack the archive, at least on macOS.
|
||||
//
|
||||
case PluginShareOutcome.EXPORTED:
|
||||
await exportFeedback.SucceededAsync(Icons.Material.Filled.FileDownload, string.Format(T("The plugin archive was exported to '{0}'."), shareResult.ArchivePath), shareResult.ArchivePath, false);
|
||||
await exportFeedback.SucceededAsync(AppIcons.EXPORT, string.Format(T("The plugin archive was exported to '{0}'."), shareResult.ArchivePath), shareResult.ArchivePath, false);
|
||||
break;
|
||||
|
||||
case PluginShareOutcome.FAILED:
|
||||
LOG.LogError($"Sharing the plugin '{shareResult.PluginName}' from archive '{shareResult.ArchivePath}' failed with Issue: '{shareResult.Issue}'.");
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.ReportProblem, isExport ? T("An error occurred while exporting the plugin.") : T("An error occurred while sharing the plugin.")));
|
||||
await this.MessageBus.SendError(new(AppIcons.ERROR, isExport ? T("An error occurred while exporting the plugin.") : T("An error occurred while sharing the plugin.")));
|
||||
break;
|
||||
|
||||
// The share sheet takes it from here, and a canceled export needs no message. The
|
||||
@@ -490,7 +483,7 @@ public partial class Plugins : MSGComponentBase
|
||||
// We do not announce the reload ourselves: a successful installation ran LoadAll, which
|
||||
// already sent PLUGINS_RELOADED. The import changes no settings either, so there is
|
||||
// nothing to report as a configuration change:
|
||||
await this.MessageBus.SendSuccess(new(Icons.Material.Filled.Extension, message));
|
||||
await this.MessageBus.SendSuccess(new(AppIcons.PLUGIN, message));
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -521,7 +514,7 @@ public partial class Plugins : MSGComponentBase
|
||||
var dialogParameters = new DialogParameters<InformationDialog>
|
||||
{
|
||||
{ x => x.Message, string.Format(this.T("The plugin could not be imported: {0}"), issue) },
|
||||
{ x => x.Icon, Icons.Material.Filled.ReportProblem },
|
||||
{ x => x.Icon, AppIcons.ERROR },
|
||||
{ x => x.IconColor, Color.Error },
|
||||
};
|
||||
|
||||
@@ -562,7 +555,7 @@ public partial class Plugins : MSGComponentBase
|
||||
var audit = await this.AssistantPluginAuditService.RunAuditAsync(assistantPlugin);
|
||||
if (audit.Level is AssistantAuditLevel.UNKNOWN)
|
||||
{
|
||||
await MessageBus.INSTANCE.SendError(new (Icons.Material.Filled.SettingsSuggest, string.Format(this.T("The automatic security audit for the assistant plugin '{0}' failed. Please run it manually."), assistantPlugin.Name)));
|
||||
await MessageBus.INSTANCE.SendError(new (AppIcons.AGENT, string.Format(this.T("The automatic security audit for the assistant plugin '{0}' failed. Please run it manually."), assistantPlugin.Name)));
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -629,11 +622,11 @@ public partial class Plugins : MSGComponentBase
|
||||
switch (archivePaths.Count)
|
||||
{
|
||||
case 0:
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.ReportProblem, string.Format(this.T("Please drop a plugin archive with the extension {0} or .zip."), PluginArchive.PLUGIN_FILE_EXTENSION)));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.WARNING, string.Format(this.T("Please drop a plugin archive with the extension {0} or .zip."), PluginArchive.PLUGIN_FILE_EXTENSION)));
|
||||
return;
|
||||
|
||||
case > 1:
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.ReportProblem, this.T("Please drop only one plugin archive at a time.")));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.WARNING, this.T("Please drop only one plugin archive at a time.")));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<SettingsPanelAgentContentCleaner AvailableLLMProvidersFunc="@(() => this.availableLLMProviders)"/>
|
||||
<SettingsPanelAgentAssistantAudit AvailableLLMProvidersFunc="@(() => this.availableLLMProviders)"/>
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.SettingsBackupRestore" HeaderText="@T("Data Backup & Restore")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.DATA_BACKUP" HeaderText="@T("Data Backup & Restore")">
|
||||
<DataBackupPanel/>
|
||||
</ExpansionPanel>
|
||||
</MudExpansionPanels>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
<MudExpansionPanels>
|
||||
|
||||
<ExpansionPanel HeaderText="@T("Financial Support")" IsExpanded="@true" HeaderIcon="@Icons.Material.Filled.AttachMoney">
|
||||
<ExpansionPanel HeaderText="@T("Financial Support")" IsExpanded="@true" HeaderIcon="@AppIcons.FINANCIAL_SUPPORT">
|
||||
<div class="border-solid border-2 rounded-lg pa-3 mb-6">
|
||||
<MudText Typo="Typo.h4" Class="mb-2">
|
||||
@T("Our Titans")
|
||||
@@ -25,7 +25,7 @@
|
||||
<Titan Name="@T("German Aerospace Center (DLR)")" Type="SupporterType.ORGANIZATION" URL="https://www.dlr.de/" ImageSrc="svg/titans/DLR.svg" Acknowledgment="@T("We would like to thank the DLR for its courage in supporting MindWork AI Studio at an early stage. The DLR not only uses AI Studio in various projects but also supports its further development with personnel resources.")"/>
|
||||
</MudList>
|
||||
|
||||
<MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.Business" Variant="Variant.Filled" Target="_blank">
|
||||
<MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@AppIcons.BUSINESS_SUPPORTER" Variant="Variant.Filled" Target="_blank">
|
||||
@T("Become one of our titans")
|
||||
</MudButton>
|
||||
</div>
|
||||
@@ -35,11 +35,11 @@
|
||||
<MudItem Class="pa-0 pr-md-2" xs="12" md="6">
|
||||
<MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3">
|
||||
<MudText Typo="Typo.h4" Class="mb-3 d-flex align-center">
|
||||
<MudIcon Icon="@Icons.Material.Filled.People" Size="Size.Large" class="mr-2"/>
|
||||
<MudIcon Icon="@AppIcons.PEOPLE" Size="Size.Large" class="mr-2"/>
|
||||
@T("Individual Contributors")
|
||||
</MudText>
|
||||
|
||||
<MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.People" Variant="Variant.Filled" Target="_blank">
|
||||
<MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@AppIcons.PEOPLE" Variant="Variant.Filled" Target="_blank">
|
||||
@T("Become a contributor")
|
||||
</MudButton>
|
||||
|
||||
@@ -64,11 +64,11 @@
|
||||
<MudItem Class="pa-0 pl-md-2 mt-4 mt-md-0" xs="12" md="6">
|
||||
<MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3">
|
||||
<MudText Typo="Typo.h4" Class="mb-3 d-flex align-center">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Business" Size="Size.Large" class="mr-2"/>
|
||||
<MudIcon Icon="@AppIcons.BUSINESS_SUPPORTER" Size="Size.Large" class="mr-2"/>
|
||||
@T("Business Contributors")
|
||||
</MudText>
|
||||
|
||||
<MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.Business" Variant="Variant.Filled" Target="_blank">
|
||||
<MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@AppIcons.BUSINESS_SUPPORTER" Variant="Variant.Filled" Target="_blank">
|
||||
@T("Become a contributor")
|
||||
</MudButton>
|
||||
</MudPaper>
|
||||
@@ -76,14 +76,14 @@
|
||||
</MudGrid>
|
||||
</ExpansionPanel>
|
||||
|
||||
<ExpansionPanel HeaderText="@T("Content Contributors")" HeaderIcon="@Icons.Material.Filled.Code">
|
||||
<ExpansionPanel HeaderText="@T("Content Contributors")" HeaderIcon="@AppIcons.CONTRIBUTORS">
|
||||
|
||||
@* Two columns from the breakpoint md on; in a narrower window, the boxes follow each other. *@
|
||||
<MudGrid Justify="Justify.Center" Spacing="2" Style="width: 100%;" Class="ma-0">
|
||||
<MudItem Class="pa-0 pr-md-2" xs="12" md="6">
|
||||
<MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3">
|
||||
<MudText Typo="Typo.h4" Class="mb-3 d-flex align-center">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Code" Size="Size.Large" class="mr-2"/>
|
||||
<MudIcon Icon="@AppIcons.CODE" Size="Size.Large" class="mr-2"/>
|
||||
@T("Code Contributions")
|
||||
</MudText>
|
||||
|
||||
@@ -108,7 +108,7 @@
|
||||
<MudItem Class="pa-0 pl-md-2 mt-4 mt-md-0" xs="12" md="6">
|
||||
<MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3">
|
||||
<MudText Typo="Typo.h4" Class="mb-3 d-flex align-start">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Image" Size="Size.Large" class="mr-2"/>
|
||||
<MudIcon Icon="@AppIcons.CONTRIBUTION_DESIGN_AND_DOCS" Size="Size.Large" class="mr-2"/>
|
||||
@T("Moderation, Design, Wiki, and Documentation")
|
||||
</MudText>
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
|
||||
<MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3 mt-4">
|
||||
<MudText Typo="Typo.h4" Class="mb-3 d-flex align-start">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Lightbulb" Size="Size.Large" class="mr-2"/>
|
||||
<MudIcon Icon="@AppIcons.IDEA" Size="Size.Large" class="mr-2"/>
|
||||
@T("Ideas, Expertise, and Concepts")
|
||||
</MudText>
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ public partial class Writer : MSGComponentBase
|
||||
catch (ProviderRequestException e)
|
||||
{
|
||||
LOGGER.LogError(e, "The provider request failed for writer suggestions. Status={StatusCode}, Reason='{ReasonPhrase}', Body='{ResponseBody}'", e.StatusCode, e.ReasonPhrase, e.ResponseBody);
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.CloudOff, e.UserMessage));
|
||||
await this.MessageBus.SendError(new(AppIcons.PROVIDER_ERROR, e.UserMessage));
|
||||
this.suggestion = string.Empty;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(aiText.Text))
|
||||
|
||||
Reference in new issue
Block a user