mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-11-13 12:47: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
+21
-1
@@ -4,6 +4,11 @@ namespace AIStudio.Tools.PluginSystem.Assistants.DataModel;
|
||||
|
||||
internal static class AssistantComponentPropHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// The prefix with which an assistant plugin names a Lucide icon.
|
||||
/// </summary>
|
||||
private const string LUCIDE_PREFIX = "lucide:";
|
||||
|
||||
public static string ReadString(Dictionary<string, object> props, string key)
|
||||
{
|
||||
if (props.TryGetValue(key, out var value))
|
||||
@@ -52,7 +57,22 @@ internal static class AssistantComponentPropHelper
|
||||
public static Color GetColor(string value, Color fallback) => Enum.TryParse<Color>(value, out var color) ? color : fallback;
|
||||
public static Variant GetVariant(string value, Variant fallback) => Enum.TryParse<Variant>(value, out var variant) ? variant : fallback;
|
||||
public static Adornment GetAdornment(string value, Adornment fallback) => Enum.TryParse<Adornment>(value, out var adornment) ? adornment : fallback;
|
||||
public static string GetIconSvg(string value) => MudBlazorIconRegistry.TryGetSvg(value.TrimStart('@'), out var svg) ? svg : string.Empty;
|
||||
/// <summary>
|
||||
/// Finds the icon an assistant plugin names: a Lucide icon as "lucide:" followed by its name on lucide.dev,
|
||||
/// such as "lucide:house", or an icon of MudBlazor, such as "Icons.Material.Filled.Home".
|
||||
/// </summary>
|
||||
/// <param name="value">The icon as the plugin names it.</param>
|
||||
/// <returns>The icon in the form MudBlazor renders, or an empty string for an unknown name.</returns>
|
||||
public static string GetIcon(string value)
|
||||
{
|
||||
var name = value.TrimStart('@');
|
||||
if (name.StartsWith(LUCIDE_PREFIX, StringComparison.Ordinal))
|
||||
return LucideIconRegistry.TryGet(name[LUCIDE_PREFIX.Length..], out var lucideIcon) ? lucideIcon : string.Empty;
|
||||
|
||||
return MudBlazorIconRegistry.TryGetSvg(name, out var svg) ? svg : string.Empty;
|
||||
}
|
||||
|
||||
|
||||
public static Size GetComponentSize(string value, Size fallback) => Enum.TryParse<Size>(value, out var size) ? size : fallback;
|
||||
public static Justify? GetJustify(string value) => Enum.TryParse<Justify>(value, out var justify) ? justify : null;
|
||||
public static AlignItems? GetItemsAlignment(string value) => Enum.TryParse<AlignItems>(value, out var alignment) ? alignment : null;
|
||||
|
||||
+25
-26
@@ -38,32 +38,31 @@ public static class AssistantComponentTypeExtensions
|
||||
|
||||
public string Icon => type switch
|
||||
{
|
||||
AssistantComponentType.BUTTON => MudBlazor.Icons.Material.Filled.AdsClick,
|
||||
AssistantComponentType.BUTTON_GROUP => MudBlazor.Icons.Material.Filled.LinearScale,
|
||||
AssistantComponentType.DROPDOWN => MudBlazor.Icons.Material.Filled.Rule,
|
||||
AssistantComponentType.PROVIDER_SELECTION => MudBlazor.Icons.Material.Filled.Memory,
|
||||
AssistantComponentType.PROFILE_SELECTION => MudBlazor.Icons.Material.Filled.Badge,
|
||||
AssistantComponentType.SWITCH => MudBlazor.Icons.Material.Filled.ToggleOn,
|
||||
AssistantComponentType.HEADING => MudBlazor.Icons.Material.Filled.Title,
|
||||
AssistantComponentType.TEXT => MudBlazor.Icons.Material.Filled.TextFields,
|
||||
AssistantComponentType.TEXT_AREA => MudBlazor.Icons.Material.Filled.Wysiwyg,
|
||||
AssistantComponentType.LIST => MudBlazor.Icons.Material.Filled.List,
|
||||
AssistantComponentType.WEB_CONTENT_READER => MudBlazor.Icons.Material.Filled.Public,
|
||||
AssistantComponentType.FILE_CONTENT_READER => MudBlazor.Icons.Material.Filled.AttachFile,
|
||||
AssistantComponentType.FILE_ATTACHMENTS => MudBlazor.Icons.Material.Filled.AttachFile,
|
||||
AssistantComponentType.IMAGE => MudBlazor.Icons.Material.Filled.Image,
|
||||
AssistantComponentType.COLOR_PICKER => MudBlazor.Icons.Material.Filled.Palette,
|
||||
AssistantComponentType.DATE_PICKER => MudBlazor.Icons.Material.Filled.CalendarMonth,
|
||||
AssistantComponentType.DATE_RANGE_PICKER => MudBlazor.Icons.Material.Filled.DateRange,
|
||||
AssistantComponentType.TIME_PICKER => MudBlazor.Icons.Material.Filled.Schedule,
|
||||
AssistantComponentType.LAYOUT_ITEM => MudBlazor.Icons.Material.Filled.DashboardCustomize,
|
||||
AssistantComponentType.LAYOUT_GRID => MudBlazor.Icons.Material.Filled.GridView,
|
||||
AssistantComponentType.LAYOUT_PAPER => MudBlazor.Icons.Material.Filled.Inbox,
|
||||
AssistantComponentType.LAYOUT_STACK => MudBlazor.Icons.Material.Filled.Layers,
|
||||
AssistantComponentType.LAYOUT_ACCORDION => MudBlazor.Icons.Material.Filled.CalendarViewDay,
|
||||
AssistantComponentType.LAYOUT_ACCORDION_SECTION => MudBlazor.Icons.Material.Filled.HorizontalSplit,
|
||||
AssistantComponentType.FORM => MudBlazor.Icons.Material.Filled.AccountTree,
|
||||
_ => MudBlazor.Icons.Material.Filled.AccountTree,
|
||||
AssistantComponentType.BUTTON => AppIcons.COMPONENT_BUTTON,
|
||||
AssistantComponentType.BUTTON_GROUP => AppIcons.COMPONENT_BUTTON_GROUP,
|
||||
AssistantComponentType.DROPDOWN => AppIcons.COMPONENT_DROPDOWN,
|
||||
AssistantComponentType.PROVIDER_SELECTION => AppIcons.LLM_PROVIDER,
|
||||
AssistantComponentType.PROFILE_SELECTION => AppIcons.PROFILE,
|
||||
AssistantComponentType.SWITCH => AppIcons.SWITCH,
|
||||
AssistantComponentType.HEADING => AppIcons.HEADING,
|
||||
AssistantComponentType.TEXT => AppIcons.TEXT_INPUT,
|
||||
AssistantComponentType.TEXT_AREA => AppIcons.TEXT_AREA,
|
||||
AssistantComponentType.LIST => AppIcons.LIST,
|
||||
AssistantComponentType.WEB_CONTENT_READER => AppIcons.WEB,
|
||||
AssistantComponentType.FILE_CONTENT_READER => AppIcons.ATTACH_FILE,
|
||||
AssistantComponentType.FILE_ATTACHMENTS => AppIcons.ATTACH_FILE,
|
||||
AssistantComponentType.IMAGE => AppIcons.IMAGE,
|
||||
AssistantComponentType.COLOR_PICKER => AppIcons.COLOR,
|
||||
AssistantComponentType.DATE_PICKER => AppIcons.DATE,
|
||||
AssistantComponentType.DATE_RANGE_PICKER => AppIcons.DATE_RANGE,
|
||||
AssistantComponentType.TIME_PICKER => AppIcons.TIME,
|
||||
AssistantComponentType.LAYOUT_ITEM => AppIcons.COMPONENT_LAYOUT_ITEM,
|
||||
AssistantComponentType.LAYOUT_GRID => AppIcons.ASSISTANT_COMPONENT_GRID,
|
||||
AssistantComponentType.LAYOUT_PAPER => AppIcons.COMPONENT_LAYOUT_PAPER,
|
||||
AssistantComponentType.LAYOUT_STACK => AppIcons.COMPONENT_LAYOUT_STACK,
|
||||
AssistantComponentType.LAYOUT_ACCORDION => AppIcons.COMPONENT_ACCORDION,
|
||||
AssistantComponentType.LAYOUT_ACCORDION_SECTION => AppIcons.ASSISTANT_COMPONENT_ACCORDION_SECTION,
|
||||
_ => AppIcons.ASSISTANT_COMPONENTS,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
using AIStudio.Tools.PluginSystem.Assistants.Icons;
|
||||
using Lua;
|
||||
|
||||
namespace AIStudio.Tools.PluginSystem.Assistants.DataModel;
|
||||
@@ -105,5 +104,5 @@ public sealed class AssistantSwitch : StatefulAssistantComponentBase
|
||||
|
||||
public static Color GetColor(string colorString) => Enum.TryParse<Color>(colorString, out var color) ? color : Color.Inherit;
|
||||
public Placement GetLabelPlacement() => Enum.TryParse<Placement>(this.LabelPlacement, out var placement) ? placement : Placement.Right;
|
||||
public string GetIconSvg() => MudBlazorIconRegistry.TryGetSvg(this.Icon, out var svg) ? svg : string.Empty;
|
||||
public string GetIcon() => AssistantComponentPropHelper.GetIcon(this.Icon);
|
||||
}
|
||||
+20
-16
@@ -41,28 +41,32 @@ public static class PluginAssistantSecurityResolver
|
||||
private static string GetAvailabilityIcon(bool requiresAudit, bool hasAudit, bool hasHashMismatch, bool isBlocked, bool canOverride)
|
||||
{
|
||||
if (hasHashMismatch)
|
||||
return MudBlazor.Icons.Material.Filled.Warning;
|
||||
return AppIcons.WARNING;
|
||||
if (requiresAudit)
|
||||
return MudBlazor.Icons.Material.Filled.GppMaybe;
|
||||
return AppIcons.SECURITY_WARNING;
|
||||
if (!hasAudit)
|
||||
return MudBlazor.Icons.Material.Filled.HelpOutline;
|
||||
return AppIcons.UNKNOWN;
|
||||
if (isBlocked)
|
||||
return MudBlazor.Icons.Material.Filled.Lock;
|
||||
return AppIcons.LOCK;
|
||||
if (canOverride)
|
||||
return MudBlazor.Icons.Material.Filled.ReportProblem;
|
||||
return AppIcons.WARNING;
|
||||
|
||||
return MudBlazor.Icons.Material.Filled.LockOpen;
|
||||
return AppIcons.UNLOCK;
|
||||
}
|
||||
|
||||
// ReSharper disable UnusedParameter.Local
|
||||
private static string GetSecurityBadgeIcon(bool requiresAudit, bool hasAudit, bool hasHashMismatch, bool isBlocked, bool canOverride)
|
||||
{
|
||||
if (hasHashMismatch)
|
||||
return MudBlazor.Icons.Material.Filled.RemoveModerator;
|
||||
return AppIcons.AUDIT_MISMATCH;
|
||||
if (!hasAudit)
|
||||
return MudBlazor.Icons.Material.Filled.AddModerator;
|
||||
return AppIcons.SECURITY_NOT_AUDITED;
|
||||
|
||||
return MudBlazor.Icons.Material.Filled.Security;
|
||||
// An audit below the required minimum level never shows the check mark of a passed audit:
|
||||
if (isBlocked || canOverride)
|
||||
return AppIcons.SECURITY_AUDIT_FAILED;
|
||||
|
||||
return AppIcons.SECURITY_AUDIT_PASSED;
|
||||
}
|
||||
// ReSharper restore UnusedParameter.Local
|
||||
|
||||
@@ -113,12 +117,12 @@ public static class PluginAssistantSecurityResolver
|
||||
StatusLabel = TB("Unlocked"),
|
||||
SourceLabel = TB("Approved by your organization"),
|
||||
SourceColor = Color.Success,
|
||||
SourceIcon = MudBlazor.Icons.Material.Filled.Business,
|
||||
BadgeIcon = MudBlazor.Icons.Material.Filled.Business,
|
||||
SourceIcon = AppIcons.ORGANIZATION,
|
||||
BadgeIcon = AppIcons.ORGANIZATION,
|
||||
Headline = enterpriseHeadline,
|
||||
Description = TB("The current plugin hash matches an enterprise-managed approval. No manual security audit is required for activation or usage."),
|
||||
StatusColor = Color.Success,
|
||||
StatusIcon = MudBlazor.Icons.Material.Filled.VerifiedUser,
|
||||
StatusIcon = AppIcons.TRUSTED,
|
||||
ActionLabel = TB("Open Security Details"),
|
||||
};
|
||||
}
|
||||
@@ -161,7 +165,7 @@ public static class PluginAssistantSecurityResolver
|
||||
StatusLabel = GetAvailabilityLabel(requiresAudit, hasAudit, hasHashMismatch, isBlocked, canOverride: false),
|
||||
SourceLabel = TB("No Approval"),
|
||||
SourceColor = Color.Default,
|
||||
SourceIcon = MudBlazor.Icons.Material.Filled.HelpOutline,
|
||||
SourceIcon = AppIcons.UNKNOWN,
|
||||
BadgeIcon = GetSecurityBadgeIcon(requiresAudit, hasAudit, hasHashMismatch, isBlocked, canOverride: false),
|
||||
Headline = requiresAudit ? TB("This assistant is currently locked.") : TB("This assistant currently has no stored audit."),
|
||||
Description = requiresAudit
|
||||
@@ -200,7 +204,7 @@ public static class PluginAssistantSecurityResolver
|
||||
StatusLabel = GetAvailabilityLabel(requiresAudit, hasAudit, hasHashMismatch, isBlocked, canOverride: false),
|
||||
SourceLabel = TB("No Approval"),
|
||||
SourceColor = Color.Default,
|
||||
SourceIcon = MudBlazor.Icons.Material.Filled.Warning,
|
||||
SourceIcon = AppIcons.WARNING,
|
||||
BadgeIcon = GetSecurityBadgeIcon(requiresAudit, hasAudit, hasHashMismatch, isBlocked, canOverride: false),
|
||||
Headline = requiresAudit ? TB("This assistant is locked until it is audited again.") : TB("This assistant changed after its last audit."),
|
||||
Description = requiresAudit
|
||||
@@ -242,7 +246,7 @@ public static class PluginAssistantSecurityResolver
|
||||
StatusLabel = GetAvailabilityLabel(requiresAudit: false, hasAudit, hasHashMismatch: false, isBlockedByMinimum, canOverride),
|
||||
SourceLabel = TB("User Audit"),
|
||||
SourceColor = auditLevel.Color,
|
||||
SourceIcon = MudBlazor.Icons.Material.Filled.Verified,
|
||||
SourceIcon = AppIcons.SECURITY_AUDIT_FAILED,
|
||||
BadgeIcon = GetSecurityBadgeIcon(requiresAudit: false, hasAudit, hasHashMismatch: false, isBlockedByMinimum, canOverride),
|
||||
Headline = isBlockedByMinimum
|
||||
? TB("This assistant is currently locked.")
|
||||
@@ -287,7 +291,7 @@ public static class PluginAssistantSecurityResolver
|
||||
StatusLabel = GetAvailabilityLabel(requiresAudit: false, hasAudit, hasHashMismatch: false, isBlocked: false, canOverride: false),
|
||||
SourceLabel = TB("User Audit"),
|
||||
SourceColor = auditLevelDefault.Color,
|
||||
SourceIcon = MudBlazor.Icons.Material.Filled.Verified,
|
||||
SourceIcon = AppIcons.SECURITY_AUDIT_PASSED,
|
||||
BadgeIcon = GetSecurityBadgeIcon(requiresAudit: false, hasAudit, hasHashMismatch: false, isBlocked: false, canOverride: false),
|
||||
Headline = TB("This assistant is currently unlocked."),
|
||||
Description = string.Format(TB("The stored audit matches the current plugin code and meets your required minimum level '{0}'."), auditSettings.MinimumLevel.Name),
|
||||
|
||||
+5
-5
@@ -46,18 +46,18 @@ public sealed class PluginAssistantSecurityState
|
||||
public bool CanStartAssistant { get; init; }
|
||||
public string AuditLabel { get; init; } = string.Empty;
|
||||
public Color AuditColor { get; init; } = Color.Info;
|
||||
public string AuditIcon { get; init; } = MudBlazor.Icons.Material.Filled.HelpOutline;
|
||||
public string AuditIcon { get; init; } = AppIcons.UNKNOWN;
|
||||
public string AvailabilityLabel { get; init; } = string.Empty;
|
||||
public Color AvailabilityColor { get; init; } = Color.Info;
|
||||
public string AvailabilityIcon { get; init; } = MudBlazor.Icons.Material.Filled.Lock;
|
||||
public string AvailabilityIcon { get; init; } = AppIcons.LOCK;
|
||||
public string StatusLabel { get; init; } = string.Empty;
|
||||
public string SourceLabel { get; init; } = string.Empty;
|
||||
public Color SourceColor { get; init; } = Color.Info;
|
||||
public string SourceIcon { get; init; } = MudBlazor.Icons.Material.Filled.Info;
|
||||
public string SourceIcon { get; init; } = AppIcons.INFO;
|
||||
public string Headline { get; init; } = string.Empty;
|
||||
public string Description { get; init; } = string.Empty;
|
||||
public Color StatusColor { get; init; } = Color.Info;
|
||||
public string StatusIcon { get; init; } = MudBlazor.Icons.Material.Filled.Lock;
|
||||
public string StatusIcon { get; init; } = AppIcons.LOCK;
|
||||
public string ActionLabel { get; init; } = string.Empty;
|
||||
public string BadgeIcon { get; init; } = MudBlazor.Icons.Material.Outlined.Shield;
|
||||
public string BadgeIcon { get; init; } = AppIcons.SECURITY;
|
||||
}
|
||||
@@ -4,7 +4,7 @@ public abstract partial class PluginBase
|
||||
{
|
||||
private const string DEFAULT_ICON_SVG =
|
||||
"""
|
||||
<svg height="1.5em" width="1.5em" viewBox="0 0 24 24" fill="#1f1f1f"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M19 13h-2V7h-6V5c0-.28-.22-.5-.5-.5s-.5.22-.5.5v2H4l.01 2.12C5.76 9.8 7 11.51 7 13.5c0 1.99-1.25 3.7-3 4.38V20h2.12c.68-1.75 2.39-3 4.38-3 1.99 0 3.7 1.25 4.38 3H17v-6h2c.28 0 .5-.22.5-.5s-.22-.5-.5-.5z" opacity=".3"/><path d="M19 11V7c0-1.1-.9-2-2-2h-4c0-1.38-1.12-2.5-2.5-2.5S8 3.62 8 5H4c-1.1 0-1.99.9-1.99 2v3.8h.29c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-.3c0-1.49 1.21-2.7 2.7-2.7s2.7 1.21 2.7 2.7v.3H17c1.1 0 2-.9 2-2v-4c1.38 0 2.5-1.12 2.5-2.5S20.38 11 19 11zm0 3h-2v6h-2.12c-.68-1.75-2.39-3-4.38-3-1.99 0-3.7 1.25-4.38 3H4v-2.12c1.75-.68 3-2.39 3-4.38 0-1.99-1.24-3.7-2.99-4.38L4 7h6V5c0-.28.22-.5.5-.5s.5.22.5.5v2h6v6h2c.28 0 .5.22.5.5s-.22.5-.5.5z"/></svg>
|
||||
<svg height="1.5em" width="1.5em" viewBox="0 0 24 24" fill="none" stroke="#1f1f1f" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22v-5"/><path d="M15 8V2"/><path d="M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z"/><path d="M9 8V2"/></svg>
|
||||
""";
|
||||
|
||||
private static readonly string DEFAULT_ICON_DATA_URL = CreateDefaultIconDataUrl();
|
||||
|
||||
Reference in new issue
Block a user