mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-11-13 13: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
@@ -3,6 +3,6 @@
|
||||
@if (this.SettingsManager.ConfigurationData.App.ShowAdminSettings)
|
||||
{
|
||||
<MudTooltip Text="@T("Export configuration")">
|
||||
<MudIconButton Variant="@this.Variant" Color="Color.Info" Icon="@Icons.Material.Filled.Dataset" OnClick="@this.Export" aria-label="@T("Export configuration")" />
|
||||
<MudIconButton Variant="@this.Variant" Color="Color.Info" Icon="@AppIcons.EXPORT_CONFIGURATION" OnClick="@this.Export" aria-label="@T("Export configuration")" />
|
||||
</MudTooltip>
|
||||
}
|
||||
@@ -48,7 +48,7 @@
|
||||
}
|
||||
@if (this.HasSettingsPanel)
|
||||
{
|
||||
<MudIconButton Variant="Variant.Text" Icon="@Icons.Material.Filled.Settings" Color="Color.Default" OnClick="@this.OpenSettingsDialog"/>
|
||||
<MudIconButton Variant="Variant.Text" Icon="@AppIcons.SETTINGS" Color="Color.Default" OnClick="@this.OpenSettingsDialog"/>
|
||||
}
|
||||
</MudButtonGroup>
|
||||
@if (this.SecurityBadge is not null || this.AdditionalActions is not null)
|
||||
|
||||
@@ -26,7 +26,7 @@ public partial class AssistantBlock<TSettings> : MSGComponentBase, IAssistantCat
|
||||
public string Description { get; set; } = string.Empty;
|
||||
|
||||
[Parameter]
|
||||
public string Icon { get; set; } = Icons.Material.Filled.DisabledByDefault;
|
||||
public string Icon { get; set; } = AppIcons.ASSISTANT_FALLBACK;
|
||||
|
||||
[Parameter]
|
||||
public string ButtonText { get; set; } = "Start";
|
||||
@@ -139,21 +139,21 @@ public partial class AssistantBlock<TSettings> : MSGComponentBase, IAssistantCat
|
||||
/// </summary>
|
||||
private AssistantSessionIndicatorData? AssistantSessionIndicator => this.MediaImportSnapshot?.Status switch
|
||||
{
|
||||
MediaImportStatus.QUEUED or MediaImportStatus.RUNNING or MediaImportStatus.CANCELING => new(Icons.Material.Filled.ChangeCircle, Color.Info, this.T("Media is still being prepared.")),
|
||||
MediaImportStatus.SUCCEEDED => new(Icons.Material.Filled.TaskAlt, Color.Success, this.T("The media transcript is ready.")),
|
||||
MediaImportStatus.WARNING => new(Icons.Material.Filled.WarningAmber, Color.Warning, this.T("Media transcription completed with a warning. Open the assistant to review it.")),
|
||||
MediaImportStatus.FAILED => new(Icons.Material.Filled.Error, Color.Error, this.T("Media transcription failed. Open the assistant to review it.")),
|
||||
MediaImportStatus.CANCELLED => new(Icons.Material.Filled.Cancel, Color.Warning, this.T("Media transcription was canceled. Open the assistant to review it.")),
|
||||
MediaImportStatus.QUEUED or MediaImportStatus.RUNNING or MediaImportStatus.CANCELING => new(AppIcons.RUNNING, Color.Info, this.T("Media is still being prepared.")),
|
||||
MediaImportStatus.SUCCEEDED => new(AppIcons.SUCCESS, Color.Success, this.T("The media transcript is ready.")),
|
||||
MediaImportStatus.WARNING => new(AppIcons.WARNING, Color.Warning, this.T("Media transcription completed with a warning. Open the assistant to review it.")),
|
||||
MediaImportStatus.FAILED => new(AppIcons.ERROR, Color.Error, this.T("Media transcription failed. Open the assistant to review it.")),
|
||||
MediaImportStatus.CANCELLED => new(AppIcons.CANCELED, Color.Warning, this.T("Media transcription was canceled. Open the assistant to review it.")),
|
||||
|
||||
_ => this.AssistantSessionIndicatorWithoutMedia,
|
||||
};
|
||||
|
||||
private AssistantSessionIndicatorData? AssistantSessionIndicatorWithoutMedia => this.AssistantSessionSnapshot?.Status switch
|
||||
{
|
||||
AssistantSessionStatus.RUNNING or AssistantSessionStatus.CANCELING => new(Icons.Material.Filled.ChangeCircle, Color.Info, this.T("Assistant is still running.")),
|
||||
AssistantSessionStatus.COMPLETED => new(Icons.Material.Filled.TaskAlt, Color.Success, this.T("The result is ready.")),
|
||||
AssistantSessionStatus.FAILED => new(Icons.Material.Filled.Error, Color.Error, this.T("Assistant failed. Open it to review the result.")),
|
||||
AssistantSessionStatus.CANCELED => new(Icons.Material.Filled.Cancel, Color.Warning, this.T("Assistant was canceled. Open it to review the result.")),
|
||||
AssistantSessionStatus.RUNNING or AssistantSessionStatus.CANCELING => new(AppIcons.RUNNING, Color.Info, this.T("Assistant is still running.")),
|
||||
AssistantSessionStatus.COMPLETED => new(AppIcons.SUCCESS, Color.Success, this.T("The result is ready.")),
|
||||
AssistantSessionStatus.FAILED => new(AppIcons.ERROR, Color.Error, this.T("Assistant failed. Open it to review the result.")),
|
||||
AssistantSessionStatus.CANCELED => new(AppIcons.CANCELED, Color.Warning, this.T("Assistant was canceled. Open it to review the result.")),
|
||||
_ => null,
|
||||
};
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
@if (this.PluginToolIds.Count > 0)
|
||||
{
|
||||
<MudChip T="string" Size="Size.Small" Variant="Variant.Outlined" Color="Color.Info" Icon="@Icons.Material.Filled.Handyman">
|
||||
<MudChip T="string" Size="Size.Small" Variant="Variant.Outlined" Color="Color.Info" Icon="@AppIcons.TOOL">
|
||||
@this.GetToolCountLabel()
|
||||
</MudChip>
|
||||
}
|
||||
@@ -61,7 +61,7 @@
|
||||
</CardHeaderContent>
|
||||
<CardHeaderActions>
|
||||
<MudTooltip Text="@T("Show or hide the detailed security information.")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.ExpandMore" OnClick="@this.ToggleDetails" />
|
||||
<MudIconButton Icon="@AppIcons.EXPAND_MORE" OnClick="@this.ToggleDetails" />
|
||||
</MudTooltip>
|
||||
</CardHeaderActions>
|
||||
</MudCardHeader>
|
||||
@@ -71,7 +71,7 @@
|
||||
@if (state.IsEnterpriseApproved)
|
||||
{
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Business" Size="Size.Small" Color="@state.SourceColor" />
|
||||
<MudIcon Icon="@AppIcons.ORGANIZATION" Size="Size.Small" Color="@state.SourceColor" />
|
||||
<MudText Typo="Typo.body2">@T("Enterprise approval is active")</MudText>
|
||||
</MudStack>
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
{
|
||||
<MudDivider Vertical="@true" FlexItem="@true" />
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Lock" Size="Size.Small" Color="Color.Success" />
|
||||
<MudIcon Icon="@AppIcons.LOCK" Size="Size.Small" Color="Color.Success" />
|
||||
<MudText Typo="Typo.body2">@T("Your organization requires this assistant to stay enabled")</MudText>
|
||||
</MudStack>
|
||||
}
|
||||
@@ -87,7 +87,7 @@
|
||||
else
|
||||
{
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Speed" Size="Size.Small" />
|
||||
<MudIcon Icon="@AppIcons.AUDIT_CONFIDENCE" Size="Size.Small" />
|
||||
<MudText Typo="Typo.body2">@T("Confidence"):</MudText>
|
||||
<MudProgressLinear Color="@state.AuditColor"
|
||||
Value="@this.GetConfidencePercentage()"
|
||||
@@ -101,12 +101,12 @@
|
||||
}
|
||||
<MudDivider Vertical="@true" FlexItem="@true" />
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1">
|
||||
<MudIcon Icon="@Icons.Material.Filled.BugReport" Size="Size.Small" Color="@state.AuditColor" />
|
||||
<MudIcon Icon="@AppIcons.SECURITY_FINDINGS" Size="Size.Small" Color="@state.AuditColor" />
|
||||
<MudText Typo="Typo.body2">@this.GetFindingSummary()</MudText>
|
||||
</MudStack>
|
||||
<MudDivider Vertical="@true" FlexItem="@true" />
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Schedule" Size="Size.Small" />
|
||||
<MudIcon Icon="@AppIcons.TIME" Size="Size.Small" />
|
||||
<MudText Typo="Typo.body2" Class="mud-text-secondary">
|
||||
@this.GetAuditTimestampLabel()
|
||||
</MudText>
|
||||
@@ -125,7 +125,7 @@
|
||||
<MudPaper Outlined="true" Class="pa-2">
|
||||
<div class="d-flex align-center justify-space-between gap-2">
|
||||
<MudText Typo="Typo.subtitle2">@T("Technical Details")</MudText>
|
||||
<MudIconButton Icon="@(this.showMetadata ? Icons.Material.Filled.ExpandLess : Icons.Material.Filled.ExpandMore)"
|
||||
<MudIconButton Icon="@(this.showMetadata ? AppIcons.EXPAND_LESS : AppIcons.EXPAND_MORE)"
|
||||
Size="Size.Small"
|
||||
OnClick="@this.ToggleMetadata" />
|
||||
</div>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<MudTextField T="string"
|
||||
Text="@DROP_FILES_HERE_TEXT"
|
||||
Adornment="Adornment.Start"
|
||||
AdornmentIcon="@Icons.Material.Filled.AttachFile"
|
||||
AdornmentIcon="@AppIcons.ATTACH_FILE"
|
||||
Typo="Typo.body2"
|
||||
Variant="Variant.Outlined"
|
||||
ReadOnly="true"
|
||||
@@ -40,7 +40,7 @@
|
||||
Class="cursor-pointer"
|
||||
OnClick="@this.OpenAttachmentsDialog">
|
||||
<MudIconButton
|
||||
Icon="@Icons.Material.Filled.AttachFile"
|
||||
Icon="@AppIcons.ATTACH_FILE"
|
||||
Color="Color.Default"
|
||||
Disabled="@this.IsUnavailable"
|
||||
OnClick="@this.AddFilesManually"/>
|
||||
@@ -51,7 +51,7 @@
|
||||
{
|
||||
<MudTooltip Text="@T("Click here to attach files.")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton
|
||||
Icon="@Icons.Material.Filled.AttachFile"
|
||||
Icon="@AppIcons.ATTACH_FILE"
|
||||
Color="Color.Default"
|
||||
Disabled="@this.IsUnavailable"
|
||||
OnClick="@this.AddFilesManually"/>
|
||||
@@ -74,7 +74,7 @@ else
|
||||
</MudText>
|
||||
<MudButton
|
||||
Variant="Variant.Filled"
|
||||
StartIcon="@Icons.Material.Filled.Add"
|
||||
StartIcon="@AppIcons.ADD"
|
||||
Color="Color.Primary"
|
||||
OnClick="@(() => this.AddFilesManually())"
|
||||
Style="vertical-align: top; margin-top: -2px;"
|
||||
@@ -98,17 +98,17 @@ else
|
||||
{
|
||||
@if (this.IsUnavailable)
|
||||
{
|
||||
<MudChip T="string" Color="Color.Dark" Text="@fileAttachment.FileName" tabindex="-1" Icon="@Icons.Material.Filled.Search" OnClick="@(() => this.InvestigateFile(fileAttachment))"/>
|
||||
<MudChip T="string" Color="Color.Dark" Text="@fileAttachment.FileName" tabindex="-1" Icon="@AppIcons.FILE_CONTENT_PREVIEW" OnClick="@(() => this.InvestigateFile(fileAttachment))"/>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudChip T="string" Color="Color.Dark" Text="@fileAttachment.FileName" tabindex="-1" Icon="@Icons.Material.Filled.Search" OnClick="@(() => this.InvestigateFile(fileAttachment))" OnClose="@(() => this.RemoveDocument(fileAttachment))"/>
|
||||
<MudChip T="string" Color="Color.Dark" Text="@fileAttachment.FileName" tabindex="-1" Icon="@AppIcons.FILE_CONTENT_PREVIEW" OnClick="@(() => this.InvestigateFile(fileAttachment))" OnClose="@(() => this.RemoveDocument(fileAttachment))"/>
|
||||
}
|
||||
}
|
||||
</PathDropZone>
|
||||
@if (!this.IsUnavailable)
|
||||
{
|
||||
<MudButton OnClick="@(async () => await this.ClearAllFiles())" Variant="Variant.Filled" Color="Color.Info" Class="mt-2" StartIcon="@Icons.Material.Filled.Delete">
|
||||
<MudButton OnClick="@(async () => await this.ClearAllFiles())" Variant="Variant.Filled" Color="Color.Info" Class="mt-2" StartIcon="@AppIcons.DELETE">
|
||||
@T("Clear file list")
|
||||
</MudButton>
|
||||
}
|
||||
|
||||
@@ -172,22 +172,22 @@ public partial class AttachDocuments : MSGComponentBase
|
||||
if (outcome.Failures.Count > 0)
|
||||
{
|
||||
var message = string.Join(Environment.NewLine, outcome.Failures.Select(failure => $"{failure.FileName}: {failure.UserMessage}"));
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.VoiceChat, message));
|
||||
await this.MessageBus.SendError(new(AppIcons.VOICE_TRANSCRIPTION, message));
|
||||
}
|
||||
else if (outcome.Status is MediaImportStatus.FAILED)
|
||||
{
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.VoiceChat, this.T("The media file could not be transcribed.")));
|
||||
await this.MessageBus.SendError(new(AppIcons.VOICE_TRANSCRIPTION, this.T("The media file could not be transcribed.")));
|
||||
}
|
||||
|
||||
if (outcome.Warnings.Count > 0)
|
||||
{
|
||||
var message = string.Join(Environment.NewLine, outcome.Warnings.Select(warning => $"{warning.FileName}: {warning.UserMessage}"));
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.VoiceChat, message));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.VOICE_TRANSCRIPTION, message));
|
||||
}
|
||||
|
||||
if (outcome.Status is MediaImportStatus.CANCELLED)
|
||||
{
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.VoiceChat, this.T("The media transcription was canceled.")));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.VOICE_TRANSCRIPTION, this.T("The media transcription was canceled.")));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -358,7 +358,7 @@ public partial class AttachDocuments : MSGComponentBase
|
||||
var rejectedPaths = pathList.Where(path => !FileTypes.IsAllowedPath(path, this.AllowedFileTypes)).ToArray();
|
||||
pathList.RemoveAll(path => rejectedPaths.Contains(path, StringComparer.Ordinal));
|
||||
if (rejectedPaths.Length > 0)
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.Warning, this.T("Some files do not use an allowed format and were not attached.")));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.WARNING, this.T("Some files do not use an allowed format and were not attached.")));
|
||||
}
|
||||
|
||||
var inaccessiblePaths = pathList.Where(path => !File.Exists(path)).ToList();
|
||||
@@ -366,7 +366,7 @@ public partial class AttachDocuments : MSGComponentBase
|
||||
{
|
||||
this.Logger.LogWarning("Could not access {Count} dropped or selected file(s): {Paths}", inaccessiblePaths.Count, string.Join(", ", inaccessiblePaths));
|
||||
await this.MessageBus.SendWarning(new(
|
||||
Icons.Material.Filled.Warning,
|
||||
AppIcons.WARNING,
|
||||
this.T("Some files could not be accessed. Please select them with the file chooser instead.")));
|
||||
}
|
||||
|
||||
@@ -421,7 +421,7 @@ public partial class AttachDocuments : MSGComponentBase
|
||||
if (string.IsNullOrWhiteSpace(this.SettingsManager.ConfigurationData.App.UseTranscriptionProvider))
|
||||
{
|
||||
await this.MessageBus.SendWarning(new(
|
||||
Icons.Material.Filled.VoiceChat,
|
||||
AppIcons.VOICE_TRANSCRIPTION,
|
||||
this.T("Media files require a configured transcription provider. Configure one in the transcription settings.")));
|
||||
return attached;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
@inherits MSGComponentBase
|
||||
<MudSelect T="Log" @bind-Value="@this.SelectedLog" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Schedule" Margin="Margin.Dense" Label="@T("Changelog")" Class="mb-2 rounded-lg" Variant="Variant.Outlined" SelectedValuesChanged="() => this.ReadLogAsync()" OnKeyUp="() => this.ReadLogAsync()">
|
||||
<MudSelect T="Log" @bind-Value="@this.SelectedLog" Adornment="Adornment.Start" AdornmentIcon="@AppIcons.CHANGELOG" Margin="Margin.Dense" Label="@T("Changelog")" Class="mb-2 rounded-lg" Variant="Variant.Outlined" SelectedValuesChanged="() => this.ReadLogAsync()" OnKeyUp="() => this.ReadLogAsync()">
|
||||
@foreach (var log in LOGS)
|
||||
{
|
||||
<MudSelectItem Value="@log"/>
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
Label="@this.InputLabel"
|
||||
Placeholder="@this.ProviderPlaceholder"
|
||||
Adornment="Adornment.End"
|
||||
AdornmentIcon="@(this.MediaTranscriptionService.IsBusy(this.CurrentMediaImportOwner) ? Icons.Material.Filled.HourglassTop : Icons.Material.Filled.Send)"
|
||||
AdornmentIcon="@(this.MediaTranscriptionService.IsBusy(this.CurrentMediaImportOwner) ? AppIcons.PENDING : AppIcons.SEND)"
|
||||
OnAdornmentClick="() => this.SendMessage()"
|
||||
Disabled="@this.IsInputForbidden()"
|
||||
Immediate="@true"
|
||||
@@ -69,25 +69,25 @@
|
||||
&& this.SettingsManager.ConfigurationData.Workspace.DisplayBehavior is WorkspaceDisplayBehavior.TOGGLE_OVERLAY)
|
||||
{
|
||||
<MudTooltip Text="@T("Show your workspaces")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.SnippetFolder" OnClick="@(() => this.ToggleWorkspaceOverlay())"/>
|
||||
<MudIconButton Icon="@AppIcons.WORKSPACES" OnClick="@(() => this.ToggleWorkspaceOverlay())"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
|
||||
@if (this.SettingsManager.ConfigurationData.Workspace.StorageBehavior is WorkspaceStorageBehavior.STORE_CHATS_MANUALLY)
|
||||
{
|
||||
<MudTooltip Text="@T("Save chat")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Save" OnClick="@(() => this.SaveThread())" Disabled="@(!this.CanThreadBeSaved || this.IsCurrentChatStreaming)"/>
|
||||
<MudIconButton Icon="@AppIcons.SAVE" OnClick="@(() => this.SaveThread())" Disabled="@(!this.CanThreadBeSaved || this.IsCurrentChatStreaming)"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
|
||||
<MudTooltip Text="@T("Start temporary chat")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.AddComment" OnClick="@(() => this.StartNewChat(useSameWorkspace: false))"/>
|
||||
<MudIconButton Icon="@AppIcons.NEW_TEMPORARY_CHAT" OnClick="@(() => this.StartNewChat(useSameWorkspace: false))"/>
|
||||
</MudTooltip>
|
||||
|
||||
@if (!string.IsNullOrWhiteSpace(this.currentWorkspaceName))
|
||||
{
|
||||
<MudTooltip Text="@this.TooltipAddChatToWorkspace" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.CommentBank" OnClick="@(() => this.StartNewChat(useSameWorkspace: true))"/>
|
||||
<MudIconButton Icon="@AppIcons.NEW_CHAT" OnClick="@(() => this.StartNewChat(useSameWorkspace: true))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
|
||||
@@ -97,49 +97,49 @@
|
||||
@if (this.SettingsManager.ConfigurationData.Workspace.StorageBehavior is WorkspaceStorageBehavior.STORE_CHATS_AUTOMATICALLY)
|
||||
{
|
||||
<MudTooltip Text="@T("Delete this chat & start a new one.")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.DeleteSweep" Color="Color.Error" OnClick="@(() => this.StartNewChat(useSameWorkspace: true, deletePreviousChat: true))" Disabled="@(!this.CanThreadBeSaved || this.IsCurrentChatStreaming)"/>
|
||||
<MudIconButton Icon="@AppIcons.DELETE_CHAT_AND_START_NEW" Color="Color.Error" OnClick="@(() => this.StartNewChat(useSameWorkspace: true, deletePreviousChat: true))" Disabled="@(!this.CanThreadBeSaved || this.IsCurrentChatStreaming)"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
|
||||
@if (this.SettingsManager.ConfigurationData.Workspace.StorageBehavior is not WorkspaceStorageBehavior.DISABLE_WORKSPACES)
|
||||
{
|
||||
<MudTooltip Text="@T("Move the chat to a workspace, or to another if it is already in one.")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.MoveToInbox" Disabled="@(!this.CanThreadBeMoved)" OnClick="@this.MoveChatToWorkspace"/>
|
||||
<MudIconButton Icon="@AppIcons.MOVE_TO_WORKSPACE" Disabled="@(!this.CanThreadBeMoved)" OnClick="@this.MoveChatToWorkspace"/>
|
||||
</MudTooltip>
|
||||
|
||||
<MudTooltip Text="@T("Copy this chat & continue in the copy.")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.ContentCopy" Disabled="@(!this.CanThreadBeCopied)" OnClick="@this.CopyCurrentChat"/>
|
||||
<MudIconButton Icon="@AppIcons.DUPLICATE" Disabled="@(!this.CanThreadBeCopied)" OnClick="@this.CopyCurrentChat"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
|
||||
<AttachDocuments Name="File Attachments" DocumentPaths="@this.ComposerState.FileAttachments" DocumentPathsChanged="@this.ComposerAttachmentsChanged" CatchAllDocuments="true" UseSmallForm="true" ShowMediaStatus="false" Provider="@this.Provider" OwnerChat="@this.ChatThread" EnsureOwnerChatAsync="@this.EnsureMediaImportChatAsync" KeepPreviewedText="@this.KeepPreviewedTextAsync" Disabled="@(!this.CanAttachFiles)"/>
|
||||
|
||||
<MudTooltip Text="@T("Show all files attached to this chat")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.LibraryBooks" Disabled="@(!this.HasSentFileAttachments)" OnClick="@this.ShowSentFileAttachments"/>
|
||||
<MudIconButton Icon="@AppIcons.ATTACHED_FILES" Disabled="@(!this.HasSentFileAttachments)" OnClick="@this.ShowSentFileAttachments"/>
|
||||
</MudTooltip>
|
||||
|
||||
<MudDivider Vertical="true" Style="height: 24px; align-self: center;"/>
|
||||
|
||||
<MudTooltip Text="@T("Bold")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.FormatBold" OnClick="@(() => this.ApplyMarkdownFormat(MARKDOWN_BOLD))" Disabled="@this.IsInputForbidden()"/>
|
||||
<MudIconButton Icon="@AppIcons.FORMAT_BOLD" OnClick="@(() => this.ApplyMarkdownFormat(MARKDOWN_BOLD))" Disabled="@this.IsInputForbidden()"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@T("Italic")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.FormatItalic" OnClick="@(() => this.ApplyMarkdownFormat(MARKDOWN_ITALIC))" Disabled="@this.IsInputForbidden()"/>
|
||||
<MudIconButton Icon="@AppIcons.FORMAT_ITALIC" OnClick="@(() => this.ApplyMarkdownFormat(MARKDOWN_ITALIC))" Disabled="@this.IsInputForbidden()"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@T("Heading")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.TextFields" OnClick="@(() => this.ApplyMarkdownFormat(MARKDOWN_HEADING))" Disabled="@this.IsInputForbidden()"/>
|
||||
<MudIconButton Icon="@AppIcons.HEADING" OnClick="@(() => this.ApplyMarkdownFormat(MARKDOWN_HEADING))" Disabled="@this.IsInputForbidden()"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@T("Bulleted List")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.FormatListBulleted" OnClick="@(() => this.ApplyMarkdownFormat(MARKDOWN_BULLET_LIST))" Disabled="@this.IsInputForbidden()"/>
|
||||
<MudIconButton Icon="@AppIcons.FORMAT_BULLET_LIST" OnClick="@(() => this.ApplyMarkdownFormat(MARKDOWN_BULLET_LIST))" Disabled="@this.IsInputForbidden()"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@T("Code")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Code" OnClick="@(() => this.ApplyMarkdownFormat(MARKDOWN_CODE))" Disabled="@this.IsInputForbidden()"/>
|
||||
<MudIconButton Icon="@AppIcons.FORMAT_CODE" OnClick="@(() => this.ApplyMarkdownFormat(MARKDOWN_CODE))" Disabled="@this.IsInputForbidden()"/>
|
||||
</MudTooltip>
|
||||
|
||||
<MudDivider Vertical="true" Style="height: 24px; align-self: center;"/>
|
||||
|
||||
<MudTooltip Text="@T("Show the complete system prompt the AI receives")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Visibility" OnClick="@this.ShowSystemPrompt"/>
|
||||
<MudIconButton Icon="@AppIcons.PREVIEW" OnClick="@this.ShowSystemPrompt"/>
|
||||
</MudTooltip>
|
||||
|
||||
<ProfileSelection MarginLeft="" CurrentProfile="@this.currentProfile" CurrentProfileChanged="@this.ProfileWasChanged" Disabled="@(!this.CanProfileBeChanged)" DisabledText="@this.ProfileDisabledText"/>
|
||||
@@ -162,14 +162,14 @@
|
||||
@if (this.IsCurrentChatStreaming)
|
||||
{
|
||||
<MudTooltip Text="@T("Stop generation")" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Stop" Color="Color.Error" OnClick="@this.CancelStreaming"/>
|
||||
<MudIconButton Icon="@AppIcons.STOP" Color="Color.Error" OnClick="@this.CancelStreaming"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
|
||||
@if (!this.ChatThread.IsLLMProviderAllowed(this.Provider))
|
||||
{
|
||||
<MudTooltip Text="@(this.SettingsManager.IsProviderProhibited(this.Provider.UsedLLMProvider) ? T("The use of this provider has been prohibited by your organization. Please select a different provider.") : T("The selected provider is not allowed in this chat due to data security or confidence-level requirements."))" Placement="@TOOLBAR_TOOLTIP_PLACEMENT">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Error" Color="Color.Error"/>
|
||||
<MudIconButton Icon="@AppIcons.WARNING" Color="Color.Error"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
|
||||
|
||||
@@ -533,22 +533,22 @@ public partial class ChatComponent : MSGComponentBase
|
||||
if (outcome.Failures.Count > 0)
|
||||
{
|
||||
var message = string.Join(Environment.NewLine, outcome.Failures.Select(failure => $"{failure.FileName}: {failure.UserMessage}"));
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.VoiceChat, message));
|
||||
await this.MessageBus.SendError(new(AppIcons.VOICE_TRANSCRIPTION, message));
|
||||
}
|
||||
else if (outcome.Status is MediaImportStatus.FAILED)
|
||||
{
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.VoiceChat, this.T("The media file could not be transcribed.")));
|
||||
await this.MessageBus.SendError(new(AppIcons.VOICE_TRANSCRIPTION, this.T("The media file could not be transcribed.")));
|
||||
}
|
||||
|
||||
if (outcome.Warnings.Count > 0)
|
||||
{
|
||||
var message = string.Join(Environment.NewLine, outcome.Warnings.Select(warning => $"{warning.FileName}: {warning.UserMessage}"));
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.VoiceChat, message));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.VOICE_TRANSCRIPTION, message));
|
||||
}
|
||||
|
||||
if (outcome.Status is MediaImportStatus.CANCELLED)
|
||||
{
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.VoiceChat, this.T("The media transcription was canceled.")));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.VOICE_TRANSCRIPTION, this.T("The media transcription was canceled.")));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudIconButton Icon="@Icons.Material.Filled.RateReview" OnClick="@context.ToggleAsync" />
|
||||
<MudIconButton Icon="@AppIcons.CHAT_TEMPLATE" OnClick="@context.ToggleAsync" />
|
||||
}
|
||||
</ActivatorContent>
|
||||
<ChildContent>
|
||||
<MudMenuItem Icon="@Icons.Material.Filled.Settings" Label="@T("Manage your templates")" OnClick="@(async () => await this.OpenSettingsDialog())" />
|
||||
<MudMenuItem Icon="@AppIcons.SETTINGS" Label="@T("Manage your templates")" OnClick="@(async () => await this.OpenSettingsDialog())" />
|
||||
<MudDivider/>
|
||||
<MudMenuItem Icon="@Icons.Material.Filled.AddComment" Label="@T("Create template from current chat")" OnClick="@(async () => await this.CreateNewChatTemplateFromChat())" Disabled="@(!this.CanChatThreadBeUsedForTemplate)"/>
|
||||
<MudMenuItem Icon="@AppIcons.CREATE_CHAT_TEMPLATE" Label="@T("Create template from current chat")" OnClick="@(async () => await this.CreateNewChatTemplateFromChat())" Disabled="@(!this.CanChatThreadBeUsedForTemplate)"/>
|
||||
<MudDivider/>
|
||||
@foreach (var chatTemplate in this.SettingsManager.ConfigurationData.ChatTemplates.GetAllChatTemplates())
|
||||
{
|
||||
|
||||
@@ -45,9 +45,9 @@ public partial class ChatTemplateSelection : MSGComponentBase
|
||||
private string ChatTemplateIcon(ChatTemplate chatTemplate)
|
||||
{
|
||||
if (chatTemplate.IsEnterpriseConfiguration)
|
||||
return Icons.Material.Filled.Business;
|
||||
return AppIcons.ORGANIZATION;
|
||||
|
||||
return Icons.Material.Filled.RateReview;
|
||||
return AppIcons.CHAT_TEMPLATE;
|
||||
}
|
||||
|
||||
private async Task SelectionChanged(ChatTemplate chatTemplate)
|
||||
|
||||
@@ -48,7 +48,7 @@ public sealed class CodeBlockCopyButton : ComponentBase
|
||||
builder.OpenComponent<MudIconButton>(0);
|
||||
builder.AddComponentParameter(1, nameof(MudIconButton.OnClick), EventCallback.Factory.Create<MouseEventArgs>(this, this.CopyAsync));
|
||||
builder.AddComponentParameter(2, nameof(MudIconButton.Class), CSS_CLASS);
|
||||
builder.AddComponentParameter(3, nameof(MudIconButton.Icon), Icons.Material.Rounded.ContentCopy);
|
||||
builder.AddComponentParameter(3, nameof(MudIconButton.Icon), AppIcons.COPY);
|
||||
builder.AddComponentParameter(4, nameof(MudIconButton.Color), Color.Primary);
|
||||
builder.AddComponentParameter(5, nameof(MudIconButton.Variant), Variant.Filled);
|
||||
builder.AddComponentParameter(6, nameof(MudIconButton.Size), Size.Medium);
|
||||
@@ -68,7 +68,7 @@ public sealed class CodeBlockCopyButton : ComponentBase
|
||||
builder.AddComponentParameter(19, nameof(MudTooltip.ChildContent), (RenderFragment)(content =>
|
||||
{
|
||||
content.OpenComponent<MudIconButton>(0);
|
||||
content.AddComponentParameter(1, nameof(MudIconButton.Icon), Icons.Material.Rounded.DoneAll);
|
||||
content.AddComponentParameter(1, nameof(MudIconButton.Icon), AppIcons.COPIED);
|
||||
content.AddComponentParameter(2, nameof(MudIconButton.Color), Color.Success);
|
||||
content.AddComponentParameter(3, nameof(MudIconButton.Variant), Variant.Filled);
|
||||
content.AddComponentParameter(4, nameof(MudIconButton.Size), Size.Medium);
|
||||
|
||||
@@ -17,7 +17,7 @@ public partial class CompactExpansionPanel : ComponentBase
|
||||
public string HeaderText { get; set; } = string.Empty;
|
||||
|
||||
[Parameter]
|
||||
public string HeaderIcon { get; set; } = Icons.Material.Filled.Tune;
|
||||
public string HeaderIcon { get; set; } = AppIcons.ADVANCED_SETTINGS;
|
||||
|
||||
[Parameter]
|
||||
public Color IconColor { get; set; } = Color.Inherit;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
<div class="d-flex">
|
||||
<MudTooltip Text="@T("Shows and hides the confidence card with information about the selected LLM provider.")" Placement="Placement.Top">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Security" Class="confidence-icon" Style="@this.LLMProvider.GetConfidence(this.SettingsManager).SetColorStyle(this.SettingsManager)" OnClick="@this.ToggleConfidence"/>
|
||||
<MudIconButton Icon="@AppIcons.PROVIDER_CONFIDENCE" Class="confidence-icon" Style="@this.LLMProvider.GetConfidence(this.SettingsManager).SetColorStyle(this.SettingsManager)" OnClick="@this.ToggleConfidence"/>
|
||||
</MudTooltip>
|
||||
|
||||
<MudPopover Open="@this.showConfidence" AnchorOrigin="Origin.TopLeft" TransformOrigin="Origin.BottomLeft" Style="@this.GetPopoverStyle()" DropShadow="@true" Class="border-solid border-4 rounded-lg">
|
||||
@@ -29,7 +29,7 @@
|
||||
<MudList T="@string">
|
||||
@foreach (var sourceTuple in this.GetConfidenceSources())
|
||||
{
|
||||
<MudListItem Icon="@Icons.Material.Filled.Link" Href="@sourceTuple.Source" Target="_blank" Text="@sourceTuple.Index"/>
|
||||
<MudListItem Icon="@AppIcons.LINK" Href="@sourceTuple.Source" Target="_blank" Text="@sourceTuple.Index"/>
|
||||
}
|
||||
</MudList>
|
||||
}
|
||||
|
||||
@@ -5,5 +5,5 @@ namespace AIStudio.Components;
|
||||
public partial class ConfigInfoRow : ComponentBase
|
||||
{
|
||||
[Parameter]
|
||||
public ConfigInfoRowItem Item { get; set; } = new(Icons.Material.Filled.ArrowRightAlt, string.Empty, string.Empty, string.Empty, string.Empty);
|
||||
public ConfigInfoRowItem Item { get; set; } = new(AppIcons.INFO_ROW, string.Empty, string.Empty, string.Empty, string.Empty);
|
||||
}
|
||||
@@ -14,7 +14,7 @@
|
||||
@if (this.ShowWarning)
|
||||
{
|
||||
<div style="display: flex; align-items: center; gap: 8px; margin-top: 4px;">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Warning" Size="Size.Small" Color="Color.Warning"/>
|
||||
<MudIcon Icon="@AppIcons.WARNING" Size="Size.Small" Color="Color.Warning"/>
|
||||
<MudText Typo="Typo.subtitle2">@this.WarningText</MudText>
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace AIStudio.Components;
|
||||
public partial class ConfigPluginInfoCard : ComponentBase
|
||||
{
|
||||
[Parameter]
|
||||
public string HeaderIcon { get; set; } = Icons.Material.Filled.Extension;
|
||||
public string HeaderIcon { get; set; } = AppIcons.PLUGIN;
|
||||
|
||||
[Parameter]
|
||||
public string HeaderText { get; set; } = string.Empty;
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.FlexStart" Wrap="Wrap.NoWrap" StretchItems="this.StretchItems">
|
||||
@* MudTooltip.RootStyle is set as a workaround for issue -> https://github.com/MudBlazor/MudBlazor/issues/10882 *@
|
||||
<MudTooltip Text="@TB("This feature is managed by your organization and has therefore been disabled.")" Arrow="true" Placement="Placement.Right" RootStyle="display:inline-flex;">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Lock" Color="Color.Error" Size="Size.Small" Class="mr-1"/>
|
||||
<MudIcon Icon="@AppIcons.LOCK" Color="Color.Error" Size="Size.Small" Class="mr-1"/>
|
||||
</MudTooltip>
|
||||
@this.Body
|
||||
</MudStack>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
Class="flex-grow-1"
|
||||
/>
|
||||
|
||||
<MudButton StartIcon="@Icons.Material.Filled.FolderOpen"
|
||||
<MudButton StartIcon="@AppIcons.BROWSE"
|
||||
Variant="Variant.Outlined"
|
||||
Color="Color.Primary"
|
||||
Size="Size.Small"
|
||||
|
||||
@@ -24,7 +24,7 @@ public partial class ConfigurationDirectory : ConfigurationBaseCore
|
||||
/// The icon to display next to the textfield.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public string Icon { get; set; } = Icons.Material.Filled.Folder;
|
||||
public string Icon { get; set; } = AppIcons.FOLDER;
|
||||
|
||||
/// <summary>
|
||||
/// The color of the icon to use.
|
||||
@@ -118,7 +118,7 @@ public partial class ConfigurationDirectory : ConfigurationBaseCore
|
||||
if (path is null)
|
||||
{
|
||||
this.Logger.LogWarning("None of the {Count} dropped path(s) could be used as a directory.", paths.Count);
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.Warning, DroppedFolder.WarningFor(paths)));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.WARNING, DroppedFolder.WarningFor(paths)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
Class="flex-grow-1"
|
||||
/>
|
||||
|
||||
<MudButton StartIcon="@Icons.Material.Filled.FolderOpen"
|
||||
<MudButton StartIcon="@AppIcons.BROWSE"
|
||||
Variant="Variant.Outlined"
|
||||
Color="Color.Primary"
|
||||
Size="Size.Small"
|
||||
|
||||
@@ -25,7 +25,7 @@ public partial class ConfigurationFile : ConfigurationBaseCore
|
||||
/// The icon to display next to the textfield.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public string Icon { get; set; } = Icons.Material.Filled.AttachFile;
|
||||
public string Icon { get; set; } = AppIcons.FILE;
|
||||
|
||||
/// <summary>
|
||||
/// The color of the icon to use.
|
||||
@@ -135,7 +135,7 @@ public partial class ConfigurationFile : ConfigurationBaseCore
|
||||
if (path is null)
|
||||
{
|
||||
this.Logger.LogWarning("None of the {Count} dropped path(s) could be used as a file.", paths.Count);
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.Warning, DroppedFile.WarningFor(paths)));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.WARNING, DroppedFile.WarningFor(paths)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.FlexStart" Wrap="Wrap.NoWrap">
|
||||
@* MudTooltip.RootStyle is set as a workaround for issue -> https://github.com/MudBlazor/MudBlazor/issues/10882 *@
|
||||
<MudTooltip Text="@this.LockedTooltip()" Arrow="true" Placement="Placement.Right" RootStyle="display:inline-flex;">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Lock" Color="Color.Error" Size="Size.Small" Class="mr-1"/>
|
||||
<MudIcon Icon="@AppIcons.LOCK" Color="Color.Error" Size="Size.Small" Class="mr-1"/>
|
||||
</MudTooltip>
|
||||
@data.Name
|
||||
</MudStack>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<MudButton Variant="Variant.Outlined"
|
||||
Color="Color.Primary"
|
||||
Size="Size.Small"
|
||||
StartIcon="@Icons.Material.Filled.Edit"
|
||||
StartIcon="@AppIcons.EDIT"
|
||||
OnClick="@this.OpenDialog"
|
||||
Disabled="@this.IsDisabled"
|
||||
Class="mb-1">
|
||||
|
||||
@@ -27,7 +27,7 @@ public partial class ConfigurationShortcut : ConfigurationBaseCore
|
||||
/// The icon to display.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public string Icon { get; set; } = Icons.Material.Filled.Keyboard;
|
||||
public string Icon { get; set; } = AppIcons.KEYBOARD_SHORTCUT;
|
||||
|
||||
/// <summary>
|
||||
/// The color of the icon.
|
||||
|
||||
@@ -30,7 +30,7 @@ else
|
||||
TextChanged="@this.InternalUpdate"
|
||||
Disabled="@this.IsDisabled"
|
||||
Adornment="@(this.ResetButtonIconOnly ? Adornment.End : this.IconAdornment)"
|
||||
AdornmentIcon="@(this.ResetButtonIconOnly ? Icons.Material.Filled.Restore : this.Icon)"
|
||||
AdornmentIcon="@(this.ResetButtonIconOnly ? AppIcons.RESTORE_DEFAULT : this.Icon)"
|
||||
OnAdornmentClick="@this.ResetAdornmentClick"
|
||||
AdornmentAriaLabel="@(this.ResetButtonIconOnly ? this.ResetButtonText : null)"
|
||||
AdornmentColor="@this.IconColor"
|
||||
|
||||
@@ -23,7 +23,7 @@ public partial class ConfigurationText : ConfigurationBaseCore
|
||||
/// The icon to display next to the textfield, when it has a single line.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public string Icon { get; set; } = Icons.Material.Filled.Info;
|
||||
public string Icon { get; set; } = AppIcons.INFO;
|
||||
|
||||
/// <summary>
|
||||
/// Removes the default bottom margin when the field is part of a compact group.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@inherits MSGComponentBase
|
||||
|
||||
<MudTabs Elevation="0" Rounded="@true" ApplyEffectsToContainer="@true" Outlined="@true" TabPanelsClass="pa-4">
|
||||
<MudTabPanel Text="@T("Back up")" Icon="@Icons.Material.Filled.Archive" Disabled="@(this.isBusy || this.DataRestoreService.IsPreparing)">
|
||||
<MudTabPanel Text="@T("Back up")" Icon="@AppIcons.BACKUP" Disabled="@(this.isBusy || this.DataRestoreService.IsPreparing)">
|
||||
|
||||
<MudText Typo="Typo.body1" Class="mb-3">
|
||||
@T("Back up all your data into one file: your settings, chats, plugins, and the indexes of your data sources. Your API keys and passwords stay out of it. AI Studio keeps them in the secure storage of your OS.")
|
||||
@@ -15,7 +15,7 @@
|
||||
<MudText Typo="Typo.body2">
|
||||
@this.BackupProgressText
|
||||
</MudText>
|
||||
<MudButton Variant="Variant.Text" Color="Color.Error" StartIcon="@Icons.Material.Filled.Cancel" OnClick="@this.DataBackupService.Cancel">
|
||||
<MudButton Variant="Variant.Text" Color="Color.Error" StartIcon="@AppIcons.CANCEL" OnClick="@this.DataBackupService.Cancel">
|
||||
@T("Cancel")
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
@@ -25,7 +25,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<LockableButton Text="@T("Back up data")" Icon="@Icons.Material.Filled.Save" OnClickAsync="@this.StartBackupAsync" Disabled="@(() => this.isBusy)" IsLocked="@(() => !this.AllowBackup)" NoMargin="@true"/>
|
||||
<LockableButton Text="@T("Back up data")" Icon="@AppIcons.BACKUP" OnClickAsync="@this.StartBackupAsync" Disabled="@(() => this.isBusy)" IsLocked="@(() => !this.AllowBackup)" NoMargin="@true"/>
|
||||
|
||||
@if (this.DataBackupService.LastResult is { } backupResult)
|
||||
{
|
||||
@@ -63,7 +63,7 @@
|
||||
}
|
||||
|
||||
</MudTabPanel>
|
||||
<MudTabPanel Text="@T("Restore")" Icon="@Icons.Material.Filled.SettingsBackupRestore" Disabled="@(this.isBusy || this.DataBackupService.IsRunning)">
|
||||
<MudTabPanel Text="@T("Restore")" Icon="@AppIcons.RESTORE_BACKUP" Disabled="@(this.isBusy || this.DataBackupService.IsRunning)">
|
||||
|
||||
<MudText Typo="Typo.body1" Class="mb-3">
|
||||
@T("Restore a backup: replace all your data with those of the backup, e.g., on a new computer, or add only its chats to the chats you have.")
|
||||
@@ -77,7 +77,7 @@
|
||||
}
|
||||
|
||||
<MudStack Row="@true" AlignItems="@AlignItems.Center" Spacing="2" Class="mb-3">
|
||||
<LockableButton Text="@T("Choose backup")" Icon="@Icons.Material.Filled.FolderOpen" OnClickAsync="@this.ChooseArchiveAsync" Disabled="@(() => this.isBusy || this.DataRestoreService.IsPreparing)" IsLocked="@(() => !this.AllowRestore)" NoMargin="@true"/>
|
||||
<LockableButton Text="@T("Choose backup")" Icon="@AppIcons.BROWSE" OnClickAsync="@this.ChooseArchiveAsync" Disabled="@(() => this.isBusy || this.DataRestoreService.IsPreparing)" IsLocked="@(() => !this.AllowRestore)" NoMargin="@true"/>
|
||||
@if (!string.IsNullOrWhiteSpace(this.selectedArchivePath))
|
||||
{
|
||||
<MudText Typo="Typo.body2">
|
||||
@@ -130,14 +130,14 @@
|
||||
<MudText Typo="Typo.body2">
|
||||
@this.RestoreProgressText
|
||||
</MudText>
|
||||
<MudButton Variant="Variant.Text" Color="Color.Error" StartIcon="@Icons.Material.Filled.Cancel" OnClick="@this.DataRestoreService.Cancel">
|
||||
<MudButton Variant="Variant.Text" Color="Color.Error" StartIcon="@AppIcons.CANCEL" OnClick="@this.DataRestoreService.Cancel">
|
||||
@T("Cancel")
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@Icons.Material.Filled.RestorePage" OnClick="@this.StartRestoreAsync" Disabled="@(this.isBusy || !this.CanRestore)">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@AppIcons.RESTORE_BACKUP" OnClick="@this.StartRestoreAsync" Disabled="@(this.isBusy || !this.CanRestore)">
|
||||
@T("Replace all data")
|
||||
</MudButton>
|
||||
}
|
||||
@@ -172,7 +172,7 @@
|
||||
<MudText Typo="Typo.body2">
|
||||
@string.Format(T("Chat {0} of {1}"), this.importProgress.ProcessedChats + 1, this.importProgress.TotalChats)
|
||||
</MudText>
|
||||
<MudButton Variant="Variant.Text" Color="Color.Error" StartIcon="@Icons.Material.Filled.Cancel" OnClick="@this.CancelImport">
|
||||
<MudButton Variant="Variant.Text" Color="Color.Error" StartIcon="@AppIcons.CANCEL" OnClick="@this.CancelImport">
|
||||
@T("Cancel")
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
@@ -182,7 +182,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Download" OnClick="@this.StartImportAsync" Disabled="@(this.isBusy || !this.CanImport)">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@AppIcons.IMPORT" OnClick="@this.StartImportAsync" Disabled="@(this.isBusy || !this.CanImport)">
|
||||
@this.AddChatsText(backupPreview.Manifest.TotalChatCount)
|
||||
</MudButton>
|
||||
}
|
||||
|
||||
@@ -21,13 +21,13 @@
|
||||
@this.FolderName(location)
|
||||
</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.CopyPath(folder))" Style="min-width: 0; overflow-wrap: anywhere;">
|
||||
@folder
|
||||
</MudLink>
|
||||
<MudTooltip Text="@T("Open in your file manager")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.FolderOpen"
|
||||
<MudIconButton Icon="@AppIcons.FOLDER_OPEN"
|
||||
Size="Size.Medium"
|
||||
Disabled="@string.IsNullOrWhiteSpace(folder)"
|
||||
OnClick="@(() => this.OpenInFileManager(folder))"/>
|
||||
|
||||
@@ -104,7 +104,7 @@ public partial class DataFolders : MSGComponentBase
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(path))
|
||||
{
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.Folder, T("The folder is not known yet.")));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.FOLDER_OPEN, T("The folder is not known yet.")));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ public partial class DataFolders : MSGComponentBase
|
||||
catch (Exception e)
|
||||
{
|
||||
this.Logger.LogWarning(e, "Could not open the folder '{Path}' in the file manager.", path);
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.Folder, T("Could not open the folder.")));
|
||||
await this.MessageBus.SendError(new(AppIcons.FOLDER_OPEN, T("Could not open the folder.")));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -124,6 +124,6 @@ public partial class DataFolders : 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 folder: {0}"), issue)));
|
||||
await this.MessageBus.SendError(new(AppIcons.FOLDER_OPEN, string.Format(T("Could not open the folder: {0}"), issue)));
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
@inherits MSGComponentBase
|
||||
|
||||
<MudStack Row="true" Wrap="Wrap.Wrap">
|
||||
<MudMenu EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="@T("Add Data Source")" Color="Color.Primary" Variant="Variant.Filled" AnchorOrigin="Origin.TopLeft" TransformOrigin="Origin.BottomLeft">
|
||||
<MudMenu EndIcon="@AppIcons.DROPDOWN_MENU" Label="@T("Add Data Source")" Color="Color.Primary" Variant="Variant.Filled" AnchorOrigin="Origin.TopLeft" TransformOrigin="Origin.BottomLeft">
|
||||
<MudMenuItem OnClick="@(() => this.AddDataSource(DataSourceType.ERI_V1))">
|
||||
@T("External Data (ERI-Server v1)")
|
||||
</MudMenuItem>
|
||||
@@ -20,10 +20,10 @@
|
||||
@if (PreviewFeatures.PRE_MAILBOXES_2026.IsEnabled(this.SettingsManager))
|
||||
{
|
||||
@* Shown with a lock rather than left out, like the locked buttons for adding providers: *@
|
||||
<MudMenuItem OnClick="@this.AddMailbox" Disabled="@(!this.MayAddMailbox || !this.HasEmbeddingProvider)" Icon="@(this.MayAddMailbox ? null : Icons.Material.Filled.Lock)">
|
||||
<MudMenuItem OnClick="@this.AddMailbox" Disabled="@(!this.MayAddMailbox || !this.HasEmbeddingProvider)" Icon="@(this.MayAddMailbox ? null : AppIcons.LOCK)">
|
||||
@this.MailboxMenuText
|
||||
</MudMenuItem>
|
||||
}
|
||||
</MudMenu>
|
||||
<LockableButton Text="@T("Import Data Source")" IsLocked="@(() => !this.SettingsManager.ConfigurationData.App.CanImportConfigurationSnippet(PluginConfigurationObjectType.DATA_SOURCE))" Icon="@Icons.Material.Filled.FileDownload" OnClickAsync="@this.ImportERIDataSource" ButtonVariant="Variant.Outlined" NoMargin="true" />
|
||||
<LockableButton Text="@T("Import Data Source")" IsLocked="@(() => !this.SettingsManager.ConfigurationData.App.CanImportConfigurationSnippet(PluginConfigurationObjectType.DATA_SOURCE))" Icon="@AppIcons.IMPORT" OnClickAsync="@this.ImportERIDataSource" ButtonVariant="Variant.Outlined" NoMargin="true" />
|
||||
</MudStack>
|
||||
@@ -18,7 +18,7 @@
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween" Class="mb-3" Wrap="Wrap.Wrap">
|
||||
<MudTextSwitch Label="@T("Automatic local data source refresh")" Value="@this.SettingsManager.ConfigurationData.App.DataSourceIndexing.AutomaticRefresh" LabelOn="@(this.AreMailboxesEnabled ? T("Local data sources refresh when files change, mailboxes every 16 minutes.") : T("Local data sources refresh when files change."))" LabelOff="@T("Local data sources refresh only when triggered manually.")" ValueChanged="@this.AutomaticRefreshChanged"/>
|
||||
<MudTooltip Text="@T("Refresh all")">
|
||||
<MudIconButton Color="Color.Primary" Icon="@Icons.Material.Filled.Sync" Disabled="@(!this.HasRefreshableDataSources())" OnClick="@this.RefreshAllDataSources"/>
|
||||
<MudIconButton Color="Color.Primary" Icon="@AppIcons.REFRESH" Disabled="@(!this.HasRefreshableDataSources())" OnClick="@this.RefreshAllDataSources"/>
|
||||
</MudTooltip>
|
||||
</MudStack>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
{
|
||||
<MudTooltip Text="@this.GetIndexingStatusTooltip(embeddingStatus)">
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="1">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Circle" Color="@GetIndexingStatusColor(embeddingStatus)" Size="Size.Small" Style="width: 0.75rem; height: 0.75rem; flex-shrink: 0;"/>
|
||||
<MudIcon Icon="@AppIcons.STATUS_INDICATOR" Color="@GetIndexingStatusColor(embeddingStatus)" Size="Size.Small" Style="font-size: 0.75rem; flex-shrink: 0;"/>
|
||||
<MudText Typo="Typo.body2">@(embeddingStatus is null ? T("Not available") : string.Format(T("{0} of {1}"), embeddingStatus.IndexedDocuments.CompactCount(), embeddingStatus.TotalDocuments.CompactCount()))</MudText>
|
||||
</MudStack>
|
||||
</MudTooltip>
|
||||
@@ -82,7 +82,7 @@
|
||||
@if (context is IDataSource dataSource)
|
||||
{
|
||||
<MudTooltip Text="@T("Information")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Outlined.Info" OnClick="@(() => this.ShowInformation(dataSource))"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.INFO" OnClick="@(() => this.ShowInformation(dataSource))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
@*
|
||||
@@ -94,29 +94,29 @@
|
||||
@if (this.CanRepairDataSource(context))
|
||||
{
|
||||
<MudTooltip Text="@T("Repair this data source by indexing it anew")">
|
||||
<MudIconButton Color="Color.Warning" Icon="@Icons.Material.Filled.Build" OnClick="@(() => this.RepairDataSource(context))"/>
|
||||
<MudIconButton Color="Color.Warning" Icon="@AppIcons.REPAIR" OnClick="@(() => this.RepairDataSource(context))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
@if (context.IsEnterpriseConfiguration)
|
||||
{
|
||||
<MudTooltip Text="@T("This data source is managed by your organization.")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Business" Disabled="true"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.ORGANIZATION" Disabled="true"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudTooltip Text="@T("Edit")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Edit" OnClick="@(() => this.EditEntry(context))"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.EDIT" OnClick="@(() => this.EditEntry(context))"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@T("Refresh")">
|
||||
<MudIconButton Color="Color.Primary" Icon="@Icons.Material.Filled.Sync" Disabled="@(!this.CanRefreshDataSource(context))" OnClick="@(() => this.RefreshDataSource(context))"/>
|
||||
<MudIconButton Color="Color.Primary" Icon="@AppIcons.REFRESH" Disabled="@(!this.CanRefreshDataSource(context))" OnClick="@(() => this.RefreshDataSource(context))"/>
|
||||
</MudTooltip>
|
||||
@if (context is DataSourceERI_V1)
|
||||
{
|
||||
<AdminExportButton OnClick="@(() => this.ExportDataSource(context))" />
|
||||
}
|
||||
<MudTooltip Text="@T("Delete")">
|
||||
<MudIconButton Color="Color.Error" Icon="@Icons.Material.Filled.Delete" OnClick="@(() => this.DeleteEntry(context))"/>
|
||||
<MudIconButton Color="Color.Error" Icon="@AppIcons.DELETE" OnClick="@(() => this.DeleteEntry(context))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
</MudStack>
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
@if (this.MayAdd)
|
||||
{
|
||||
<MudStack Row="true" Wrap="Wrap.Wrap" Class="mt-3">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Warning" StartIcon="@Icons.Material.Filled.AddRoad" Disabled="@this.isAdding" OnClick="@this.AddEmbeddingProvider">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Warning" StartIcon="@AppIcons.ADD" Disabled="@this.isAdding" OnClick="@this.AddEmbeddingProvider">
|
||||
@T("Add Embedding")
|
||||
</MudButton>
|
||||
@if (this.MayImport)
|
||||
{
|
||||
<MudButton Variant="Variant.Outlined" Color="Color.Warning" StartIcon="@Icons.Material.Filled.FileDownload" Disabled="@this.isAdding" OnClick="@this.ImportEmbeddingProvider">
|
||||
<MudButton Variant="Variant.Outlined" Color="Color.Warning" StartIcon="@AppIcons.IMPORT" Disabled="@this.isAdding" OnClick="@this.ImportEmbeddingProvider">
|
||||
@T("Import Embedding")
|
||||
</MudButton>
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
{
|
||||
<div class="d-flex">
|
||||
<MudTooltip Text="@T("Select the data you want to use here.")" Placement="Placement.Top">
|
||||
<MudIconButton Icon="@AppIcons.DATABASE" Class="@this.PopoverButtonClasses" OnClick="@this.ToggleDataSourceSelection"/>
|
||||
<MudIconButton Icon="@AppIcons.DATA_SOURCE" Class="@this.PopoverButtonClasses" OnClick="@this.ToggleDataSourceSelection"/>
|
||||
</MudTooltip>
|
||||
|
||||
<MudPopover Open="@this.showDataSourceSelection" AnchorOrigin="Origin.TopLeft" TransformOrigin="Origin.BottomLeft" DropShadow="@true" Class="border-solid border-4 rounded-lg">
|
||||
@@ -19,7 +19,7 @@
|
||||
<PreviewBeta ChipClass=""/>
|
||||
<MudSpacer/>
|
||||
<MudTooltip Text="@T("Manage your data sources")" Placement="Placement.Top">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Settings" OnClick="@this.OpenSettingsDialog"/>
|
||||
<MudIconButton Icon="@AppIcons.SETTINGS" OnClick="@this.OpenSettingsDialog"/>
|
||||
</MudTooltip>
|
||||
</MudStack>
|
||||
</CardHeaderContent>
|
||||
@@ -38,10 +38,10 @@
|
||||
</MudJustifiedText>
|
||||
|
||||
<MudStack StretchItems="StretchItems.None" AlignItems="AlignItems.Start">
|
||||
<MudButton Variant="Variant.Filled" OnClick="this.OpenSettingsDialog" StartIcon="@Icons.Material.Filled.Settings">
|
||||
<MudButton Variant="Variant.Filled" OnClick="this.OpenSettingsDialog" StartIcon="@AppIcons.SETTINGS">
|
||||
@T("Manage Data Sources")
|
||||
</MudButton>
|
||||
<MudButton Variant="Variant.Filled" Href="https://mindworkai.org/#eri---external-retrieval-interface" Target="_blank" StartIcon="@Icons.Material.Filled.Settings">
|
||||
<MudButton Variant="Variant.Filled" Href="https://mindworkai.org/#eri---external-retrieval-interface" Target="_blank" StartIcon="@AppIcons.OPEN_EXTERNAL">
|
||||
@T("Read more about ERI")
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
@@ -118,7 +118,7 @@
|
||||
}
|
||||
|
||||
<MudExpansionPanels MultiExpansion="@false" Class="mt-3" Style="max-height: 14em;">
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.TouchApp" IconSize="Size.Small" HeaderTypo="Typo.subtitle1" HeaderClass="expansion-panel-header-compact" HeaderText="@T("Available Data Sources")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.MANUAL_SELECTION" IconSize="Size.Small" HeaderTypo="Typo.subtitle1" HeaderClass="expansion-panel-header-compact" HeaderText="@T("Available Data Sources")">
|
||||
<MudList T="IDataSource" Dense="@true" Class="data-source-rows" SelectionMode="MudBlazor.SelectionMode.SingleSelection" SelectedValues="@this.selectedDataSources" Style="max-height: 14em;">
|
||||
@foreach (var source in this.GetListedDataSources())
|
||||
{
|
||||
@@ -133,7 +133,7 @@
|
||||
*@
|
||||
@if (!this.IsSemanticSearchEffective && this.DataSourcesAISelected.Count > 0)
|
||||
{
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Filter" IconSize="Size.Small" HeaderTypo="Typo.subtitle1" HeaderClass="expansion-panel-header-compact" HeaderText="@T("AI-Selected Data Sources")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.AI_SELECTED_DATA_SOURCES" IconSize="Size.Small" HeaderTypo="Typo.subtitle1" HeaderClass="expansion-panel-header-compact" HeaderText="@T("AI-Selected Data Sources")">
|
||||
<MudList T="DataSourceAgentSelected" Dense="@true" Class="data-source-rows" SelectionMode="MudBlazor.SelectionMode.MultiSelection" ReadOnly="@true" SelectedValues="@this.GetSelectedDataSourcesWithAI()" Style="max-height: 14em;">
|
||||
@foreach (var source in this.DataSourcesAISelected)
|
||||
{
|
||||
@@ -147,7 +147,7 @@
|
||||
{
|
||||
<MudSpacer/>
|
||||
<MudTooltip Text="@internalSource.ConfidenceLevel.Name">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Security" Size="Size.Small" Class="confidence-icon" Style="@this.GetConfidenceIconStyle(internalSource)"/>
|
||||
<MudIcon Icon="@AppIcons.PROVIDER_CONFIDENCE" Size="Size.Small" Class="confidence-icon" Style="@this.GetConfidenceIconStyle(internalSource)"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
</MudStack>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<MudIcon Icon="@this.GetBlockedIcon()" Size="Size.Small" Color="@this.GetBlockedIconColor()" Style="flex-shrink: 0;"/>
|
||||
}
|
||||
<MudTooltip Text="@internalSource.ConfidenceLevel.Name">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Security" Size="Size.Small" Class="confidence-icon" Style="@this.GetConfidenceIconStyle(internalSource)"/>
|
||||
<MudIcon Icon="@AppIcons.PROVIDER_CONFIDENCE" Size="Size.Small" Class="confidence-icon" Style="@this.GetConfidenceIconStyle(internalSource)"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
</MudStack>
|
||||
|
||||
@@ -46,8 +46,8 @@ public partial class DataSourceSelectionRow : MSGComponentBase
|
||||
|
||||
private string GetBlockedIcon() => this.BlockReason switch
|
||||
{
|
||||
DataSourceBlockReason.NEEDS_REPAIR => Icons.Material.Filled.ReportProblem,
|
||||
_ => Icons.Material.Filled.HourglassTop,
|
||||
DataSourceBlockReason.NEEDS_REPAIR => AppIcons.WARNING,
|
||||
_ => AppIcons.PENDING,
|
||||
};
|
||||
|
||||
private Color GetBlockedIconColor() => this.BlockReason switch
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@using AIStudio.Settings.DataModel
|
||||
@inherits MSGComponentBase
|
||||
|
||||
<WorkspaceNameField WorkspaceName="@this.WorkspaceName" WorkspaceNameChanged="@this.SetWorkspaceName" SelectLabel="@T("Existing workspace (Optional)")" Label="@T("Workspace name (Optional)")" HelperText="@T("Choose an existing workspace or enter a name that should be created when the launcher is opened.")" AdornmentIcon="@(this.OpensTemporaryChat ? Icons.Material.Filled.Timer : Icons.Material.Filled.CreateNewFolder)" AdornmentIconSize="Size.Small" TextFieldClass="mb-1"/>
|
||||
<WorkspaceNameField WorkspaceName="@this.WorkspaceName" WorkspaceNameChanged="@this.SetWorkspaceName" SelectLabel="@T("Existing workspace (Optional)")" Label="@T("Workspace name (Optional)")" HelperText="@T("Choose an existing workspace or enter a name that should be created when the launcher is opened.")" AdornmentIcon="@(this.OpensTemporaryChat ? AppIcons.TEMPORARY_CHAT : AppIcons.NEW_FOLDER)" AdornmentIconSize="Size.Small" TextFieldClass="mb-1"/>
|
||||
|
||||
@* The tile behaves differently with and without a workspace, so the form says which of the two is
|
||||
chosen right now instead of only explaining that both are possible. *@
|
||||
@@ -16,7 +16,7 @@
|
||||
@string.Format(T("The chosen chat template keeps its chats in the workspace '{0}', so the tile opens its chat there instead. A workspace entered here wins over the one of the template."), templateWorkspaceName)
|
||||
</MudText>
|
||||
}
|
||||
<MudSelect T="string" Value="@this.ProviderId" ValueChanged="@this.SetProviderId" Label="@T("Chat provider")" Variant="Variant.Outlined" Margin="Margin.Dense" Class="mb-3 rounded-lg" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.SmartToy">
|
||||
<MudSelect T="string" Value="@this.ProviderId" ValueChanged="@this.SetProviderId" Label="@T("Chat provider")" Variant="Variant.Outlined" Margin="Margin.Dense" Class="mb-3 rounded-lg" Adornment="Adornment.Start" AdornmentIcon="@AppIcons.LLM_PROVIDER">
|
||||
<MudSelectItem T="string" Value="@string.Empty">@T("Use chat default")</MudSelectItem>
|
||||
@foreach (var provider in this.SettingsManager.GetConfidentProviders(Components.CHAT))
|
||||
{
|
||||
@@ -31,7 +31,7 @@
|
||||
@T("The chosen chat template preselects a provider of its own, and it wins over a selection made here as long as that provider can be used for chats.")
|
||||
</MudText>
|
||||
}
|
||||
<MudSelect T="string" Value="@this.ProfileId" ValueChanged="@this.SetProfileId" Label="@T("Chat profile")" Variant="Variant.Outlined" Margin="Margin.Dense" Class="mb-3 rounded-lg" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Person">
|
||||
<MudSelect T="string" Value="@this.ProfileId" ValueChanged="@this.SetProfileId" Label="@T("Chat profile")" Variant="Variant.Outlined" Margin="Margin.Dense" Class="mb-3 rounded-lg" Adornment="Adornment.Start" AdornmentIcon="@AppIcons.PROFILE">
|
||||
<MudSelectItem T="string" Value="@string.Empty">@T("Use chat default")</MudSelectItem>
|
||||
<MudSelectItem T="string" Value="@Guid.Empty.ToString()">@T("Use no profile")</MudSelectItem>
|
||||
@foreach (var profile in this.SettingsManager.ConfigurationData.Profiles)
|
||||
@@ -45,7 +45,7 @@
|
||||
@T("The chosen chat template preselects a profile of its own, and it wins over a selection made here as long as that profile exists.")
|
||||
</MudText>
|
||||
}
|
||||
<MudSelect T="string" Value="@this.ChatTemplateId" ValueChanged="@this.SetChatTemplateId" Label="@T("Chat template")" Variant="Variant.Outlined" Margin="Margin.Dense" Class="mb-3 rounded-lg" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Article">
|
||||
<MudSelect T="string" Value="@this.ChatTemplateId" ValueChanged="@this.SetChatTemplateId" Label="@T("Chat template")" Variant="Variant.Outlined" Margin="Margin.Dense" Class="mb-3 rounded-lg" Adornment="Adornment.Start" AdornmentIcon="@AppIcons.CHAT_TEMPLATE">
|
||||
<MudSelectItem T="string" Value="@string.Empty">@T("Use chat default")</MudSelectItem>
|
||||
<MudSelectItem T="string" Value="@Guid.Empty.ToString()">@T("Use no chat template")</MudSelectItem>
|
||||
@foreach (var chatTemplate in this.SettingsManager.ConfigurationData.ChatTemplates)
|
||||
@@ -57,7 +57,7 @@
|
||||
selection made before stays with the launcher and counts once RAG is switched on again: *@
|
||||
@if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager))
|
||||
{
|
||||
<MudSelect T="string" Label="@T("Data sources (Optional)")" MultiSelection="@true" SelectedValues="@this.DataSourceIds" SelectedValuesChanged="@this.SetDataSourceIds" MultiSelectionTextFunc="@this.GetSelectedDataSourceText" Variant="Variant.Outlined" Margin="Margin.Dense" Class="mb-3 rounded-lg" Adornment="Adornment.Start" AdornmentIcon="@AppIcons.DATABASE">
|
||||
<MudSelect T="string" Label="@T("Data sources (Optional)")" MultiSelection="@true" SelectedValues="@this.DataSourceIds" SelectedValuesChanged="@this.SetDataSourceIds" MultiSelectionTextFunc="@this.GetSelectedDataSourceText" Variant="Variant.Outlined" Margin="Margin.Dense" Class="mb-3 rounded-lg" Adornment="Adornment.Start" AdornmentIcon="@AppIcons.DATA_SOURCE">
|
||||
@foreach (var dataSource in this.SettingsManager.ConfigurationData.DataSources)
|
||||
{
|
||||
<MudSelectItem T="string" Value="@dataSource.Id">@dataSource.Name</MudSelectItem>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
@if (this.CanEditSettings)
|
||||
{
|
||||
<MudTooltip Text="@T("Change what this tile opens")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Tune"
|
||||
<MudIconButton Icon="@AppIcons.LAUNCHER_SETTINGS"
|
||||
Color="Color.Default"
|
||||
Variant="Variant.Text"
|
||||
Size="Size.Medium"
|
||||
|
||||
@@ -56,7 +56,7 @@ public partial class DirectChatLauncherSettingsAction : MSGComponentBase
|
||||
return;
|
||||
|
||||
this.Logger.LogInformation("The chat launcher '{PluginName}' ({PluginId}) has been updated from its tile.", result.PluginName, result.PluginId);
|
||||
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)));
|
||||
|
||||
// Saving already ran LoadAll, which announced PLUGINS_RELOADED. We still announce the
|
||||
// configuration change: with automatic audits enabled, the dialog stored an audit result:
|
||||
|
||||
@@ -33,10 +33,10 @@ namespace AIStudio.Components
|
||||
public Func<string, string?> ValidateSelection { get; set; } = _ => null;
|
||||
|
||||
[Parameter]
|
||||
public string OpenIcon { get; set; } = Icons.Material.Filled.ArrowDropDown;
|
||||
public string OpenIcon { get; set; } = AppIcons.EXPAND_MORE;
|
||||
|
||||
[Parameter]
|
||||
public string CloseIcon { get; set; } = Icons.Material.Filled.ArrowDropUp;
|
||||
public string CloseIcon { get; set; } = AppIcons.EXPAND_LESS;
|
||||
|
||||
[Parameter]
|
||||
public Color IconColor { get; set; } = Color.Default;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@inherits MSGComponentBase
|
||||
|
||||
<MudStack Row="@true" AlignItems="@AlignItems.Center" Spacing="1">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Timer" Size="Size.Small"/>
|
||||
<MudIcon Icon="@AppIcons.ELAPSED_TIME" Size="Size.Small"/>
|
||||
<MudText Typo="Typo.body2">
|
||||
@Format(DateTimeOffset.Now - this.Start)
|
||||
</MudText>
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<MudText Typo="Typo.body1" Class="@this.Class">
|
||||
<div style="display: flex; align-items: center; gap: 8px;">
|
||||
<MudIcon Icon="@Icons.Material.Filled.ArrowRightAlt"/>
|
||||
<MudIcon Icon="@AppIcons.INFO_ROW"/>
|
||||
@if (this.IsConfigured)
|
||||
{
|
||||
<MudIcon Icon="@Icons.Material.Filled.CheckCircle" Color="Color.Success" Size="Size.Small"/>
|
||||
<MudIcon Icon="@AppIcons.SUCCESS" Color="Color.Success" Size="Size.Small"/>
|
||||
<span>@this.ConfiguredText</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudIcon Icon="@Icons.Material.Filled.Cancel" Color="Color.Error" Size="Size.Small"/>
|
||||
<MudIcon Icon="@AppIcons.WARNING" Color="Color.Error" Size="Size.Small"/>
|
||||
<span>@this.NotConfiguredText</span>
|
||||
}
|
||||
</div>
|
||||
|
||||
@@ -37,7 +37,7 @@ public partial class EnumSelection<T> : EnumSelectionBase where T : struct, Enum
|
||||
public Func<string, string?> ValidateOther { get; set; } = _ => null;
|
||||
|
||||
[Parameter]
|
||||
public string Icon { get; set; } = Icons.Material.Filled.ArrowDropDown;
|
||||
public string Icon { get; set; } = AppIcons.EXPAND_MORE;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets whether the selection controls are disabled.
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace AIStudio.Components;
|
||||
public partial class ExpansionPanel : ComponentBase
|
||||
{
|
||||
[Parameter]
|
||||
public string HeaderIcon { get; set; } = Icons.Material.Filled.BugReport;
|
||||
public string HeaderIcon { get; set; } = AppIcons.BUG;
|
||||
|
||||
[Parameter]
|
||||
public Size IconSize { get; set; } = Size.Medium;
|
||||
@@ -55,7 +55,7 @@ public partial class ExpansionPanel : ComponentBase
|
||||
public Func<ValueTask> EndButtonClickAsync { get; set; } = () => ValueTask.CompletedTask;
|
||||
|
||||
[Parameter]
|
||||
public string EndButtonIcon { get; set; } = Icons.Material.Filled.Delete;
|
||||
public string EndButtonIcon { get; set; } = AppIcons.DELETE;
|
||||
|
||||
[Parameter]
|
||||
public Color EndButtonColor { get; set; } = Color.Error;
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
@if (this.ShowCopy)
|
||||
{
|
||||
<MudTooltip Text="@string.Format(T("Copy the address: {0}"), this.Path)" Placement="@this.TooltipPlacement">
|
||||
<MudIconButton Icon="@Icons.Material.Outlined.ContentCopy" Size="Size.Small" Class="icon-button-compact" OnClick="@this.CopyPath"/>
|
||||
<MudIconButton Icon="@AppIcons.COPY" Size="Size.Small" Class="icon-button-compact" OnClick="@this.CopyPath"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
|
||||
@if (this.ShowOpen)
|
||||
{
|
||||
<MudTooltip Text="@T("Open this web page in your browser")" Placement="@this.TooltipPlacement" ShowOnFocus="@false">
|
||||
<MudIconButton Icon="@Icons.Material.Outlined.OpenInNew" Size="Size.Small" Class="icon-button-compact" Href="@this.Path" Target="_blank"/>
|
||||
<MudIconButton Icon="@AppIcons.OPEN_EXTERNAL" Size="Size.Small" Class="icon-button-compact" Href="@this.Path" Target="_blank"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
break;
|
||||
@@ -27,7 +27,7 @@
|
||||
@if (this.ShowCopy)
|
||||
{
|
||||
<MudTooltip Text="@string.Format(T("Copy the path: {0}"), this.Path)" Placement="@this.TooltipPlacement">
|
||||
<MudIconButton Icon="@Icons.Material.Outlined.ContentCopy" Size="Size.Small" Class="icon-button-compact" OnClick="@this.CopyPath"/>
|
||||
<MudIconButton Icon="@AppIcons.COPY" Size="Size.Small" Class="icon-button-compact" OnClick="@this.CopyPath"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
{
|
||||
@* Not necessarily gone: the server of an ERI data source may name a file of its own, which was never on this computer. *@
|
||||
<MudTooltip Text="@string.Format(T("AI Studio cannot find the file {0} on this computer. It may have been moved, renamed, or deleted, or it is on another computer, such as the server of a data source."), this.Path)" Placement="@this.TooltipPlacement">
|
||||
<MudIcon Icon="@Icons.Material.Outlined.WarningAmber" Color="Color.Warning" Size="Size.Small" Class="file-action-warning"/>
|
||||
<MudIcon Icon="@AppIcons.WARNING" Color="Color.Warning" Size="Size.Small" Class="file-action-warning"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
}
|
||||
@@ -47,14 +47,14 @@
|
||||
@if (this.ShowFileManager)
|
||||
{
|
||||
<MudTooltip Text="@T("Show this file in the file manager of your system")" Placement="@this.TooltipPlacement" ShowOnFocus="@false">
|
||||
<MudIconButton Icon="@Icons.Material.Outlined.FolderOpen" Size="Size.Small" Class="icon-button-compact" OnClick="@this.ShowInFileManager"/>
|
||||
<MudIconButton Icon="@AppIcons.FOLDER_OPEN" Size="Size.Small" Class="icon-button-compact" OnClick="@this.ShowInFileManager"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
|
||||
@if (this.ShowOpen)
|
||||
{
|
||||
<MudTooltip Text="@GetOpenTooltip(this.PageNumber)" Placement="@this.TooltipPlacement" ShowOnFocus="@false">
|
||||
<MudIconButton Icon="@Icons.Material.Outlined.OpenInNew" Size="Size.Small" Class="icon-button-compact" OnClick="@this.Open"/>
|
||||
<MudIconButton Icon="@AppIcons.OPEN_EXTERNAL" Size="Size.Small" Class="icon-button-compact" OnClick="@this.Open"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
@if (this.ShowHelp)
|
||||
{
|
||||
<MudTooltip Text="@T("Exclusion help and examples")" RootStyle="display: inline-flex;">
|
||||
<MudIconButton Icon="@Icons.Material.Outlined.HelpOutline" Color="@(this.showHelp ? Color.Info : Color.Default)" OnClick="@this.ToggleHelp" aria-label="@T("Exclusion help and examples")" aria-expanded="@(this.showHelp ? "true" : "false")"/>
|
||||
<MudIconButton Icon="@AppIcons.HELP" Color="@(this.showHelp ? Color.Info : Color.Default)" OnClick="@this.ToggleHelp" aria-label="@T("Exclusion help and examples")" aria-expanded="@(this.showHelp ? "true" : "false")"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
</MudStack>
|
||||
|
||||
<MudStack Spacing="1">
|
||||
<MudTextField T="string" InputId="@this.folderInputId" Text="@this.state.FolderText" TextChanged="@this.ChangeFoldersAsync" Immediate="@true" Disabled="@this.Disabled" Label="@T("Folders")" Lines="1" Sizing="InputSizing.Auto" MaxLines="@FilePatternSelection.MAX_FIELD_LINES" Class="pattern-text-field" Variant="Variant.Outlined" Margin="Margin.Dense" Validation="@FileExclusions.ValidateFolders" UserAttributes="@INPUT_ATTRIBUTES" Placeholder="node_modules/;bin/;cmake-build-*/" Adornment="@(this.ShowReset ? Adornment.End : Adornment.None)" AdornmentIcon="@Icons.Material.Filled.Restore" OnAdornmentClick="@(() => this.RestoreDefaultsAsync(true))" AdornmentAriaLabel="@this.FolderRestoreLabel"/>
|
||||
<MudTextField T="string" InputId="@this.fileInputId" Text="@this.state.FileText" TextChanged="@this.ChangeFilesAsync" Immediate="@true" Disabled="@this.Disabled" Label="@T("Files")" Lines="1" Sizing="InputSizing.Auto" MaxLines="@FilePatternSelection.MAX_FIELD_LINES" Class="pattern-text-field" Variant="Variant.Outlined" Margin="Margin.Dense" Validation="@FileExclusions.ValidateFiles" UserAttributes="@INPUT_ATTRIBUTES" Placeholder="*.min.js;*.webm;draft-*" Adornment="@(this.ShowReset ? Adornment.End : Adornment.None)" AdornmentIcon="@Icons.Material.Filled.Restore" OnAdornmentClick="@(() => this.RestoreDefaultsAsync(false))" AdornmentAriaLabel="@this.FileRestoreLabel"/>
|
||||
<MudTextField T="string" InputId="@this.folderInputId" Text="@this.state.FolderText" TextChanged="@this.ChangeFoldersAsync" Immediate="@true" Disabled="@this.Disabled" Label="@T("Folders")" Lines="1" Sizing="InputSizing.Auto" MaxLines="@FilePatternSelection.MAX_FIELD_LINES" Class="pattern-text-field" Variant="Variant.Outlined" Margin="Margin.Dense" Validation="@FileExclusions.ValidateFolders" UserAttributes="@INPUT_ATTRIBUTES" Placeholder="node_modules/;bin/;cmake-build-*/" Adornment="@(this.ShowReset ? Adornment.End : Adornment.None)" AdornmentIcon="@AppIcons.RESTORE_DEFAULT" OnAdornmentClick="@(() => this.RestoreDefaultsAsync(true))" AdornmentAriaLabel="@this.FolderRestoreLabel"/>
|
||||
<MudTextField T="string" InputId="@this.fileInputId" Text="@this.state.FileText" TextChanged="@this.ChangeFilesAsync" Immediate="@true" Disabled="@this.Disabled" Label="@T("Files")" Lines="1" Sizing="InputSizing.Auto" MaxLines="@FilePatternSelection.MAX_FIELD_LINES" Class="pattern-text-field" Variant="Variant.Outlined" Margin="Margin.Dense" Validation="@FileExclusions.ValidateFiles" UserAttributes="@INPUT_ATTRIBUTES" Placeholder="*.min.js;*.webm;draft-*" Adornment="@(this.ShowReset ? Adornment.End : Adornment.None)" AdornmentIcon="@AppIcons.RESTORE_DEFAULT" OnAdornmentClick="@(() => this.RestoreDefaultsAsync(false))" AdornmentAriaLabel="@this.FileRestoreLabel"/>
|
||||
</MudStack>
|
||||
|
||||
<MudText Typo="Typo.caption" Class="mud-text-secondary mt-1">@T("These files and folders are left out, even when a file pattern selects them. Separate entries with a semicolon or a line break. End an entry with a slash to exclude every folder of that name, e.g., node_modules/.")</MudText>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
@this.AllowedContent
|
||||
</div>
|
||||
<MudTooltip Text="@T("Pattern help and examples")" RootStyle="display: inline-flex;">
|
||||
<MudIconButton Icon="@Icons.Material.Outlined.HelpOutline" Color="@(this.showHelp ? Color.Info : Color.Default)" OnClick="@this.ToggleHelp" aria-label="@T("Pattern help and examples")" aria-expanded="@(this.showHelp ? "true" : "false")"/>
|
||||
<MudIconButton Icon="@AppIcons.HELP" Color="@(this.showHelp ? Color.Info : Color.Default)" OnClick="@this.ToggleHelp" aria-label="@T("Pattern help and examples")" aria-expanded="@(this.showHelp ? "true" : "false")"/>
|
||||
</MudTooltip>
|
||||
</div>
|
||||
@if (this.HasExclusions)
|
||||
|
||||
@@ -16,7 +16,7 @@ public partial class InfoTableRow : ComponentBase
|
||||
/// The icon in front of the label.
|
||||
/// </summary>
|
||||
[Parameter]
|
||||
public string Icon { get; set; } = Icons.Material.Filled.Info;
|
||||
public string Icon { get; set; } = AppIcons.INFO;
|
||||
|
||||
/// <summary>
|
||||
/// The label, which names what the row shows.
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<MudList T="string">
|
||||
@foreach (var issue in this.IssuesData)
|
||||
{
|
||||
<MudListItem Icon="@Icons.Material.Filled.Error" IconColor="Color.Error">
|
||||
<MudListItem Icon="@AppIcons.WARNING" IconColor="Color.Error">
|
||||
@issue
|
||||
</MudListItem>
|
||||
}
|
||||
|
||||
@@ -68,9 +68,9 @@ public partial class JsonTreeView : ComponentBase
|
||||
|
||||
private static string GetIcon(JsonNode? value) => value switch
|
||||
{
|
||||
JsonObject => Icons.Material.Filled.DataObject,
|
||||
JsonArray => Icons.Material.Filled.DataArray,
|
||||
_ => Icons.Material.Filled.Code,
|
||||
JsonObject => AppIcons.DATA_OBJECT,
|
||||
JsonArray => AppIcons.DATA_ARRAY,
|
||||
_ => AppIcons.DATA_VALUE,
|
||||
};
|
||||
|
||||
private sealed class JsonTreeNode
|
||||
|
||||
@@ -49,14 +49,14 @@ public partial class LayoutChoicePanels : ComponentBase
|
||||
|
||||
private static string IconOf(LayoutPurposeArea area) => area switch
|
||||
{
|
||||
LayoutPurposeArea.FRAMING => Icons.Material.Filled.FormatListNumbered,
|
||||
LayoutPurposeArea.GENERAL => Icons.Material.Filled.ViewQuilt,
|
||||
LayoutPurposeArea.TEACHING => Icons.Material.Filled.School,
|
||||
LayoutPurposeArea.BUSINESS => Icons.Material.Filled.BusinessCenter,
|
||||
LayoutPurposeArea.SCIENCE => Icons.Material.Filled.Science,
|
||||
LayoutPurposeArea.MEDICINE => Icons.Material.Filled.MedicalServices,
|
||||
LayoutPurposeArea.LAW => Icons.Material.Filled.Gavel,
|
||||
LayoutPurposeArea.FRAMING => AppIcons.SLIDE_LAYOUT_STRUCTURE,
|
||||
LayoutPurposeArea.GENERAL => AppIcons.LAYOUT_PURPOSE_GENERAL,
|
||||
LayoutPurposeArea.TEACHING => AppIcons.LAYOUT_PURPOSE_TEACHING,
|
||||
LayoutPurposeArea.BUSINESS => AppIcons.LAYOUT_PURPOSE_BUSINESS,
|
||||
LayoutPurposeArea.SCIENCE => AppIcons.LAYOUT_PURPOSE_SCIENCE,
|
||||
LayoutPurposeArea.MEDICINE => AppIcons.MEDICINE,
|
||||
LayoutPurposeArea.LAW => AppIcons.LEGAL,
|
||||
|
||||
_ => Icons.Material.Filled.ViewQuilt,
|
||||
_ => AppIcons.LAYOUT_PURPOSE_GENERAL,
|
||||
};
|
||||
}
|
||||
@@ -5,7 +5,7 @@ namespace AIStudio.Components;
|
||||
public partial class LockableButton : ConfigurationBaseCore
|
||||
{
|
||||
[Parameter]
|
||||
public string Icon { get; set; } = Icons.Material.Filled.Info;
|
||||
public string Icon { get; set; } = AppIcons.INFO;
|
||||
|
||||
[Parameter]
|
||||
public Func<Task> OnClickAsync { get; set; } = () => Task.CompletedTask;
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
MaxLength="@ImapMailboxConnector.MAX_FOLDER_NAME_LENGTH"
|
||||
HelperText="@this.NewFolderHelperText"
|
||||
Adornment="Adornment.Start"
|
||||
AdornmentIcon="@Icons.Material.Filled.CreateNewFolder"
|
||||
AdornmentIcon="@AppIcons.NEW_FOLDER"
|
||||
AdornmentColor="Color.Info"
|
||||
Variant="Variant.Outlined"/>
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@Icons.Material.Filled.CreateNewFolder" Disabled="@(!this.CanCreateFolder)" OnClick="@this.CreateNewFolder">
|
||||
<MudButton Variant="Variant.Filled" Color="Color.Primary" StartIcon="@AppIcons.NEW_FOLDER" Disabled="@(!this.CanCreateFolder)" OnClick="@this.CreateNewFolder">
|
||||
@T("Create")
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
|
||||
@@ -169,7 +169,7 @@ public partial class MailFolderPicker : MSGComponentBase
|
||||
{
|
||||
Value = string.Empty,
|
||||
Text = wholeMailboxText,
|
||||
Icon = Icons.Material.Filled.Mail,
|
||||
Icon = AppIcons.MAILBOX,
|
||||
Expanded = true,
|
||||
Expandable = topLevelFolders.Count > 0,
|
||||
Children = topLevelFolders,
|
||||
@@ -215,20 +215,20 @@ public partial class MailFolderPicker : MSGComponentBase
|
||||
private static string GetIcon(MailServerFolder folder)
|
||||
{
|
||||
if (folder.IsInbox)
|
||||
return Icons.Material.Filled.Inbox;
|
||||
return AppIcons.MAIL_FOLDER_INBOX;
|
||||
|
||||
return folder.SpecialUse switch
|
||||
{
|
||||
MailFolderSpecialUse.ALL => Icons.Material.Filled.AllInbox,
|
||||
MailFolderSpecialUse.ARCHIVE => Icons.Material.Filled.Archive,
|
||||
MailFolderSpecialUse.DRAFTS => Icons.Material.Filled.Drafts,
|
||||
MailFolderSpecialUse.FLAGGED => Icons.Material.Filled.Flag,
|
||||
MailFolderSpecialUse.IMPORTANT => Icons.Material.Filled.LabelImportant,
|
||||
MailFolderSpecialUse.JUNK => Icons.Material.Filled.Report,
|
||||
MailFolderSpecialUse.SENT => Icons.Material.Filled.Send,
|
||||
MailFolderSpecialUse.TRASH => Icons.Material.Filled.Delete,
|
||||
MailFolderSpecialUse.ALL => AppIcons.MAIL_FOLDER_ALL,
|
||||
MailFolderSpecialUse.ARCHIVE => AppIcons.MAIL_FOLDER_ARCHIVE,
|
||||
MailFolderSpecialUse.DRAFTS => AppIcons.DRAFT,
|
||||
MailFolderSpecialUse.FLAGGED => AppIcons.FLAGGED,
|
||||
MailFolderSpecialUse.IMPORTANT => AppIcons.MAIL_FOLDER_IMPORTANT,
|
||||
MailFolderSpecialUse.JUNK => AppIcons.MAIL_FOLDER_JUNK,
|
||||
MailFolderSpecialUse.SENT => AppIcons.MAIL_FOLDER_SENT,
|
||||
MailFolderSpecialUse.TRASH => AppIcons.MAIL_FOLDER_TRASH,
|
||||
|
||||
_ => Icons.Material.Filled.Folder,
|
||||
_ => AppIcons.FOLDER,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@
|
||||
@this.StatusText
|
||||
</MudText>
|
||||
<MudTooltip Text="@T("Stop media transcription")">
|
||||
<MudIconButton Size="Size.Small" Icon="@Icons.Material.Filled.Stop" Color="Color.Error" OnClick="@(async () => await this.MediaTranscriptionService.StopAsync(this.Owner))"/>
|
||||
<MudIconButton Size="Size.Small" Icon="@AppIcons.STOP" Color="Color.Error" OnClick="@(async () => await this.MediaTranscriptionService.StopAsync(this.Owner))"/>
|
||||
</MudTooltip>
|
||||
</MudStack>
|
||||
}
|
||||
@@ -26,7 +26,7 @@
|
||||
</MudText>
|
||||
<MudSpacer/>
|
||||
<MudTooltip Text="@T("Stop media transcription")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Stop" Color="Color.Error" OnClick="@(async () => await this.MediaTranscriptionService.StopAsync(this.Owner))"/>
|
||||
<MudIconButton Icon="@AppIcons.STOP" Color="Color.Error" OnClick="@(async () => await this.MediaTranscriptionService.StopAsync(this.Owner))"/>
|
||||
</MudTooltip>
|
||||
</MudStack>
|
||||
</MudPaper>
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<MudTooltip Text="@this.TooltipMessage" Placement="Placement.Bottom">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.ContentCopy" Size="@this.Size" OnClick="@(() => this.HandleCopyClick())"/>
|
||||
<MudIconButton Icon="@AppIcons.COPY" Size="@this.Size" OnClick="@(() => this.HandleCopyClick())"/>
|
||||
</MudTooltip>
|
||||
@@ -90,7 +90,7 @@ public partial class MudCopyClipboardButton : ComponentBase
|
||||
default:
|
||||
// This component is no MSGComponentBase, so it uses the shared bus instance the same
|
||||
// way FileExtensionValidation does:
|
||||
await MessageBus.INSTANCE.SendError(new(Icons.Material.Filled.ContentCopy, TB("Cannot copy this content type to clipboard.")));
|
||||
await MessageBus.INSTANCE.SendError(new(AppIcons.COPY, TB("Cannot copy this content type to clipboard.")));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ public partial class MudTextList : ComponentBase
|
||||
public IList<TextItem> Items { get; set; } = [];
|
||||
|
||||
[Parameter]
|
||||
public string Icon { get; set; } = Icons.Material.Filled.CheckCircle;
|
||||
public string Icon { get; set; } = AppIcons.CHECKLIST_ITEM;
|
||||
|
||||
[Parameter]
|
||||
public string Class { get; set; } = string.Empty;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@using AIStudio.Settings.DataModel
|
||||
@inherits MSGComponentBase
|
||||
|
||||
<MudSelect T="OutboundDataRestriction" Value="@this.Value" ValueChanged="@this.ValueChanged" Text="@this.Value.Name" Label="@this.Label" Class="mb-1" OpenIcon="@Icons.Material.Filled.ExpandMore" AdornmentColor="Color.Info" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Shield">
|
||||
<MudSelect T="OutboundDataRestriction" Value="@this.Value" ValueChanged="@this.ValueChanged" Text="@this.Value.Name" Label="@this.Label" Class="mb-1" OpenIcon="@AppIcons.EXPAND_MORE" AdornmentColor="Color.Info" Adornment="Adornment.Start" AdornmentIcon="@AppIcons.OUTBOUND_DATA_RESTRICTION">
|
||||
@foreach (var restriction in ConfigurationSelectDataFactory.GetOutboundDataRestrictionData(this.Minimum))
|
||||
{
|
||||
<MudSelectItem T="OutboundDataRestriction" Value="@restriction.Value">
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
@if (this.CanDelete)
|
||||
{
|
||||
<MudTooltip Text="@this.Tooltip">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.DeleteOutline"
|
||||
<MudIconButton Icon="@AppIcons.DELETE"
|
||||
Color="Color.Error"
|
||||
Variant="Variant.Text"
|
||||
Size="Size.Medium"
|
||||
|
||||
@@ -112,11 +112,11 @@ public partial class PluginDeleteAction : MSGComponentBase
|
||||
if (!result.Success)
|
||||
{
|
||||
this.Logger.LogError("Failed to delete {PluginType} plugin '{PluginName}' ({PluginId}) from '{PluginDirectory}' with issue '{Issue}'.", this.Plugin.Type, result.PluginName, result.PluginId, result.PluginDirectory, result.Issue);
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.DeleteForever, string.Format(this.T("The plugin '{0}' could not be deleted: {1}"), this.Plugin.Name, result.Issue)));
|
||||
await this.MessageBus.SendError(new(AppIcons.DELETE, string.Format(this.T("The plugin '{0}' could not be deleted: {1}"), this.Plugin.Name, result.Issue)));
|
||||
return;
|
||||
}
|
||||
|
||||
await this.MessageBus.SendSuccess(new(Icons.Material.Filled.Check, string.Format(this.T("The plugin '{0}' has been successfully removed."), result.PluginName)));
|
||||
await this.MessageBus.SendSuccess(new(AppIcons.SUCCESS, string.Format(this.T("The plugin '{0}' has been successfully removed."), result.PluginName)));
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
if (PluginLinks.IsMail(link))
|
||||
{
|
||||
<MudTooltip Text="@T("Send a mail")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Email" Href="@link.AbsoluteUri" Target="_blank" Size="@this.Size"/>
|
||||
<MudIconButton Icon="@AppIcons.EMAIL" Href="@link.AbsoluteUri" Target="_blank" Size="@this.Size"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudTooltip Text="@T("Open website")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.OpenInBrowser" Href="@link.AbsoluteUri" Target="_blank" Size="@this.Size"/>
|
||||
<MudIconButton Icon="@AppIcons.OPEN_EXTERNAL" Href="@link.AbsoluteUri" Target="_blank" Size="@this.Size"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
@inherits MSGComponentBase
|
||||
<MudTooltip Placement="Placement.Bottom" Arrow="@true" Class="@this.Classes">
|
||||
<ChildContent>
|
||||
<MudChip T="string" Icon="@Icons.Material.Filled.FirstPage" Color="Color.Error" Class="mb-3">
|
||||
<MudChip T="string" Icon="@AppIcons.PREVIEW_ALPHA" Color="Color.Error" Class="mb-3">
|
||||
@T("Alpha")
|
||||
</MudChip>
|
||||
</ChildContent>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@inherits MSGComponentBase
|
||||
<MudTooltip Placement="Placement.Bottom" Arrow="@true" Class="@this.Classes">
|
||||
<ChildContent>
|
||||
<MudChip T="string" Icon="@Icons.Material.Filled.HourglassTop" Color="Color.Info" Class="@this.ChipClass">
|
||||
<MudChip T="string" Icon="@AppIcons.PREVIEW_BETA" Color="Color.Info" Class="@this.ChipClass">
|
||||
@T("Beta")
|
||||
</MudChip>
|
||||
</ChildContent>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@inherits MSGComponentBase
|
||||
<MudTooltip Placement="Placement.Bottom" Arrow="@true" Class="@this.Classes">
|
||||
<ChildContent>
|
||||
<MudChip T="string" Icon="@Icons.Material.Filled.Science" Color="Color.Error" Class="mb-3">
|
||||
<MudChip T="string" Icon="@AppIcons.PREVIEW_EXPERIMENTAL" Color="Color.Error" Class="mb-3">
|
||||
@T("Experimental")
|
||||
</MudChip>
|
||||
</ChildContent>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@inherits MSGComponentBase
|
||||
<MudTooltip Placement="Placement.Bottom" Arrow="@true" Class="@this.Classes">
|
||||
<ChildContent>
|
||||
<MudChip T="string" Icon="@Icons.Material.Filled.HourglassBottom" Color="Color.Error" Class="mb-3">
|
||||
<MudChip T="string" Icon="@AppIcons.PREVIEW_PROTOTYPE" Color="Color.Error" Class="mb-3">
|
||||
@T("Prototype")
|
||||
</MudChip>
|
||||
</ChildContent>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@inherits MSGComponentBase
|
||||
<MudTooltip Placement="Placement.Bottom" Arrow="@true" Class="@this.Classes">
|
||||
<ChildContent>
|
||||
<MudChip T="string" Icon="@Icons.Material.Filled.VerifiedUser" Color="Color.Success" Class="mb-3">
|
||||
<MudChip T="string" Icon="@AppIcons.PREVIEW_RELEASE_CANDIDATE" Color="Color.Success" Class="mb-3">
|
||||
@T("Release Candidate")
|
||||
</MudChip>
|
||||
</ChildContent>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
@inherits MSGComponentBase
|
||||
|
||||
<MudStack Row="true" AlignItems="AlignItems.Baseline" StretchItems="StretchItems.Start" Class="mb-3" Wrap="Wrap.NoWrap">
|
||||
<MudSelect T="Profile" Strict="@true" Disabled="@this.Disabled" Value="@this.Profile" ValueChanged="@this.SelectionChanged" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Person4" Margin="Margin.Dense" Label="@T("Select one of your profiles")" Variant="Variant.Outlined" Class="mb-3" Validation="@this.Validation">
|
||||
<MudSelect T="Profile" Strict="@true" Disabled="@this.Disabled" Value="@this.Profile" ValueChanged="@this.SelectionChanged" Adornment="Adornment.Start" AdornmentIcon="@AppIcons.PROFILE" Margin="Margin.Dense" Label="@T("Select one of your profiles")" Variant="Variant.Outlined" Class="mb-3" Validation="@this.Validation">
|
||||
@foreach (var profile in this.SettingsManager.ConfigurationData.Profiles.GetAllProfiles())
|
||||
{
|
||||
<MudSelectItem Value="profile">
|
||||
@@ -11,5 +11,5 @@
|
||||
}
|
||||
</MudSelect>
|
||||
|
||||
<MudIconButton Disabled="@this.Disabled" Icon="@Icons.Material.Filled.Settings" OnClick="() => this.OpenSettingsDialog()"/>
|
||||
<MudIconButton Disabled="@this.Disabled" Icon="@AppIcons.SETTINGS" OnClick="() => this.OpenSettingsDialog()"/>
|
||||
</MudStack>
|
||||
@@ -1,21 +1,21 @@
|
||||
@using AIStudio.Settings
|
||||
@inherits MSGComponentBase
|
||||
<MudTooltip Text="@this.ToolTipText" Placement="Placement.Top">
|
||||
<MudMenu TransformOrigin="@Origin.BottomLeft" AnchorOrigin="Origin.TopLeft" StartIcon="@Icons.Material.Filled.Person4" EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="@this.CurrentProfile.Name" Variant="Variant.Filled" Color="Color.Default" Class="@this.MarginClass" Disabled="@this.Disabled" MaxHeight="@MenuDefaults.MAX_HEIGHT">
|
||||
<MudMenu TransformOrigin="@Origin.BottomLeft" AnchorOrigin="Origin.TopLeft" StartIcon="@AppIcons.PROFILE" EndIcon="@AppIcons.DROPDOWN_MENU" Label="@this.CurrentProfile.Name" Variant="Variant.Filled" Color="Color.Default" Class="@this.MarginClass" Disabled="@this.Disabled" MaxHeight="@MenuDefaults.MAX_HEIGHT">
|
||||
<ActivatorContent>
|
||||
@if (this.CurrentProfile != Profile.NO_PROFILE)
|
||||
{
|
||||
<MudButton IconSize="Size.Large" StartIcon="@Icons.Material.Filled.Person4" IconColor="Color.Default" OnClick="@context.ToggleAsync">
|
||||
<MudButton IconSize="Size.Large" StartIcon="@AppIcons.PROFILE" IconColor="Color.Default" OnClick="@context.ToggleAsync">
|
||||
@this.CurrentProfile.GetSafeName()
|
||||
</MudButton>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Person4" Color="Color.Default" OnClick="@context.ToggleAsync" />
|
||||
<MudIconButton Icon="@AppIcons.PROFILE" Color="Color.Default" OnClick="@context.ToggleAsync" />
|
||||
}
|
||||
</ActivatorContent>
|
||||
<ChildContent>
|
||||
<MudMenuItem Icon="@Icons.Material.Filled.Settings" Label="@T("Manage your profiles")" OnClick="@(async () => await this.OpenSettingsDialog())" />
|
||||
<MudMenuItem Icon="@AppIcons.SETTINGS" Label="@T("Manage your profiles")" OnClick="@(async () => await this.OpenSettingsDialog())" />
|
||||
<MudDivider/>
|
||||
@foreach (var profile in this.SettingsManager.ConfigurationData.Profiles.GetAllProfiles())
|
||||
{
|
||||
|
||||
@@ -51,9 +51,9 @@ public partial class ProfileSelection : MSGComponentBase
|
||||
private string ProfileIcon(Profile profile)
|
||||
{
|
||||
if (profile.IsEnterpriseConfiguration)
|
||||
return Icons.Material.Filled.Business;
|
||||
return AppIcons.ORGANIZATION;
|
||||
|
||||
return Icons.Material.Filled.Person4;
|
||||
return AppIcons.PROFILE;
|
||||
}
|
||||
|
||||
private async Task SelectionChanged(Profile profile)
|
||||
|
||||
@@ -104,21 +104,21 @@ public partial class ProviderSelection : MSGComponentBase
|
||||
List<CapabilityIcon> capabilityIcons = [];
|
||||
|
||||
if (profile.Has(Capability.AUDIO_INPUT))
|
||||
capabilityIcons.Add(new(Icons.Material.Filled.GraphicEq, this.T("Audio input possible")));
|
||||
capabilityIcons.Add(new(AppIcons.AUDIO_INPUT, this.T("Audio input possible")));
|
||||
|
||||
if (profile.HasAny(Capability.SINGLE_IMAGE_INPUT | Capability.MULTIPLE_IMAGE_INPUT))
|
||||
capabilityIcons.Add(new(Icons.Material.Filled.Image, this.T("Image input possible")));
|
||||
capabilityIcons.Add(new(AppIcons.IMAGE, this.T("Image input possible")));
|
||||
|
||||
if (profile.Has(Capability.SPEECH_INPUT))
|
||||
capabilityIcons.Add(new(Icons.Material.Filled.Mic, this.T("Speech input possible")));
|
||||
capabilityIcons.Add(new(AppIcons.MICROPHONE, this.T("Speech input possible")));
|
||||
|
||||
// The same check which decides whether a request offers tools, Semantic Search among them:
|
||||
if (provider.GetToolCallingAvailability().IsAvailable)
|
||||
capabilityIcons.Add(new(Icons.Material.Filled.Build, this.T("Tool calling possible")));
|
||||
capabilityIcons.Add(new(AppIcons.TOOL, this.T("Tool calling possible")));
|
||||
|
||||
var reasoningIndicatorState = provider.GetReasoningIndicatorState();
|
||||
if (reasoningIndicatorState is not ReasoningIndicatorState.NONE)
|
||||
capabilityIcons.Add(new(Icons.Material.Filled.Psychology, this.GetReasoningTooltip(reasoningIndicatorState)));
|
||||
capabilityIcons.Add(new(AppIcons.REASONING, this.GetReasoningTooltip(reasoningIndicatorState)));
|
||||
|
||||
return capabilityIcons;
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
@if (this.ShowAttachedDocumentState && this.hasLoadedFileContent)
|
||||
{
|
||||
<MudTooltip Text="@this.FileLoadedTooltip()">
|
||||
<MudBadge Icon="@Icons.Material.Filled.Check" Color="Color.Success" Overlap="true">
|
||||
<MudButton StartIcon="@Icons.Material.Filled.Description" OnClick="@(async () => await this.SelectFile())" Variant="Variant.Filled" Disabled="@this.IsUnavailable">
|
||||
<MudBadge Icon="@AppIcons.SUCCESS" Color="Color.Success" Overlap="true">
|
||||
<MudButton StartIcon="@AppIcons.DOCUMENT" OnClick="@(async () => await this.SelectFile())" Variant="Variant.Filled" Disabled="@this.IsUnavailable">
|
||||
@this.ButtonText
|
||||
</MudButton>
|
||||
</MudBadge>
|
||||
@@ -19,7 +19,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudButton StartIcon="@Icons.Material.Filled.Description" OnClick="@(async () => await this.SelectFile())" Variant="Variant.Filled" Disabled="@this.IsUnavailable">
|
||||
<MudButton StartIcon="@AppIcons.DOCUMENT" OnClick="@(async () => await this.SelectFile())" Variant="Variant.Filled" Disabled="@this.IsUnavailable">
|
||||
@this.ButtonText
|
||||
</MudButton>
|
||||
}
|
||||
@@ -43,8 +43,8 @@ else
|
||||
@if (this.ShowAttachedDocumentState && this.hasLoadedFileContent)
|
||||
{
|
||||
<MudTooltip Text="@this.FileLoadedTooltip()">
|
||||
<MudBadge Icon="@Icons.Material.Filled.Check" Color="Color.Success" Overlap="true">
|
||||
<MudButton StartIcon="@Icons.Material.Filled.Description" OnClick="@(async () => await this.SelectFile())" Variant="Variant.Filled" Disabled="@this.IsUnavailable">
|
||||
<MudBadge Icon="@AppIcons.SUCCESS" Color="Color.Success" Overlap="true">
|
||||
<MudButton StartIcon="@AppIcons.DOCUMENT" OnClick="@(async () => await this.SelectFile())" Variant="Variant.Filled" Disabled="@this.IsUnavailable">
|
||||
@this.ButtonText
|
||||
</MudButton>
|
||||
</MudBadge>
|
||||
@@ -52,7 +52,7 @@ else
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudButton StartIcon="@Icons.Material.Filled.Description" OnClick="@(async () => await this.SelectFile())" Variant="Variant.Filled" Disabled="@this.IsUnavailable">
|
||||
<MudButton StartIcon="@AppIcons.DOCUMENT" OnClick="@(async () => await this.SelectFile())" Variant="Variant.Filled" Disabled="@this.IsUnavailable">
|
||||
@this.ButtonText
|
||||
</MudButton>
|
||||
}
|
||||
|
||||
@@ -144,22 +144,22 @@ public partial class ReadFileContent : MSGComponentBase
|
||||
if (outcome.Failures.Count > 0)
|
||||
{
|
||||
var message = string.Join(Environment.NewLine, outcome.Failures.Select(failure => $"{failure.FileName}: {failure.UserMessage}"));
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.VoiceChat, message));
|
||||
await this.MessageBus.SendError(new(AppIcons.VOICE_TRANSCRIPTION, message));
|
||||
}
|
||||
else if (outcome.Status is MediaImportStatus.FAILED)
|
||||
{
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.VoiceChat, this.T("The media file could not be transcribed.")));
|
||||
await this.MessageBus.SendError(new(AppIcons.VOICE_TRANSCRIPTION, this.T("The media file could not be transcribed.")));
|
||||
}
|
||||
|
||||
if (outcome.Warnings.Count > 0)
|
||||
{
|
||||
var message = string.Join(Environment.NewLine, outcome.Warnings.Select(warning => $"{warning.FileName}: {warning.UserMessage}"));
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.VoiceChat, message));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.VOICE_TRANSCRIPTION, message));
|
||||
}
|
||||
|
||||
if (outcome.Status is MediaImportStatus.CANCELLED)
|
||||
{
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.VoiceChat, this.T("The media transcription was canceled.")));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.VOICE_TRANSCRIPTION, this.T("The media transcription was canceled.")));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,7 +218,7 @@ public partial class ReadFileContent : MSGComponentBase
|
||||
{
|
||||
this.Logger.LogWarning("Could not access {Count} dropped file(s): {Paths}", inaccessiblePaths.Count, string.Join(", ", inaccessiblePaths));
|
||||
await this.MessageBus.SendWarning(new(
|
||||
Icons.Material.Filled.Warning,
|
||||
AppIcons.WARNING,
|
||||
this.T("Some dropped files could not be accessed. Please select them with the file chooser instead.")));
|
||||
}
|
||||
|
||||
@@ -240,7 +240,7 @@ public partial class ReadFileContent : MSGComponentBase
|
||||
if (this.Filter is { Length: > 0 } && !FileTypes.IsAllowedPath(filePath, this.Filter))
|
||||
{
|
||||
this.Logger.LogWarning("Selected file does not match the configured file type filter: '{FilePath}'", filePath);
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.Warning, this.T("Please select a file with a supported file type.")));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.WARNING, this.T("Please select a file with a supported file type.")));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -273,7 +273,7 @@ public partial class ReadFileContent : MSGComponentBase
|
||||
catch (Exception ex)
|
||||
{
|
||||
this.Logger.LogError(ex, "Failed to load file content: {FilePath}", filePath);
|
||||
await MessageBus.INSTANCE.SendError(new(Icons.Material.Filled.Error, T("Failed to load file content")));
|
||||
await MessageBus.INSTANCE.SendError(new(AppIcons.ERROR, T("Failed to load file content")));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -291,7 +291,7 @@ public partial class ReadFileContent : MSGComponentBase
|
||||
if (string.IsNullOrWhiteSpace(this.SettingsManager.ConfigurationData.App.UseTranscriptionProvider))
|
||||
{
|
||||
await this.MessageBus.SendWarning(new(
|
||||
Icons.Material.Filled.VoiceChat,
|
||||
AppIcons.VOICE_TRANSCRIPTION,
|
||||
this.T("Media files require a configured transcription provider. Configure one in the transcription settings.")));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
</MudText>
|
||||
}
|
||||
<MudStack Row="@true" AlignItems="@AlignItems.Baseline" Class="mb-3">
|
||||
<MudTextField T="string" Label="@T("URL from which to load the content")" Value="@this.URL" ValueChanged="@this.URLValueChanged" Validation="@this.ValidateURL" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Link" Placeholder="https://..." HelperText="@T("Loads the content from your URL. Does not work when the content is hidden behind a paywall.")" Variant="Variant.Outlined" Immediate="@true" Disabled="@this.AgentIsRunning"/>
|
||||
<MudButton Disabled="@(!this.IsReady || this.AgentIsRunning)" Variant="Variant.Filled" Size="Size.Large" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Download" OnClick="@this.LoadFromWeb">
|
||||
<MudTextField T="string" Label="@T("URL from which to load the content")" Value="@this.URL" ValueChanged="@this.URLValueChanged" Validation="@this.ValidateURL" Adornment="Adornment.Start" AdornmentIcon="@AppIcons.LINK" Placeholder="https://..." HelperText="@T("Loads the content from your URL. Does not work when the content is hidden behind a paywall.")" Variant="Variant.Outlined" Immediate="@true" Disabled="@this.AgentIsRunning"/>
|
||||
<MudButton Disabled="@(!this.IsReady || this.AgentIsRunning)" Variant="Variant.Filled" Size="Size.Large" Color="Color.Primary" StartIcon="@AppIcons.DOWNLOAD" OnClick="@this.LoadFromWeb">
|
||||
@T("Fetch")
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
|
||||
@@ -168,7 +168,7 @@ public partial class ReadWebContent : MSGComponentBase
|
||||
// and without a word they would take the raw markdown -- navigation, cookie banner
|
||||
// and advertising included -- for the cleaned result.
|
||||
//
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.SettingsSuggest, T("The content was loaded, but not cleaned: no model is available for the content cleaner.")));
|
||||
await this.MessageBus.SendError(new(AppIcons.AGENT, T("The content was loaded, but not cleaned: no model is available for the content cleaner.")));
|
||||
}
|
||||
|
||||
if (this.PreselectContentCleanerAgent && this.providerSettings != AIStudio.Settings.Provider.NONE)
|
||||
@@ -219,7 +219,7 @@ public partial class ReadWebContent : MSGComponentBase
|
||||
// PDF rather than a page, a host that does not answer, a server refusing the request.
|
||||
//
|
||||
this.Logger.LogWarning(exception, "Could not load the web content from '{ProvidedUrl}'.", this.URL);
|
||||
await this.MessageBus.SendError(new(Icons.Material.Filled.CloudOff, string.Format(this.T("The content of '{0}' could not be loaded: {1}"), this.URL, exception.Message)));
|
||||
await this.MessageBus.SendError(new(AppIcons.PROVIDER_ERROR, string.Format(this.T("The content of '{0}' could not be loaded: {1}"), this.URL, exception.Message)));
|
||||
}
|
||||
|
||||
this.Content = markdown;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<MudStack Row="@true" Justify="Justify.FlexEnd" Class="@this.Class">
|
||||
<MudButton Variant="Variant.Text" Size="Size.Small" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Restore" Disabled="@this.Disabled" OnClick="@this.OnClick">
|
||||
<MudButton Variant="Variant.Text" Size="Size.Small" Color="Color.Primary" StartIcon="@AppIcons.RESTORE_DEFAULT" Disabled="@this.Disabled" OnClick="@this.OnClick">
|
||||
@this.Text
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
@@ -7,7 +7,7 @@
|
||||
Label="@this.Label"
|
||||
Placeholder="@this.Placeholder"
|
||||
Adornment="Adornment.Start"
|
||||
AdornmentIcon="@Icons.Material.Filled.VpnKey"
|
||||
AdornmentIcon="@AppIcons.KEY"
|
||||
AdornmentColor="Color.Info"
|
||||
InputType="@this.InputType"
|
||||
Immediate="true"
|
||||
|
||||
@@ -40,7 +40,7 @@ public partial class SecretInputField : MSGComponentBase
|
||||
|
||||
private InputType InputType => this.isSecretVisible ? InputType.Text : InputType.Password;
|
||||
|
||||
private string InputTypeIcon => this.isSecretVisible ? Icons.Material.Filled.Visibility : Icons.Material.Filled.VisibilityOff;
|
||||
private string InputTypeIcon => this.isSecretVisible ? AppIcons.VISIBLE : AppIcons.HIDDEN;
|
||||
|
||||
private string ToggleVisibilityTooltip => this.isSecretVisible ? T("Hide content") : T("Show content");
|
||||
|
||||
|
||||
@@ -25,12 +25,12 @@ else
|
||||
ReadOnly="@true"
|
||||
Validation="@this.Validation"
|
||||
Adornment="Adornment.Start"
|
||||
AdornmentIcon="@Icons.Material.Filled.Folder"
|
||||
AdornmentIcon="@AppIcons.FOLDER"
|
||||
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
||||
Variant="Variant.Outlined"
|
||||
/>
|
||||
|
||||
<MudButton StartIcon="@Icons.Material.Filled.FolderOpen" Variant="Variant.Outlined" Color="Color.Primary" Disabled="@(this.Disabled || this.isDirectoryDialogOpen)" OnClick="@this.OpenDirectoryDialog">
|
||||
<MudButton StartIcon="@AppIcons.BROWSE" Variant="Variant.Outlined" Color="Color.Primary" Disabled="@(this.Disabled || this.isDirectoryDialogOpen)" OnClick="@this.OpenDirectoryDialog">
|
||||
@T("Choose Directory")
|
||||
</MudButton>
|
||||
</MudStack>;
|
||||
|
||||
@@ -94,7 +94,7 @@ public partial class SelectDirectory : MSGComponentBase
|
||||
if (path is null)
|
||||
{
|
||||
this.Logger.LogWarning("None of the {Count} dropped path(s) could be used as a directory.", paths.Count);
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.Warning, DroppedFolder.WarningFor(paths)));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.WARNING, DroppedFolder.WarningFor(paths)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,12 +25,12 @@ else
|
||||
ReadOnly="@true"
|
||||
Validation="@this.Validation"
|
||||
Adornment="Adornment.Start"
|
||||
AdornmentIcon="@Icons.Material.Filled.AttachFile"
|
||||
AdornmentIcon="@AppIcons.FILE"
|
||||
UserAttributes="@SPELLCHECK_ATTRIBUTES"
|
||||
Variant="Variant.Outlined"
|
||||
/>
|
||||
|
||||
<MudButton StartIcon="@Icons.Material.Filled.FolderOpen" Variant="Variant.Outlined" Color="Color.Primary" Disabled="@(this.Disabled || this.isFileDialogOpen)" OnClick="@this.OpenFileDialog">
|
||||
<MudButton StartIcon="@AppIcons.BROWSE" Variant="Variant.Outlined" Color="Color.Primary" Disabled="@(this.Disabled || this.isFileDialogOpen)" OnClick="@this.OpenFileDialog">
|
||||
@T("Choose File")
|
||||
</MudButton>
|
||||
</MudStack>;
|
||||
|
||||
@@ -98,7 +98,7 @@ public partial class SelectFile : MSGComponentBase
|
||||
if (path is null)
|
||||
{
|
||||
this.Logger.LogWarning("None of the {Count} dropped path(s) could be used as a file.", paths.Count);
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.Warning, DroppedFile.WarningFor(paths)));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.WARNING, DroppedFile.WarningFor(paths)));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
@using AIStudio.Settings
|
||||
@inherits SettingsPanelBase
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Policy" HeaderText="@T("Agent: Security Audit for external Assistants")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.SECURITY_AUDIT" HeaderText="@T("Agent: Security Audit for external Assistants")">
|
||||
<MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg">
|
||||
<MudJustifiedText Typo="Typo.body1" Class="mb-3">
|
||||
@T("This Agent audits newly installed or updated external Plugin-Assistant for security risks before they are activated and stores the latest audit card until the plugin manifest changes.")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@inherits SettingsPanelBase
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.TextFields" HeaderText="@T("Agent: Text Content Cleaner Options")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.AGENT_CONTENT_CLEANER" HeaderText="@T("Agent: Text Content Cleaner Options")">
|
||||
<MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg">
|
||||
<MudJustifiedText Typo="Typo.body1" Class="mb-3">
|
||||
@T("Use Case: this agent is used to clean up text content. It extracts the main content, removes advertisements and other irrelevant things, and attempts to convert relative links into absolute links so that they can be used.")
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
@using AIStudio.Settings
|
||||
@inherits SettingsPanelBase
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.SelectAll" HeaderText="@T("Agent: Data Source Selection Options")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.AGENT_DATA_SOURCE_SELECTION" HeaderText="@T("Agent: Data Source Selection Options")">
|
||||
<MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg">
|
||||
<MudJustifiedText Typo="Typo.body1" Class="mb-3">
|
||||
@T("Use Case: this agent is used to select the appropriate data sources for the current prompt.")
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
@using AIStudio.Settings
|
||||
@inherits SettingsPanelBase
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Assessment" HeaderText="@T("Agent: Retrieval Context Validation Options")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.AGENT_RETRIEVAL_CONTEXT_VALIDATION" HeaderText="@T("Agent: Retrieval Context Validation Options")">
|
||||
<MudJustifiedText Typo="Typo.body1" Class="mb-3">
|
||||
@T("Use Case: this agent is used to validate any retrieval context of any retrieval process. Perhaps there are many of these retrieval contexts and you want to validate them all. Therefore, you might want to use a cheap and fast LLM for this job. When using a local or self-hosted LLM, look for a small (e.g. 3B) and fast model.")
|
||||
</MudJustifiedText>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
@using AIStudio.Tools.Rust
|
||||
@inherits SettingsPanelBase
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Apps" HeaderText="@T("App Options")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.APP" HeaderText="@T("App Options")">
|
||||
|
||||
<ConfigurationSelect OptionDescription="@T("Language behavior")" SelectedValue="@(() => this.SettingsManager.ConfigurationData.App.LanguageBehavior)" Data="@ConfigurationSelectDataFactory.GetLangBehaviorData()" SelectionUpdate="@(selectedValue => this.UpdateLangBehaviour(selectedValue).Observe(nameof(this.UpdateLangBehaviour)))" OptionHelp="@T("Select the language behavior for the app. The default is to use the system language. You might want to choose a language manually?")"/>
|
||||
@if (this.SettingsManager.ConfigurationData.App.LanguageBehavior is LangBehavior.MANUAL)
|
||||
@@ -70,7 +70,7 @@
|
||||
</MudLink>
|
||||
</MudJustifiedText>
|
||||
|
||||
<MudButton StartIcon="@Icons.Material.Filled.Key"
|
||||
<MudButton StartIcon="@AppIcons.KEY"
|
||||
Variant="Variant.Filled"
|
||||
Color="Color.Primary"
|
||||
Class="mb-6"
|
||||
@@ -85,7 +85,7 @@
|
||||
</MudText>
|
||||
|
||||
<ConfigurationOption OptionDescription="@T("Use additional root certificates for external HTTPS requests?")" LabelOn="@T("Additional root certificates are enabled")" LabelOff="@T("Additional root certificates are disabled")" State="@(() => this.SettingsManager.ConfigurationData.App.ExternalHttpCustomRootCertificatesEnabled)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.App.ExternalHttpCustomRootCertificatesEnabled = updatedState)" OptionHelp="@T("When enabled, AI Studio can trust root certificates from a configured PEM bundle for external HTTPS requests, such as self-hosted AI providers, embeddings, transcription, ERI data sources, and enterprise configuration downloads. Normal hostname and certificate validity checks still apply. Integrated cloud providers, such as OpenAI, Google, and others, will never use these additional certificates. Please note that you usually do not need this setting on macOS or Windows. If you use Linux with the AppImage version of MindWork AI Studio, you also do not need this option. A valid use case is a Linux environment where AI Studio runs from a Flatpak.")" IsLocked="() => ManagedConfiguration.TryGet(x => x.App, x => x.ExternalHttpCustomRootCertificatesEnabled, out var meta) && meta.IsLocked"/>
|
||||
<ConfigurationFile OptionDescription="@T("Root certificate bundle path")" Icon="@Icons.Material.Filled.Folder" Text="@(() => this.SettingsManager.ConfigurationData.App.ExternalHttpCustomRootCertificateBundlePath)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.App.ExternalHttpCustomRootCertificateBundlePath = updatedText)" FileDialogTitle="@T("Select a root certificate bundle")" Filter="@([FileTypes.CERTIFICATE_BUNDLE])" Disabled="@this.AreExternalHttpCustomRootCertificateDetailsDisabled" OptionHelp="@T("Path to a PEM file containing one or more root CA certificates. For Flatpak deployments, this file must be placed in a location that is readable inside the sandbox.")" IsLocked="() => ManagedConfiguration.TryGet(x => x.App, x => x.ExternalHttpCustomRootCertificateBundlePath, out var meta) && meta.IsLocked"/>
|
||||
<ConfigurationText OptionDescription="@T("Allowed hosts for additional root certificates")" Icon="@Icons.Material.Filled.Dns" NumLines="3" Text="@this.GetExternalHttpCustomRootCertificateAllowedHostsText" TextUpdate="@this.UpdateExternalHttpCustomRootCertificateAllowedHosts" Disabled="@this.AreExternalHttpCustomRootCertificateDetailsDisabled" OptionHelp="@T("Enter one host pattern per line. Exact hosts such as data.intra.example.org and one-label wildcards such as *.intra.example.org are supported. Cloud provider endpoints built into AI Studio, such as OpenAI, Google, etc., never use these additional root certificates.")" IsLocked="() => ManagedConfiguration.TryGet(x => x.App, x => x.ExternalHttpCustomRootCertificateAllowedHosts, out var meta) && meta.IsLocked"/>
|
||||
<ConfigurationFile OptionDescription="@T("Root certificate bundle path")" Icon="@AppIcons.CERTIFICATE" Text="@(() => this.SettingsManager.ConfigurationData.App.ExternalHttpCustomRootCertificateBundlePath)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.App.ExternalHttpCustomRootCertificateBundlePath = updatedText)" FileDialogTitle="@T("Select a root certificate bundle")" Filter="@([FileTypes.CERTIFICATE_BUNDLE])" Disabled="@this.AreExternalHttpCustomRootCertificateDetailsDisabled" OptionHelp="@T("Path to a PEM file containing one or more root CA certificates. For Flatpak deployments, this file must be placed in a location that is readable inside the sandbox.")" IsLocked="() => ManagedConfiguration.TryGet(x => x.App, x => x.ExternalHttpCustomRootCertificateBundlePath, out var meta) && meta.IsLocked"/>
|
||||
<ConfigurationText OptionDescription="@T("Allowed hosts for additional root certificates")" Icon="@AppIcons.SERVER" NumLines="3" Text="@this.GetExternalHttpCustomRootCertificateAllowedHostsText" TextUpdate="@this.UpdateExternalHttpCustomRootCertificateAllowedHosts" Disabled="@this.AreExternalHttpCustomRootCertificateDetailsDisabled" OptionHelp="@T("Enter one host pattern per line. Exact hosts such as data.intra.example.org and one-label wildcards such as *.intra.example.org are supported. Cloud provider endpoints built into AI Studio, such as OpenAI, Google, etc., never use these additional root certificates.")" IsLocked="() => ManagedConfiguration.TryGet(x => x.App, x => x.ExternalHttpCustomRootCertificateAllowedHosts, out var meta) && meta.IsLocked"/>
|
||||
}
|
||||
</ExpansionPanel>
|
||||
@@ -2,7 +2,7 @@
|
||||
@using AIStudio.Settings
|
||||
@inherits SettingsPanelBase
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Security" HeaderText="@T("Provider Confidence")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.PROVIDER_CONFIDENCE" HeaderText="@T("Provider Confidence")">
|
||||
<MudText Typo="Typo.h4" Class="mb-3">
|
||||
@T("Provider Confidence")
|
||||
</MudText>
|
||||
@@ -47,7 +47,7 @@
|
||||
}
|
||||
</MudTd>
|
||||
<MudTd Style="vertical-align: top;">
|
||||
<MudMenu StartIcon="@Icons.Material.Filled.Security" EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="@this.GetCurrentConfidenceLevelName(context)" Variant="Variant.Filled" Style="@this.SetCurrentConfidenceLevelColorStyle(context)" Disabled="@this.IsConfidenceLevelLocked(context)">
|
||||
<MudMenu StartIcon="@AppIcons.PROVIDER_CONFIDENCE" EndIcon="@AppIcons.DROPDOWN_MENU" Label="@this.GetCurrentConfidenceLevelName(context)" Variant="Variant.Filled" Style="@this.SetCurrentConfidenceLevelColorStyle(context)" Disabled="@this.IsConfidenceLevelLocked(context)">
|
||||
@foreach (var confidenceLevel in Enum.GetValues<ConfidenceLevel>().OrderBy(n => n))
|
||||
{
|
||||
if(confidenceLevel is ConfidenceLevel.NONE or ConfidenceLevel.UNKNOWN)
|
||||
|
||||
@@ -16,9 +16,9 @@ public partial class SettingsPanelConfidence : SettingsPanelBase
|
||||
private string SetCurrentConfidenceLevelColorStyle(LLMProviders llmProvider)
|
||||
{
|
||||
if (this.TryGetShownConfidenceLevel(llmProvider, out var level))
|
||||
return $"background-color: {level.GetColor(this.SettingsManager)};";
|
||||
return $"background-color: {level.GetBackgroundColor(this.SettingsManager)};";
|
||||
|
||||
return $"background-color: {ConfidenceLevel.UNKNOWN.GetColor(this.SettingsManager)};";
|
||||
return $"background-color: {ConfidenceLevel.UNKNOWN.GetBackgroundColor(this.SettingsManager)};";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
@if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager))
|
||||
{
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.DATABASE" HeaderText="@T("Configure Data Sources")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.DATA_SOURCE" HeaderText="@T("Configure Data Sources")">
|
||||
<PreviewBeta ApplyInnerScrollingFix="true"/>
|
||||
<DataSourceManagement/>
|
||||
<div class="mt-3 mb-6">
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
@if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager))
|
||||
{
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.IntegrationInstructions" HeaderText="@T("Configure Embedding Providers")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.EMBEDDING_PROVIDER" HeaderText="@T("Configure Embedding Providers")">
|
||||
<PreviewBeta ApplyInnerScrollingFix="true"/>
|
||||
<MudText Typo="Typo.h4" Class="mb-3">
|
||||
@T("Configured Embedding Providers")
|
||||
@@ -47,44 +47,44 @@
|
||||
@if (this.SettingsManager.IsProviderProhibited(context.UsedLLMProvider))
|
||||
{
|
||||
<MudTooltip Text="@T("The use of this embedding provider has been prohibited by your organization.")">
|
||||
<MudIconButton Color="Color.Error" Icon="@Icons.Material.Filled.Block" Disabled="true"/>
|
||||
<MudIconButton Color="Color.Error" Icon="@AppIcons.BLOCKED" Disabled="true"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
@if (context.IsTrustedForDataSourceSecurityChecks(this.SettingsManager))
|
||||
{
|
||||
<MudTooltip Text="@(context.IsSelfHosted ? T("This self-hosted embedding provider is trusted for data source security checks. Local data can be sent to it without security warnings.") : T("This embedding provider is trusted by your organization for data source security checks. Local data can be sent to it without security warnings."))">
|
||||
<MudIconButton Color="Color.Success" Icon="@Icons.Material.Filled.VerifiedUser" Disabled="true"/>
|
||||
<MudIconButton Color="Color.Success" Icon="@AppIcons.TRUSTED" Disabled="true"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
@if (context.IsEnterpriseConfiguration && !context.AllowUserProvidedAPIKey)
|
||||
{
|
||||
<MudTooltip Text="@T("This embedding provider is managed by your organization.")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Business" Disabled="true"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.ORGANIZATION" Disabled="true"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
else if (context.IsEnterpriseConfiguration && context.AllowUserProvidedAPIKey)
|
||||
{
|
||||
<MudTooltip Text="@T("This embedding provider is managed by your organization. You can set your own API key.")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Key" OnClick="@(() => this.EditEmbeddingProvider(context))"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.KEY" OnClick="@(() => this.EditEmbeddingProvider(context))"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@T("Test")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Api" OnClick="@(() => this.TestEmbeddingProvider(context))" Disabled="@this.SettingsManager.IsProviderProhibited(context.UsedLLMProvider)"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.TEST_PROVIDER" OnClick="@(() => this.TestEmbeddingProvider(context))" Disabled="@this.SettingsManager.IsProviderProhibited(context.UsedLLMProvider)"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudTooltip Text="@T("Open Dashboard")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.OpenInBrowser" Href="@context.UsedLLMProvider.DashboardURL" Target="_blank" Disabled="@(!context.UsedLLMProvider.HasDashboard)"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.OPEN_EXTERNAL" Href="@context.UsedLLMProvider.DashboardURL" Target="_blank" Disabled="@(!context.UsedLLMProvider.HasDashboard)"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@T("Edit")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Edit" OnClick="@(() => this.EditEmbeddingProvider(context))"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.EDIT" OnClick="@(() => this.EditEmbeddingProvider(context))"/>
|
||||
</MudTooltip>
|
||||
<AdminExportButton OnClick="@(() => this.ExportEmbeddingProvider(context))" />
|
||||
<MudTooltip Text="@T("Delete")">
|
||||
<MudIconButton Color="Color.Error" Icon="@Icons.Material.Filled.Delete" OnClick="@(() => this.DeleteEmbeddingProvider(context))"/>
|
||||
<MudIconButton Color="Color.Error" Icon="@AppIcons.DELETE" OnClick="@(() => this.DeleteEmbeddingProvider(context))"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@T("Test")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Api" OnClick="@(() => this.TestEmbeddingProvider(context))" Disabled="@this.SettingsManager.IsProviderProhibited(context.UsedLLMProvider)"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.TEST_PROVIDER" OnClick="@(() => this.TestEmbeddingProvider(context))" Disabled="@this.SettingsManager.IsProviderProhibited(context.UsedLLMProvider)"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
</MudStack>
|
||||
@@ -100,8 +100,8 @@
|
||||
}
|
||||
|
||||
<MudStack Row="true" Wrap="Wrap.Wrap" Class="mt-3 mb-6">
|
||||
<LockableButton Text="@T("Add Embedding")" IsLocked="@(() => !EmbeddingProviderSetup.MayAdd(this.SettingsManager))" Icon="@Icons.Material.Filled.AddRoad" OnClickAsync="@this.AddEmbeddingProvider" Class="flex-grow-0" NoMargin="true" />
|
||||
<LockableButton Text="@T("Import Embedding")" IsLocked="@(() => !EmbeddingProviderSetup.MayImport(this.SettingsManager))" Icon="@Icons.Material.Filled.FileDownload" OnClickAsync="@this.ImportEmbeddingProvider" ButtonVariant="Variant.Outlined" Class="flex-grow-0" NoMargin="true" />
|
||||
<LockableButton Text="@T("Add Embedding")" IsLocked="@(() => !EmbeddingProviderSetup.MayAdd(this.SettingsManager))" Icon="@AppIcons.ADD" OnClickAsync="@this.AddEmbeddingProvider" Class="flex-grow-0" NoMargin="true" />
|
||||
<LockableButton Text="@T("Import Embedding")" IsLocked="@(() => !EmbeddingProviderSetup.MayImport(this.SettingsManager))" Icon="@AppIcons.IMPORT" OnClickAsync="@this.ImportEmbeddingProvider" ButtonVariant="Variant.Outlined" Class="flex-grow-0" NoMargin="true" />
|
||||
</MudStack>
|
||||
</ExpansionPanel>
|
||||
}
|
||||
@@ -47,7 +47,7 @@ public abstract class SettingsPanelProviderBase : SettingsPanelBase
|
||||
else
|
||||
{
|
||||
// No encryption secret available - inform the user:
|
||||
await this.MessageBus.SendWarning(new(Icons.Material.Filled.Key, TB("Cannot export the encrypted API key: No enterprise encryption secret is configured.")));
|
||||
await this.MessageBus.SendWarning(new(AppIcons.KEY, TB("Cannot export the encrypted API key: No enterprise encryption secret is configured.")));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
@using AIStudio.Tools.PluginSystem
|
||||
@inherits SettingsPanelProviderBase
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Layers" HeaderText="@T("Configure LLM Providers")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.LLM_PROVIDER" HeaderText="@T("Configure LLM Providers")">
|
||||
<MudText Typo="Typo.h4" Class="mb-3">
|
||||
@T("Configured LLM Providers")
|
||||
</MudText>
|
||||
@@ -39,38 +39,38 @@
|
||||
@if (this.SettingsManager.IsProviderProhibited(context.UsedLLMProvider))
|
||||
{
|
||||
<MudTooltip Text="@T("The use of this provider has been prohibited by your organization.")">
|
||||
<MudIconButton Color="Color.Error" Icon="@Icons.Material.Filled.Block" Disabled="true"/>
|
||||
<MudIconButton Color="Color.Error" Icon="@AppIcons.BLOCKED" Disabled="true"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
@if (context.IsTrustedForDataSourceSecurityChecks(this.SettingsManager))
|
||||
{
|
||||
<MudTooltip Text="@(context.IsSelfHosted ? T("This self-hosted provider is trusted for data source security checks.") : T("This provider is trusted by your organization for data source security checks."))">
|
||||
<MudIconButton Color="Color.Success" Icon="@Icons.Material.Filled.VerifiedUser" Disabled="true"/>
|
||||
<MudIconButton Color="Color.Success" Icon="@AppIcons.TRUSTED" Disabled="true"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
@if (context.IsEnterpriseConfiguration && !context.AllowUserProvidedAPIKey)
|
||||
{
|
||||
<MudTooltip Text="@T("This provider is managed by your organization.")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Business" Disabled="true"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.ORGANIZATION" Disabled="true"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
else if (context.IsEnterpriseConfiguration && context.AllowUserProvidedAPIKey)
|
||||
{
|
||||
<MudTooltip Text="@T("This provider is managed by your organization. You can set your own API key.")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Key" OnClick="@(() => this.EditLLMProvider(context))"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.KEY" OnClick="@(() => this.EditLLMProvider(context))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudTooltip Text="@T("Open Dashboard")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.OpenInBrowser" Href="@context.UsedLLMProvider.DashboardURL" Target="_blank" Disabled="@(!context.UsedLLMProvider.HasDashboard)"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.OPEN_EXTERNAL" Href="@context.UsedLLMProvider.DashboardURL" Target="_blank" Disabled="@(!context.UsedLLMProvider.HasDashboard)"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@T("Edit")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Edit" OnClick="@(() => this.EditLLMProvider(context))"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.EDIT" OnClick="@(() => this.EditLLMProvider(context))"/>
|
||||
</MudTooltip>
|
||||
<AdminExportButton OnClick="@(() => this.ExportLLMProvider(context))" />
|
||||
<MudTooltip Text="@T("Delete")">
|
||||
<MudIconButton Color="Color.Error" Icon="@Icons.Material.Filled.Delete" OnClick="@(() => this.DeleteLLMProvider(context))"/>
|
||||
<MudIconButton Color="Color.Error" Icon="@AppIcons.DELETE" OnClick="@(() => this.DeleteLLMProvider(context))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
</MudStack>
|
||||
@@ -86,7 +86,7 @@
|
||||
}
|
||||
|
||||
<MudStack Row="true" Wrap="Wrap.Wrap" Class="mt-3 mb-6">
|
||||
<LockableButton Text="@T("Add Provider")" IsLocked="@(() => !this.SettingsManager.ConfigurationData.App.AllowUserToAddProvider || !this.SettingsManager.ConfigurationData.App.AllowUserToAddLLMProvider)" Icon="@Icons.Material.Filled.AddRoad" OnClickAsync="@this.AddLLMProvider" Class="flex-grow-0" NoMargin="true" />
|
||||
<LockableButton Text="@T("Import Provider")" IsLocked="@(() => !this.SettingsManager.ConfigurationData.App.CanImportConfigurationSnippet(PluginConfigurationObjectType.LLM_PROVIDER))" Icon="@Icons.Material.Filled.FileDownload" OnClickAsync="@this.ImportProvider" ButtonVariant="Variant.Outlined" Class="flex-grow-0" NoMargin="true" />
|
||||
<LockableButton Text="@T("Add Provider")" IsLocked="@(() => !this.SettingsManager.ConfigurationData.App.AllowUserToAddProvider || !this.SettingsManager.ConfigurationData.App.AllowUserToAddLLMProvider)" Icon="@AppIcons.ADD" OnClickAsync="@this.AddLLMProvider" Class="flex-grow-0" NoMargin="true" />
|
||||
<LockableButton Text="@T("Import Provider")" IsLocked="@(() => !this.SettingsManager.ConfigurationData.App.CanImportConfigurationSnippet(PluginConfigurationObjectType.LLM_PROVIDER))" Icon="@AppIcons.IMPORT" OnClickAsync="@this.ImportProvider" ButtonVariant="Variant.Outlined" Class="flex-grow-0" NoMargin="true" />
|
||||
</MudStack>
|
||||
</ExpansionPanel>
|
||||
@@ -1,6 +1,6 @@
|
||||
@inherits SettingsPanelBase
|
||||
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Build" HeaderText="@T("Tool Settings")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.TOOL" HeaderText="@T("Tool Settings")">
|
||||
<MudText Typo="Typo.body1" Class="mb-4">
|
||||
@T("Configure global settings for each tool.") @T("Switch off the tools you never need: they then appear in no tool selection, and the AI cannot use them.")
|
||||
</MudText>
|
||||
@@ -31,7 +31,7 @@
|
||||
<MudText Typo="Typo.body2">@context.Description</MudText>
|
||||
</MudTd>
|
||||
<MudTd>
|
||||
<MudMenu StartIcon="@Icons.Material.Filled.Security" EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="@this.GetCurrentConfidenceLevelName(context)" Variant="Variant.Filled" Style="@this.SetCurrentConfidenceLevelColorStyle(context)" Disabled="@this.IsToolConfidenceManaged()">
|
||||
<MudMenu StartIcon="@AppIcons.PROVIDER_CONFIDENCE" EndIcon="@AppIcons.DROPDOWN_MENU" Label="@this.GetCurrentConfidenceLevelName(context)" Variant="Variant.Filled" Style="@this.SetCurrentConfidenceLevelColorStyle(context)" Disabled="@this.IsToolConfidenceManaged()">
|
||||
@foreach (var confidenceLevel in this.GetSelectableConfidenceLevels())
|
||||
{
|
||||
<MudMenuItem OnClick="@(async () => await this.ChangeMinimumProviderConfidence(context, confidenceLevel))">
|
||||
@@ -45,30 +45,30 @@
|
||||
{
|
||||
@* Whether its settings are complete does not matter while nobody can use the tool: *@
|
||||
<MudTooltip Text="@T("You switched off this tool. It appears in no tool selection, and the AI cannot use it.")">
|
||||
<MudIcon Icon="@Icons.Material.Filled.VisibilityOff" Color="Color.Default" />
|
||||
<MudIcon Icon="@AppIcons.HIDDEN" Color="Color.Default" />
|
||||
</MudTooltip>
|
||||
}
|
||||
else if (!context.IsActive)
|
||||
{
|
||||
<MudTooltip Text="@T("This tool has been disabled by your organization.")">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Lock" Color="Color.Error" />
|
||||
<MudIcon Icon="@AppIcons.LOCK" Color="Color.Error" />
|
||||
</MudTooltip>
|
||||
}
|
||||
else if (context.ConfigurationState.IsConfigured)
|
||||
{
|
||||
<MudIcon Icon="@Icons.Material.Filled.CheckCircle" Color="Color.Success" />
|
||||
<MudIcon Icon="@AppIcons.SUCCESS" Color="Color.Success" />
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudTooltip Text="@this.GetConfigurationTooltip(context)">
|
||||
<MudIcon Icon="@Icons.Material.Filled.Warning" Color="Color.Warning" />
|
||||
<MudIcon Icon="@AppIcons.WARNING" Color="Color.Warning" />
|
||||
</MudTooltip>
|
||||
}
|
||||
</MudTd>
|
||||
<MudTd>
|
||||
<MudStack Row="true" Wrap="Wrap.NoWrap" AlignItems="AlignItems.Center" Spacing="0">
|
||||
<MudTooltip Text="@T("Settings")">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Settings" OnClick="@(async () => await this.OpenSettings(context))" aria-label="@T("Settings")" />
|
||||
<MudIconButton Icon="@AppIcons.SETTINGS" OnClick="@(async () => await this.OpenSettings(context))" aria-label="@T("Settings")" />
|
||||
</MudTooltip>
|
||||
<AdminExportButton OnClick="@(() => this.OpenExport(context))" />
|
||||
</MudStack>
|
||||
|
||||
@@ -110,7 +110,7 @@ public partial class SettingsPanelTools : SettingsPanelBase
|
||||
: confidenceLevel.Name;
|
||||
|
||||
private string SetCurrentConfidenceLevelColorStyle(ToolCatalogItem item) =>
|
||||
$"background-color: {GetMinimumProviderConfidence(item).GetColor(this.SettingsManager)};";
|
||||
$"background-color: {GetMinimumProviderConfidence(item).GetBackgroundColor(this.SettingsManager)};";
|
||||
|
||||
private bool IsToolConfidenceManaged() =>
|
||||
ManagedConfiguration.TryGet(x => x.Tools, x => x.MinimumProviderConfidenceByToolId, out var meta) && meta.IsLocked;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
@if (PreviewFeatures.PRE_SPEECH_TO_TEXT_2026.IsEnabled(this.SettingsManager))
|
||||
{
|
||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.VoiceChat" HeaderText="@T("Configure Transcription Providers")">
|
||||
<ExpansionPanel HeaderIcon="@AppIcons.VOICE_TRANSCRIPTION" HeaderText="@T("Configure Transcription Providers")">
|
||||
<MudText Typo="Typo.h4" Class="mb-3">
|
||||
@T("Configured Transcription Providers")
|
||||
</MudText>
|
||||
@@ -44,38 +44,38 @@
|
||||
@if (this.SettingsManager.IsProviderProhibited(context.UsedLLMProvider))
|
||||
{
|
||||
<MudTooltip Text="@T("The use of this transcription provider has been prohibited by your organization.")">
|
||||
<MudIconButton Color="Color.Error" Icon="@Icons.Material.Filled.Block" Disabled="true"/>
|
||||
<MudIconButton Color="Color.Error" Icon="@AppIcons.BLOCKED" Disabled="true"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
@if (context.IsTrustedForDataSourceSecurityChecks(this.SettingsManager))
|
||||
{
|
||||
<MudTooltip Text="@(context.IsSelfHosted ? T("This self-hosted transcription provider is trusted for data source security checks.") : T("This transcription provider is trusted by your organization for data source security checks."))">
|
||||
<MudIconButton Color="Color.Success" Icon="@Icons.Material.Filled.VerifiedUser" Disabled="true"/>
|
||||
<MudIconButton Color="Color.Success" Icon="@AppIcons.TRUSTED" Disabled="true"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
@if (context.IsEnterpriseConfiguration && !context.AllowUserProvidedAPIKey)
|
||||
{
|
||||
<MudTooltip Text="@T("This transcription provider is managed by your organization.")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Business" Disabled="true"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.ORGANIZATION" Disabled="true"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
else if (context.IsEnterpriseConfiguration && context.AllowUserProvidedAPIKey)
|
||||
{
|
||||
<MudTooltip Text="@T("This transcription provider is managed by your organization. You can set your own API key.")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Key" OnClick="@(() => this.EditTranscriptionProvider(context))"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.KEY" OnClick="@(() => this.EditTranscriptionProvider(context))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudTooltip Text="@T("Open Dashboard")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.OpenInBrowser" Href="@context.UsedLLMProvider.DashboardURL" Target="_blank" Disabled="@(!context.UsedLLMProvider.HasDashboard)"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.OPEN_EXTERNAL" Href="@context.UsedLLMProvider.DashboardURL" Target="_blank" Disabled="@(!context.UsedLLMProvider.HasDashboard)"/>
|
||||
</MudTooltip>
|
||||
<MudTooltip Text="@T("Edit")">
|
||||
<MudIconButton Color="Color.Info" Icon="@Icons.Material.Filled.Edit" OnClick="@(() => this.EditTranscriptionProvider(context))"/>
|
||||
<MudIconButton Color="Color.Info" Icon="@AppIcons.EDIT" OnClick="@(() => this.EditTranscriptionProvider(context))"/>
|
||||
</MudTooltip>
|
||||
<AdminExportButton OnClick="@(() => this.ExportTranscriptionProvider(context))" />
|
||||
<MudTooltip Text="@T("Delete")">
|
||||
<MudIconButton Color="Color.Error" Icon="@Icons.Material.Filled.Delete" OnClick="@(() => this.DeleteTranscriptionProvider(context))"/>
|
||||
<MudIconButton Color="Color.Error" Icon="@AppIcons.DELETE" OnClick="@(() => this.DeleteTranscriptionProvider(context))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
</MudStack>
|
||||
@@ -91,8 +91,8 @@
|
||||
}
|
||||
|
||||
<MudStack Row="true" Wrap="Wrap.Wrap" Class="mt-3 mb-6">
|
||||
<LockableButton Text="@T("Add transcription provider")" IsLocked="@(() => !this.SettingsManager.ConfigurationData.App.AllowUserToAddProvider || !this.SettingsManager.ConfigurationData.App.AllowUserToAddTranscriptionProvider)" Icon="@Icons.Material.Filled.AddRoad" OnClickAsync="@this.AddTranscriptionProvider" Class="flex-grow-0" NoMargin="true" />
|
||||
<LockableButton Text="@T("Import transcription provider")" IsLocked="@(() => !this.SettingsManager.ConfigurationData.App.CanImportConfigurationSnippet(PluginConfigurationObjectType.TRANSCRIPTION_PROVIDER))" Icon="@Icons.Material.Filled.FileDownload" OnClickAsync="@this.ImportTranscriptionProvider" ButtonVariant="Variant.Outlined" Class="flex-grow-0" NoMargin="true" />
|
||||
<LockableButton Text="@T("Add transcription provider")" IsLocked="@(() => !this.SettingsManager.ConfigurationData.App.AllowUserToAddProvider || !this.SettingsManager.ConfigurationData.App.AllowUserToAddTranscriptionProvider)" Icon="@AppIcons.ADD" OnClickAsync="@this.AddTranscriptionProvider" Class="flex-grow-0" NoMargin="true" />
|
||||
<LockableButton Text="@T("Import transcription provider")" IsLocked="@(() => !this.SettingsManager.ConfigurationData.App.CanImportConfigurationSnippet(PluginConfigurationObjectType.TRANSCRIPTION_PROVIDER))" Icon="@AppIcons.IMPORT" OnClickAsync="@this.ImportTranscriptionProvider" ButtonVariant="Variant.Outlined" Class="flex-grow-0" NoMargin="true" />
|
||||
</MudStack>
|
||||
</ExpansionPanel>
|
||||
}
|
||||
@@ -14,7 +14,7 @@ else
|
||||
<MudAlert Severity="Severity.Warning" Variant="Variant.Outlined" Class="mb-2">
|
||||
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween" Wrap="Wrap.Wrap">
|
||||
<MudText>@T("At the moment, AI Studio cannot read the text of this passage that the AI received, e.g., while AI Studio is still starting.")</MudText>
|
||||
<MudButton Variant="Variant.Outlined" Color="Color.Warning" StartIcon="@Icons.Material.Filled.Refresh" OnClick="@this.ReadTextAgainAsync">
|
||||
<MudButton Variant="Variant.Outlined" Color="Color.Warning" StartIcon="@AppIcons.REFRESH" OnClick="@this.ReadTextAgainAsync">
|
||||
@T("Try again")
|
||||
</MudButton>
|
||||
</MudStack>
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
@if (entry.Passages.Count > 0)
|
||||
{
|
||||
<MudTooltip Text="@this.PassagesTooltip(entry)" Placement="Placement.Left" ShowOnFocus="@false">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Visibility" Size="Size.Small" Class="icon-button-compact" OnClick="@(() => this.ShowPassages(entry))"/>
|
||||
<MudIconButton Icon="@AppIcons.PREVIEW" Size="Size.Small" Class="icon-button-compact" OnClick="@(() => this.ShowPassages(entry))"/>
|
||||
</MudTooltip>
|
||||
}
|
||||
</div>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
@this.SelectedValueName()
|
||||
</MudButton>
|
||||
}
|
||||
<MudMenu Icon="@Icons.Material.Filled.ArrowDropDown" Style="align-self: auto;" MaxHeight="@MenuDefaults.MAX_HEIGHT">
|
||||
<MudMenu Icon="@AppIcons.EXPAND_MORE" Style="align-self: auto;" MaxHeight="@MenuDefaults.MAX_HEIGHT">
|
||||
@foreach(var item in this.Items)
|
||||
{
|
||||
<MudMenuItem OnClick="() => this.SelectItem(item)">
|
||||
|
||||
@@ -18,9 +18,9 @@ public partial class Supporter : ComponentBase
|
||||
|
||||
private string Icon => this.Type switch
|
||||
{
|
||||
SupporterType.INDIVIDUAL => Icons.Material.Filled.Person,
|
||||
SupporterType.ORGANIZATION => Icons.Material.Filled.Business,
|
||||
SupporterType.INDIVIDUAL => AppIcons.USER,
|
||||
SupporterType.ORGANIZATION => AppIcons.BUSINESS_SUPPORTER,
|
||||
|
||||
_ => Icons.Material.Filled.Person4,
|
||||
_ => AppIcons.USER,
|
||||
};
|
||||
}
|
||||
Loaded 100 of 352 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user