From 09ae9aa77d3c5b43945a10504d76ab7c157e5508 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 09:48:15 +0200 Subject: [PATCH 01/23] docs: add new trial links to ai articles (#3364) Co-authored-by: IvanDanchev --- ai/agentic-ui-generator/overview.md | 2 +- ai/ai-coding-assistant/overview.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ai/agentic-ui-generator/overview.md b/ai/agentic-ui-generator/overview.md index c98bfdd83..11ad6c650 100644 --- a/ai/agentic-ui-generator/overview.md +++ b/ai/agentic-ui-generator/overview.md @@ -111,7 +111,7 @@ Access to the Agentic UI Generator depends on your [Telerik license type](https: * Best for ongoing and high-volume usage. * All Other Licenses (including Perpetual Licenses and other Subscriptions) * License holders have no access to the Agentic UI Generator by default. - * Require starting a [30-day trial](https://www.telerik.com/try/ui-for-blazor) to access the Agentic UI Generator. + * Require starting a [30-day AI Tools trial](https://www.telerik.com/try/agentic-ui-generator) to access the Agentic UI Generator. * After the trial expires, access is no longer available unless the [Perpetual license is converted to a Subscription license](https://www.telerik.com/account/support-center/contact-us/account-support). * Trial License * A [Telerik UI for Blazor trial](https://www.telerik.com/try/ui-for-blazor) automatically starts a 30-day trial for the AI tools. diff --git a/ai/ai-coding-assistant/overview.md b/ai/ai-coding-assistant/overview.md index 5b78ca45c..4619baed1 100644 --- a/ai/ai-coding-assistant/overview.md +++ b/ai/ai-coding-assistant/overview.md @@ -64,7 +64,7 @@ The Telerik Blazor AI Conding Assistant allows the following maximum number of r ### Perpetual Licenses * Perpetual license holders have no access to the AI Coding Assistant by default. -* You can start a [30-day trial](https://www.telerik.com/try/ui-for-blazor) to access the AI Coding Assistant. +* You can start a [30-day AI Tools trial](https://www.telerik.com/try/agentic-ui-generator) to access the AI Coding Assistant. * After the trial expires, access is no longer available unless the [Perpetual license is converted to a Subscription license](https://www.telerik.com/account/support-center/contact-us/account-support). ### Trial Licenses From 0a96b46e457a721dfb142cec988cbacb660fcafa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 10:43:31 +0200 Subject: [PATCH 02/23] docs: add redirect (#3366) Co-authored-by: IvanDanchev --- docs-builder.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs-builder.yml b/docs-builder.yml index 3e0f0dbce..830e5beb8 100644 --- a/docs-builder.yml +++ b/docs-builder.yml @@ -652,3 +652,15 @@ redirects: - from: "^/?$" to: "/introduction" + +- + from: ^/ai/overview$ + to: "/ai/ai-coding-assistant/overview" + +- + from: ^/ai/ai-coding-assistant/coding-extension$ + to: "/ai/ai-coding-assistant/overview" + +- + from: ^/ai/coding-extension$ + to: "/ai/ai-coding-assistant/overview" \ No newline at end of file From 32c7e45ef44734575f5690227d4cb9798a1a8043 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 12:24:21 +0200 Subject: [PATCH 03/23] docs: remove link in hidden copilot article (#3368) Co-authored-by: IvanDanchev --- ai/ai-coding-assistant/copilot-extension.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ai/ai-coding-assistant/copilot-extension.md b/ai/ai-coding-assistant/copilot-extension.md index bd3f8fd18..429d94f4d 100644 --- a/ai/ai-coding-assistant/copilot-extension.md +++ b/ai/ai-coding-assistant/copilot-extension.md @@ -42,7 +42,7 @@ To install the Telerik Blazor Copilot extension: 1. Enter your GitHub password. 1. You will be redirected to telerik.com. Enter your Telerik account credentials if prompted. This will authorize the GitHub Copilot extension to integrate with your Telerik account. 1. Upon successful Telerik authentication, you will be redirected once again to a page that confirms successful Copilot extension installation. -1. Restart your [Copilot-enabled apps](https://docs.github.com/en/copilot/building-copilot-extensions/about-building-copilot-extensions#supported-clients-and-ides) (for example, Visual Studio and VS Code). +1. Restart your Copilot-enabled apps (for example, Visual Studio and VS Code). 1. Start a new chat session in Copilot. You can also start the installation from the Telerik UI for Blazor extensions for [Visual Studio](slug:getting-started-vs-integration-ai-configuration#install-telerik-blazor-copilot-extension) and [VS Code](slug:getting-started-vs-code-integration-ai-configuration). Then, continue the installation from step 2. From 1d8e52c2b29a7ceabaf5bdb0a37784e2b1b91dbc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 14:29:28 +0200 Subject: [PATCH 04/23] Merge kb-diagram-nov20-3369 into production (#3370) * kb(Diagram): Add KB for runtime shape color changes * Update components/diagram/events.md * Update components/diagram/events.md * Update components/diagram/overview.md --------- Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> --- components/diagram/events.md | 2 + components/diagram/overview.md | 5 +- ...diagram-change-shape-color-onshapeclick.md | 205 ++++++++++++++++++ 3 files changed, 211 insertions(+), 1 deletion(-) create mode 100644 knowledge-base/diagram-change-shape-color-onshapeclick.md diff --git a/components/diagram/events.md b/components/diagram/events.md index 84c010c9e..cf5f1f6f3 100644 --- a/components/diagram/events.md +++ b/components/diagram/events.md @@ -51,6 +51,8 @@ The `OnShapeClick` event fires when the user clicks on a shape. The event argume } ```` +Use the [Diagram JSON state](slug:diagram-overview#define-shapes-and-connections-in-json) if you need to [change the Diagram configuration](slug:diagram-kb-change-shape-color-onshapeclick) while persisting other user changes that are not part of the component declaration. + ## Example The following example demonstrates all Diagram events in action. diff --git a/components/diagram/overview.md b/components/diagram/overview.md index aa8a452c8..35348dd49 100644 --- a/components/diagram/overview.md +++ b/components/diagram/overview.md @@ -100,7 +100,10 @@ Optionally, you can also define: * Shape `width` and `height` as numbers. * Connection `from.connector` and `to.connector` that determine which shape side the connection touches (`"Top"`, `"Right"`, `"Bottom"`, `"Left"`). -The Diagram provides a `SaveAsJsonAsync()` method that returns the current shape and connection state as a JSON string. This allows you to persist user changes or see how to define more advanced shape and connection settings in JSON format. +The Diagram provides a `SaveAsJsonAsync()` method that returns the current shape and connection state as a JSON string. This allows you to: + +* [Persist user changes and apply them to the component in a future user session](slug:diagram-kb-change-shape-color-onshapeclick). +* Review the JSON structure and see how to define all possible shape and connection settings in JSON format. >caption Loading and saving the Diagram shape and connection state diff --git a/knowledge-base/diagram-change-shape-color-onshapeclick.md b/knowledge-base/diagram-change-shape-color-onshapeclick.md new file mode 100644 index 000000000..44cad39ce --- /dev/null +++ b/knowledge-base/diagram-change-shape-color-onshapeclick.md @@ -0,0 +1,205 @@ +--- +title: Change Diagram Shape Color on Shape Click +description: Learn how to change the Diagram shape background color when using the Diagram OnShapeClick event. +type: troubleshooting +page_title: How to Change Diagram Shape Color on Shape Click +slug: diagram-kb-change-shape-color-onshapeclick +tags: blazor, diagram +ticketid: 1703700 +res_type: kb +--- + +## Environment + + + + + + + + +
ProductDiagram for Blazor
+ +## Description + +I am using the Diagram `OnShapeClick` event to update the `DiagramShapeFill` `Color` of the selected Diagram shape. However, this resets the positions of the shapes that the user has dragged. How to update the shape background colors while maintaining the current shape positions? + +## Cause + +The Diagram `OnShapeClick` event handler is an `EventCallback` and triggers component re-render. If the [Diagram shapes are defined](slug:diagram-shapes#basics) without their `X` and `Y` properties and [shape dragging](slug:diagram-shapes#editability) is enabled, the component definition does not include the current shape positions. As a result, a re-render resets the shapes to their original places. + +## Solution + +Use the Diagram `SaveAsJsonAsync` and `LoadFromJsonAsync` methods to [persist the Diagram state through JSON](slug:diagram-overview#define-shapes-and-connections-in-json) on each re-render: + +1. Implement classes with property names that correspond to the ones in the [Diagram JSON state](slug:diagram-overview#define-shapes-and-connections-in-json). +1. Subscribe to the [Diagram `OnShapeClick` event](slug:diagram-events#onshapeclick). +1. Use the Diagram [`SaveAsJsonAsync` method](slug:telerik.blazor.components.telerikdiagram#methods) to get the current component state and deserialize it. +1. Update the desired shape background. +1. Serialize the updated Diagram state object and use the [`LoadFromJsonAsync` method](slug:telerik.blazor.components.telerikdiagram#methods) to apply it to the Diagram. +1. (optional) If the Diagram is using different [shape types](slug:diagram-shapes#shape-types), then [implement a custom JSON converter](https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/converters-how-to) for them. + +>caption Change Diagram Shape background on click and persist current shape position + +```RAZOR +@using System.Text.Json +@using System.Text.Json.Serialization + + + + + + @foreach (DiagramModel shape in DiagramData) + { + + + + + } + + + + @foreach (DiagramModel shape in DiagramData) + { + if (shape.ParentId is not null) + { + + } + } + + + +@code { + #nullable enable + + private TelerikDiagram? DiagramRef { get; set; } + private string DiagramJson { get; set; } = string.Empty; + + private List DiagramData { get; set; } = Enumerable.Range(1, 6).Select(x => new DiagramModel() + { + Id = x.ToString(), + ParentId = x == 1 ? null : (x <= 4 ? 1 : 3), + Text = $"Shape {x}", + Type = x % 2 == 0 ? DiagramShapeType.Rectangle : DiagramShapeType.Circle, + BackgroundColor = "#666" + }).ToList(); + + private async Task OnDiagramShapeClick(DiagramShapeClickEventArgs args) + { + DiagramJson = await DiagramRef!.SaveAsJsonAsync(); + JsonSerializerOptions jsonOptions = new JsonSerializerOptions() + { + PropertyNamingPolicy = JsonNamingPolicy.CamelCase + }; + + DiagramState? diagramStateObject = JsonSerializer.Deserialize(DiagramJson, jsonOptions); + + if (diagramStateObject is not null && diagramStateObject.Shapes is not null) + { + var rnd = Random.Shared; + string newFillColor = $"rgb({rnd.Next(0, 127)},{rnd.Next(0, 127)},{rnd.Next(0, 127)})"; + + diagramStateObject.Shapes.First(x => x.Id == args.Id).Fill.Color = newFillColor; + + DiagramJson = JsonSerializer.Serialize(diagramStateObject, jsonOptions); + await DiagramRef!.LoadFromJsonAsync(DiagramJson); + } + } + + #region Diagram State Classes + + public class DiagramState + { + public IEnumerable? Shapes { get; set; } + public IEnumerable? Connections { get; set; } + } + + public class ShapeDescriptor + { + public string Id { get; set; } = Guid.NewGuid().ToString(); + + [JsonConverter(typeof(DiagramShapeTypeJsonConverter))] + public DiagramShapeType Type { get; set; } = DiagramShapeType.Rectangle; + public double? X { get; set; } + public double? Y { get; set; } + + public double? Height { get; set; } = 100; + public double? Width { get; set; } = 100; + + public ShapeDescriptorContentFill Fill { get; set; } = new(); + + public ShapeDescriptorContent Content { get; set; } = new(); + } + + public class ShapeDescriptorContent + { + public string Text { get; set; } = string.Empty; + } + + public class ShapeDescriptorContentFill + { + public string? Color { get; set; } + } + + public class ConnectionDescriptor + { + public string Id { get; set; } = Guid.NewGuid().ToString(); + + public ConnectionDescriptorFromTo From { get; set; } = new(); + public ConnectionDescriptorFromTo To { get; set; } = new(); + } + + public class ConnectionDescriptorFromTo + { + public string ShapeId { get; set; } = string.Empty; + } + + #endregion Diagram State Classes + + public class DiagramModel + { + public string Id { get; set; } = string.Empty; + public int? ParentId { get; set; } + public string Text { get; set; } = string.Empty; + public DiagramShapeType Type { get; set; } = DiagramShapeType.Rectangle; + public string BackgroundColor { get; set; } = string.Empty; + } + + public class DiagramShapeTypeJsonConverter : JsonConverter + { + public override DiagramShapeType Read( + ref Utf8JsonReader reader, + Type typeToConvert, + JsonSerializerOptions options) + { + string shapeTypeString = reader.GetString()!; + + if (Enum.TryParse(shapeTypeString, true, out DiagramShapeType shapeType)) { + return shapeType; + } + else + { + return DiagramShapeType.Rectangle; + } + } + + public override void Write( + Utf8JsonWriter writer, + DiagramShapeType shapeType, + JsonSerializerOptions options) => + writer.WriteStringValue(shapeType.ToString().ToLower()); + } +} +``` + +## See Also + +* [Diagram `OnShapeClick` Event](slug:diagram-events#onshapeclick) +* [Save and Load Diagram State through JSON](slug:diagram-overview#define-shapes-and-connections-in-json) +* [Diagram Shapes](slug:diagram-shapes) +* [Diagram Methods](slug:telerik.blazor.components.telerikdiagram#methods) From 6e48a7ca8afa8b2b9964bfc7ead8352f2aa55619 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 17:03:35 +0200 Subject: [PATCH 05/23] kb(Popover): Refresh Popover posiiton on dimensions change (#3372) Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> --- components/popover/position-collision.md | 4 + .../popover-refresh-callout-position.md | 83 +++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 knowledge-base/popover-refresh-callout-position.md diff --git a/components/popover/position-collision.md b/components/popover/position-collision.md index b7257bb4a..1d8ad4a2b 100644 --- a/components/popover/position-collision.md +++ b/components/popover/position-collision.md @@ -105,3 +105,7 @@ The following example lets you experiment with the available settings that contr } ```` + +## See Also + +* [How to Align Popover with Anchor After Content and Size Change](slug:popover-kb-refresh-callout-position) diff --git a/knowledge-base/popover-refresh-callout-position.md b/knowledge-base/popover-refresh-callout-position.md new file mode 100644 index 000000000..2be60171b --- /dev/null +++ b/knowledge-base/popover-refresh-callout-position.md @@ -0,0 +1,83 @@ +--- +title: Align Popover with Anchor After Content and Size Change +description: Learn how to align the Telerik Popover for Blazor to its anchor after the component content and size change dynamically at runtime. +type: troubleshooting +page_title: How to Align Popover with Anchor After Content and Size Change +slug: popover-kb-refresh-callout-position +tags: blazor, popover +ticketid: 1703828 +res_type: kb +--- + +## Environment + + + + + + + + +
ProductPopover for Blazor
+ +## Description + +I have a Popover that may change its content and size at runtime. In these cases, the callout does not line up with the anchor anymore. How to dynamically align the Popover with its anchor after the content shrinks or expands? + +## Cause + +The Popover component does not track changes to its content or size for performance reasons. + +## Solution + +Use the [Popover `Refresh` method](slug:popover-overview#popover-reference-and-methods) to recalculate the component and callout position with regard to the anchor. If the Popover content change depends on C# code, you may need to wait for the next Blazor re-render or trigger it immediately with `await Task.Delay(1)`. + +>caption Refresh Popover position and callout when the dimensions change + +```RAZOR + + + Telerik Popover for Blazor +
+ Toggle Content + @if (ContentVisible) + { +
+ Some dynamic content... +
+ } +
+ + Close + +
+ +






+ +Toggle Popover + +@code{ + #nullable enable + + private TelerikPopover? PopoverRef { get; set; } + + private bool ContentVisible { get; set; } = true; + + private async Task ToggleContent() + { + ContentVisible = !ContentVisible; + await Task.Delay(1); + + PopoverRef?.Refresh(); + } +} +``` + +## See Also + +* [Popover Position and Collision](slug:popover-position-collision) From d8f9bd5da001801eae4ebe8232be0ae2cf216507 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 13:07:06 +0200 Subject: [PATCH 06/23] Merge diagram-pan-3373 into production (#3377) * docs(Diagram): Add info about panning and selection * Update components/diagram/overview.md * Update components/diagram/overview.md --------- Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> --- components/diagram/overview.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/components/diagram/overview.md b/components/diagram/overview.md index 35348dd49..1f81d98a6 100644 --- a/components/diagram/overview.md +++ b/components/diagram/overview.md @@ -228,6 +228,38 @@ The Diagram allows users to zoom the graph in and out for better perception. The MinZoom="0" /> ```` +## Pan + +The Diagram content may overflow the component boundaries if there are a lot of shapes or if the user zooms in. By default, the Diagram allows users to pan the content by holding the `Ctrl` key and dragging. The following code snippet shows the relevant parameters together with their default values. + +When both panning and [selection](#select) are enabled, make sure the two features use a different `Key`. + +>caption Pan-related Diagram parameters + +````RAZOR.skip-repl + + + +```` + +## Select + +Users can select a single shape or connection with a click. The Diagram also supports multiple selection through dragging a rectangular marquee. The following code snippet shows the relevant parameters together with their default values. + +Once the user selects some shapes and connections, they can drag them to another position or remove them with the `Del` key. + +When both [panning](#pan) and selection are enabled, make sure the two features use a different `Key`. + +>caption Selection-related Diagram parameters + +````RAZOR.skip-repl + + + + + +```` + ## Events The Telerik Diagram fires events that enable the app to detect and react to user interactions with the component. Find out more about the [Diagram events and event arguments](slug:diagram-events). From dd1bbe680f9357d9ef297af252207ab592e0406b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 13:11:27 +0200 Subject: [PATCH 07/23] Merge dimodi-patch-1-grid-stacked-3374 into production (#3378) * docs(Grid): Add edit-related info to Stacked columns docs * Update toolbar.md * Update components/grid/toolbar.md * Update components/grid/columns/stacked.md * Update components/grid/columns/stacked.md * Update components/grid/toolbar.md --------- Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> --- components/grid/columns/stacked.md | 11 ++-- components/grid/toolbar.md | 81 ++++++++++-------------------- 2 files changed, 34 insertions(+), 58 deletions(-) diff --git a/components/grid/columns/stacked.md b/components/grid/columns/stacked.md index 98bf967b0..9b6caaca9 100644 --- a/components/grid/columns/stacked.md +++ b/components/grid/columns/stacked.md @@ -79,9 +79,11 @@ The code snippet below uses 3 stacked columns. The first one is twice as wide as ## Integration with Other Features -When the Grid is in `Stacked` data layout mode, it does not render column headers. As a result, column features like sorting, filtering, grouping, locking are not available through the classic Grid UI. Instead, use [ToolBar command tools](slug:components/grid/features/toolbar#command-tools) to enable the same functionality through different UI. +In `Stacked` data layout mode the Grid rendering is different and some features use different UI and UX: -Hierarchy relies on an expand/collapse button, which is below the stacked table row content. +* The Grid does not render column headers. Column features like sorting, filtering, grouping, and locking require [ToolBar command tools](slug:components/grid/features/toolbar#command-tools). +* The Grid does not render a command column. Combine [Grid row selection](slug:grid-selection-row) with [Toolbar command tools for the **Delete**, **Edit**, **Save**, and **Cancel** buttons](slug:components/grid/features/toolbar#command-tools). +* Hierarchy relies on an expand/collapse button, which renders below the stacked table row content. ## Example @@ -89,7 +91,7 @@ The following sample shows how to: * Enable and disable column stacking, depending on the viewport width. * Display 1 or 2 stacked columns, depending on the viewport width. -* Render ToolBar tools for column operations only when the Grid is in `Stacked` data layout mode. +* Render ToolBar tools for column and edit operations only when the Grid is in `Stacked` data layout mode. >caption Using stacked data layout mode in the Blazor Grid @@ -125,6 +127,9 @@ The following sample shows how to: Filter Columns Group + Edit + Save + Cancel } diff --git a/components/grid/toolbar.md b/components/grid/toolbar.md index bf00e22b3..74c938b3d 100644 --- a/components/grid/toolbar.md +++ b/components/grid/toolbar.md @@ -36,6 +36,8 @@ The [Blazor Grid](https://demos.telerik.com/blazor-ui/grid/overview) provides se | Sort | `GridToolBarSortTool` | A toggle button that opens a list of the sortable columns. Click a column to sort by it. On mobile devices, the popup renders as an `ActionSheet`. The tool also exposes an `Icon` parameter that allows you to override the default icon. | | SearchBox | `GridToolBarSearchBoxTool` | A [searchbox that filters multiple string columns](slug:grid-searchbox) simultaneously. | +The **Edit** command button is disabled if there is no [selected Grid row](slug:grid-selection-row). The **Save** and **Cancel** buttons are disabled when there is no row in edit mode. + ### Layout Tools | Tool Name | Tool Tag | Description | @@ -84,45 +86,16 @@ Add a `` tag inside `` to configure a toolbar, for exa Custom Grid Tool - - Add a product - - - - Export to CSV - - - - Export to Excel - - - - Filter - - - - Sort - - - - Group - - - - Edit - - - - Save - - - - Cancel - - - - Delete - + Add a product + Export to CSV + Export to Excel + Filter + Sort + Group + Edit + Save + Cancel + Delete @@ -141,7 +114,7 @@ Add a `` tag inside `` to configure a toolbar, for exa @code { - private List GridData { get; set; } + private List GridData { get; set; } = new(); private IEnumerable SelectedPeople { get; set; } = Enumerable.Empty(); private void OnToolbarCustomClick() @@ -151,12 +124,11 @@ Add a `` tag inside `` to configure a toolbar, for exa protected override void OnInitialized() { - var data = new List(); var rand = new Random(); for (int i = 0; i < 50; i++) { - data.Add(new Person() + GridData.Add(new Person() { EmployeeId = i, Name = "Employee " + i.ToString(), @@ -164,38 +136,37 @@ Add a `` tag inside `` to configure a toolbar, for exa AgeInYears = 20 }); } - GridData = new List(data); } private void CreateItem(GridCommandEventArgs args) { - var argsItem = args.Item as Person; + var createdItem = (Person)args.Item; - argsItem.EmployeeId = GridData.Count + 1; + createdItem.EmployeeId = GridData.Count + 1; - GridData.Insert(0, argsItem); + GridData.Insert(0, createdItem); } private void UpdateItem(GridCommandEventArgs args) { - var argsItem = args.Item as Person; - var itemForEdit = GridData.FirstOrDefault(i => i.EmployeeId == argsItem.EmployeeId); + var updatedItem = (Person)args.Item; + var itemForEdit = GridData.FirstOrDefault(i => i.EmployeeId == updatedItem.EmployeeId); if (itemForEdit != null) { - itemForEdit.AgeInYears = argsItem.AgeInYears; - itemForEdit.HireDate = argsItem.HireDate; - itemForEdit.Name = argsItem.Name; + itemForEdit.AgeInYears = updatedItem.AgeInYears; + itemForEdit.HireDate = updatedItem.HireDate; + itemForEdit.Name = updatedItem.Name; } } private void DeleteItem(GridCommandEventArgs args) { - var argsItem = args.Item as Person; + var deletedItem = (Person)args.Item; - if (GridData.Contains(argsItem)) + if (GridData.Contains(deletedItem)) { - GridData.Remove(argsItem); + GridData.Remove(deletedItem); } } @@ -203,7 +174,7 @@ Add a `` tag inside `` to configure a toolbar, for exa { public int? EmployeeId { get; set; } - public string Name { get; set; } + public string Name { get; set; } = string.Empty; public int? AgeInYears { get; set; } From 797bee046472ceb9095fb150ac3cbe08d34e5c3e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 13:11:46 +0200 Subject: [PATCH 08/23] Merge gauge-width-3376 into production (#3379) * kb(LinearGauge): Add KB for consistent widths * polishing --------- Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> --- components/gauges/linear/labels.md | 2 + components/gauges/linear/overview.md | 6 +- ...uge-align-gauges-with-different-min-max.md | 258 ++++++++++++++++++ 3 files changed, 263 insertions(+), 3 deletions(-) create mode 100644 knowledge-base/lineargauge-align-gauges-with-different-min-max.md diff --git a/components/gauges/linear/labels.md b/components/gauges/linear/labels.md index 3b75c1e60..c105ad880 100644 --- a/components/gauges/linear/labels.md +++ b/components/gauges/linear/labels.md @@ -20,6 +20,8 @@ You can customize the appearance of the labels rendered on the [scale](slug:line * [Additional Customization](#additional-customization) +The LinearGauge scale width decreases when the `Min` and `Max` label length increases. See how to [define the same LinearGauge scale widths with different `Min` and `Max` values in multiple Gauge instances](slug:lineargauge-kb-align-gauge-widths-with-different-min-max). + ## Format The `Format` (`string`) parameter allows you to customize the rendering of the labels by using the standard numeric format strings. You can set the values of the labels to showcase, for example, currency, percentage, and so on. diff --git a/components/gauges/linear/overview.md b/components/gauges/linear/overview.md index a5c111bf5..d18bb5794 100644 --- a/components/gauges/linear/overview.md +++ b/components/gauges/linear/overview.md @@ -54,9 +54,9 @@ The ranges are used to visually distinguish particular values on the scale. [Rea @[template](/_contentTemplates/common/parameters-table-styles.md#table-layout) | Parameter | Type and Default Value | Description | | --- | --- | --- | -| `Class` | `string` | Renders a custom CSS class to the `
` element. | -| `Width` | `string` | Controls the width of the Linear Gauge. | -| `Height` | `string` | Controls the height of the Linear Gauge. | +| `Class` | `string` | A custom CSS class for the `
` element. | +| `Width` | `string` | The width of the Linear Gauge. The [scale](slug:linear-gauge-scale) width is smaller and [depends on the length of its `Min` and `Max` values](slug:lineargauge-kb-align-gauge-widths-with-different-min-max). | +| `Height` | `string` | The height of the Linear Gauge. | | `Transitions` | `bool?` | Controls if the Linear Gauge uses animations for its value changes. | | `RenderAs` | `RenderingMode?`
(`SVG`) | Controls if the gauge renders as `SVG` or `Canvas`. | diff --git a/knowledge-base/lineargauge-align-gauges-with-different-min-max.md b/knowledge-base/lineargauge-align-gauges-with-different-min-max.md new file mode 100644 index 000000000..0b92d546c --- /dev/null +++ b/knowledge-base/lineargauge-align-gauges-with-different-min-max.md @@ -0,0 +1,258 @@ +--- +title: LinearGauge Scale Widths Are Different +description: Learn how to define consistent scale widths for Telerik Linear Gauges for Blazor, when the components are using different Min and Max values. +type: troubleshooting +page_title: How to Fix Different LinearGauge Scale Widths +slug: lineargauge-kb-align-gauge-widths-with-different-min-max +tags: blazor, gauge, lineargauge +ticketid: 1704384 +res_type: kb +--- + +## Environment + + + + + + + + +
ProductLinearGauge for Blazor
+ +## Description + +I am using several `` instances in a Blazor app. They display on multiple lines and need to be aligned. +The `Min` and `Max` values are different and set dynamically at runtime. +Although the Gauge `Width` parameters have the same value, the Gauge scale widths are different. + +## Cause + +The LinearGauge `Width` parameter affects the total width of the component. However, the scale width decreases when the length of the `Min` and `Max` labels increases. + +## Solution + +To achieve consistent width of multiple LinearGauges, set larger `Width` to the instances that have longer `Min` and `Max` labels. + +1. Apply `monospace` font family to the Gauge labels (`div.k-gauge text`). +1. Calculate the Linear Gauge `Width`, based on the string length of the `Min` and `Max` values. Add 3px for each additional `Min` or `Max` digit. +1. Make sure that `MajorUnit` and `MinorUnit` are divisors of the difference between `Min` and `Max`. Otherwise the Gauge scale may not be consistent with the set component `Width`. + +>caption Align linear Gauges with different Min and Max values + +````RAZOR +
+ +Width Correction Multiplier: + + +Refresh Gauges to Apply Changes + +
+ +Gauge Widths: +@($"{GetGaugeWidth(BaseWidth, GaugeMin1, GaugeMax1)}px"), +@($"{GetGaugeWidth(BaseWidth, GaugeMin2, GaugeMax2)}px"), +@($"{GetGaugeWidth(BaseWidth, GaugeMin3, GaugeMax3)}px") +
+For proper alignment, the Gauge widths (yellow) must be smaller than the container widths (green). +

+ +
+ Min: + Max: + MinorUnit: @GetGaugeMinorUnit(GaugeMin1, GaugeMax1) | + MajorUnit: @GetGaugeMajorUnit(GaugeMin1, GaugeMax1) +
+ +
+ + + + + + + + + +
+ +
+ Min: + Max: + MinorUnit: @GetGaugeMinorUnit(GaugeMin2, GaugeMax2) | + MajorUnit: @GetGaugeMajorUnit(GaugeMin2, GaugeMax2) +
+ +
+ + + + + + + + + +
+ +
+ Min: + Max: + MinorUnit: @GetGaugeMinorUnit(GaugeMin3, GaugeMax3) | + MajorUnit: @GetGaugeMajorUnit(GaugeMin3, GaugeMax3) +
+ +
+ + + + + + + + + +
+ +
+ +
+ + + +@code { + #nullable enable + + private int BaseWidth { get; set; } = 400; + private decimal WidthMultiplier { get; set; } = 3m; + + private TelerikLinearGauge? LinearGaugeRef1 { get; set; } + private int GaugeMin1 { get; set; } = 0; + private int GaugeMax1 { get; set; } = 50; + + private TelerikLinearGauge? LinearGaugeRef2 { get; set; } + private int GaugeMin2 { get; set; } = 150; + private int GaugeMax2 { get; set; } = 300; + + private TelerikLinearGauge? LinearGaugeRef3 { get; set; } + private int GaugeMin3 { get; set; } = 10000; + private int GaugeMax3 { get; set; } = 11000; + + private void RefreshGauges() + { + LinearGaugeRef1?.Refresh(); + LinearGaugeRef2?.Refresh(); + LinearGaugeRef3?.Refresh(); + } + + private string GetGaugeWidth(int baseWidth, int min, int max) + { + int correction = string.Concat(min.ToString(), max.ToString()).Length; + decimal width = baseWidth + (WidthMultiplier * correction); + return width.ToString().Split(",")[0]; + } + + private int GetGaugeMajorUnit(int min, int max) + { + if (max <= min) + { + return 1; + } + + int diff = max - min; + int divisor = Convert.ToInt32(Math.Ceiling((decimal)diff / 5)); + while (divisor >= 1) + { + if (diff % divisor == 0) + { + break; + } + else + { + divisor -= (diff.ToString().Length - 1); + } + } + + return divisor; + } + + private int GetGaugeMinorUnit(int min, int max) + { + if (max <= min) + { + return 1; + } + + int majorUnit = GetGaugeMajorUnit(min, max); + int divisor = majorUnit / 10; + while (divisor >= 1) + { + if (majorUnit % divisor == 0) + { + break; + } + else + { + divisor -= 1; + } + } + + return divisor; + } +} +```` + +## See Also + +* [Linear Gauge Overview](slug:linear-gauge-overview) +* [Linear Gauge Scale](slug:linear-gauge-scale) +* [Linear Gauge Labels](slug:linear-gauge-labels) From de75f194b1b5f1a7e2b786f29c0f62e4cbbf9666 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 4 Dec 2025 17:10:42 +0200 Subject: [PATCH 09/23] Merge new-kb-grid-copy-text-clipboard-b9c7bacb57cd444da6b30cc1ecef1ef2-3290 into production (#3380) * Added new kb article grid-copy-text-clipboard * chore(kb): apply changes as per suggestions --------- Co-authored-by: KB Bot Co-authored-by: Hristian Stefanov --- knowledge-base/grid-copy-text-clipboard.md | 143 +++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 knowledge-base/grid-copy-text-clipboard.md diff --git a/knowledge-base/grid-copy-text-clipboard.md b/knowledge-base/grid-copy-text-clipboard.md new file mode 100644 index 000000000..23b12d523 --- /dev/null +++ b/knowledge-base/grid-copy-text-clipboard.md @@ -0,0 +1,143 @@ +--- +title: Copy Text from Grid Row to Clipboard +description: Learn how to add a right-click context menu option to copy text from a Grid to the clipboard and paste it into the Editor. +type: how-to +page_title: How to Copy Text from Grid to Clipboard and Paste into UI for Blazor Editor +meta_title: How to Copy Text from Grid to Clipboard and Paste into UI for Blazor Editor +slug: grid-kb-copy-text-clipboard +tags: blazor, clipboard, context-menu, copy-text, grid +res_type: kb +ticketid: 1695036 +--- + +## Environment + + + + + + + + +
ProductGrid for Blazor
+ +## Description + +I want to add a right-click context menu to a Grid, which allows copying text from the Grid to the clipboard. The copied text can then be pasted into an Editor or anywhere else. + +## Solution + +To achieve this, implement a context menu for the Grid and include a "Copy to Clipboard" option. Follow these steps: + +1. Define the context menu and its items. +2. Handle the right-click event to show the context menu. +3. Implement the logic to copy the selected row's text to the clipboard by using the [navigator clipboard API](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/clipboard). + +````Razor +@using System.Collections.Generic +@using System.Collections.ObjectModel +@inject IJSRuntime JS + + +
+
+ + + + + + + + + + +@code { + private string TheEditorValue { get; set; } + private ObservableCollection GridData { get; set; } + private List MenuItems { get; set; } + private SampleData SelectedPerson { get; set; } + private TelerikContextMenu ContextMenuRef { get; set; } + private TelerikGrid GridRef { get; set; } + + private async Task OnContextMenu(GridRowClickEventArgs args) + { + SelectedPerson = args.Item as SampleData; + + if (args.EventArgs is MouseEventArgs mouseEventArgs) + { + await ContextMenuRef.ShowAsync(mouseEventArgs.ClientX, mouseEventArgs.ClientY); + } + } + + private async Task ContextMenuClickHandler(MenuItem item) + { + if (item.Action != null) + { + item.Action.Invoke(); + } + else if (item.CommandName == "CopyRow" && SelectedPerson != null) + { + string rowText = $"ID: {SelectedPerson.ID}, Name: {SelectedPerson.Name}"; + await CopyToClipboard(rowText); + } + + SelectedPerson = null; + } + + private async Task CopyToClipboard(string text) + { + await JS.InvokeVoidAsync("navigator.clipboard.writeText", text); + } + + protected override void OnInitialized() + { + MenuItems = new List() + { + new MenuItem(){ Text = "Copy Row Text", Icon = SvgIcon.Copy, CommandName="CopyRow" }, + new MenuItem(){ Text = "Delete", Icon = SvgIcon.Trash, Action = DeleteItem } + }; + + GridData = new ObservableCollection(); + for (int i = 1; i <= 20; i++) + { + GridData.Add(new SampleData() + { + ID = i, + Name = $"Employee {i}" + }); + } + } + + private void DeleteItem() + { + if (SelectedPerson != null) + { + GridData.Remove(SelectedPerson); + } + } + + public class MenuItem + { + public string Text { get; set; } + public ISvgIcon Icon { get; set; } + public Action Action { get; set; } + public string CommandName { get; set; } + } + + public class SampleData + { + public int ID { get; set; } + public string Name { get; set; } + } +} +```` + +## See Also + +* [Grid Overview](slug:grid-overview) +* [Context Menu Overview](slug:contextmenu-overview) +* [Grid Context Menu Integration Demo](https://demos.telerik.com/blazor-ui/contextmenu/integration) +* [Grid Context Menu Integration Documentation](slug:contextmenu-integration) From 5febaed8b2e6f20d28486e03caf6ce5622cd6774 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 4 Dec 2025 17:17:58 +0200 Subject: [PATCH 10/23] docs: add new ui generator server name (#3382) Co-authored-by: IvanDanchev --- ai/agentic-ui-generator/getting-started.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ai/agentic-ui-generator/getting-started.md b/ai/agentic-ui-generator/getting-started.md index 2d0fe316c..290fe9057 100644 --- a/ai/agentic-ui-generator/getting-started.md +++ b/ai/agentic-ui-generator/getting-started.md @@ -41,7 +41,7 @@ This section contains information about how to set up the Agentic UI Generator i ````JSON.skip-repl { "servers": { - "telerik-ui-generator": { + "blazor-ui-generator": { "type": "http", "url": "https://uiagent.mcp.telerik.com/mcp/blazor", "headers": { @@ -54,7 +54,7 @@ This section contains information about how to set up the Agentic UI Generator i To enable global automatic discovery of the Agentic UI Generator in Visual Studio, add the above `.mcp.json` file to your user directory (`%USERPROFILE%`), for example, `C:\Users\____\.mcp.json`. -> Once the MCP server configuration is added, make sure that the `telerik-ui-generator` tool is [enabled (checked) in the Copilot Chat window's tool selection dropdown](https://learn.microsoft.com/en-us/visualstudio/ide/mcp-servers?view=vs-2022#configuration-example-with-github-mcp-server). This dropdown opens when clicking the wrench icon 🔧 at the bottom of the Copilot Window. The Telerik Agentic UI Generator may get disabled when starting a new chat, changing threads, or relaunching Visual Studio. This is a known issue with MCP servers in general. +> Once the MCP server configuration is added, make sure that the `blazor-ui-generator` tool is [enabled (checked) in the Copilot Chat window's tool selection dropdown](https://learn.microsoft.com/en-us/visualstudio/ide/mcp-servers?view=vs-2022#configuration-example-with-github-mcp-server). This dropdown opens when clicking the wrench icon 🔧 at the bottom of the Copilot Window. The Telerik Agentic UI Generator may get disabled when starting a new chat, changing threads, or relaunching Visual Studio. This is a known issue with MCP servers in general. #### Visual Studio Code @@ -77,7 +77,7 @@ Make sure that [`chat.mcp.enabled`](vscode://settings/chat.mcp.enabled) is enabl ````JSON.skip-repl { "servers": { - "telerik-ui-generator": { + "blazor-ui-generator": { "type": "http", "url": "https://uiagent.mcp.telerik.com/mcp/blazor", "headers": { From 24d6675a3181205cf5df28d61ae35f497afecefb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 14:31:57 +0200 Subject: [PATCH 11/23] docs: rework agentic generator getting started (#3385) Co-authored-by: IvanDanchev --- ai/agentic-ui-generator/getting-started.md | 110 ++++++++++++--------- ai/ai-coding-assistant/overview.md | 2 +- ai/images/generator-confirmation.png | Bin 0 -> 3592 bytes components/grid/overview.md | 1 + 4 files changed, 67 insertions(+), 46 deletions(-) create mode 100644 ai/images/generator-confirmation.png diff --git a/ai/agentic-ui-generator/getting-started.md b/ai/agentic-ui-generator/getting-started.md index 290fe9057..b63d507af 100644 --- a/ai/agentic-ui-generator/getting-started.md +++ b/ai/agentic-ui-generator/getting-started.md @@ -13,28 +13,49 @@ tag: new This article describes how to install, configure, and use the Telerik UI for Blazor Agentic UI Generator in Visual Studio and Visual Studio Code. -## Prerequisites +## Quick Start + +Follow these steps to set up the Agentic UI Generator: + +1. Ensure you have a supported license—You need a DevCraft Complete or Ultimate Subscription to access the Agentic UI Generator. If you have a different license type, you can start a [30-day AI Tools trial](https://www.telerik.com/mcp-servers/thank-you-blazor). + + > For more information about access requirements based on the license type, see [Usage Limits](slug:agentic-ui-generator-overview#usage-limits). +1. Add the MCP server to your IDE—Create an `mcp.json` file in your workspace with the following configuration: + ````JSON.skip-repl + { + "servers": { + "blazor-ui-generator": { + "type": "http", + "url": "https://uiagent.mcp.telerik.com/mcp/blazor", + "headers": { + "x-api-key": "YOUR API KEY" + } + } + } + } + ```` + > The server name `blazor-ui-generator` can be customized as desired. The name helps distinguish the MCP server in your configuration and does not affect how you invoke the generator tool in your prompt. +1. Obtain your API key—Log in to your [Telerik account](https://www.telerik.com/account/) and generate an API key from the [API Keys page](https://www.telerik.com/account/downloads/api-keys). Replace `YOUR API KEY` in the `mcp.json` file with the generated key. +1. Start using the generator—Open the AI chat interface of your IDE and start your prompt with the `#telerik_ui_generator` handle to invoke the main generator tool: + ````TEXT.skip-repl + #telerik_ui_generator Create a dashboard page with a grid showing sales data and a chart visualizing monthly trends. + ```` + + Step-by-step usage instructions are available in [Using the Agentic UI Generator](#using-the-agentic-ui-generator). -An AI-powered IDE that supports MCP servers, for example, Visual Studio, Visual Studio Code, Cursor. +For comprehensive setup guide specific to your IDE, workspace and global configuration options, and detailed API key instructions, refer to the [Installation](#installation) section below. ## Installation -The Agentic UI Generator is available as an MCP (Model Context Protocol) server that integrates with AI-powered IDEs like Visual Studio Code, Cursor, and other MCP-compatible tools. +Use the documentation of your AI-powered MCP client to add the Agentic UI Generator to a specific workspace or globally. Below you can find installation tips and examples for some popular MCP clients, and instructions for obtaining your API key. -### Configuration Steps +### Visual Studio -This section contains information about how to set up the Agentic UI Generator in Visual Studio and Visual Studio Code. +> This section will guide you through the details of **Step 2** from the [Quick Start](#quick-start). -#### Visual Studio +#### Application Configuration -1. In your browser, go to the [API Keys](https://www.telerik.com/account/downloads/api-keys) page in your Telerik account. If you already have an existing API key, you can skip steps 2-6 and continue from step 7, instead of creating a new key. -2. Click **Generate New Key +**. -3. In the **Key Note** field, add a note that describes the API key. -4. Click **Generate Key**. -5. Select **Copy and Close**. Once you close the window, you can no longer copy the generated key. For security reasons, the **API Keys** page displays only a portion of the key. -6. Store the generated NuGet API key as you will need it in the next steps. -7. To enable the Agentic UI Generator in your application, in Visual Studio, add a `.mcp.json` file to the solution folder. -8. In the `.mcp.json` file, set your API Key as `x-api-key` value, as demonstrated in the JSON configuration below. +To enable the Agentic UI Generator in your application, in Visual Studio, add a `.mcp.json` file to the solution folder. >caption .mcp.json @@ -52,27 +73,29 @@ This section contains information about how to set up the Agentic UI Generator i } ```` +> Replace `YOUR API KEY` with the API key you generate. + +The server name `blazor-ui-generator` can be changed to a custom value based on your preferences. + +#### Global Configuration + To enable global automatic discovery of the Agentic UI Generator in Visual Studio, add the above `.mcp.json` file to your user directory (`%USERPROFILE%`), for example, `C:\Users\____\.mcp.json`. > Once the MCP server configuration is added, make sure that the `blazor-ui-generator` tool is [enabled (checked) in the Copilot Chat window's tool selection dropdown](https://learn.microsoft.com/en-us/visualstudio/ide/mcp-servers?view=vs-2022#configuration-example-with-github-mcp-server). This dropdown opens when clicking the wrench icon 🔧 at the bottom of the Copilot Window. The Telerik Agentic UI Generator may get disabled when starting a new chat, changing threads, or relaunching Visual Studio. This is a known issue with MCP servers in general. -#### Visual Studio Code +### Visual Studio Code -1. In your browser, go to the [API Keys](https://www.telerik.com/account/downloads/api-keys) page in your Telerik account. If you already have an existing API key, you can skip steps 2-6 and continue from step 7, instead of creating a new key. -2. Click **Generate New Key +**. -3. In the **Key Note** field, add a note that describes the API key. -4. Click **Generate Key**. -5. Select **Copy and Close**. Once you close the window, you can no longer copy the generated key. For security reasons, the **API Keys** page displays only a portion of the key. -6. Store the generated NuGet API key as you will need it in the next steps. -7. To enable the Agentic UI Generator in a specific [workspace](https://code.visualstudio.com/docs/copilot/chat/mcp-servers#_add-an-mcp-server-to-your-workspace), Blazor app, or [globally](https://code.visualstudio.com/docs/copilot/chat/mcp-servers#_add-an-mcp-server-to-your-user-configuration), add a `.vscode` folder with an `mcp.json` file at the root of the workspace, app, or your user folder, respectively. +> This section will guide you through the details of **Step 2** from the [Quick Start](#quick-start). -> This section applies to VS Code 1.102.1 and newer versions. +For more information about using MCP servers in Visual Studio Code, refer to [Use MCP servers in VS Code](https://code.visualstudio.com/docs/copilot/chat/mcp-servers). Make sure that [`chat.mcp.enabled`](vscode://settings/chat.mcp.enabled) is enabled in the VS Code settings. -9. In the `mcp.json` file, set your API Key as `x-api-key` value, as demonstrated in the JSON configuration below. +#### Workspace Configuration ->caption .vscode/mcp.json +To enable the Agentic UI Generator in a specific [workspace](https://code.visualstudio.com/docs/copilot/chat/mcp-servers#_add-an-mcp-server-to-your-workspace), Blazor app, or [globally](https://code.visualstudio.com/docs/copilot/chat/mcp-servers#_add-an-mcp-server-to-your-user-configuration), add a `.vscode` folder with an `mcp.json` file at the root of the workspace, app, or your user folder, respectively. + +>caption mcp.json ````JSON.skip-repl { @@ -88,6 +111,12 @@ Make sure that [`chat.mcp.enabled`](vscode://settings/chat.mcp.enabled) is enabl } ```` +> Replace `YOUR API KEY` with the API key you generate. + +The server name `blazor-ui-generator` can be changed to a custom value based on your preferences. + +#### Global Configuration + To use the Agentic UI Generator in all workspaces and apps, make sure that [`chat.mcp.discovery.enabled`](vscode://settings/chat.mcp.discovery.enabled) is enabled in [`settings.json`](https://code.visualstudio.com/docs/configure/settings#_settings-json-file). >caption VS Code settings.json @@ -101,33 +130,24 @@ To use the Agentic UI Generator in all workspaces and apps, make sure that [`cha After adding the configuration, restart your IDE to load the Agentic UI Generator. -## Basic Usage +## Using the Agentic UI Generator -The Agentic UI Generator can be used in two primary modes: basic usage through the main tool, or advanced usage by calling specific MCP tools directly. +> This section will guide you through the details of **Step 4** from the [Quick Start](#quick-start). -### Call the Agentic UI Generator - -To use the Agentic UI Generator, you can call it in two ways: - -#### Method 1: Using the Tool Handle - -Prefix your prompt with `#telerik_ui_generator` followed by your request: +Once installed, start a new chat session in your IDE to begin interacting with the Agentic UI Generator via natural language prompts. The Agentic UI Generator can be used in two primary modes: basic usage through [the main tool](#call-the-agentic-ui-generator), or advanced usage by [calling specific MCP tools directly](#target-the-tools-advanced). -````TEXT.skip-repl -#telerik_ui_generator Create a dashboard page with a grid showing sales data and a chart visualizing monthly trends -```` - -#### Method 2: Using Natural Language +### Call the Agentic UI Generator -Prefixing your prompt with `#telerik_ui_generator` will make it more likely for the Agentic UI Generator to get called. Alternatively, you can use natural language and simply describe what you want. The AI assistant automatically recognizes when to use the Agentic UI Generator: +1. Open the AI chat interface in your IDE—Start a new chat session to begin interacting with the Agentic UI Generator. +1. In Visual Studio Code, you can start your prompt with the `#telerik_ui_generator` handle—this invokes the main MCP tool that uses an agentic flow to analyze and process your request. + > Using the `#telerik_ui_generator` handle ensures the Agentic UI Generator is called. Alternatively, you can use natural language without the handle. Make sure to mention the "telerik" keyword in your natural language prompt, so that the AI model can automatically recognize when to call the generator. The generator analyzes your prompt and creates the appropriate Blazor components, markup, and styling. +1. Inspect the output and verify that the `blazor-ui-generator` MCP server (or the one with your custom server name) is called. Look for a similar statement in the output: -````TEXT.skip-repl -Create a product management page with a Telerik grid for displaying products, a form for adding new items, and filtering options -```` + MCP Server uses Telerik UI Generator in VS Code -The generator analyzes your prompt and creates the appropriate Blazor components, markup, and styling. +1. If prompted, grant the MCP server permission to run for this session, workspace, or always. -## Advanced Usage +### Target the Tools (Advanced) For more granular control, you can call individual tools that make up the Agentic UI Generator: diff --git a/ai/ai-coding-assistant/overview.md b/ai/ai-coding-assistant/overview.md index 4619baed1..2a619eaa3 100644 --- a/ai/ai-coding-assistant/overview.md +++ b/ai/ai-coding-assistant/overview.md @@ -64,7 +64,7 @@ The Telerik Blazor AI Conding Assistant allows the following maximum number of r ### Perpetual Licenses * Perpetual license holders have no access to the AI Coding Assistant by default. -* You can start a [30-day AI Tools trial](https://www.telerik.com/try/agentic-ui-generator) to access the AI Coding Assistant. +* You can start a [30-day AI Tools trial](https://www.telerik.com/mcp-servers/thank-you-blazor) to access the AI Coding Assistant. * After the trial expires, access is no longer available unless the [Perpetual license is converted to a Subscription license](https://www.telerik.com/account/support-center/contact-us/account-support). ### Trial Licenses diff --git a/ai/images/generator-confirmation.png b/ai/images/generator-confirmation.png new file mode 100644 index 0000000000000000000000000000000000000000..079e9cc52116edd484a4a88b4c1de76c0f568031 GIT binary patch literal 3592 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 i%>PbyQmy+pb^@=gr!E tip **Jumpstart Your Grid**

With the Agentic UI Generator, you can build components and layouts using natural language prompts — directly inside AI-powered IDEs like VS Code and Cursor. Get intelligent assistance with component implementation, styling, layout design, and iconography powered by our documentation and APIs.

[Try the Agentic UI Generator](slug:agentic-ui-generator-getting-started) ## Creating Blazor Grid From 0688278ca0aa9856d5d6e7537437baa1878a6c9f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 Dec 2025 16:50:20 +0200 Subject: [PATCH 12/23] docs: add images to generator getting started (#3387) Co-authored-by: IvanDanchev --- ai/agentic-ui-generator/getting-started.md | 18 ++++++++++++++++++ ai/images/api-keys-generate-dialog.png | Bin 0 -> 158276 bytes ai/images/api-keys-page.png | Bin 0 -> 61776 bytes ai/images/generator-confirmation.png | Bin 3592 -> 3503 bytes 4 files changed, 18 insertions(+) create mode 100644 ai/images/api-keys-generate-dialog.png create mode 100644 ai/images/api-keys-page.png diff --git a/ai/agentic-ui-generator/getting-started.md b/ai/agentic-ui-generator/getting-started.md index b63d507af..8a96e9bea 100644 --- a/ai/agentic-ui-generator/getting-started.md +++ b/ai/agentic-ui-generator/getting-started.md @@ -130,6 +130,24 @@ To use the Agentic UI Generator in all workspaces and apps, make sure that [`cha After adding the configuration, restart your IDE to load the Agentic UI Generator. +### Obtaining the API Key + +> This section will guide you through the details of **Step 3** from the [Quick Start](#quick-start). + +The following steps provide detailed instructions for obtaining your [Telerik API key](https://www.telerik.com/account/downloads/api-keys), which you need to add as a `headers` parameter in the `mcp.json` file: + +1. Log in to your [Telerik account](https://www.telerik.com/account/). +2. Navigate to **License Keys > API Keys**, or go directly to the [API Keys page](https://www.telerik.com/account/downloads/api-keys). + + Telerik Account API Keys Page + +3. Click **Generate New Key** and provide a name of your choice, or use an existing API key if you already have one. + + Generate New API Key Dialog + +4. Copy the generated API key for use in the MCP configuration. + + ## Using the Agentic UI Generator > This section will guide you through the details of **Step 4** from the [Quick Start](#quick-start). diff --git a/ai/images/api-keys-generate-dialog.png b/ai/images/api-keys-generate-dialog.png new file mode 100644 index 0000000000000000000000000000000000000000..cd6bedcfe9e878037248cfb9daa92e3cedae72e6 GIT binary patch literal 158276 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 z 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

9`yr;e}OY56N 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Ð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

nUr9xG2b}+;1s+wiX9SmD2WqCItU; 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%0AU z$aQ)u8AqtF7@q8}3_%dpD$HU~3+!8oDK*3zu48L6yDd*lgrW~vI(#g$JBk<@G;xy+ zr$3dXsXG%~EN&TSEmAIU+XoaH2^Ucr9S~vE6eqtRLsrwAOuZ@}y@}EY6btCQO3LV> zkG~>4EJ~0lkt`5!g=Nj^B?O7#qx9Pc-8KLim`2ecr^{BN=#GD1vHi)ws=xM28*X3j{MVx zz0VeK3yIQ}wd?&>vW+D)#Wtma#bAAps3tbh)pdJ3)pYcqKJoy;4B$Njoc^oh`HFQ& zZ_~K#^PUM^zASiyZ@hOb-{?E8Uh`o^#A>EIt8cE+nV}he2csXncP5tTycSif9HuM( z(*A9DvRE_nqyfV33f0;%axiNT`r6FoZcmB(DIMWJv;%tf3sLTTQldYJDSNJ_ggL!| z*+sJ(y7{Y*Tz|IOdYX9>Er2{wgy??!BgM}eFnYJZpBNr;PW$;0b(nn%rEAQ$Xej;P zCTxax))m4dZz~j^2al8zvnu8sPM-qW+I+#V&~}xB`lsxE`jZZeB`A8K*EWR&$rAhq z@eC);%jta`3&SS567xH>>@?qjTf#-SYP)w_DUV{@1rhGdQ?NGS0ywnv%aobRd}q9| z8MlL%zxGXqVpz(BbHUMyXP4R9oJ2sZULQI^&5xd1-_Cth!ve>Q#T@`xO?KP;N^iTg zES{i8g>@uzLjf4b^gc$bkU|$_r;T%k-S#MqNkW6FVr;EyC==fSMqj~#_l!-qXnW@i zoi2GrxCjQct2VwMzc@ZKTsGN0 zqK)fSU{TdT&U<9mMjT!@@3W9E!)NC`~?-5ncufAPzH-v!YWjRBH3dp;5Eb@S&V%gQH_Jo8CI zJNYzcg8_XGNCpBCw@S4b%s-R42Yz^fQokMSuZLd=mLJbt7i2({JX-74#Bua>TaV`b z5=ibM*=;1d+VQq@anRKB0xC}_@z`6*7eq*eSlfd+ji_h)w>!tn9mks)b zEo=^%9xyf_&a=1(%Hw!j2ji0lI1*J?N1a-5XNhEgh{z+CSw{#Y~`kkz_gX7`SP zw|@_g`nn7{%dkA-K9rY#cJ{VblW zHRWrI8?wD&50u$#{pPKaL6%tFqIR}ITTC4^6dcO!q=;K`sj!!Sl4!^dW}Wlh!miop zTGZv#ayTja8WUk#nyyJ_3qNu-Ho$0LiMC0gnOmYy4R<4>z%T^j)%ficS$eiRf&kBY zLxlUy)9J)?uuJ;l!;?UUP8PXR?9cPUu$=GUlYzG2X5DF*nnIm**FCeua|w9cF{v`i z(estfFWjk{^1Fj}bC;YTV#QP*zq#Ro4Ax)UB-^jH1_1ePgYmj+D>oi2c0$E7Y0R7* z9(>OIdDrnmcNho8+I#zXK%}blnGFY6D}zqs>%Bjmw(n-0ROnb2*StT0-egZ$Lutcz`d!H4;g=#B@yG>tHCNA4CAgI}ZD-diP`J@3|d z1+-;wd4Rd>z4PnSJxz}*Ck0?qohDlElvV<-_cdn*uT$5Iafs$hxi#quI-KNzi`n~u6ZxVOuRKF8swX>j7O)fI=g;cN&2pD>DH1E7ZM}JN zV(x4MT@*Z`@`?P)ax`c_m)7~f6`C@DB|{dDKFnW-yhx^Wj$YJiAiTI=#6)A*^X{Sp z(ve2+HJ;T3biG}y!j&Y(+G$vTHlh_%lY%~=Xuy5vX@KGeEKo-q1T;IMnX_}=O8Q?3JsIxa%6?ED2 z(`&A=olla8LUU{&)-bdHkgi&lnfzpeHhyKiD%eXfIgYf^Q-VXvu}44 ziCUAJ10`x(Oq5a#`n_rU>*)K)xA>LEhwd_fZ!hR?t1d&DyFFG*xjO1o;-xB>J@dO}4J@QG*#C z=L!>GNtV9Wv7yaWvLQaeP7ffrhhVt^N~91kvZz^|moDhy3zC9VCKvB**$0Je3#qPJ z_f|}yl+JEAPM@@808zsl&G2}Ou!0tKNIM0Zdht?bsa~t;X)L$+Fr9AM6B;#am_}zf z9u1GUIsstorxZ4zSV-SzpIetcDO%M=QJ_^}&Zz#ed z*v;ikJJyAvKA8)VEbc7=e8{5reUcXhgqDfl|1Fj8#_DAy(khD(@H_8_W%}MV$OKav zEk)DtI0xplVn2WWUVG&P&=8(C#Ll;PgZu9!e>PBS2X(S7u7v=?wzRl!04sJ=1Cn6# zVck^8l9U^Hm|49<1TItKN-S-vmb`gKAh^SVf~AOu5RTCl!SY(wxJF+D1<{ha-6MGsD-v+_Z+S`QLn!$RVPEIrC7~>|i>GbpOTc^>&XM1`CJ)BHp6nE>PM=r}?Q&@MZ;?CddKKaxP3n0Iy*69Q zd_S9h*Co~jb`nYJ#wu&F3ezk4uq;1s?WGkbgzZ`1gPcPEsOR@{X0I#7vbP2!z^)hk zUgmu(<+HxGz5~7N#}#6SP1z;H z+Kt~(UgtirxYgEY!{-T!nlPLb>2C{VN^!OcDrL9mOGD*~l#E!r$f&NcM5h=|#_Y^jDP1>}< zp{C*1vMq6B6~_(1H6XkMITNi6Gkno5|8}CnTq& zLC8s<-Wc|4JA9&Ee!0@am15#Zcv!XS+%G;3h`zj`7sJOzKg?&xz1a;EEmnaJ>w@H} zAc#1?+Sp^GF|e=5X7ub8#CBL zOAEpWy;yiTUbPZHLDoLq$Ka$#;g79xFrgM!fH9_>O21|Pdvi`;{6&9b z_SG5J zw)>?36#&}W{|0RtgDuCwH09kPk;%ZAF27lWluTB`HrG-_Demni{U8u(@P!7&M5`yZ zPcMhwU0MA4q-a{jEXfR)xcO0LDwNqMV^e$gSviPC2zPiV`&`(Omo4Hctd9ZoGKsnQ z?=29rs2iaKL+SKf6+<*!Rkgu@KA+uJBdofiNTi-8;oM(X?H(9q$6>>4k;&+sI-!y{ zM*&O;a+I->=ywy?GH8841N2OkOWv)T`@KK7z^uO_Jy-2k<(WF=7yxWKF^Q-Xbjyu%Pk&QrK-C!vNnzJo@+jWQACTa%;jH3&+Vs+{F2SdsN zvH)YDGB6=mpWX##+9j!K>X!Cm1H-}CLG}9J`JWU|oJI=XGBLF!aKrFYFGBKnmk#$? zIE@yJvbBJn1ce3{Pv=zs-n{i|c4mv?t$!SGvcTp%#oL;AlwB8pUWAu_sM{plX zC@Xf-5}NDq8Pkf;cbSaEB1K@7m=)x#EAFO$HQ9KwDI>+A^^!=Qcy^KJ;AeaHY4^`~ zwI&NY^=Ltr*3J)np3q7|=zPh;L>ASF5YIJ;rM+x&6m6T5mezKutU1R)73Im5eV}~t zBeV-7n|TIZZ0H2h-t2P}3Q)yRkqTY|l1{k?UwB+fF9AdMoZI)sOw13wn*dZ2Q1d8FR!u-2u#Ih3J3N8IpX z1tC|S=+y6n8wy|}A^Fziep0j{+L-wQ?ro?qJy~WTOenx}*gCDA`!nJVzT-2L-;RAu z!0GoNj{SIpxt7^u26QrTkE3l>n zQXro*_?$)yk~;&{PoApm&9JHSTX&Gkt##)+|`a?0$5yMurt1QFJArWqHvLX z-I2ZnRW}2Zjw?YKb*{Udv#mk6TWeN98{T&`UAy_{R#Z);G|R;a&}y{ta52HJhT|;; z!;pE7gXzxgd#g%XOIqfm+N%D}Z6hlE-8^-=*`so@8I)i-9Dh zh)M;J3k~}W`@_;!wj1=z_ui%Q9#~Jl_CfT~IVBn~;S<1HAn54NkYb)|c zQ2Q($g1DOSGI-1Rd%J8ACSXQ;BV1Mn96&`LwB_xj3}eN{)lir=tD6@#S@r_EU283j z1M2jQVlLouk*zR(a*NTA03cI=NEU5GG5|6SolH4lPaO?-$No%XY$!cyv!w*D+D@K| z78x+~K*DXFN&YcaYTi3PH(__D+p2vaLH-OOZyg+f9%IU93h51ybZBtpBW1R}|A`=~ z8%D&WesFH`4IrXJkUJpqXe*9@_&c90@!QMwZ8J zjA{ijIx8KUWc)4>D!G+VqV0+o%0RMt$^edM5ZOhJz5??(J_?EJ9$SE5kO;RU#ZPSk zWdXZB86EJ7dGcc33uZ5sSBhfYQJJb(8XF=Ty$n^5ckwT8)-C#n*6#N^s+|d}+?w5e z|Gkaz!!|vzuWW9MNUkDy=r8M*ND5n{w!3etPn2;LQb@02j!#K_vlZpdKP|gZUXv zWiMuXftOtcq)UM2ka03VhI{B~1gSK{JtF^ppfFnsHWtGQGBFVClL2i)Ee!O!Okv2} zh3f%eH78cEwJ8`ZSh;X3S)1 z!=DW`a6m)qx%Ixi`(Nz6byQUU`ZlachoDlDVgS;Ow1R*%(hd#MrF0_=BB2N(uy2V{>h+h$@=e zG_5WU&M4)d>b&%gDSn=f_~o5OXB!|Q6gDLb+6@D)pCjmP?-GTyvF{F!cB#R$t$Sb1 zZXzk}%7C4hSBuJ;KLevo3h~R|82kBWfcYgo9a;bsFmYD+$ur|)HKJY;f34~NxK`#u zQ{Ziv)dzH^lqaAEP~m%Rt5hTXi{;QAr_wjmW^>8d^WDdGYfo<^J!9^7jh+UeuSQQ7 z&#D1*Kq%hlmy$u%80wbpkL1C&>+l{cNTr}>F+IDI}{AwT5K8TDTy(< zu{ZY~)4`i!`i&cHKU|CwMW&y0-{{`~I%g__d)+aXBy2Pe-2uRi(yU73ccG(I1?q+G zH9I3ZBP%5>AJs-Wy>dvS4EREx+e>-vzW214d{i;z^+H-Nl*!Q??i6lQ|AMj8*uaOd z6?*>FD3%-eIwiD$DT}JG!U7p9B4Ohy@6GQ-S@qpvHlF7zONyb8bHi`73_8J}x)Z8t zRK#XD!t)rJGMYbzAB&{+a`YsSF*u)c(ajH^+mf8ok9t5q6Y1cxs6a z2RF0o9F*t#E-ZODcJlh(HCV23dKzu^(ZF=4X2OZLcZbd;3=tev-YnL4AokOx>Hsd) zs;&-k0$zp|&s15B=}J)#w20TqcQt6$NWc78O$R-b#If@I-VNkb2A%o?PxU&hHjBi) zgYOZ^tTbiRBRY)t1tqiNwtoC-kZ!ME2lzS1bFnx1!!Cy1?td#X6LsHw!f}0hAOogH zun*4&7=C+4-Wo_G!s70z#kG;;vFj8+Y1DWU7I+0uV{5u50sm`}hbQT6%7n?ZRN{HC zS;S1e3;gQEz-y@yN$QM=ey#nK^?32K3oujWhu8k^VDE3Wn83E#51(=HslE}}NRuNy_4%vM;}0xN zo42I-2-@24%bv{hWUKMBX@7pzBzmV0>znj^zdRw`iu5T(KoiKKgYENU%c^TqeusQ2 z$zZvXOBGZ<6y}l{6SA?LzE)Xn`(& zY2dMHEzFwCi_pCUCORFHg78+V)l+i5*Q_@$u#FJaG_LnHSKV}E7YIc49lOssnvZ?Y zykqqS<4g-csaXJO_PJTcs)z!AbG+2uZ9`Y7vTtzi0{p6Ulq@|4)la5Ww()>(w0VZ& zLQ3BuPI}$SpNv%dXW} z4=tZbsV9f^a4e*_@1_RrT{Xc~((#iwCQ3Yf+3&#L!~ecVg5=i8kc3bPGqkmZ+HQ&}|U-&Jh$3 zP8D7RU{4Ci8|Rc*=K*GnIoO^2bgA%;6u)hE!$uK_0Koxt)Q;HwkM+hoUq8gMGI5*{ zZTNhpzv3@fX4In6SO@C;Fho-4ymFQ|n?}pvC4L;RaVYWn{+#A!CvPL>3GtRwSf1Sq zigRzte{YZO9sG5ND28kib0**E@|{ax#@YX|mxs66QuJwg<*pp#ZD)D_SZ(7=Z|Vq# zt&P#{3x|v(suZdRPcwQJ*^XZM2_}$z2d2CTF(l9Dv$czKxUeE2G@cf{KU#x15yO+R z`ti&vvuP{u;6$bov=`I-1x8KYtqpSSNl7ef3`)kR%_;NLfQ7FFQPBG@fexkO2OeuR zvtoePOJN;;!OF7<37H7k6RUx%h#7o0?T8cZy0N~?kJUJ#){!hRrVU0H>QTIY{5IIk zO&yVX^BeST<&+<-@iZ{k)DdDe$f)*q)p>6yf?#;4Cu$u2}4Ug>)5t;-r! zKwRBnWRW>jqY2Ac;s&_tV9^9RO;Vb!-SR%G2VPU?i21W&wz!& zFhq)bU`YVD`#}l+w1}0 zb8{K%c|SML^UNQ(lCc{q>HVnbc`M@P>_~ePo$+F(On68UeC8`+X%cD(%=`sI z5lud*)zzV_urKcgY&5cBMhi5HB!HgwHA0$S)N*g~f6EOwz~AQIQ`pP2MP_CCr40F) z!L9}nau9#_^VHk_{+=nJf|~$hgmyy$?Zt^+G?p^`%=g9SCz!8z6IfWL_qN#@<=eXP z;efco5qBUsO8BM^^~(2zNMJ$>-a_@7{TK5cp8`O~GTXx9AO6Vs%{2ezp*2f8zF4Gd5tlIJ%VC9)}&2jZs;d6xjyq)GfnLgclXdv^$a zgK)okV6A{80IS{yb$smG*uZ%Klot2)zvJ}3BD(CJS?j;Y)sFd1&fv1R4VedY8mnCo zgr@74skU;;Z;gIZeRcwfP*j+)Ce{+a0Z!46Z4`=%*c-d^iyQfuvOp^E)H+)R(~(73 z|5|XG_01BiqTvj;O_nlzXry)GIE7231{5^CJM<$h;c~`vi0+FGS8l zV&|#3>@QSl@EHPi*Ceis-)6=6+ua5NCo{eK>fzFFQ5Wmb|3RbvzlwwZo3{b9(f|MA z-T!|RUugQ&@!`^?hnEx{KhpZI5X1jL3LGtWw^w&sT+tam``(T9`=HrLf3N6z)?ZaM z5U;+;0|G@$5UbUlBBft~BtyRg!rui+$jq=7^GZHn30I?qA8cwRRaz+&tv_&ExlTe0 z`St|fou1xMQ&zHjdVhCw%EflV981FgGz3tHQ;nDR_ylmR&?EQcR_#nNP_&vbvoAPH zQ_dqBz?NiJC9_;^kv$`@KVKsS)t~BTp(%PWv9`W?d~L>rD6hjdr`1hxPhlB=tb7J^ zD2rV6?#v(SKL8ZwP8^WDSy5@AiBG;@{?Ho81IE8ZY;Iv)1mQqO+y*Qx1|XrlP~Lg` zAHsnFAf?%HT~(^Y`GoG;tOn@IF6 zmA9tibCq=~-GvH(l9AqZU_Dn$5#{?g;lBrVF5y2W2HJhMJN+JVKfLwew|{5(5B|Lw zU_PvHlbnjC@&j!0TetCVlq&n$Tn;cEmeZfRUA|Y>z7KHrP4AvnZ;$@}}U;hBp`H>Khut!b2Jvb61wRkb^q}9&X{e zWe@%li*A`+Y;^?!&-)4%;`dTX{)eTS1@h$!&RjtH_0pxUkC~A7O|K%Di`ztRS~{}a z?qX7IoP}J$a3@KDNa-(vd!(O}5H-uhalJqddOvGWdnu>tFQtLe&LZ0twT+w-5k3N$ zzedwbvz)WL*1b59IqL(vSapFI6vvnqhf-ldStq#nkS;D=9sU#ro-y;f=E zFVGN*kW8}0uLPNZ+6*iC;EQgh3(b*Jr$-y586&OjdC_5EsPp%8oax-NG$aEsX<%Vy za5ByQday5NT+1Kjmo#jmsD9_Q6Q}oH!cTqLivE!da5atubmto)V;d;F1cmf%krLAS ztl={0yNdQeYZrC%-{}e6`iecPqW6fJkXJR8j1aI5>B}T}jjq6lwsT5=mb7zc=IK1v zRC~$L_9>^Uu1CEg8QVY1dHZG{!-#R#7TPTTkVfZ?D*ZZkjyCRX;6k_)E@TI-TZPrM z8GkAdf}pxN-3w&X zM&sUCq6E{rgx_K1+aw`3jqbEN!L_N-Z)mMqF!~D*d>}1SBln3txAe-!V)IIGVt-CA zphdOTm4-*`bG@SF@x1UAmO;dv&qFbP3H!--X8+&|v15@5Xo$96Xr{3{W9EzpLX&)F zj`P^v|Mg9N+_bX|Liz{3uK|rp*^0-a<|pspOQ~6QXM&lPcq;kkn^}0x*LlT=oh*6*GqF9^XW~*FG4vzmuz}YvPvL7( zuF5=M?=4D;8+5zN{q}ESY3mR)Z@}-ccZ{>lWSvFEJphH=1(ms2f?R+(@#yAo?kA3q z8czZ2_rA>n_Viv%2KhjKeG=Uf=AP2KFZqiAk{&I2Pc1o4v=;N>^KKuC%=Of~q)THWZ&o{F88F?zXSTTU4onyRL z_5<*yn+|Kkz7j24Vsdb9Bf&Wm;f^NNx8m1wt}W&PzApyJ>SNfu_HCyMP;I;@cAnyn@s8knz0*CBs{Dr6-_rB+CA}(BHGFLyZQAAU z&3fc=gn>(~!VLqF2JTRuIysy6ewpU?lTHyxut-Q3dgI4ieq2(=aO6B7MywU@2NBlV z2{I$SyVCIpt{4Mj#QW;B%DCVK0mgoF)RNjf>zeP)(WYY_T;1@~PV>Dc0*w0~r8Qe; z10$ny;$0KbM=XLp>Hu*8P1He&!~^HW*ZF7tiaWa}=hs>iAYYwwiBHpgG{vJ<$gYoz z&o!e>Genyn&h>V}B)UIEZo|k<>#*^fQBD!CtJwc=F$37+$TteXE6>hxI}4cxX4SE< zeHFemgCb@a29GXlb1@vjJeoIqdhCH=x;?styz@i9kElM)nWwmT%BKUGnGxySKto^Z zuYo$+86Dn_ye3}_+#~?Xd(K_y(HDf~EM=d#C(fTgr{a7c-$`O;e!l?_?-sBec8=;x z{c*+w5-O19{VdO)673mo6mJcSA~^GxpwR%MqUzt9wx`O{cAPi!?n;(|-T_+XnVeR_ zS8q1O2|1nh@k|tHCxV1aY`M)oeq(11NsGKQ19?AB&?6~hdGnBNYIvkL68ff|GgCx&gstVcei#w2q;L? z47GTbV>5fjh_8nbKs>)#JnLQOcNK#AGm&@iEmuT*c#r%=6gN&D9qONXuoGktjl57ac0*bPH+U-Qvj(A)VtJ)R!(wIN6D0ov=;Q^pGM zJumA`PD;rNH(SNQ27sP2(5_9MCVHF*t!Ml4^lqHRku_Y(MOv7K6;YE)CX}@72}lzd z9(KR8z)aVAq5xKJlQ4u;{PiIBcC z-5H`Jf|`sY!jfeA@_F!=%5hL`zp<>aGcoN2Fq0wfnrZVG7&vwL$MZoO;9#8N?zFSK zerGZH;!OeT{-@1{Cz}?1@eSgElB_1pi_f#c(v+H=R~@$auC13Su(;^2)IY;kN)f%u znMN|nmDT;azeTs9HfcGUd zDH14&>@8K^Yk!Yl!t=bajaL*9v1dOp(@y31+CqAd%{5M;t_uL9GytNm*3CU;6bIiM zhFOi}sXJRf%Gof|Q=1Q4@g^=L&1`w~c?^eSL2nF5(9HseV3}G#g7Qn2O=2#+2wVLo<^XgC>FEAGc z7t;}L_zBjT#VHalp6lD>Tfb=g#N`=A z|M~agW-gS0+aKbkR9G`1?BMjaoK%T&eXz5WZ1BV9c)V_jiNvb%8@Bt^% zzRmJ{c#2~#1g<+QXY~~TJSjgDTD-mvAvCXh;jA6iTW5UUB7L_Q>WXg&@mHec)$ssc zy3qIG$ATzxWW{aS$6VFUm|OGHY;W0+_ZJkX&5|4r^ocdc%8y2Jr^0c~F|Si@4j9!x zTDE$U^bW|uWrspicyIQi9!=M$=Pm#(@WQSUu^JnqrBncHT z2PNsoDsE1Fy@+0Bu`0ApEjQuj7ID4I7z~4r(HQ=HFE*=9!I4^uF<2iBQ?VQJy*A$2V^-#T2DN=JZ0KN z!HLjX>txRbFZ(6E8B>6YI)X=dD;}IZ(|pq8=3KTen7i3rfDUQVJz!us!f?-S@^5fb zQ3SCO(|>#3I!Gm1=e$a(VW=O&Ai;LZVJMEG&B+Mv>6a*0BTD5TIB$TgH$WDY)|0my zq4h6F*`5T9dMvsn1biqaV<8C}h0a;dB*|>3be7HQ7$4kGMfGaV$)b+jg#E;-d6a@P zZP~e+oNyl47JTL+P!qRsJlzD@bfCces)gY`(~{ru7KPRX59Y>lauFlOr|SeB$Bkm` z7#p5Zg#V#v^a>$n|6{g7i&V4M0IGeLra7ujW&B)OZ(JCsy@#vHH6QXos>OeAQWI0P z6FcuVrULV#qRJp?DAhzkMbl%0zESw0^(mo!;LYV=KP% z>Jk?Ityd3;0;`<#x(!`t>_DSt{8;$JHDCHS&PG(`_8DdTXk>Ozuw}4iWSkcd;If?i z-^XekUaIoEH>c6D@cvfQW5mDcBYM6cTxq_cd=QZ41dT5ct8DU^xx1NFVInkx$v^t! zS~5^d-f&zw`0c9iPC^}oi0h+M5hf6mxf2*qh_{ic=^NPFW`vhcc^-8B$*)?&(&g>E6SyDuz+vV6_9a0H z>-FN@D|yN%8zTt|=`mj5fuPCBO7 zmeH;2hznk5&R)>dY;I*hhbqFAAygEaI*jm4HBc%^@{9W1bmn)weJ3__adTZib4$xE zG&g9y-9my|SJ!`Q|2yblV#kG49&Y4fRWJi7;udWfb^G8iwOTgURaOPcNDL5NK`{W5 zo)WrIrVR^0cNW{7afBD^L1ja_F3tuMRtrpMhYf)kebF^<1FtP;X2J)zdmi5^;9WbeS{{c4@zBDIQSFMXNl4)f3{)+MQ_$(#-y`^bW%?GzcV)kk=KQ9-r7WyV3nd*`@0 z@?iVV0x7s-TK4Np61jIDrQ)=$A=6!3?(G~~l;sWDGQxHrYaYy1ize#^ zxQ{t}0`=rB8m(1X(!xkSx}|{Ul5||c8OsgDmGdS98S*>Y((zJhAe_bS16Gi$Wyg}?q*7w;(TVPXId=SxRl$qFj?rnm%W1-j9??Bxm$nLtVx4VOhB69hl(Sn0 z%NYHJw*3FAXyLcK!tzQ>upl+h@K zZD(j+yokv4wUNz@83&Nyzgwv!Bzm7OAFdV#czEwgndXU=iX+-PHUeQ>l zwf~;3{~dCb)N)m8ihPQiZV^njk_;G8Woc*{s#xQ+g-Bw^8gni($@f;{C>`Jy8*mTG zw3LF_km;WtBljDoMe34CCrnnOF>p1`(BhmTe};j5&d|B0HhpxQtF0d_m^7)gswaBN zv(sw=QdHK$(s=mry!`V3f#xsQdI?Jv+MVWnppnBHZu00-U?#=j2Whn0QCGyKBv%3p z^=)cJWOym4c96wGqn5LuAk100y_91Mp-5Uj?6|ORIkKI1@`H`u$22NhiV>ID3H!a| z8(MI~qv67hTnfaaryfP1{t0Enqi6(4a0h+(|=l~5vt9pb7s23`f1aXi* zVH6nH&K#zZG^o5!ayN{RI@zn3k-ybLEFonWZ+Fp8DOkpj9am)xQ8bJ)kca`z*l$7F zyt+MtvkOG!WNQ2yj7XS=O;%N5Co3OrQiZQK;3lQ{Shwr&jyZNZHd*HSv~QeqZl)N8 zuS+DRM}ef?%$)wv6Bwv_{Zv>zIkzvJ780qcYlGf=8nDXfkL*D{DbB2%S7i;rWXG^who=y{l?e9r>O+;^z<$ys7g*Dl^ zwu8_$H_j&Y_=I_CVwG*^l+l(x)pYg%YQ$36X7bD?Z+!i>v-!D*BWL{KAymIm$uMP9 z)b%tm{A*lc+81a{$6r3I8*2~gQv*R|>Vh+*gu>$TmD_2slpa4c9SonV`r_xCV*eK<2`0)xuVqLw>_0>Sdm#*S zH@49Y70593la-?EC#tY3Of{vc)VWe7psw$+r50Lxe@oVXw+dF@bT!qy=q#OdRMiyf zCJfye%}J{fDyPz)3cu$B@}Hvi&1sEm=+?Ju_ZGGX?}TqY81tGw;UIA+JSg1o{?Ry& zYg|BCXP_pPN4`z}L!TUjBxSt6mG{c_RJ15;C#*QZ8k7k=8#b>7sY=m08-C|3xbQ~% z2g#wpJ3^;af(Q5aJa|fr(p-v;Ul4~4ql!0N*CXQ>8NIS+s>SujZK4|2KSbN05*zy0 zChf-dOzD5ew4Z^^TmO|wgh{>~(uBy*nZux8EU#&jj}mds$FwNON0(B3NbkqyI{jACddDkYW@KR1vORf{JC7LI zRJfWR7d^b~M`lFg1lrQ~&g@mJGS3^M#gW-_YJt`Hv(B|Nd=|4CZ(eisOSD2eq8#(x zAbBm_=?mw44N{s_CJPT>(Frxf$pSAMXS^UURY*T#+&ree?QSJT2W9T3_eZzJr|VUj zSO=GoMg>TuBSvgR9GXU9;XNfW1zUZmMQCB7uwlxpV`t7A;0&wid6$LF9vQb#g*pTN z_NMN-n5V+-w5ks{!g#HYUcS&dS@l^o9XT^Im7+YkAvA58?uC$*k{c}cHx@&`8N`f@ zv)dFs7V`)0{=^x+HSQA6Tnfv#Ef6QERiXtIXETKq7FxV-_*hk1S_mn!lXv3>ZHZPw z&kDPos^{3KK^hsx?*2+_)HKB#ws5Gu6e%4DP>}T@+`$rSgL!QSxqct9dp_1Sm)xR_JL<=eJ)pPKDJgO_U8zi9f zBjcu3W{=~s4$oV(rF9J{4M?FJREFfIGF*n7*Z#{mFz9=?k2wxDR8N7+QS5SgI>G0S zpCMTe-s_w~)RcME1k}4UqM`8vp{0I~htTh7JR7@{(kACkbE9@@m4c#8G%s+W0%dFkE!Q^f7#;U4nYpXU;8rM|H7q zIk&Z1RsX3zs)0~#0#-T4hE7(BahS|8M4Yn90O{(_M;rJNICuRPb)i&Off4xWcmDMC zT1R6>x7pqiDmS!3t*8|6$RF72r`{l5{t#yIks+c`OpsPgF1Wx6NMUm%_Xg5jUIpNv zB8JgYOOtz04`cxA`(>>7>fQEOam3+K_ojL_-kUW&HlXq?R%%eyC)RE!a68C0k%h{x zaW7cWw^%)Bsp8%a?lIOU<_h?(OX}u>@UXS-_!K@i){^Y>+a6MARuWU_#Y$kT)F;bj z0dVFmKaG4)6W1E1ws?nU)b=qz038b6!6<8^t9z=wjL#Fr&Wa{N+lvpT5@vV8k;B_@ zH1JiIjR}20!8IWk-?*PD}|i5 zW`r8z@r^5=fS{DbhR(}dh*PDNa7`@}=jq=2h`#e?d+%YAXwp{P!oelFSnS0IpAxX9A8Wc3B zbJqfz&xt&~T(b&au2#Jhu0vWqjHfe}s9kbM!ZNg^54d_r&V=w5NS@TW%fbIeF=(rq z-Eo_U`)r5XQ3fWPtYURi+ANvwdSI~(_NoHvq;zG{kj>S~yB z&y@;$a^jrD$JTEWyr}4xjSdPcM13>XXfc5>f+{YeGs3E6B_z&GPPLBfeQrdR` zJjd}6&31NkRc&KzT|p8P|hCYjR?I-eQ82HhmR^EQ*+gg&POgrylSLN5$rxzu${i}oXJ*b)A%lIq9eWu{2 z!d7eGWd>_)M!gbD0cn?c-L$Zdefi+#*p08JQ-X%c}YBeTyV{lmIVuB@gN`J-Aiw2795-IWy|r!%$grx`Tp@SSd%A@sah& zwGJ+}_;ot8psPK5<=~&aAxJT?+N%Y)GALiTd}fNYSR5#;KzsUOE)YP5E52QwauS1q zENeDr6!b4KxNXNcrg8gLs!5!sPq|OrkWPx8&POY7q6A8I)+nHFvOI`-#++<)15Sz` z>}C5wKk$}7REro`>im1?N$c10dP!2o4bhs2Z^6tfg~t`1>zsLohW5FwpWRiv01Hyi z;1~74i48c}gUue5T#eLDzM21SoqI2ABJ{)t72}-h(>jk(=}FRe?zmz_>B`-*+l_^q zJNK2hwA%r#fep7HKYYWH>t)chO77uL<=Q;i(8RAmB$<0h946XS>fT?naz+q_yW!zl z1=GE9eA?fXH(NnLhu}XTMzO>A#&b1ux0WH{r>{!Fj!i&$T^c=|QYTXRgV`B<`YS5P zy>MK@r^dc(+z42bG4tpm?FCBsmp$#*UiwuxwEkH)=q2R@tYtJ0rId*dal#p2EamPq zl{5IJiu#plB)JSooNKJ!?(Sq53VvtDE!o+0SW^}g4)Mo$%-*-^kJ?!82CPmB$&u>0 z8JPzqKY!81P@ZoFX^rc*s*05Fm>3S~S1>1-+9=@gGX_nJ=7%a5;eo(-Ivv;W#=AQX z72tg_Y2$X3#1i}4S&qAx^E%gUabA9TPf&3$Mku@FZgn$kiStbGD3uZ|C`c6M`bw#+ zp*_uGr*B6OZ>y?i#`A38>p{TThD9EwIjj+muGnm=%56ZMPlzpg7j2NSpM=V_#;s>x zju;m{FjrLBH|%aYR_O`V(S)7vl+D^SZ$S3_i*aSVC+pxC7qf_*jOZ)5_R9iu>Y|P@ z>rg*r>}-ebEJD9e+0DEwW=JWlU?wPY!?9r^&HGSrewLgr!);em)%Kggk985VuZr>MD>Al7X*(4|osZIcZ+ca1 z#?V?GhtHP1+(J;1j>d*!uw|4M_Igy^6mVtIjC94|I(xuZ!3SauQ^=w~Uw`OD1~1Nmkn&JS-Zz!cJd5*4$AfjF|(RoKYX(H{wa<*TTUG?i z+@;QrvvOMMb&|YkGVYV`R;yJN0FU+7jItJ2GiM`s9#Y$ZA923uWIp4` zZg~f@PVt@ynU-hTigr=6o+e!VWcr zvl$EPu@&UE>HeOB`t)OCq{w%Y^Q<9fRtD%nj&dekeUIK8oD|oLm8{zrJrPHjw*c)X zuSZAE_*mRBtvKB%IrLT!Cz05743j5a&t`!_tW=4Qdf3k0*>EdWzYl$bm;`{6EnCWPcaPJ2)cRsd zK6$<)wHy9&I4gpNT%a5~>cKWmX9$+W&XwV)?2>m|vUz>!8;MgDh7 ztN!6VFZ^f|%kNsPUU`3~8n(%A4;Kair zmi}gO&h@I|hYKERl2qMd1Yul_r$Qb;E#A4v7;wbZ3_DL)XrL@C!5bZ3TrChwT%S|~ zJY^q)Ud{A`QPxo7RK1Mi{2TO*aGw-N#4ZJHYyIAyAK^*OCm(>0bX-CzPo=ZxeNeMK|) zPNuCwSgP>ey@dBliyFNX^3dnWb~%~5BDwz{m(DxCacC4URLQY8t2~D;u%QPvZ1qK^ zfjLQ^2)rQ?RmirXCu$jx_g8a*Q>tgv6KwKi#<2w*0NvzYsS#HNY+9{W3SzIz=q_Ar%`sdRoR(iEj2cLUW-)UpSkT*d3a2E~ zi$S^l)Wr*DqrNVUcpDH(PezL+YRXL>HE{M0T* z;l{+qjfE+Zt6%v@fOp84CF^6Noyyz4f*WukYvV|8#`!J*Dk}pc8X{)PwD&z>4mtkJ zj=}?ZMhXTRdyMOOoc9+l+Y-@`%0Y_?dg|8)!U~J`LbcmIC?bvKOL7du*{C(X`5^tI z2;lE%ISdWOY&qzQ%vnkXqTJ3rrM)i|alr&?ya%6c(I74w8c1Js%4VDj+;*Pzj-6k; z&iGkF&*296rCphZZD_){O?B~xpvPPq;~qv)Kapds?G&CmA8n29PLbuI{cc;#ex|%c4rN z;EZz*mmv**u@o{7BtM~#%J8Q&I$N(W70+??&9^<1+c;4k1>awK)*aioM=7N4d4veh!lY=ZMMN7l|JdcQ zy5HxV|NA*}pwR{BTFqP)hH+$)aQH*jADcvuuCUW_(%DC7+ODp`TF2ROQZGl zfcc#It$tc7RM9>8*}$JbLZB(j_HIvE{f<684TQvDOafMZNAl(d!h@jt;YlMq5OpiAqv zRpOMXhQN0CjdM9n$u!#)f3GR65STpT+{-2P96U6QYNw@riUr_U>(K!g1Dvyzv}IF; zG&9#OTEB9yzDR}xy^f>|j7YAj zzR=<*`|Rlqk`(E5(Zym$Htdx9l{NBWClfRt4I9sr)cJN9`avZs#6H=ckxb}Ax9a;E z-n43m{zT}hGqKd9_VDVKRlB}=NS&{*IZjz5#%yr>v)a1#>dQ9OEuc@hJ`I`u+rm}? z8KaY`-=ZDJdo72W+hWqlW=<~v2ZPKwcUF@;3-Vd{NCmALXjw8sHB5wYE$eu8rL+$` z35b=ExUiSNdG769cB0t~%>Kl-oO~?9)?EGUM)-Nk3jOVW?&_(kwfR8XsdsllcL*j0=AEl{#l{RXWi0~* zsA(iD-_Y_~+8+TQTr0%A-)MRPAE%?Q8k^7NKh0{}&3`KUk#_l1>O2EhsxUL+rB~ov zC7Q61u6OSuX^f;zi2oy9{uh^Vi^7_cIQoET$T}$VJv-M8;$su*q0h38Lv5jsf#;z5 z7lG%ydpOD5FY*S`87lPtWflKC3`CGkdPC^_dOqrDT(VmZ#)bF%>V7J<-a95Kl=?7$+*&&F3~Mt zXaW4yfN;%tma#?8L`JGN_lJL+Ce7y;VvMgCB5A&wyHnL{kNW{(p8C4^5t6*G~E8 zea?vsx)mzzUz+%cFqHi2GbN^k*q!C9E^>21ie(T31?bu_a{hGe^ON}QKWvBIt2K@^ z$QMfsTPArznkiIpZ#(%3SO9KT}AWbQqvA=?Ee3n^vR zMO9};9cJ4?Yrr)$yB2wUq808@ynjwl{EHtAbiAe>mHD7leN(a@L_)zCAsv-jeK5HC zl_J)Kz)HI)?g!H)eNdrz8Dw;V7 z!UWploanQ8Lq`>#?2*wNKeP@c4KHRF!I5=QWu{&)QY83KJ8}t2hW(QXYs`HuTD5#V zZV*xEizm=-8xAHnet6Piy|igDQ#5c*Oi|L(?qeMfB@xaEcX$NHvmZV~R2H9nTHZlj( z3^;FrR(VaXUoeR}^dRo$P5U*ZVKTh)i74LHeYHXwb!I6oWvTe z!h9v?%BXmDwr9w#rX8WzIh+U-SRwZIdRbuU^87~L> zU(Dmr!!RwA1y#rirHm}TmMbkB5;fw@d8^U_=OLS>uJbxKmn*04hBQ|-4I%U!aEogl zbgNMpx9BroNAW0bAo%q|R*w4H*oD!&*$?xN3S;?Q_f7E{ERqa!k%9Lg{fnpm<1mov zn&(bO(yTw8YP30CD5Z3>TU=WP+4W~pOf`grt?Inv>emPiGp~*xaymuTst&Bf0W-4u&`u-APB>cB zab>NUM8!#s@>IZ^s#c=kZ#CrgdjnJEeT z_t)@q9ZXhnxazmfP)%qIi#x5AIbrnEjZcbpOf|PO;xt2KniJxjm<7DwI4NYm3>$s^ z~<~*N6)&;*75@5*Bc9O#H9*t~?&fegBt` z#=bU@WposxNFlo!Q%W?J=nOKpV;_5JY*~gPnUmy@ZA3HnbqG<$ozU1D!?9*P7?ibS z=|1Wl;PdO5|67ydcjaq$plo^q9|5RHsFL+QLL0Ks{sko>do1NW68NH<-|zPvi9<> zvQvAKNJPn2@q@+_XG1xr>Jv`aJvKM7;Jxoa#UowU+LCo=sx!*&s@a_FJouxY?U6(T zzhX8WI@a*`hgt$ z2aVq=3{*KN8Zir!1oa`=<%W-mH)kW&orXd-!2rN3M#iCMXaa^19QirY$`5j^fDJY% zD$0rVhTo)3jdUm52&T)F=Sys#54%ukp1F0?aHMVS^+0iYf|^CNetbxfAH3fWh<6G@ z9As*mFpQVePpzw$H_=Q%XUmsB3J z?N?sHN94d+SW!XoyuWCV}&@} zh9Qz*Ilc-X!{Rs^X}BQkYxLG^tnSq4PKoev1@M3w_zZU}^SBP>1bX#l!f2_dMZ#Zq zw+*&bKUS}M{*UsdNuhVqsMc76wAl6TK$~JVQ$;CIG1dWPK{L0-!tmt?SN$m%WM_5S zUVp6F&;Ro-%`Ge%KcvADg~u3Luo}=E3~k$l@xRW1BB2}>9?DZz^Uj=cbQoORPJ*11 z6Q+J?poZwJ|76}BRC;Wtpj7OdvwhOlq-lp|UiSa4U;kIZ?9WTR(j&C2@F5j%Hl=l! zNz5gQ$TWndXJuK7_k*THuuDyPfjrMy|en zgL>8ksgR27G6ssW$q?Df?z|qO{u=88xoKgw^o(?~RKA7iT5^{3uxUKRtFT72x8kjo zJUQ3lxb#qsY^9e*CKd|+WKOH}FUm@~C4JJMI`twm>p#HKd`XJiqJT=lTs&^}vnWWI z0l0l+iXS}4_sVBKoi({g2*b?89*4aO!GiEOq@diLmDo}&jKX;F#}k-0NxSBHO)_`9 z2rOn${${?nmHOo8m9e7svy|-1&Xg1~gcB3;MzHRw5jE~9Y|skw7zxgcKxmm{(V>*( z#aHofWQPmab9^wYa2YRq^5oC+7=fgZaA-SJkYzV)j zv9y+MeIwt2kudn=U+s7lA5@KeG_TSsh=q=;7uW@R6*HX9SFRp$zU`2Dw{S7lwywlA znjN-IzX(^FiV~GvaFwr1EW~OlOUct=h8CQ0ah7^;4=K(lhx@rZMKX_hCGiIFa8x`JBv7pr2v4tb%!rWtOocz99d$kSJgJmx>Vds&2g!dJccJP%5vnfg@~fL8nS&rR#mODjRe+VZ%!w2$%~ThZLj= zYD5dz^zo-_2bIY^+ZCNRzL75;J@~6u{QBF9;%c?g%HZmUM3muz+kgX=qID$BLGMYl zHe@P4=yd-nt`&VVt_1h-1kz8vi~=!@kw%Q-4k3Jem$T&tw{c%LAxuSN$Uku2`X=*L zqGnmYu3oDrnolW*)ov8obae^W&2H94iW?)XW(8ArF#Nj~b+P83%mKXi_P|eoHNw7F zz4GC@*PDIHmgj8RCOu0db)>Gq)!;C!ZZZz|*yZC>x8(?4BujlryXnB>Ympc!f&@!` zd-c&4d8F{1{Lz+*{_Z9CCrAH!L8zOTbwd%+gOL_1rlyEG_M>9{D9Qs7X9PZ7|HoFk zahA&vC`6v5;3L-++R(lDEPmvzTYcyzw#?JM#}%v7wt+Y+Zce0O)4fx3zqX|cF_Hxf zi#7-*&M76<;+9RgfI_^HiB_?>!j>563*iKfC8Nv&6l+n@9dz0XI3SOCw8>UJ3CE@x zcI%<8Q0K|?#D>g{P_Pqx(YnZk^GaY8lnxXjP?{QIo+D3M)vJfN_PEIcu=Mf9rt z0AF>eCE`D|WagbdU`CZ%w5j5gpLw42;nYGFCw2`pj=Q}*!MYH*7~r?MOKV%~_i}DN z0~YY%LZ!J90w*eXojrf{-#Plo%Hv}0wDg*3gESv#oqV;&)`lz8VusMW9Fn@U=wQA> zf>M4Ni-TP#Y*PK7g5UQXyzX*#t3NU`5v#kgpv9_zTux$BR_#Bu(cO_g=DDr_HX9Tq zKOYP$=hU!6Z^ho79++de*7i8HxK=f!yo+^K%H>2wT&s*XEj4G=_I>S6e12bc&ay=P zmmZ9v-1RS|)rlmLxRz>1tUnN_I{o3ijvTSD?ArLVDf!o+t_E8Bd^ZSrordrTe2Jgt)B*VZ?DOP{sC;6}`xoyv5SrgQHmKf<4Q7$}J007KRvxK> zP%vkJrvw?&XPO5*+fi)2QzlcX{VIA4jCLQ=l&DdUm=IBT>OU55)$WDgrz5q*Kl^cY z>E?BOf^MkxVO}E=H(+Ymi}psvnb+??Ta!kXqH-o&!+3{kEbX9h(~xP5xR<9AW%B&M zs0ZbQ2Dq0ZA1P7qnd;LzCKA~eSypJ%vu>{$#JNMX6K;4NIZ>S$Na-_YseT$ zEAmd%EdNWP{5yiuOXQrimEbvCT}6fqvtL;>*~&bCKqf1g%`*}($=KjcN&Gv)9JOx_rg)PQr%NcifPqHyQr``xk{I< zJ;oMN>)Fny5vcfiSxJsQo*SN(jzU<92VH))8y<1n>mqk9ni>_TkF^&AzO+bA+f`3t z%rxWqR%Dx&KbsKkjQp!?6hzcY=z-4%l;hWN+B}h1k{Ch{RJC_PGHM1h>CXEA5?ZkAkMV>~YBiy& zx%irYFdZF%(~g&PR*de|Ydz}`TpoV&NFS-x__n9Dx2mM!$S*B()n3gyV1YXr7^&_+ zUmXSGduWb_X6Ad!y(E0x+SksloZgW>k`6}*-3HaWT}kr$=~+Rk+jKkgL<{_g#ckFs z{1LjVGyd@G_{F-$KKWdGTt#O08N(avA8tk9vdJd+H)mr6l4J7g(9^Y>dh;_IA7?7~ z`MKs;xPA(mv#uG&7^>mXg-UZVMI(3eaE4+#FK(*PPLD?w(%p_M z$ssSoHfp)sD%Zf7{WBdm%2c!eQ# zL*DO&LvVT0yLSxBQCFSruL+OdcTAs<2lrxU#Wv2r*4q3E7qY0D&!;@0G%+q-ADn7g zs{c)@&ran*@;p|7`PP)$*{(JvHuMj#t|4Cvs#3BEcT^>N%oDx*dDJ`;UEiNS8oy(LHEpNh=AXc*p>lZv5!pFpFy?tn31BnselePZ_qBlNA ziHCLPG`&W}sP6<{aNkFU=h)a!w;wB-TpPRr zUT(sj89>EqM1{V(RiCeJ$J|A+o1@BL=}kJLsK$Ous6r$@P07ARo>(W_a#%TA*oRjLF%)_H>DjP@S*IQDN_{NiY0%W|v z;nU0ozZQJ}kJvrO&oym(H7^<_!^1r6=9_gt2*tlmiA531jbGRB9bbPI7sve00SbDb z-s?b`5L>tNw2#DIJ^ts=%a28^@5fknla&Lj;V1*1Z%=Gs4j#Z@M<%}%cs|vL^5Dlg zj_>#Rk2+)k(+z<$Eu+j=2fP@hi-V7Ay*+QjU|)uvz-WcWs-rjaqX$MKT>v7?jG1rF zz6@P}xsHs@ay911%pujS0uX8Y=c}9U%TNXAmvwFri0yGK-{Yk}eb4MMfGD%pB3*W0 zhN%ad5H4X03I8L+ANI2L5FqNZkv9?Am*KU0D58q)#wDit1@H&v59HciOXM;YM%gzR8ryunb%VQh8jQ<@^7{JTdn?u4S%Z@fGYnFXch5|mp5{Y UuRaE-P5*hwG+wRkDWIbe5RAppDRc4-y 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 I>(rtnJ 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 i%>PbyQmy+pb^@=gr!E Date: Tue, 9 Dec 2025 15:51:31 +0200 Subject: [PATCH 13/23] docs: refine quick start section (#3389) Co-authored-by: IvanDanchev --- ai/agentic-ui-generator/getting-started.md | 43 +++++++++++----------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/ai/agentic-ui-generator/getting-started.md b/ai/agentic-ui-generator/getting-started.md index 8a96e9bea..523aa6b7e 100644 --- a/ai/agentic-ui-generator/getting-started.md +++ b/ai/agentic-ui-generator/getting-started.md @@ -17,33 +17,38 @@ This article describes how to install, configure, and use the Telerik UI for Bla Follow these steps to set up the Agentic UI Generator: -1. Ensure you have a supported license—You need a DevCraft Complete or Ultimate Subscription to access the Agentic UI Generator. If you have a different license type, you can start a [30-day AI Tools trial](https://www.telerik.com/mcp-servers/thank-you-blazor). +1. Ensure you have a supported license. You need a DevCraft Complete or Ultimate Subscription to access the Agentic UI Generator. If you have a different license type, you can start a [30-day AI Tools trial](https://www.telerik.com/mcp-servers/thank-you-blazor). > For more information about access requirements based on the license type, see [Usage Limits](slug:agentic-ui-generator-overview#usage-limits). -1. Add the MCP server to your IDE—Create an `mcp.json` file in your workspace with the following configuration: +1. To add the MCP server to your IDE, create an `.mcp.json` file in your solution (if you are using Visual Studio), or an `mcp.json` file in your workspace (if you are using Visual Studio Code) with the following configuration: ````JSON.skip-repl { "servers": { - "blazor-ui-generator": { - "type": "http", - "url": "https://uiagent.mcp.telerik.com/mcp/blazor", - "headers": { - "x-api-key": "YOUR API KEY" + "blazor-ui-generator": { + "type": "http", + "url": "https://uiagent.mcp.telerik.com/mcp/blazor", + "headers": { + "x-api-key": "YOUR API KEY" + } } + } } - } - } ```` - > The server name `blazor-ui-generator` can be customized as desired. The name helps distinguish the MCP server in your configuration and does not affect how you invoke the generator tool in your prompt. -1. Obtain your API key—Log in to your [Telerik account](https://www.telerik.com/account/) and generate an API key from the [API Keys page](https://www.telerik.com/account/downloads/api-keys). Replace `YOUR API KEY` in the `mcp.json` file with the generated key. -1. Start using the generator—Open the AI chat interface of your IDE and start your prompt with the `#telerik_ui_generator` handle to invoke the main generator tool: + The server name `blazor-ui-generator` can be customized as desired. The name helps distinguish the MCP server in your configuration and does not affect how you invoke the generator tool in your prompt. + + > For more details on how to configure the MCP server, refer to the instructions for your specific IDE below: + > * [Visual Studio](#visual-studio) + > * [Visual Studio Code](#visual-studio-code) + +1. Log in to your [Telerik account](https://www.telerik.com/account/) and generate an API key from the [API Keys page](https://www.telerik.com/account/downloads/api-keys). Replace `YOUR API KEY` in the `mcp.json` file with the generated key. + + > Refer to the [Obtaining the API Key](#obtaining-the-api-key) section below for detailed instructions. +1. Open the AI chat interface of your IDE and start your prompt with the `#telerik_ui_generator` handle to invoke the main generator tool: ````TEXT.skip-repl #telerik_ui_generator Create a dashboard page with a grid showing sales data and a chart visualizing monthly trends. ```` - Step-by-step usage instructions are available in [Using the Agentic UI Generator](#using-the-agentic-ui-generator). - -For comprehensive setup guide specific to your IDE, workspace and global configuration options, and detailed API key instructions, refer to the [Installation](#installation) section below. + > Step-by-step usage instructions are available in [Using the Agentic UI Generator](#using-the-agentic-ui-generator). ## Installation @@ -51,7 +56,7 @@ Use the documentation of your AI-powered MCP client to add the Agentic UI Genera ### Visual Studio -> This section will guide you through the details of **Step 2** from the [Quick Start](#quick-start). +You can use the Agentic UI Generator in Visual Studio on an application level, and you can also enable global automatic discovery of the tool. #### Application Configuration @@ -85,8 +90,6 @@ To enable global automatic discovery of the Agentic UI Generator in Visual Studi ### Visual Studio Code -> This section will guide you through the details of **Step 2** from the [Quick Start](#quick-start). - For more information about using MCP servers in Visual Studio Code, refer to [Use MCP servers in VS Code](https://code.visualstudio.com/docs/copilot/chat/mcp-servers). Make sure that [`chat.mcp.enabled`](vscode://settings/chat.mcp.enabled) is enabled in the VS Code settings. @@ -132,8 +135,6 @@ After adding the configuration, restart your IDE to load the Agentic UI Generato ### Obtaining the API Key -> This section will guide you through the details of **Step 3** from the [Quick Start](#quick-start). - The following steps provide detailed instructions for obtaining your [Telerik API key](https://www.telerik.com/account/downloads/api-keys), which you need to add as a `headers` parameter in the `mcp.json` file: 1. Log in to your [Telerik account](https://www.telerik.com/account/). @@ -150,8 +151,6 @@ The following steps provide detailed instructions for obtaining your [Telerik AP ## Using the Agentic UI Generator -> This section will guide you through the details of **Step 4** from the [Quick Start](#quick-start). - Once installed, start a new chat session in your IDE to begin interacting with the Agentic UI Generator via natural language prompts. The Agentic UI Generator can be used in two primary modes: basic usage through [the main tool](#call-the-agentic-ui-generator), or advanced usage by [calling specific MCP tools directly](#target-the-tools-advanced). ### Call the Agentic UI Generator From 974a8ee17ca17faef57fc18dce063cbbff806dce Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Dec 2025 13:59:18 +0200 Subject: [PATCH 14/23] Update Closeable description (#3392) Co-authored-by: PetarMladenov <7114959+PetarMladenov@users.noreply.github.com> --- components/dockmanager/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/dockmanager/overview.md b/components/dockmanager/overview.md index 64645d821..c872b4fe6 100644 --- a/components/dockmanager/overview.md +++ b/components/dockmanager/overview.md @@ -121,7 +121,7 @@ The following table lists the Dock Manager parameters. Also check the [DockManag | --- | --- | --- | | `AllowFloat` | `bool` | Determines whether the pane can be dragged from the dock manager layout to create a new floating pane. | | `Class` | `string` | The custom CSS class of the `

` element. Use it to [override theme styles](slug:themes-override). | -| `Closeable` | `bool` | Determines whether the pane can be closed. | +| Closeable | bool | Default true. If false, the close button is hidden and closing via Esc key or code is disabled. | | `Dockable` | `bool` | Specifies whether the pane allows other panes to be docked to or over it. This determines if the end user can drop other panes over it or next to it, creating a DockManagerSplitPane (Splitter) or a DockManagerTabGroupPane (TabStrip). | | `HeaderText` | `string` | The pane title, displayed in the pane header and as the button text in the DockManager toolbar when the pane is unpinned. | | `Id` | `string`
(`Guid`) | The id of the pane. | From 348c04219c21a1a081f9328dee63c1a88e29fe46 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Dec 2025 13:59:44 +0200 Subject: [PATCH 15/23] Merge remove-method-replace-links-3393 into production (#3394) * docs: remove Grid method and update trial links * docs: add quick start youtube video --------- Co-authored-by: IvanDanchev --- ai/agentic-ui-generator/getting-started.md | 10 +++++++++- ai/ai-coding-assistant/overview.md | 2 +- components/grid/smart-ai-features/overview.md | 1 - 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ai/agentic-ui-generator/getting-started.md b/ai/agentic-ui-generator/getting-started.md index 523aa6b7e..737dfdf3b 100644 --- a/ai/agentic-ui-generator/getting-started.md +++ b/ai/agentic-ui-generator/getting-started.md @@ -17,7 +17,7 @@ This article describes how to install, configure, and use the Telerik UI for Bla Follow these steps to set up the Agentic UI Generator: -1. Ensure you have a supported license. You need a DevCraft Complete or Ultimate Subscription to access the Agentic UI Generator. If you have a different license type, you can start a [30-day AI Tools trial](https://www.telerik.com/mcp-servers/thank-you-blazor). +1. Ensure you have a supported license. You need a DevCraft Complete or Ultimate Subscription to access the Agentic UI Generator. If you have a different license type, you can start a [30-day AI Tools trial](https://www.telerik.com/mcp-servers-blazor/thank-you). > For more information about access requirements based on the license type, see [Usage Limits](slug:agentic-ui-generator-overview#usage-limits). 1. To add the MCP server to your IDE, create an `.mcp.json` file in your solution (if you are using Visual Studio), or an `mcp.json` file in your workspace (if you are using Visual Studio Code) with the following configuration: @@ -50,6 +50,14 @@ Follow these steps to set up the Agentic UI Generator: > Step-by-step usage instructions are available in [Using the Agentic UI Generator](#using-the-agentic-ui-generator). +The following video will walk you through: + +* Adding and configuring the MCP server +* Authenticating the Agentic UI Generator using an API key +* Making your first prompt to ensure everything is working correctly + + + ## Installation Use the documentation of your AI-powered MCP client to add the Agentic UI Generator to a specific workspace or globally. Below you can find installation tips and examples for some popular MCP clients, and instructions for obtaining your API key. diff --git a/ai/ai-coding-assistant/overview.md b/ai/ai-coding-assistant/overview.md index 2a619eaa3..2a7f4322a 100644 --- a/ai/ai-coding-assistant/overview.md +++ b/ai/ai-coding-assistant/overview.md @@ -64,7 +64,7 @@ The Telerik Blazor AI Conding Assistant allows the following maximum number of r ### Perpetual Licenses * Perpetual license holders have no access to the AI Coding Assistant by default. -* You can start a [30-day AI Tools trial](https://www.telerik.com/mcp-servers/thank-you-blazor) to access the AI Coding Assistant. +* You can start a [30-day AI Tools trial](https://www.telerik.com/mcp-servers-blazor/thank-you) to access the AI Coding Assistant. * After the trial expires, access is no longer available unless the [Perpetual license is converted to a Subscription license](https://www.telerik.com/account/support-center/contact-us/account-support). ### Trial Licenses diff --git a/components/grid/smart-ai-features/overview.md b/components/grid/smart-ai-features/overview.md index d682e7feb..4d93b329b 100644 --- a/components/grid/smart-ai-features/overview.md +++ b/components/grid/smart-ai-features/overview.md @@ -49,7 +49,6 @@ The following Grid methods work with the above types. | --- | --- | --- | | `GetAIRequest()` | `string` | Returns a `GridAIRequestDescriptor` that includes the user prompt if you pass it as a method argument. When using the `GridToolBarAIAssistantTool`, the app can receive the `GridAIRequestDescriptor` automatically from the `Request` property of the `OnPromptRequest` event argument, which is an `AIPromptPromptRequestEventArgs` object. | | `ProcessAIResponseAsync()` | `string` | Processes a serialized `GridAIResponse` object that is received as a string method argument. Then, the Grid applies all defined data operations from the `GridAIResponse` to its state, for example, filtering, grouping, highlighting, and sorting. When using the `GridToolBarAIAssistantTool`, you can set the serialized `GridAIResponse` object from the endpoint directly to `Response` property of the `OnPromptRequest` event argument, which is an `AIPromptPromptRequestEventArgs` object. | -| `GetAIResult()` | `string` | Returns a `GridAIResult` that you can use to [update properties from the Grid state](slug:grid-state#methods). Processes a serialized `GridAIResponse` object that is received as a string method argument. Then, the Grid applies all defined data operations from the `GridAIResponse` to its state, for example, filtering, grouping, highlighting, and sorting. When using the `GridToolBarAIAssistantTool`, you can set the serialized `GridAIResponse` object from the endpoint directly to `Response` property of the `OnPromptRequest` event argument, which is an `AIPromptPromptRequestEventArgs` object. | ## Tutorial From 627e432ca49e23535c90d21889cf25fd3610e672 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Dec 2025 14:02:28 +0200 Subject: [PATCH 16/23] chore(Docs): fix broken example (#3396) Co-authored-by: Tsvetomir Hristov <106250052+Tsvetomir-Hr@users.noreply.github.com> --- components/grid/templates/command-column-header.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/components/grid/templates/command-column-header.md b/components/grid/templates/command-column-header.md index 5e9033eac..57487cfd7 100644 --- a/components/grid/templates/command-column-header.md +++ b/components/grid/templates/command-column-header.md @@ -31,10 +31,12 @@ The `HeaderTemplate` of the Grid command column enables you to customize the hea Actions - Edit - Update - Cancel - Delete + @@ -75,4 +77,4 @@ The `HeaderTemplate` of the Grid command column enables you to customize the hea ## See Also -* [Grid Command Column](slug:components/grid/columns/command) \ No newline at end of file +* [Grid Command Column](slug:components/grid/columns/command) From 7d080f758eeb2bb67ed1959b991a1b30c8dac175 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Dec 2025 14:57:34 +0200 Subject: [PATCH 17/23] kb(Grid): Update single filter menu option CSS (#3398) Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> --- .../grid-kb-only-one-filtermenu-option.md | 68 +++++++------------ 1 file changed, 25 insertions(+), 43 deletions(-) diff --git a/knowledge-base/grid-kb-only-one-filtermenu-option.md b/knowledge-base/grid-kb-only-one-filtermenu-option.md index b4032c203..8fb198d78 100644 --- a/knowledge-base/grid-kb-only-one-filtermenu-option.md +++ b/knowledge-base/grid-kb-only-one-filtermenu-option.md @@ -6,22 +6,24 @@ page_title: Only one filter option in FilterMenu slug: grid-kb-only-one-filtermenu-option position: tags: -ticketid: 1451755, 1551245 +ticketid: 1451755, 1551245, 1705873 res_type: kb --- ## Environment + - +
ProductGrid for BlazorGrid for Blazor,
TreeList for Blazor
## Description + I want simple filtering options in the Grid filter menu - both for my uses and my backend. How do I remove the extra conditions so it behaves like the filter row and does not have extra and/or operators? >caption Before and after results @@ -33,70 +35,50 @@ I want simple filtering options in the Grid filter menu - both for my uses and m There are two options: * Use a [custom filter template](slug:grid-templates-filter). It provides full flexibility over the interface and building the filter descriptor. -* Use custom CSS to [override the theme](slug:themes-override) and hide the elements that provide the and/or secondary conditions. The example below demonstrates this approach. Note that **the required CSS is different for different UI for Blazor versions**: +* Use custom CSS to [override the theme](slug:themes-override) and hide the elements that provide the and/or secondary conditions. The example below demonstrates this approach. -
-````CSS - +````CSS.skip-repl +.k-filter-menu-container > .k-button-group, +.k-filter-menu-container > span:nth-child(n+3) { + display: none; +} ```` ->caption Hide And/Or filter options in the Grid/TreeList FilterMenu with CSS +>caption Hide And/Or ButtonGroup and second filter option in the Grid/TreeList FilterMenu with CSS ````RAZOR -@* Hide the secondary filter interface with CSS *@ - - - - - + + + + @code { - List GridData { get; set; } + private List GridData { get; set; } = new(); protected override void OnInitialized() { - GridData = new List(); - var rnd = new Random(); + var rnd = Random.Shared; - for (int i = 1; i <= 15; i++) + for (int i = 1; i <= 7; i++) { GridData.Add(new Product() { - ID = i, - Name = "Product " + i.ToString(), - Price = (decimal)rnd.Next(1, 100), - ReleaseDate = new DateTime(rnd.Next(2020, 2023), rnd.Next(1, 13), rnd.Next(1, 28)), + Id = i, + Name = $"Product {i}", + Price = rnd.Next(1, 100) * 1.23m, + ReleaseDate = DateTime.Today.AddDays(-rnd.Next(1, 3650)), Discontinued = i % 4 == 0 }); } @@ -104,8 +86,8 @@ There are two options: public class Product { - public int ID { get; set; } - public string Name { get; set; } + public int Id { get; set; } + public string Name { get; set; } = string.Empty; public decimal Price { get; set; } public DateTime ReleaseDate { get; set; } public bool Discontinued { get; set; } From ddf9321ec674ec97e2118da7612f959ab0207b9d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Dec 2025 14:57:51 +0200 Subject: [PATCH 18/23] Update diagram-change-shape-color-onshapeclick.md (#3399) Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> --- ...diagram-change-shape-color-onshapeclick.md | 132 ++++++++++++------ 1 file changed, 93 insertions(+), 39 deletions(-) diff --git a/knowledge-base/diagram-change-shape-color-onshapeclick.md b/knowledge-base/diagram-change-shape-color-onshapeclick.md index 44cad39ce..24048f772 100644 --- a/knowledge-base/diagram-change-shape-color-onshapeclick.md +++ b/knowledge-base/diagram-change-shape-color-onshapeclick.md @@ -22,15 +22,17 @@ res_type: kb ## Description -I am using the Diagram `OnShapeClick` event to update the `DiagramShapeFill` `Color` of the selected Diagram shape. However, this resets the positions of the shapes that the user has dragged. How to update the shape background colors while maintaining the current shape positions? +I am using the Diagram `OnShapeClick` event to update the `DiagramShapeFill` `Color` of the selected Diagram shape. However, this resets the positions of the shapes that the user has dragged. How to update the shape background colors while maintaining the current shape positions? In addition, I want to persist the custom shape colors when the Diagram `Layout` changes. ## Cause -The Diagram `OnShapeClick` event handler is an `EventCallback` and triggers component re-render. If the [Diagram shapes are defined](slug:diagram-shapes#basics) without their `X` and `Y` properties and [shape dragging](slug:diagram-shapes#editability) is enabled, the component definition does not include the current shape positions. As a result, a re-render resets the shapes to their original places. +The Diagram `OnShapeClick` event handler is an `EventCallback` and triggers component re-render. If the [Diagram shapes are defined](slug:diagram-shapes#basics) without their `X` and `Y` properties and [shape dragging](slug:diagram-shapes#editability) is enabled, the Razor component definition does not include the current shape positions. As a result, a re-render resets the shapes to their original places. + +Similarly, if the Diagram Shape background colors are not part of the Razor component declaration, they will be reset to the default value if the Diagram `Layout` changes. ## Solution -Use the Diagram `SaveAsJsonAsync` and `LoadFromJsonAsync` methods to [persist the Diagram state through JSON](slug:diagram-overview#define-shapes-and-connections-in-json) on each re-render: +Use the Diagram `SaveAsJsonAsync` and `LoadFromJsonAsync` methods to [define and persist the Diagram state through JSON](slug:diagram-overview#define-shapes-and-connections-in-json) on each render: 1. Implement classes with property names that correspond to the ones in the [Diagram JSON state](slug:diagram-overview#define-shapes-and-connections-in-json). 1. Subscribe to the [Diagram `OnShapeClick` event](slug:diagram-events#onshapeclick). @@ -45,49 +47,33 @@ Use the Diagram `SaveAsJsonAsync` and `LoadFromJsonAsync` methods to [persist th @using System.Text.Json @using System.Text.Json.Serialization - - +Drag a shape and then click on a shape to change its background color. The shape positions will persist. +
+Click on a shape and + + Toggle Diagram Layout Type + +The shape background colors will persist. - - @foreach (DiagramModel shape in DiagramData) - { - - - - - } - - - - @foreach (DiagramModel shape in DiagramData) - { - if (shape.ParentId is not null) - { - - } - } - + + + + @code { #nullable enable private TelerikDiagram? DiagramRef { get; set; } - private string DiagramJson { get; set; } = string.Empty; - private List DiagramData { get; set; } = Enumerable.Range(1, 6).Select(x => new DiagramModel() + private DiagramLayoutType DiagramLayoutType { get; set; } = DiagramLayoutType.Tree; + + private void OnButtonClick() { - Id = x.ToString(), - ParentId = x == 1 ? null : (x <= 4 ? 1 : 3), - Text = $"Shape {x}", - Type = x % 2 == 0 ? DiagramShapeType.Rectangle : DiagramShapeType.Circle, - BackgroundColor = "#666" - }).ToList(); + DiagramLayoutType = DiagramLayoutType == DiagramLayoutType.Tree ? DiagramLayoutType.Force : DiagramLayoutType.Tree; + } private async Task OnDiagramShapeClick(DiagramShapeClickEventArgs args) { @@ -102,7 +88,7 @@ Use the Diagram `SaveAsJsonAsync` and `LoadFromJsonAsync` methods to [persist th if (diagramStateObject is not null && diagramStateObject.Shapes is not null) { var rnd = Random.Shared; - string newFillColor = $"rgb({rnd.Next(0, 127)},{rnd.Next(0, 127)},{rnd.Next(0, 127)})"; + string newFillColor = $"rgb({rnd.Next(48, 128)},{rnd.Next(48, 128)},{rnd.Next(48, 128)})"; diagramStateObject.Shapes.First(x => x.Id == args.Id).Fill.Color = newFillColor; @@ -111,6 +97,74 @@ Use the Diagram `SaveAsJsonAsync` and `LoadFromJsonAsync` methods to [persist th } } + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender && DiagramRef is not null) + { + // Wait for HTML and client-side Diagram instance + await Task.Delay(1); + + await DiagramRef.LoadFromJsonAsync(DiagramJson); + StateHasChanged(); + } + + await base.OnAfterRenderAsync(firstRender); + } + + private string DiagramJson { get; set; } = @" + { + ""shapes"": [ + { + ""id"": ""shape1"", + ""type"": ""Circle"", + ""content"": { + ""text"": ""Shape 1"" + }, + ""x"": 200, + ""y"": 50 + }, + { + ""id"": ""shape2"", + ""content"": { + ""text"": ""Shape 2"" + }, + ""height"": 100, + ""width"": 160, + ""x"": 50, + ""y"": 200 + }, + { + ""id"": ""shape3"", + ""type"": ""Display"", + ""content"": { + ""text"": ""Shape 3"" + }, + ""x"": 300, + ""y"": 200 + } + ], + ""connections"": [ + { + ""from"": { + ""shapeId"": ""shape1"" + }, + ""to"": { + ""shapeId"": ""shape2"" + } + }, + { + ""from"": { + ""shapeId"": ""shape1"", + ""connector"":""Right"" + }, + ""to"": { + ""shapeId"": ""shape3"", + ""connector"":""Top"" + } + } + ] + }"; + #region Diagram State Classes public class DiagramState @@ -192,7 +246,7 @@ Use the Diagram `SaveAsJsonAsync` and `LoadFromJsonAsync` methods to [persist th Utf8JsonWriter writer, DiagramShapeType shapeType, JsonSerializerOptions options) => - writer.WriteStringValue(shapeType.ToString().ToLower()); + writer.WriteStringValue(shapeType.ToString()); } } ``` From 2fd2c3c0cc4cc2786a5c8abf87b6070cb40e887a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 10 Dec 2025 14:58:08 +0200 Subject: [PATCH 19/23] Update overview.md (#3400) Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> --- components/dockmanager/overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/dockmanager/overview.md b/components/dockmanager/overview.md index c872b4fe6..46824d158 100644 --- a/components/dockmanager/overview.md +++ b/components/dockmanager/overview.md @@ -121,7 +121,7 @@ The following table lists the Dock Manager parameters. Also check the [DockManag | --- | --- | --- | | `AllowFloat` | `bool` | Determines whether the pane can be dragged from the dock manager layout to create a new floating pane. | | `Class` | `string` | The custom CSS class of the `
` element. Use it to [override theme styles](slug:themes-override). | -| Closeable | bool | Default true. If false, the close button is hidden and closing via Esc key or code is disabled. | +| `Closeable` | `bool`
(`true`) | If false, the close button is hidden and closing via **Esc** key or code is disabled. | | `Dockable` | `bool` | Specifies whether the pane allows other panes to be docked to or over it. This determines if the end user can drop other panes over it or next to it, creating a DockManagerSplitPane (Splitter) or a DockManagerTabGroupPane (TabStrip). | | `HeaderText` | `string` | The pane title, displayed in the pane header and as the button text in the DockManager toolbar when the pane is unpinned. | | `Id` | `string`
(`Guid`) | The id of the pane. | From 1bcb553e4aecf9c92396fa47dd8cc24c4828c83e Mon Sep 17 00:00:00 2001 From: George Dautov Date: Wed, 10 Dec 2025 14:57:54 +0200 Subject: [PATCH 20/23] docs(Editor): add editor mentions kb (#3375) * docs(Editor): add editor mentions kb Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * Integrate suggestions from code review * Integrate improvements from code review * Update knowledge-base/editor-mentions.md Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> --------- Co-authored-by: Dimo Dimov <961014+dimodi@users.noreply.github.com> --- knowledge-base/editor-mentions.md | 277 ++++++++++++++++++++++++++++++ 1 file changed, 277 insertions(+) create mode 100644 knowledge-base/editor-mentions.md diff --git a/knowledge-base/editor-mentions.md b/knowledge-base/editor-mentions.md new file mode 100644 index 000000000..874260e6a --- /dev/null +++ b/knowledge-base/editor-mentions.md @@ -0,0 +1,277 @@ +--- +title: Mentions in Editor +description: Learn how to add support for mentions in the Telerik Editor component for Blazor. +type: how-to +page_title: Mentions in Editor +slug: editor-kb-mentions +position: +tags: telerik, blazor, editor, mentions +ticketid: 1545505 +res_type: kb +--- + +## Environment + + + + + + + + +
ProductEditor for Blazor
+ +## Description + +How to enable or implement support for `@mentions` in the TelerikEditor for Blazor, similar to GitHub, Facebook, etc.? + +## Solution + +You can use the [proseMirror-mentions](https://github.com/joelewis/prosemirror-mentions) plugin to provide a `@mentions` and `#hashtags` functionality for the Telerik Blazor Editor component. To implement the feature, customize the built-in [ProseMirror schema](slug:editor-prosemirror-schema-overview) and [integrate a ProseMirror plugin](slug:editor-prosemirror-plugins). + +For dynamic positioning of the mentions list, set the [`EditMode`](slug:Telerik.Blazor.Components.TelerikEditor#telerik_blazor_components_telerikeditor_editmode) property of the Editor to `EditorEditorMode.Div`. This ensures that the mentions dropdown position is correct relative to the Editor content. + +````RAZOR.skip-repl + +```` + +### Setting up WebPack and Installing proseMirror-mentions + +1. Setup the Javascript project by running the following command in the root folder of your project: + ````SH.skip-repl + npm init -y + ```` + > This command creates a `package.json` file with the project's configuration. The `-y` flag accepts all defaults for simplicity. In a real world application, consider running `npm init` without the flag to configure settings interactively. +2. Install a JavaScript bundler. In this example we will use [webpack](https://webpack.js.org), so run: + ````SH.skip-repl + npm install webpack webpack-cli --save-dev + ```` +3. Configure the build script in the `scripts` section of `package.json` (in this example all of our Javascript files will go into `wwwroot/js`): + ````JSON.skip-repl + "scripts": { + "build": "webpack ./wwwroot/js/index.js --output-path ./wwwroot/js --output-filename index.bundle.js" + }, + ```` +5. Update the module type in `package.json`: + ````JSON.skip-repl + "type": module" + ```` + This enables ES6 `import`/`export` syntax instead of the CommonJS require statements which will be useful later on. +6. Install [proseMirror-mentions](https://github.com/joelewis/prosemirror-mentions) by running: + ````SH.skip-repl + npm install prosemirror-mentions + ```` +7. Create a file named `index.js` in your project's `wwwroot/js` directory and paste the contents from the respective code tab below. +8. Build the JavaScript bundle by running: + ````SH.skip-repl + npm run build + ```` + This creates the `index.bundle.js` file in your `wwwroot/js` directory. + +### Include the JavaScript Bundle + +After building the JavaScript bundle, you need to include it in your Blazor application: + +**Global Level (App.razor):** +
+ +````razor App.razor + + + + + + + + + + + +```` + +### Integrate the Mentions Plugin + +The following code demonstrates how to integrate the `proseMirror-mentions` plugin in the Editor. + +
+ +````razor Component.razor +@using Microsoft.Extensions.Logging.Abstractions + +@implements IDisposable + +@inject IJSRuntime JSRuntime +@inject IServiceProvider ServiceProvider + + + + +@code { + // Replace Component with your actual component type + private DotNetObjectReference? dotNetRef; + private List Mentions { get; set; } = new List() + { + new() + { + Id = "board", + Name = "Jane Simons", + Email = "jane.simons@company.com", + }, + new() + { + Id = "engineering", + Name = "Peter Parker", + Email = "peter.parker@company.com" + }, + new() + { + Id = "generalManager", + Name = "Liam Turner", + Email = "liam.turner@company.com" + } + }; + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + dotNetRef = DotNetObjectReference.Create(this); + await JSRuntime.InvokeVoidAsync("initializeMentions", dotNetRef); + } + } + + [JSInvokable] + public async Task GetMentionSuggestionsAsync(string text) + { + return Mentions.Where(mention => mention.Name.ToLower().Contains(text)).ToArray(); + } + + [JSInvokable] + public async Task GetMentionSuggestionsHTML(List mentions) + { + using var htmlRenderer = new HtmlRenderer(ServiceProvider, NullLoggerFactory.Instance); + var html = await htmlRenderer.Dispatcher.InvokeAsync(async () => + { + var dictionary = new Dictionary + { + { "Items", mentions } + }; + var parameters = ParameterView.FromDictionary(dictionary); + var output = await htmlRenderer.RenderComponentAsync(parameters); + return output.ToHtmlString(); + }); + + return html; + } + + public void Dispose() + { + dotNetRef?.Dispose(); + } +} +```` +````razor MentionSuggestionList.razor +@* + IMPORTANT: outer div's "suggestion-item-list" class is mandatory. The plugin uses this class for querying. + IMPORTANT: inner div's "suggestion-item" class is mandatory too for the same reasons. +*@ + +
+
+
+
    + @if (Items == null || Items.Count() == 0) + { +
  • + No Suggestions +
  • + } + else + { + @foreach (Mention item in Items) + { +
  • + @item.Name +
    + @item.Email +
  • + } + } +
+
+
+
+ +@code { + [Parameter] + public IEnumerable? Items { get; set; } +} +```` +````cs Mention.cs +public class Mention +{ + public string Id { get; set; } = string.Empty; + public string Name { get; set; } = string.Empty; + public string Email { get; set; } = string.Empty; +} +```` +````js wwwroot/js/index.js +import { addMentionNodes, addTagNodes, getMentionsPlugin } from 'prosemirror-mentions'; + +let _dotnetRef; +window.initializeMentions = (dotnetRef) => { + _dotnetRef = dotnetRef; +} + +let mentionSuggestionsHTML = null; + +var mentionPlugin = getMentionsPlugin({ + getSuggestions: (type, text, done) => { + setTimeout(async () => { + if (type === 'mention') { + try { + const suggestions = await _dotnetRef.invokeMethodAsync('GetMentionSuggestionsAsync', text); + mentionSuggestionsHTML = await _dotnetRef.invokeMethodAsync('GetMentionSuggestionsHTML', suggestions); + done(suggestions); + } catch (error) { + console.error('Error getting suggestions:', error); + done([]); + } + } + }, 0); + }, + getSuggestionsHTML: (items, type) => { + if (type === 'mention') { + return mentionSuggestionsHTML; + } + } +}); + +window.pluginsProvider = (args) => { + const schema = args.getSchema(); + + return [mentionPlugin, ...args.getPlugins(schema)]; +} + +window.schemaProvider = (args) => { + const schema = args.getSchema(); + const Schema = args.ProseMirror.Schema; + const nodes = addMentionNodes(schema.spec.nodes); + const mentionsSchema = new Schema({ + nodes: nodes, + marks: schema.spec.marks + }); + + return mentionsSchema; +} + +```` + +## See Also + +* [Editor Schema](slug:editor-prosemirror-schema-overview) +* [Editor Plugins](slug:editor-prosemirror-plugins) +* [ProseMirror Documentation](https://prosemirror.net/docs/ref) +* [proseMirror-mentions](https://github.com/joelewis/prosemirror-mentions) \ No newline at end of file From 18547accb387669c79e2c0164c57b3be5e912886 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Dec 2025 15:29:53 +0200 Subject: [PATCH 21/23] docs: center quick start video (#3402) Co-authored-by: IvanDanchev --- ai/agentic-ui-generator/getting-started.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/ai/agentic-ui-generator/getting-started.md b/ai/agentic-ui-generator/getting-started.md index 737dfdf3b..62ff9fa7e 100644 --- a/ai/agentic-ui-generator/getting-started.md +++ b/ai/agentic-ui-generator/getting-started.md @@ -50,15 +50,11 @@ Follow these steps to set up the Agentic UI Generator: > Step-by-step usage instructions are available in [Using the Agentic UI Generator](#using-the-agentic-ui-generator). -The following video will walk you through: +The video below demonstrates all of the above steps in action and shows the complete Agentic UI Generator setup process: -* Adding and configuring the MCP server -* Authenticating the Agentic UI Generator using an API key -* Making your first prompt to ensure everything is working correctly +

- - -## Installation +## Detailed Installation Instructions Use the documentation of your AI-powered MCP client to add the Agentic UI Generator to a specific workspace or globally. Below you can find installation tips and examples for some popular MCP clients, and instructions for obtaining your API key. From ad543fa36dcec3ce5ab0dc4e70c6839e43bf8f6d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Dec 2025 16:41:53 +0200 Subject: [PATCH 22/23] docs: update list of pager parameters (#3404) Co-authored-by: IvanDanchev --- _contentTemplates/common/pager-settings.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_contentTemplates/common/pager-settings.md b/_contentTemplates/common/pager-settings.md index 61cbce8da..e0e1800fb 100644 --- a/_contentTemplates/common/pager-settings.md +++ b/_contentTemplates/common/pager-settings.md @@ -4,7 +4,7 @@ | Attribute | Type and Default Value | Description | |----------|----------|----------| -|`Adaptive` | `bool`
(`true`) | Whether pager elements should change based on the screen size. When enabled, the Pager will hide its `Pager Info` and `PageSize Dropdownlist` if they cannot fit in the available space. In the smallest resolution, the page buttons will be rendered as a select element. +|`Responsive` | `bool`
(`true`) | Whether pager elements should change based on the screen size. When enabled, the Pager will hide its `Pager Info` and `PageSize Dropdownlist` if they cannot fit in the available space. In the smallest resolution, the page buttons will be rendered as a select element. |`ButtonCount` | `int`
(10) | The maximum number of page buttons that will be visible. To take effect, `ButtonCount` must be smaller than the page count (`ButtonCount < Total / PageSize`). | `InputType` | `PagerInputType`
(`Buttons`) | Whether the pager will show numeric buttons to go to a specific page, or a textbox to type the page index. The arrow buttons are always visible. The `PagerInputType` enum accepts values `Buttons` or `Input`. When `Input` is used, the page index will change when the textbox is blurred, or when the user hits Enter. This is to avoid unintentional data requests. | `PageSizes` | `List` | Allows users to change the page size via a DropDownList. The attribute configures the DropDownList options. A `null` item in the `PageSizes` `List` will render an "All" option. By default, the Pager DropDownList is not displayed. You can also set `PageSizes` to `null` programmatically to remove the DropDownList at any time. From 589ab6ba1a06da71ee5bbf0ee7ca99002a98ea20 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Dec 2025 17:22:35 +0200 Subject: [PATCH 23/23] docs: update example parameter (#3406) Co-authored-by: IvanDanchev --- components/grid/paging.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/grid/paging.md b/components/grid/paging.md index d81eeee69..56d263156 100644 --- a/components/grid/paging.md +++ b/components/grid/paging.md @@ -109,7 +109,7 @@ In addition to `Page` and `PageSize`, the Grid provides advanced pager configura