igniteui-cli 15.1.0 → 15.2.1-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/lib/PromptSession.d.ts +1 -1
  2. package/lib/PromptSession.js +2 -2
  3. package/lib/commands/ai-config.d.ts +3 -5
  4. package/lib/commands/ai-config.js +68 -23
  5. package/lib/commands/new.js +1 -1
  6. package/package.json +4 -4
  7. package/templates/blazor/igb/index.d.ts +1 -0
  8. package/templates/blazor/igb/index.js +12 -0
  9. package/templates/blazor/igb/projects/ai-config/files/AGENTS.md +65 -0
  10. package/templates/blazor/igb/projects/ai-config/files/skills/AGENTS.md +65 -0
  11. package/templates/blazor/igb/projects/ai-config/files/skills/README.md +61 -0
  12. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/SKILL.md +118 -0
  13. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/charts.md +302 -0
  14. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/data-display.md +350 -0
  15. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/feedback.md +178 -0
  16. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/form-controls.md +365 -0
  17. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/layout-manager.md +180 -0
  18. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/layout.md +322 -0
  19. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/mcp-setup.md +78 -0
  20. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/setup.md +214 -0
  21. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-generate-from-image-design/SKILL.md +284 -0
  22. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-generate-from-image-design/references/component-mapping.md +281 -0
  23. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-generate-from-image-design/references/gotchas.md +503 -0
  24. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/SKILL.md +188 -0
  25. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/data-operations.md +264 -0
  26. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/editing.md +297 -0
  27. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/features.md +447 -0
  28. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/mcp-setup.md +78 -0
  29. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/paging-remote.md +299 -0
  30. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/sizing.md +284 -0
  31. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/state.md +160 -0
  32. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/structure.md +497 -0
  33. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/types.md +553 -0
  34. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-theming/SKILL.md +259 -0
  35. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-theming/references/common-patterns.md +276 -0
  36. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-theming/references/mcp-setup.md +81 -0
  37. package/templates/blazor/igb/projects/ai-config/index.d.ts +22 -0
  38. package/templates/blazor/igb/projects/ai-config/index.js +62 -0
  39. package/templates/blazor/index.d.ts +3 -0
  40. package/templates/blazor/index.js +11 -0
