@inherits MSGComponentBase @this.IntroductionText @T("Plugins contain code that runs inside AI Studio. Install plugins only when you trust their source.") @this.Preview.Plugin.Name @this.Preview.Plugin.Description @T("Type"): @this.TypeLabel @T("Version"): @this.Preview.Plugin.Version @T("Authors"): @this.AuthorsLabel @if (!string.IsNullOrWhiteSpace(this.Preview.Plugin.SourceURL)) { @T("Source"): @this.Preview.Plugin.SourceURL } @if (!string.IsNullOrWhiteSpace(this.Preview.Plugin.SupportContact)) { @T("Support contact"): @this.Preview.Plugin.SupportContact } @if (this.Preview.ConfigurationSummary is { HasAnyContent: true } configurationSummary) { @T("A configuration takes effect right after the installation and has no on/off switch. Please check what it sets up:") @if (configurationSummary.Destinations.Count > 0) { @T("Sends data to") @T("Name") @T("Destination") @foreach (var destination in configurationSummary.Destinations) { @this.DestinationTypeLabel(destination.Type) @destination.Name @destination.Endpoint } } @if (this.ConfigurationContents.Count > 0) { @T("It also brings:") @foreach (var content in this.ConfigurationContents) { @content } } } @if (!string.IsNullOrWhiteSpace(this.Preview.Plugin.DeprecationMessage)) { @string.Format(T("The authors marked this plugin as deprecated: {0}"), this.Preview.Plugin.DeprecationMessage) } @if (this.Preview.ExistingPlugin is { } existingPlugin) { @string.Format(T("This replaces the already installed plugin '{0}'. Version {1} gets replaced by version {2}."), existingPlugin.Name, existingPlugin.Version, this.Preview.Plugin.Version) } @T("Cancel") @(this.Preview.ReplacesExisting ? T("Replace plugin") : T("Install plugin"))