igniteui-cli 15.1.0 → 15.2.0

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,302 @@
1
+ # Charts & Data Visualization
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
+ - [Overview](#overview)
9
+ - [Chart Type Decision Guide](#chart-type-decision-guide)
10
+ - [Category Chart](#category-chart)
11
+ - [Data Chart](#data-chart)
12
+ - [Financial / Stock Chart](#financial--stock-chart)
13
+ - [Pie Chart](#pie-chart)
14
+ - [Donut Chart](#donut-chart)
15
+ - [Sparkline](#sparkline)
16
+ - [Treemap](#treemap)
17
+ - [Geographic Map](#geographic-map)
18
+ - [Gauges](#gauges)
19
+ - [Dashboard Tile](#dashboard-tile)
20
+ - [Common Chart Features](#common-chart-features)
21
+ - [Key Rules](#key-rules)
22
+
23
+ ---
24
+ ## Overview
25
+
26
+ Ignite UI for Blazor provides 65+ chart types for data visualization. Charts are part of the IgniteUI.Blazor package (trial watermarked version available in the IgniteUI.Blazor.Trial public NuGet package).
27
+ This reference gives high-level guidance on when to use some of the chart types, their key features, and common API members. For detailed documentation, call `get_doc` and `get_api_reference` from `igniteui-cli` with the specific chart component or feature you're interested in.
28
+
29
+ ## Chart Type Decision Guide
30
+
31
+ | Use case | Recommended component |
32
+ |---|---|
33
+ | Simple line/area/column/point/spline/waterfall charts with minimal config | `IgbCategoryChart` |
34
+ | Multiple series types on the same chart, custom axes, annotations | `IgbDataChart` |
35
+ | Candlestick / OHLC financial data with range selector | `IgbFinancialChart` / stock chart docs |
36
+ | Part-to-whole proportions (slices) | `IgbPieChart` |
37
+ | Donut with center label | `IgbDoughnutChart` |
38
+ | Inline sparkline for tables or cards | `IgbSparkline` |
39
+ | Hierarchical part-to-whole data | Treemap docs |
40
+ | Geographic points, shapes, map markers | Geographic Map docs |
41
+ | KPI values, ranges, scales, bullet comparisons | Gauge docs |
42
+ | Auto-generated dashboard visualization from data | Dashboard Tile docs |
43
+
44
+ ---
45
+
46
+ ## Category Chart
47
+
48
+ ```csharp
49
+ builder.Services.AddIgniteUIBlazor(typeof(IgbCategoryChartModule));
50
+ ```
51
+
52
+ ```razor
53
+ <IgbCategoryChart DataSource="SalesData"
54
+ ChartType="CategoryChartType.Line"
55
+ Height="400px"
56
+ Width="100%"
57
+ YAxisTitle="Revenue (USD)"
58
+ XAxisTitle="Month"
59
+ Brushes="DodgerBlue IndianRed"
60
+ IsHorizontalZoomEnabled="true"
61
+ IsVerticalZoomEnabled="false"
62
+ IsTransitionInEnabled="true" />
63
+
64
+ @code {
65
+ public List<SalesRecord> SalesData { get; set; } = SampleData.GetSales();
66
+ }
67
+ ```
68
+
69
+ Key attributes: `DataSource`, `ChartType` (`CategoryChartType.Line` / `Area` / `Column` / `Point` / `Spline` / `SplineArea` / `StepLine` / `StepArea` / `Waterfall` / `Auto`), `Height`, `Width`, `YAxisTitle`, `XAxisTitle`, `Brushes`, `Outlines`, `MarkerBrushes`, `IsTransitionInEnabled`, `IsHorizontalZoomEnabled`, `IsVerticalZoomEnabled`.
70
+
71
+ > **AGENT INSTRUCTION:** `CategoryChartType.Bar` does **not** exist. For a horizontal bar-style chart, use `CategoryChartType.Column` (vertical) or switch to `IgbDataChart` with `IgbBarSeries` for true horizontal bars. Never generate `ChartType="CategoryChartType.Bar"`.
72
+
73
+ > **AGENT INSTRUCTION:** The `XAxisLabel` parameter on `IgbCategoryChart` is not a plain string property name. To control which data field is used as the X-axis label, set `XAxisMemberPath` with the property name string (e.g., `XAxisMemberPath="Month"`).
74
+
75
+ Brush list properties such as `Brushes`, `Outlines`, `MarkerBrushes`, and `MarkerOutlines` are **string** parameters. Separate multiple colors with spaces, as in `Brushes="DodgerBlue IndianRed"`.
76
+
77
+ > **AGENT INSTRUCTION:** `IgbCategoryChart` auto-detects numeric properties in `DataSource` objects and creates series for them. To control which properties are charted, use `IncludedProperties` or `ExcludedProperties` attributes. These are **array** parameters - bind them with `@(new string[] { ... })` syntax:
78
+ > ```razor
79
+ > <IgbCategoryChart DataSource="SalesData"
80
+ > ExcludedProperties='@(new string[] { "Id", "InternalCode" })' />
81
+ > ```
82
+ > Do NOT pass a plain string like `ExcludedProperties="Id"` - this causes a type mismatch error.
83
+
84
+ ---
85
+
86
+ ## Data Chart
87
+
88
+ ```csharp
89
+ builder.Services.AddIgniteUIBlazor(typeof(IgbDataChartCoreModule), typeof(IgbDataChartCategoryModule));
90
+ // Add additional modules for other series types:
91
+ // IgbDataChartScatterModule, IgbDataChartFinancialModule, etc.
92
+ ```
93
+
94
+ ```razor
95
+ <IgbDataChart Height="500px" Width="100%" IsHorizontalZoomEnabled="true">
96
+ <IgbCategoryXAxis Name="xAxis" DataSource="ChartData" Label="Month" />
97
+ <IgbNumericYAxis Name="yAxis" />
98
+ <IgbLineSeries DataSource="ChartData"
99
+ XAxisName="xAxis"
100
+ YAxisName="yAxis"
101
+ ValueMemberPath="Revenue"
102
+ Title="Revenue" />
103
+ <IgbColumnSeries DataSource="ChartData"
104
+ XAxisName="xAxis"
105
+ YAxisName="yAxis"
106
+ ValueMemberPath="Expenses"
107
+ Title="Expenses" />
108
+ <IgbChartLegend Name="legend" />
109
+ </IgbDataChart>
110
+
111
+ @code {
112
+ public List<MonthData> ChartData { get; set; } = SampleData.GetMonthly();
113
+ }
114
+ ```
115
+
116
+ Common axis types: `IgbCategoryXAxis`, `IgbNumericXAxis`, `IgbNumericYAxis`, `IgbCategoryYAxis`, `IgbTimeXAxis`, `IgbOrdinalTimeXAxis`.
117
+
118
+ Common series types: `IgbLineSeries`, `IgbAreaSeries`, `IgbColumnSeries`, `IgbBarSeries`, `IgbSplineSeries`, `IgbBubbleSeries`, `IgbScatterSeries`.
119
+
120
+ Every series must reference its axes by matching `Name` and `XAxisName` / `YAxisName`.
121
+
122
+ > **AGENT INSTRUCTION:** `IgbDataChart` requires separate NuGet module registrations for each category of series. Always check `get_doc` to find the exact module names, for example category, scatter, polar, radial, stacked, or financial modules.
123
+
124
+ ---
125
+
126
+ ## Financial / Stock Chart
127
+
128
+ > **Docs:** [Financial Chart](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/charts/types/stock-chart)
129
+
130
+ ```csharp
131
+ builder.Services.AddIgniteUIBlazor(typeof(IgbFinancialChartModule));
132
+ ```
133
+
134
+ ```razor
135
+ <IgbFinancialChart DataSource="StockData"
136
+ Width="100%"
137
+ Height="500px"
138
+ ChartType="FinancialChartType.Candle"
139
+ ZoomSliderType="FinancialChartZoomSliderType.Line" />
140
+
141
+ @code {
142
+ public List<StockPrice> StockData { get; set; } = SampleData.GetStockPrices();
143
+ }
144
+ ```
145
+
146
+ The data source must contain `Open`, `High`, `Low`, `Close`, and `Volume` numeric fields plus a `Date`/`Time` field. Key attributes: `ChartType` (`FinancialChartType.Candle` / `Bar` / `Line`), `ZoomSliderType`, `IsTooltipVisible`, `VolumeType`.
147
+
148
+ ---
149
+
150
+ ## Pie Chart
151
+
152
+ > **Docs:** [Pie Chart](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/charts/types/pie-chart)
153
+
154
+ ```csharp
155
+ builder.Services.AddIgniteUIBlazor(typeof(IgbPieChartModule));
156
+ ```
157
+
158
+ ```razor
159
+ <IgbPieChart DataSource="SliceData"
160
+ LabelMemberPath="Department"
161
+ ValueMemberPath="Budget"
162
+ Width="500px"
163
+ Height="400px"
164
+ LegendLabelMemberPath="Department"
165
+ SliceClick="OnSliceClick" />
166
+
167
+ @code {
168
+ public List<BudgetSlice> SliceData { get; set; } = SampleData.GetBudget();
169
+
170
+ void OnSliceClick(IgbSliceClickEventArgs e) { /* handle click */ }
171
+ }
172
+ ```
173
+
174
+ Key attributes: `DataSource`, `LabelMemberPath`, `ValueMemberPath`, `RadiusFactor` (0-1), `StartAngle`, `OthersCategoryThreshold`, `OthersCategoryType`, `LegendLabelMemberPath`, `LegendItemTemplate`.
175
+
176
+ Events: `SliceClick`.
177
+
178
+ ---
179
+
180
+ ## Donut Chart
181
+
182
+ > **Docs:** [Doughnut Chart](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/charts/types/donut-chart)
183
+
184
+ ```csharp
185
+ builder.Services.AddIgniteUIBlazor(typeof(IgbDoughnutChartModule), typeof(IgbRingSeriesModule));
186
+ ```
187
+
188
+ ```razor
189
+ <IgbDoughnutChart Width="400px" Height="400px">
190
+ <IgbRingSeries DataSource="DonutData"
191
+ LabelMemberPath="Category"
192
+ ValueMemberPath="Share" />
193
+ </IgbDoughnutChart>
194
+ ```
195
+
196
+ Supports multiple `IgbRingSeries` for concentric rings.
197
+
198
+ ---
199
+
200
+ ## Sparkline
201
+
202
+ > **Docs:** [Sparkline](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/charts/types/sparkline-chart)
203
+
204
+ ```csharp
205
+ builder.Services.AddIgniteUIBlazor(typeof(IgbSparklineModule));
206
+ ```
207
+
208
+ ```razor
209
+ <IgbSparkline DataSource="TrendData"
210
+ ValueMemberPath="Value"
211
+ DisplayType="SparklineDisplayType.Line"
212
+ Width="120px"
213
+ Height="40px"
214
+ Brushes="DodgerBlue"
215
+ LineThickness="2" />
216
+ ```
217
+
218
+ Key attributes: `DataSource`, `ValueMemberPath`, `DisplayType` (`SparklineDisplayType.Line` / `Area` / `Column` / `WinLoss`), `Width`, `Height`, `Brushes`, `LineThickness`, `MarkerVisibility`, `FirstMarkerVisibility`, `LastMarkerVisibility`, `HighMarkerVisibility`, `LowMarkerVisibility`.
219
+
220
+ ---
221
+
222
+ ## Treemap
223
+
224
+ > **Docs:** [Treemap](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/charts/types/treemap-chart)
225
+
226
+ Use Treemap for hierarchical, weighted, part-to-whole data. Always call `get_doc("treemap-chart")` before writing markup because hierarchy binding, member paths, and layout options are component-specific.
227
+
228
+ ---
229
+
230
+ ## Geographic Map
231
+
232
+ > **Docs:** [Geographic Map](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/geo-map-type-scatter-area-series)
233
+
234
+ Use Geographic Map for map backgrounds, shape files, geographic points, bubbles, and marker layers. Do not adapt Data Chart axis or series examples to maps unless the Blazor Geographic Map docs explicitly show the same API.
235
+
236
+ ---
237
+
238
+ ## Gauges
239
+
240
+ > **Docs:** [Radial Gauge](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/radial-gauge), [Linear Gauge](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/linear-gauge), [Bullet Graph](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/bullet-graph)
241
+
242
+ Use gauges for KPI values, ranges, thresholds, progress-style numeric summaries, and bullet comparisons. Select the exact gauge doc first, then use the MCP-documented property names for ranges, labels, scale, and value binding.
243
+
244
+ ---
245
+
246
+ ## Dashboard Tile
247
+
248
+ > **Docs:** [Dashboard Tile](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/dashboard-tile)
249
+
250
+ Use Dashboard Tile when the requested component should infer or render compact dashboard visualizations from bound data. Verify supported chart modes and binding shape with MCP before producing code.
251
+
252
+ ---
253
+
254
+ ## Common Chart Features
255
+
256
+ ### Legends
257
+
258
+ ```razor
259
+ <IgbLegend @ref="Legend" Orientation="LandmarkOrientation.Horizontal" />
260
+ <IgbCategoryChart DataSource="Data" Legend="Legend" />
261
+ ```
262
+
263
+ ### Tooltips
264
+
265
+ ```razor
266
+ <IgbCategoryChart IsDefaultTooltipEnabled="true" />
267
+ <!-- Or custom tooltip via ToolTipTemplate slot -->
268
+ ```
269
+
270
+ ### Animations
271
+
272
+ ```razor
273
+ <IgbCategoryChart IsTransitionInEnabled="true" TransitionInDuration="1000" />
274
+ ```
275
+
276
+ ### Highlighting
277
+
278
+ ```razor
279
+ <IgbCategoryChart IsSeriesHighlightingEnabled="true"
280
+ HighlightingBehavior="SeriesHighlightingBehavior.BrightenSpecificItemsAndDarkenOthers" />
281
+ ```
282
+
283
+ ### Zooming and Panning
284
+
285
+ ```razor
286
+ <IgbCategoryChart IsHorizontalZoomEnabled="true"
287
+ IsVerticalZoomEnabled="false"
288
+ CrosshairsDisplayMode="CrosshairsDisplayMode.Both" />
289
+ ```
290
+
291
+ ---
292
+
293
+ ## Key Rules
294
+
295
+ 1. **`IgbCategoryChart` is the fastest path for standard charts.** It auto-generates series from data. Use `IgbDataChart` only when you need multiple series types, custom axes, or advanced features.
296
+ 2. **`IgbDataChart` requires one module per series category.** Check `get_doc` for the exact module name.
297
+ 3. **Financial chart data must have `Open`, `High`, `Low`, `Close` fields.** If the data model is different, the chart will not render correctly.
298
+ 4. **Always set explicit `Width` and `Height` on charts.** Charts do not auto-size to their container without a height.
299
+ 5. **`IgbDataChart` series must match axes by name.** The `XAxisName` / `YAxisName` on each series must match the `Name` attribute of the axis component.
300
+ 6. **`IncludedProperties` and `ExcludedProperties` are `string[]` arrays.** Bind with `@(new string[] { "Prop1", "Prop2" })`. Do not pass a plain string.
301
+ 7. **`CategoryChartType.Bar` does not exist.** Use `Column` for vertical bars in `IgbCategoryChart`. For horizontal bars, use `IgbDataChart` with `IgbBarSeries`.
302
+ 8. **Use `XAxisMemberPath` to set the X-axis label field**, not `XAxisLabel`. Passing a property name string to `XAxisLabel` is evaluated as a C# expression and silently fails.
@@ -0,0 +1,350 @@
1
+ # Data Display 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
+ - [Button & Button Group](#button--button-group)
9
+ - [Icon & Icon Button](#icon--icon-button)
10
+ - [Card](#card)
11
+ - [Carousel](#carousel)
12
+ - [List](#list)
13
+ - [Avatar](#avatar)
14
+ - [Badge](#badge)
15
+ - [Chip](#chip)
16
+ - [Circular Progress](#circular-progress)
17
+ - [Linear Progress](#linear-progress)
18
+ - [Dropdown](#dropdown)
19
+ - [Tooltip](#tooltip)
20
+ - [Ripple](#ripple)
21
+ - [Key Rules](#key-rules)
22
+
23
+ ---
24
+
25
+ ## Overview
26
+ This reference gives high-level guidance on data display and action 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.
27
+
28
+ ## Button & Button Group
29
+
30
+ > **Docs:** [Button](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/button), [Button Group](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/button-group)
31
+
32
+ ```csharp
33
+ builder.Services.AddIgniteUIBlazor(typeof(IgbButtonModule), typeof(IgbButtonGroupModule));
34
+ ```
35
+
36
+ ```razor
37
+ <!-- Button variants -->
38
+ <IgbButton Variant="@ButtonVariant.Contained" @onclick="Save">Save</IgbButton>
39
+ <IgbButton Variant="@ButtonVariant.Outlined" @onclick="Cancel">Cancel</IgbButton>
40
+ <IgbButton Variant="@ButtonVariant.Flat">Flat</IgbButton>
41
+
42
+ <!-- Button Group (toggle buttons) -->
43
+ <IgbButtonGroup Selection="ButtonGroupSelection.Single">
44
+ <IgbToggleButton Value="left">Left</IgbToggleButton>
45
+ <IgbToggleButton Value="center" Selected="true">Center</IgbToggleButton>
46
+ <IgbToggleButton Value="right">Right</IgbToggleButton>
47
+ </IgbButtonGroup>
48
+ ```
49
+
50
+ Key attributes on `IgbButton`: `Variant` (`ButtonVariant.Contained` / `Outlined` / `Flat` / `Fab`), `Disabled`, `DisplayType` (`ButtonBaseType.Button` / `Submit` / `Reset`), `Href` (renders as `<a>`).
51
+
52
+ Key attributes on `IgbButtonGroup`: `Selection` (`ButtonGroupSelection.Single` / `SingleRequired` / `Multiple`), `Alignment` (`ContentOrientation.Horizontal` / `ContentOrientation.Vertical`).
53
+
54
+ ---
55
+
56
+ ## Icon & Icon Button
57
+
58
+ > **Docs:** [Icon](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/icon), [Icon Button](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/icon-button)
59
+
60
+ ```csharp
61
+ builder.Services.AddIgniteUIBlazor(typeof(IgbIconModule), typeof(IgbIconButtonModule));
62
+ ```
63
+
64
+ ```razor
65
+ <IgbIcon @ref="MyIcon" IconName="home" Collection="material" />
66
+ <IgbIconButton @ref="MenuBtn" IconName="menu" Collection="material" Variant="@IconButtonVariant.Flat" />
67
+
68
+ @code {
69
+ IgbIcon MyIcon { get; set; }
70
+ IgbIconButton MenuBtn { get; set; }
71
+
72
+ protected override async Task OnAfterRenderAsync(bool firstRender)
73
+ {
74
+ if (firstRender && MyIcon != null)
75
+ {
76
+ await MyIcon.EnsureReady();
77
+ string svg = "<svg>...</svg>";
78
+ await MyIcon.RegisterIconFromTextAsync("home", svg, "material");
79
+ }
80
+ }
81
+ }
82
+ ```
83
+
84
+ Key attributes: `IconName`, `Collection`, `Mirrored` (for RTL). Size is controlled via CSS `--ig-size: var(--ig-size-small | --ig-size-medium | --ig-size-large)`.
85
+
86
+ > **AGENT INSTRUCTION - Icon Registration:** Icons are registered by name+collection. Registration must happen in `OnAfterRenderAsync(bool firstRender)` after calling `EnsureReady()`. Re-use the same collection name across the app for consistency.
87
+
88
+ ---
89
+
90
+ ## Card
91
+
92
+ > **Docs:** [Card](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/card)
93
+
94
+ ```csharp
95
+ builder.Services.AddIgniteUIBlazor(typeof(IgbCardModule));
96
+ ```
97
+
98
+ ```razor
99
+ <IgbCard style="width: 350px;">
100
+ <IgbCardMedia>
101
+ <img src="photo.jpg" alt="Card image" />
102
+ </IgbCardMedia>
103
+ <IgbCardHeader>
104
+ <h3 slot="title">Jane Doe</h3>
105
+ <span slot="subtitle">Photographer</span>
106
+ </IgbCardHeader>
107
+ <IgbCardContent>
108
+ <p>A short description of Jane Doe.</p>
109
+ </IgbCardContent>
110
+ <IgbCardActions>
111
+ <IgbButton slot="start" Variant="@ButtonVariant.Flat">Like</IgbButton>
112
+ <IgbButton slot="start" Variant="@ButtonVariant.Flat">Share</IgbButton>
113
+ </IgbCardActions>
114
+ </IgbCard>
115
+ ```
116
+
117
+ Sub-components: `IgbCardMedia`, `IgbCardHeader`, `IgbCardContent`, `IgbCardActions`. Slots on `IgbCardHeader`: `thumbnail`, `title`, `subtitle`.
118
+
119
+ ---
120
+
121
+ ## Carousel
122
+
123
+ > **Docs:** [Carousel](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/carousel)
124
+
125
+ ```csharp
126
+ builder.Services.AddIgniteUIBlazor(typeof(IgbCarouselModule));
127
+ ```
128
+
129
+ ```razor
130
+ <IgbCarousel>
131
+ <IgbCarouselSlide Active="true">
132
+ <img src="slide-1.jpg" alt="Slide 1" />
133
+ </IgbCarouselSlide>
134
+ <IgbCarouselSlide>
135
+ <img src="slide-2.jpg" alt="Slide 2" />
136
+ </IgbCarouselSlide>
137
+ </IgbCarousel>
138
+ ```
139
+
140
+ Use Carousel for image/content slides, banners, onboarding panels, or media galleries. Check the `carousel` MCP doc for current slide APIs, navigation controls, indicators, autoplay, animation, and CSS parts.
141
+
142
+ ---
143
+
144
+ ## List
145
+
146
+ > **Docs:** [List](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/grids/list)
147
+
148
+ ```csharp
149
+ builder.Services.AddIgniteUIBlazor(typeof(IgbListModule), typeof(IgbListItemModule), typeof(IgbListHeaderModule));
150
+ ```
151
+
152
+ ```razor
153
+ <IgbList>
154
+ <IgbListHeader>Contacts</IgbListHeader>
155
+ @foreach (var contact in Contacts)
156
+ {
157
+ <IgbListItem>
158
+ <IgbAvatar slot="start" Shape="@AvatarShape.Circle">@contact.Initials</IgbAvatar>
159
+ <span slot="title">@contact.Name</span>
160
+ <span slot="subtitle">@contact.Phone</span>
161
+ <IgbIconButton slot="end" IconName="delete" Collection="material" />
162
+ </IgbListItem>
163
+ }
164
+ </IgbList>
165
+ ```
166
+
167
+ Slots on `IgbListItem`: `start`, `end`, `title`, `subtitle`.
168
+
169
+ ---
170
+
171
+ ## Avatar
172
+
173
+ > **Docs:** [Avatar](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/layouts/avatar)
174
+
175
+ ```csharp
176
+ builder.Services.AddIgniteUIBlazor(typeof(IgbAvatarModule));
177
+ ```
178
+
179
+ ```razor
180
+ <!-- Image avatar -->
181
+ <IgbAvatar Src="avatar.png" Alt="User photo" Shape="@AvatarShape.Circle" />
182
+
183
+ <!-- Initials avatar -->
184
+ <IgbAvatar Shape="@AvatarShape.Circle">AB</IgbAvatar>
185
+
186
+ <!-- Icon avatar -->
187
+ <IgbAvatar Shape="@AvatarShape.Square">
188
+ <IgbIcon IconName="person" Collection="material" />
189
+ </IgbAvatar>
190
+ ```
191
+
192
+ Key attributes: `Src`, `Alt`, `Initials`, `Shape` (`AvatarShape.Circle` / `Square` / `Rounded`). Size is controlled via CSS `--ig-size: var(--ig-size-small | --ig-size-medium | --ig-size-large)`.
193
+
194
+ ---
195
+
196
+ ## Badge
197
+
198
+ > **Docs:** [Badge](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/badge)
199
+
200
+ ```csharp
201
+ builder.Services.AddIgniteUIBlazor(typeof(IgbBadgeModule));
202
+ ```
203
+
204
+ ```razor
205
+ <IgbBadge Variant="@BadgeVariant.Primary">5</IgbBadge>
206
+ <IgbBadge Variant="@BadgeVariant.Danger" Shape="@BadgeShape.Dot" />
207
+ ```
208
+
209
+ Key attributes: `Variant` (`BadgeVariant.Primary` / `Info` / `Success` / `Warning` / `Danger`), `Shape` (`BadgeShape.Rounded` / `Square` / `Dot`), `Outlined`.
210
+
211
+ ---
212
+
213
+ ## Chip
214
+
215
+ > **Docs:** [Chip](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/chip)
216
+
217
+ ```csharp
218
+ builder.Services.AddIgniteUIBlazor(typeof(IgbChipModule));
219
+ ```
220
+
221
+ ```razor
222
+ <IgbChip Selectable="true" Removable="true" Remove="OnChipRemoved">
223
+ <IgbIcon slot="start" IconName="star" Collection="material" />
224
+ Blazor
225
+ </IgbChip>
226
+
227
+ @code {
228
+ void OnChipRemoved(IgbComponentBoolValueChangedEventArgs e) { /* handle removal */ }
229
+ }
230
+ ```
231
+
232
+ Key attributes: `Selectable`, `Selected`, `Removable`, `Disabled`, `Variant` (`ChipVariant.Primary` / `Info` / `Success` / `Warning` / `Danger`).
233
+
234
+ Slots: `start`, `end` (prefix/suffix icons).
235
+
236
+ Events: `Select`, `Remove`.
237
+
238
+ ---
239
+
240
+ ## Circular Progress
241
+
242
+ > **Docs:** [Circular Progress](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/circular-progress)
243
+
244
+ ```csharp
245
+ builder.Services.AddIgniteUIBlazor(typeof(IgbCircularProgressModule));
246
+ ```
247
+
248
+ ```razor
249
+ <!-- Determinate -->
250
+ <IgbCircularProgress Value="65" Max="100">
251
+ <span slot="default">65%</span>
252
+ </IgbCircularProgress>
253
+
254
+ <!-- Indeterminate (spinner) -->
255
+ <IgbCircularProgress Indeterminate="true" />
256
+ ```
257
+
258
+ Key attributes: `Value`, `Max`, `Indeterminate`, `AnimationDuration`, `Variant` (`ProgressBaseVariant.Primary` / `Info` / `Success` / `Warning` / `Danger`).
259
+
260
+ ---
261
+
262
+ ## Linear Progress
263
+
264
+ > **Docs:** [Linear Progress](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/linear-progress)
265
+
266
+ ```csharp
267
+ builder.Services.AddIgniteUIBlazor(typeof(IgbLinearProgressModule));
268
+ ```
269
+
270
+ ```razor
271
+ <IgbLinearProgress Value="42" Max="100" Striped="true" />
272
+ <IgbLinearProgress Indeterminate="true" />
273
+ ```
274
+
275
+ Key attributes: `Value`, `Max`, `Indeterminate`, `Striped`, `Variant`, `LabelAlign` (`LinearProgressLabelAlign.TopStart` / `Top` / `TopEnd` / `BottomStart` / `Bottom` / `BottomEnd`).
276
+
277
+ ---
278
+
279
+ ## Dropdown
280
+
281
+ > **Docs:** [Dropdown](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/dropdown)
282
+
283
+ ```csharp
284
+ builder.Services.AddIgniteUIBlazor(typeof(IgbDropdownModule));
285
+ ```
286
+
287
+ ```razor
288
+ <div>
289
+ <IgbDropdown>
290
+ <IgbButton slot="target">Options</IgbButton>
291
+ <IgbDropdownHeader>Actions</IgbDropdownHeader>
292
+ <IgbDropdownItem Value="edit">Edit</IgbDropdownItem>
293
+ <IgbDropdownItem Value="delete">Delete</IgbDropdownItem>
294
+ <IgbDropdownItem Value="disabled" Disabled="true">Archive</IgbDropdownItem>
295
+ </IgbDropdown>
296
+ </div>
297
+
298
+ ```
299
+
300
+ Key attributes on `IgbDropdown`: `Placement` (`PopoverPlacement.*`), `Flip`, `Distance`, `SameWidth`, `KeepOpenOnOutsideClick`, `KeepOpenOnSelect`. Key attributes on `IgbDropdownItem`: `Value`, `Selected`, `Disabled`. Events on `IgbDropdown`: `Opening`, `Opened`, `Closing`, `Closed`, `Change`.
301
+
302
+ ---
303
+
304
+ ## Tooltip
305
+
306
+ > **Docs:** [Tooltip](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/tooltip)
307
+
308
+ ```csharp
309
+ builder.Services.AddIgniteUIBlazor(typeof(IgbTooltipModule));
310
+ ```
311
+
312
+ ```razor
313
+ <IgbButton id="hover-button">Hover me</IgbButton>
314
+ <IgbTooltip Anchor="hover-button" Placement="@PopoverPlacement.Top">
315
+ This is a tooltip
316
+ </IgbTooltip>
317
+ ```
318
+
319
+ Key attributes: `Anchor` (target element ID string), `Placement` (`PopoverPlacement.Top` / `Bottom` / `Left` / `Right` and start/end variants), `ShowDelay`, `HideDelay`, `ShowTriggers`, `HideTriggers`, `Sticky`, `WithArrow`, `Open`.
320
+
321
+ ---
322
+
323
+ ## Ripple
324
+
325
+ > **Docs:** [Ripple](https://www.infragistics.com/products/ignite-ui-blazor/blazor/components/inputs/ripple)
326
+
327
+ ```csharp
328
+ builder.Services.AddIgniteUIBlazor(typeof(IgbRippleModule));
329
+ ```
330
+
331
+ Attach to any element with the `igcRipple` attribute or nest `IgbRipple` inside a container:
332
+
333
+ ```razor
334
+ <div style="position: relative; padding: 16px; cursor: pointer;">
335
+ Click me
336
+ <IgbRipple />
337
+ </div>
338
+ ```
339
+
340
+ CSS part: `base`. Customize color via `--color` CSS custom property.
341
+
342
+ ---
343
+
344
+ ## Key Rules
345
+
346
+ 1. **Register each module explicitly.** `IgbButtonModule` and `IgbIconButtonModule` are separate modules.
347
+ 2. **Icons must be registered before they display.** Use `EnsureReady()` + `RegisterIconFromTextAsync()` in `OnAfterRenderAsync(bool firstRender)`.
348
+ 3. **`IgbCard` does not set a default width.** Always set a width via inline style or CSS class.
349
+ 4. **Prefer the Dropdown `target` slot for the trigger.** For an external trigger, follow the current `dropdown` MCP doc and call `Show()`, `Hide()`, or `Toggle()` on the dropdown reference.
350
+ 5. **`IgbTooltip.Anchor` uses the target element ID string in the documented Blazor pattern.** Give the target an `id` and pass that same value to `Anchor`.