@@ -0,0 +1,180 @@
1
+ # Layout Manager Components - Dock Manager & Tile Manager
2
+
3
+ > **Part of the [`igniteui-blazor-components`](../SKILL.md) skill hub.**
4
+ > For project setup and module registration - see [`setup.md`](./setup.md).
5
+
6
+ ## Contents
7
+
8
+ - [Dock Manager](#dock-manager)
9
+ - [Basic Setup](#basic-setup)
10
+ - [Pane Types](#pane-types)
11
+ - [Layout Serialization](#layout-serialization)
12
+ - [Events](#events)
13
+ - [Tile Manager](#tile-manager)
14
+ - [Key Rules](#key-rules)
15
+
16
+ ---
17
+
18
+ ## Overview
19
+ This reference gives high-level guidance on when to use each layout manager component, their key features, and common API members. For detailed documentation, call `get_doc` from `igniteui-cli`; use `search_api` and `get_api_reference` for Blazor API details.
20
+
21
+ ## Dock Manager
22
+
23
+ > **Docs:** [Dock Manager](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/dock-manager)
24
+
25
+ Dock Manager provides an IDE-like dockable pane layout. Users can drag panes to dock, float, pin/unpin, and close them at runtime.
26
+
27
+ ```csharp
28
+ builder.Services.AddIgniteUIBlazor(typeof(IgbDockManagerModule));
29
+ ```
30
+
31
+ ### Basic Setup
32
+
33
+ Dock Manager uses a C# layout object graph to define pane structure. Pane content is projected via named slots.
34
+
35
+ ```razor
36
+ <IgbDockManager @ref="DockRef" Layout="DockLayout" style="height: 600px;">
37
+ <!-- Content slots - the slot name matches IgbContentPane.ContentId -->
38
+ <div slot="panel1">Panel 1 Content</div>
39
+ <div slot="panel2">Panel 2 Content</div>
40
+ <div slot="panel3">Panel 3 Content</div>
41
+ </IgbDockManager>
42
+
43
+ @code {
44
+ IgbDockManager DockRef { get; set; }
45
+
46
+ IgbDockManagerLayout DockLayout { get; set; } = new IgbDockManagerLayout
47
+ {
48
+ RootPane = new IgbSplitPane
49
+ {
50
+ PaneType = DockManagerPaneType.SplitPane,
51
+ Orientation = SplitPaneOrientation.Horizontal,
52
+ Panes = new()
53
+ {
54
+ new IgbTabGroupPane
55
+ {
56
+ PaneType = DockManagerPaneType.TabGroupPane,
57
+ Panes = new List<IgbContentPane>
58
+ {
59
+ new IgbContentPane
60
+ {
61
+ PaneType = DockManagerPaneType.ContentPane,
62
+ ContentId = "panel1",
63
+ Header = "Panel 1"
64
+ },
65
+ new IgbContentPane
66
+ {
67
+ PaneType = DockManagerPaneType.ContentPane,
68
+ ContentId = "panel2",
69
+ Header = "Panel 2"
70
+ }
71
+ }
72
+ },
73
+ new IgbContentPane
74
+ {
75
+ PaneType = DockManagerPaneType.ContentPane,
76
+ ContentId = "panel3",
77
+ Header = "Panel 3",
78
+ Size = 250
79
+ }
80
+ }
81
+ }
82
+ };
83
+ }
84
+ ```
85
+
86
+ ### Pane Types
87
+
88
+ | Class | Description |
89
+ |---|---|
90
+ | `IgbSplitPane` | Container that splits horizontally or vertically into child panes |
91
+ | `IgbTabGroupPane` | Container that groups content panes into tabs |
92
+ | `IgbContentPane` | Leaf pane with actual content (maps to a named slot) |
93
+
94
+ Key properties on `IgbContentPane`:
95
+
96
+ | Property | Type | Description |
97
+ |---|---|---|
98
+ | `ContentId` | `string` | Must match the `slot` name on the projected content element |
99
+ | `Header` | `string` | Pane tab header title |
100
+ | `Size` | `double` | Initial size (pixels or percentage depending on parent) |
101
+ | `AllowClose` | `bool` | Shows/hides the close button (default: `true`) |
102
+ | `AllowPinning` | `bool` | Allows pin/unpin (default: `true`) |
103
+ | `AllowMaximize` | `bool` | Allows maximize (default: `true`) |
104
+ | `AllowFloating` | `bool` | Allows tearing off into a floating window (default: `true`) |
105
+ | `IsPinned` | `bool` | Set to `false` to start as an unpinned (collapsed to edge) pane |
106
+ | `Floating` | `bool` | Starts as a floating window |
107
+ | `FloatingLocation` | `IgbDockManagerPoint` | Initial position of a floating pane |
108
+ | `FloatingWidth` | `double` | Initial width of a floating pane |
109
+ | `FloatingHeight` | `double` | Initial height of a floating pane |
110
+
111
+ Key properties on `IgbSplitPane`:
112
+
113
+ | Property | Type | Description |
114
+ |---|---|---|
115
+ | `Orientation` | `SplitPaneOrientation` | `Horizontal` or `Vertical` |
116
+ | `Panes` | pane collection | Child panes. Use the exact collection type and initialization style shown in the current MCP docs. |
117
+ | `Size` | `double` | Size in parent context |
118
+
119
+ ### Layout Serialization
120
+
121
+ Persisting a Dock Manager layout is version-sensitive. The current `dock-manager` MCP overview documents the layout object graph, pane content slots, styling, and keyboard behavior; it does not show a verified Blazor serialization sample in this reference. Before generating persistence code, inspect the current installed API and use only the documented event signatures and methods for that version.
122
+
123
+ > **AGENT INSTRUCTION - Layout serialization:** The serialized JSON contains only pane structure and positions. It does **not** serialize the slot content. The slot content markup must remain static in the Razor template; only pane arrangement changes at runtime.
124
+
125
+ ### Events
126
+
127
+ | Event | Description |
128
+ |---|---|
129
+ | `LayoutChange` | Fires when the layout is modified by user interaction (drag, close, resize) |
130
+ | `PaneClose` | Fires when a pane is closed; `e.Detail.Panes` contains the closed pane(s) |
131
+ | `ActivePaneChange` | Fires when the active (focused) pane changes |
132
+ | `Splitter Resize` | Fires while a splitter is being dragged |
133
+
134
+ ---
135
+
136
+ ## Tile Manager
137
+
138
+ > **Docs:** [Tile Manager](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/tile-manager)
139
+
140
+ Tile Manager provides a resizable, draggable tile/widget dashboard layout.
141
+
142
+ ```csharp
143
+ builder.Services.AddIgniteUIBlazor(typeof(IgbTileManagerModule));
144
+ ```
145
+
146
+ ```razor
147
+ <IgbTileManager ColumnCount="4" Gap="8px" ResizeMode="@TileManagerResizeMode.Always" DragMode="@TileManagerDragMode.TileHeader">
148
+ <IgbTile ColSpan="2" RowSpan="1">
149
+ <span slot="title">Revenue Chart</span>
150
+ <!-- tile content -->
151
+ </IgbTile>
152
+ <IgbTile ColSpan="1" RowSpan="2">
153
+ <span slot="title">KPIs</span>
154
+ <!-- tile content -->
155
+ </IgbTile>
156
+ <IgbTile ColSpan="1">
157
+ <span slot="title">Recent Orders</span>
158
+ <!-- tile content -->
159
+ </IgbTile>
160
+ </IgbTileManager>
161
+ ```
162
+
163
+ Key attributes on `IgbTileManager`: `ColumnCount`, `Gap` (CSS length string such as `"8px"`), `MinColumnWidth`, `MinRowHeight`, `ResizeMode` (`TileManagerResizeMode.*`), `DragMode` (`TileManagerDragMode.*`).
164
+
165
+ Key attributes on `IgbTile`: `ColSpan`, `RowSpan`, `ColStart`, `RowStart`, `DisableFullscreen`, `DisableMaximize`, `DisableResize`.
166
+
167
+ Slots on `IgbTile`: `title` (header), `actions` (header action buttons), `fullscreen-action`, `maximize-action`, `side-adorner`, `corner-adorner`, `bottom-adorner`. Default slot = tile body content.
168
+
169
+ Methods on `IgbTileManager`: `SaveLayout()` and `LoadLayout(string)` persist tile order, size, and position. Tile content is not serialized.
170
+
171
+ ---
172
+
173
+ ## Key Rules
174
+
175
+ 1. **`IgbContentPane.ContentId` must exactly match the `slot` attribute of the projected HTML element.** A mismatch causes the pane to render empty.
176
+ 2. **Dock Manager must have an explicit height** (via CSS or inline style). Without a height it renders as 0px.
177
+ 3. **Layout serialization only persists structure, not content.** Slot content is always defined in Razor markup.
178
+ 4. **`IgbTileManager` uses CSS Grid internally.** Set `ColumnCount` to control the number of columns.
179
+ 5. **Do not invent Dock Manager serialization APIs.** Use `dock-manager` and the installed API before writing persistence code.
180
+ 6. **Tile Manager serialization uses `SaveLayout()` / `LoadLayout(string)`.** The saved payload stores tile layout properties, not tile content.
@@ -0,0 +1,322 @@
1
+ # Layout & Navigation Components
2
+
3
+ > **Part of the [`igniteui-blazor-components`](../SKILL.md) skill hub.**
4
+ > For project setup and module registration - see [`setup.md`](./setup.md).
5
+
6
+ ## Contents
7
+
8
+ - [Tabs](#tabs)
9
+ - [Stepper](#stepper)
10
+ - [Accordion & Expansion Panel](#accordion--expansion-panel)
11
+ - [Navbar](#navbar)
12
+ - [Navigation Drawer](#navigation-drawer)
13
+ - [Tree](#tree)
14
+ - [Key Rules](#key-rules)
15
+
16
+ ---
17
+
18
+ ## Overview
19
+ This reference gives high-level guidance on layout and navigation components, their key features, and common API members. For detailed documentation, call `get_doc` from `igniteui-cli`; use `search_api` and `get_api_reference` for Blazor API details.
20
+
21
+ ## Tabs
22
+
23
+ > **Docs:** [Tabs](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/tabs)
24
+
25
+ ```csharp
26
+ builder.Services.AddIgniteUIBlazor(typeof(IgbTabsModule));
27
+ ```
28
+
29
+ ```razor
30
+ <IgbTabs>
31
+ <IgbTab Label="Tab 1">
32
+ <span>Content for tab 1</span>
33
+ </IgbTab>
34
+ <IgbTab Label="Tab 2">
35
+ <span>Content for tab 2</span>
36
+ </IgbTab>
37
+ <IgbTab>
38
+ <div slot="label">Tab 3</div>
39
+ <span>Content for tab 3</span>
40
+ </IgbTab>
41
+ </IgbTabs>
42
+ ```
43
+ Tab text can be set either as simple string using the `Label` property or by assigning children to the `label` slot. Any remaining children in the default slot are rendered as the tab content.
44
+
45
+ For icon tabs, use the `label` slot inside `IgbTab`:
46
+
47
+ ```razor
48
+ <IgbTab>
49
+ <IgbIcon slot="label" IconName="home" Collection="material" />
50
+ Home
51
+ </IgbTab>
52
+ ```
53
+
54
+ Key attributes on `IgbTabs`: `Alignment` (`TabsAlignment.Start` / `End` / `Center` / `Justify`), `Activation` (`TabsActivation.Auto` / `Manual`). On `IgbTab`: `Label`, `Disabled`, `Selected`.
55
+
56
+ Events on `IgbTabs`: `Change` - fires when the selected tab changes.
57
+
58
+ CSS parts: `headers`, `headers-content`, `headers-wrapper`, `header`, `selected-indicator`, `content`.
59
+
60
+ ---
61
+
62
+ ## Stepper
63
+
64
+ > **Docs:** [Stepper](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/stepper)
65
+
66
+ ```csharp
67
+ builder.Services.AddIgniteUIBlazor(typeof(IgbStepperModule));
68
+ ```
69
+
70
+ ```razor
71
+ <IgbStepper Linear="true" Orientation="StepperOrientation.Horizontal" @ref="StepperRef">
72
+ <IgbStep>
73
+ <span slot="title">Personal Info</span>
74
+ <!-- step content -->
75
+ <IgbInput Label="Name" />
76
+ </IgbStep>
77
+ <IgbStep>
78
+ <span slot="title">Address</span>
79
+ <!-- step content -->
80
+ </IgbStep>
81
+ <IgbStep>
82
+ <span slot="title">Confirm</span>
83
+ <!-- step content -->
84
+ </IgbStep>
85
+ </IgbStepper>
86
+
87
+ @code {
88
+ IgbStepper StepperRef { get; set; }
89
+
90
+ void GoNext() => StepperRef.Next();
91
+ void GoPrev() => StepperRef.Prev();
92
+ }
93
+ ```
94
+
95
+ Key attributes on `IgbStepper`: `Linear` (prevents skipping steps), `Orientation` (`StepperOrientation.Horizontal` / `Vertical`), `StepType` (`StepperStepType.Indicator` / `Title` / `Full`), `TitlePosition` (`StepperTitlePosition.Bottom` / `Top` / `End` / `Start`), `HorizontalAnimation`, `VerticalAnimation`, `AnimationDuration`.
96
+
97
+ Key attributes on `IgbStep`: `Complete`, `Optional`, `Disabled`, `Invalid`, `Active`.
98
+
99
+ Slots on `IgbStep`: `indicator` (custom icon/number), `title`, `subtitle`.
100
+
101
+ Methods on `IgbStepper`: `Next()`, `Prev()`, `NavigateTo(index)`, `Reset()`.
102
+
103
+ Events: `ActiveStepChanging` (cancellable), `ActiveStepChanged`.
104
+
105
+ ---
106
+
107
+ ## Accordion & Expansion Panel
108
+
109
+ > **Docs:** [Accordion](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/accordion), [Expansion Panel](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/expansion-panel)
110
+
111
+ ```csharp
112
+ builder.Services.AddIgniteUIBlazor(typeof(IgbAccordionModule));
113
+ // IgbExpansionPanel is included in IgbAccordionModule
114
+ ```
115
+
116
+ ```razor
117
+ <!-- Accordion (wraps multiple expansion panels) -->
118
+ <IgbAccordion SingleExpand="true">
119
+ <IgbExpansionPanel>
120
+ <span slot="title">Section 1</span>
121
+ <span slot="subtitle">Optional subtitle</span>
122
+ <p>Content for section 1.</p>
123
+ </IgbExpansionPanel>
124
+ <IgbExpansionPanel Open="true">
125
+ <span slot="title">Section 2</span>
126
+ <p>Content for section 2.</p>
127
+ </IgbExpansionPanel>
128
+ </IgbAccordion>
129
+
130
+ <!-- Standalone expansion panel -->
131
+ <IgbExpansionPanel @ref="PanelRef">
132
+ <span slot="title">Details</span>
133
+ <p>Expanded content here.</p>
134
+ </IgbExpansionPanel>
135
+
136
+ @code {
137
+ IgbExpansionPanel PanelRef { get; set; }
138
+ void Toggle() => PanelRef.Toggle();
139
+ }
140
+ ```
141
+
142
+ Key attributes on `IgbAccordion`: `SingleExpand` (only one panel open at a time). On `IgbExpansionPanel`: `Open`, `Disabled`.
143
+
144
+ Slots on `IgbExpansionPanel`: `title`, `subtitle`, `indicator` (custom expand icon).
145
+
146
+ Events on `IgbExpansionPanel`: `Opening` (cancellable), `Opened`, `Closing` (cancellable), `Closed`.
147
+
148
+ Methods: `Show()`, `Hide()`, `Toggle()`.
149
+
150
+ ---
151
+
152
+ ## Navbar
153
+
154
+ > **Docs:** [Navbar](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/menus/navbar)
155
+
156
+ ```csharp
157
+ builder.Services.AddIgniteUIBlazor(typeof(IgbNavbarModule));
158
+ ```
159
+
160
+ ```razor
161
+ <IgbNavbar>
162
+ <IgbIconButton slot="start" IconName="menu" Collection="material" @onclick="() => DrawerRef.Toggle()" />
163
+ <h3>My Application</h3>
164
+ <IgbIconButton slot="end" IconName="search" Collection="material" />
165
+ <IgbIconButton slot="end" IconName="more_vert" Collection="material" />
166
+ </IgbNavbar>
167
+ ```
168
+
169
+ Slots: `start` (left content, e.g., menu button), `end` (right content, e.g., action icons). The default slot is used for the title.
170
+
171
+ CSS parts: `base`, `start`, `middle`, `end`.
172
+
173
+ Required theme CSS:
174
+
175
+ ```html
176
+ <link href="_content/IgniteUI.Blazor/themes/light/bootstrap.css" rel="stylesheet" />
177
+ ```
178
+
179
+ > **AGENT INSTRUCTION:** Register icons used by `IgbNavbar` and `IgbIconButton` before relying on them in samples. Call `await iconRef.EnsureReady()` before `RegisterIconAsync()` or `RegisterIconFromTextAsync()`.
180
+
181
+ ---
182
+
183
+ ## Navigation Drawer
184
+
185
+ > **Docs:** [Navigation Drawer](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/menus/navigation-drawer)
186
+
187
+ ```csharp
188
+ builder.Services.AddIgniteUIBlazor(
189
+ typeof(IgbNavDrawerModule),
190
+ typeof(IgbNavDrawerItemModule),
191
+ typeof(IgbNavDrawerHeaderItemModule)
192
+ );
193
+ ```
194
+
195
+ ```razor
196
+ <IgbNavDrawer @ref="DrawerRef" Open="true">
197
+ <IgbNavDrawerHeaderItem>My App</IgbNavDrawerHeaderItem>
198
+
199
+ <IgbNavDrawerItem @ref="HomeItem" @onclick="() => Activate(HomeItem)">
200
+ <IgbIcon slot="icon" IconName="home" Collection="material" />
201
+ <span slot="content">Home</span>
202
+ </IgbNavDrawerItem>
203
+
204
+ <IgbNavDrawerItem @ref="SearchItem" @onclick="() => Activate(SearchItem)">
205
+ <IgbIcon slot="icon" IconName="search" Collection="material" />
206
+ <span slot="content">Search</span>
207
+ </IgbNavDrawerItem>
208
+ </IgbNavDrawer>
209
+
210
+ <IgbIconButton IconName="menu" Collection="material" @onclick="() => DrawerRef.Toggle()" />
211
+
212
+ @code {
213
+ IgbNavDrawer DrawerRef { get; set; }
214
+ IgbNavDrawerItem HomeItem { get; set; }
215
+ IgbNavDrawerItem SearchItem { get; set; }
216
+
217
+ List<IgbNavDrawerItem> AllItems => new() { HomeItem, SearchItem };
218
+
219
+ void Activate(IgbNavDrawerItem item)
220
+ {
221
+ item.Active = true;
222
+ foreach (var i in AllItems.Where(x => x != item))
223
+ i.Active = false;
224
+ }
225
+ }
226
+ ```
227
+
228
+ Navbar integration:
229
+
230
+ ```razor
231
+ <IgbNavbar>
232
+ <IgbIconButton slot="start" IconName="menu" Collection="material" @onclick="() => DrawerRef.Show()" />
233
+ <span>Home</span>
234
+ </IgbNavbar>
235
+
236
+ <IgbNavDrawer @ref="DrawerRef" Open="true" Position="NavDrawerPosition.Start">
237
+ <IgbNavDrawerHeaderItem>Navigation</IgbNavDrawerHeaderItem>
238
+
239
+ <IgbNavDrawerItem @ref="HomeItem" @onclick="() => Activate(HomeItem)">
240
+ <IgbIcon slot="icon" IconName="home" Collection="material" />
241
+ <span slot="content">Home</span>
242
+ </IgbNavDrawerItem>
243
+
244
+ <IgbNavDrawerItem @ref="SearchItem" @onclick="() => Activate(SearchItem)">
245
+ <IgbIcon slot="icon" IconName="search" Collection="material" />
246
+ <span slot="content">Search</span>
247
+ </IgbNavDrawerItem>
248
+ </IgbNavDrawer>
249
+ ```
250
+
251
+ Mini variant:
252
+
253
+ ```razor
254
+ <IgbNavDrawer @ref="DrawerRef" Open="true">
255
+ <IgbNavDrawerHeaderItem>Navigation</IgbNavDrawerHeaderItem>
256
+
257
+ <IgbNavDrawerItem>
258
+ <IgbIcon slot="icon" IconName="home" Collection="material" />
259
+ <span slot="content">Home</span>
260
+ </IgbNavDrawerItem>
261
+
262
+ <div slot="mini">
263
+ <IgbNavDrawerItem>
264
+ <IgbIcon slot="icon" IconName="home" Collection="material" />
265
+ </IgbNavDrawerItem>
266
+ </div>
267
+ </IgbNavDrawer>
268
+ ```
269
+
270
+ Key attributes on `IgbNavDrawer`: `Open`, `Position` (`NavDrawerPosition.Start` / `End` / `Top` / `Bottom`). Use the `mini` slot to provide collapsed icon-only content.
271
+
272
+ Methods: `Show()`, `Hide()`, `Toggle()`.
273
+
274
+ CSS parts: `base`, `main`, `mini`.
275
+
276
+ > **AGENT INSTRUCTION - IgbNavDrawer shadow DOM mechanics:**
277
+ >
278
+ > Regardless of `Open` state or `style` on the host, `::part(base)` is always rendered as `position: fixed; transform: translateX(-Npx)`. When the component considers itself closed it also sets `inert` on `::part(base)`. The host element itself contributes `width: 0` to the layout because the fixed part takes no space.
279
+ >
280
+ > This means:
281
+ > - `Open="true"` alone makes the panel visible but it still floats over content as an overlay.
282
+ > - `slot="mini"` content switches the component to a collapsible expand/collapse mode with an icon-only collapsed state.
283
+ > - To make the drawer occupy real space in the layout (pinned sidebar), the shadow DOM parts must be overridden in **global CSS** (not `.razor.css`): give the host an explicit width, override `::part(base)` to `position: relative; transform: none`, hide `::part(overlay)`, and remove the `inert` attribute via JS in `OnAfterRenderAsync`. Do **not** call `DrawerRef.Show()` in `OnAfterRenderAsync` - it throws "component not ready"; CSS handles visibility instead.
284
+
285
+ > **AGENT INSTRUCTION:** Icons used inside `IgbNavDrawerItem` must be registered via `IgbIcon.RegisterIconFromTextAsync()` or `RegisterIconAsync()` in `OnAfterRenderAsync(bool firstRender)` before they display. Call `await iconRef.EnsureReady()` first.
286
+
287
+ ---
288
+
289
+ ## Tree
290
+
291
+ > **Docs:** [Tree](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/grids/tree)
292
+
293
+ ```csharp
294
+ builder.Services.AddIgniteUIBlazor(typeof(IgbTreeModule));
295
+ ```
296
+
297
+ ```razor
298
+ <IgbTree Selection="TreeSelection.Multiple">
299
+ <IgbTreeItem Expanded="true" Label="Documents">
300
+ <IgbTreeItem Label="Report.docx" />
301
+ <IgbTreeItem Label="Notes.txt" />
302
+ </IgbTreeItem>
303
+ <IgbTreeItem Label="Downloads">
304
+ <IgbTreeItem Label="archive.zip" />
305
+ </IgbTreeItem>
306
+ </IgbTree>
307
+ ```
308
+
309
+ Key attributes on `IgbTree`: `Selection` (`TreeSelection.None` / `Multiple` / `Cascade`). On `IgbTreeItem`: `Label`, `Expanded`, `Selected`, `Disabled`, `Active`.
310
+
311
+ Slots on `IgbTreeItem`: `label` (custom label content), `indicator` (expand/collapse icon override). Nest `IgbTreeItem` children directly inside a parent `IgbTreeItem`.
312
+
313
+ Events on `IgbTree`: `NodeSelectionChanging` (cancellable), `NodeSelectionChanged`, `NodeExpanded`, `NodeCollapsed`.
314
+
315
+ ---
316
+
317
+ ## Key Rules
318
+
319
+ 1. **Stepper with `Linear="true"` prevents users from skipping steps.** Do not set `Linear` if free navigation is intended.
320
+ 2. **Activate/deactivate `IgbNavDrawerItem` programmatically** by setting `item.Active` - there is no automatic selection tracking.
321
+ 3. **Register icons via `RegisterIconFromTextAsync` in `OnAfterRenderAsync(bool firstRender)`**, and always call `await component.EnsureReady()` first.
322
+ 4. **`IgbAccordion` with `SingleExpand="true"` closes other panels when one is opened.** This is the most common use case for accordions.
@@ -0,0 +1,78 @@
1
+ # Setting Up the Ignite UI CLI MCP Server
2
+
3
+ > **Part of the [`igniteui-blazor-components`](../SKILL.md) skill hub.**
4
+
5
+ ## Contents
6
+
7
+ - [VS Code](#vs-code)
8
+ - [Cursor](#cursor)
9
+ - [Claude Desktop](#claude-desktop)
10
+ - [WebStorm / JetBrains IDEs](#webstorm--jetbrains-ides)
11
+ - [Verifying the Setup](#verifying-the-setup)
12
+
13
+ The Ignite UI CLI MCP server enables AI assistants to discover Ignite UI components, access Blazor documentation, and support related Ignite UI workflows. It must be configured in your editor before these tools become available.
14
+
15
+ ## VS Code
16
+
17
+ Create or edit `.vscode/mcp.json` in your project:
18
+
19
+ ```json
20
+ {
21
+ "servers": {
22
+ "igniteui-cli": {
23
+ "command": "npx",
24
+ "args": ["-y", "igniteui-cli", "mcp"]
25
+ }
26
+ }
27
+ }
28
+ ```
29
+
30
+ This works whether `igniteui-cli` is installed locally in `node_modules` or needs to be pulled from the npm registry; `npx -y` handles both cases.
31
+
32
+ ## Cursor
33
+
34
+ Create or edit `.cursor/mcp.json`:
35
+
36
+ ```json
37
+ {
38
+ "mcpServers": {
39
+ "igniteui-cli": {
40
+ "command": "npx",
41
+ "args": ["-y", "igniteui-cli", "mcp"]
42
+ }
43
+ }
44
+ }
45
+ ```
46
+
47
+ ## Claude Desktop
48
+
49
+ Edit the Claude Desktop config file:
50
+
51
+ - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
52
+ - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
53
+
54
+ ```json
55
+ {
56
+ "mcpServers": {
57
+ "igniteui-cli": {
58
+ "command": "npx",
59
+ "args": ["-y", "igniteui-cli", "mcp"]
60
+ }
61
+ }
62
+ }
63
+ ```
64
+
65
+ ## WebStorm / JetBrains IDEs
66
+
67
+ 1. Go to **Settings -> Tools -> AI Assistant -> MCP Servers**
68
+ 2. Click **+ Add MCP Server**
69
+ 3. Set Command to `npx` and Arguments to `igniteui-cli mcp`
70
+ 4. Click OK and restart the AI Assistant
71
+
72
+ ## Verifying the Setup
73
+
74
+ After configuring the MCP server, ask your AI assistant:
75
+
76
+ > "List all available Ignite UI for Blazor components"
77
+
78
+ If the MCP server is running, the `list_components(framework: "blazor")` tool will return available Blazor component documentation entries.