igniteui-cli 15.0.0 → 15.0.1

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 (34) hide show
  1. package/README.md +7 -1
  2. package/lib/cli.js +36 -40
  3. package/lib/commands/add.js +29 -15
  4. package/lib/commands/ai-config.js +2 -2
  5. package/lib/commands/build.js +3 -5
  6. package/lib/commands/config.js +10 -14
  7. package/lib/commands/doc.js +4 -5
  8. package/lib/commands/generate.js +5 -7
  9. package/lib/commands/list.js +46 -7
  10. package/lib/commands/mcp.js +1 -2
  11. package/lib/commands/new.js +11 -6
  12. package/lib/commands/start.js +3 -4
  13. package/lib/commands/test.js +3 -4
  14. package/lib/commands/types.d.ts +0 -15
  15. package/lib/commands/types.js +0 -27
  16. package/lib/commands/upgrade.js +4 -4
  17. package/package.json +5 -5
  18. package/templates/react/igr-ts/grid/basic/index.js +1 -1
  19. package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/README.md +10 -1
  20. package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-components/SKILL.md +19 -11
  21. package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-components/reference/CHARTS-GRIDS.md +3 -0
  22. package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-components/reference/COMPONENT-CATALOGUE.md +3 -0
  23. package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-components/reference/MCP-SERVER.md +77 -0
  24. package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-customize-theme/SKILL.md +22 -12
  25. package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-generate-from-image-design/SKILL.md +229 -0
  26. package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-generate-from-image-design/reference/component-mapping.md +146 -0
  27. package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-generate-from-image-design/reference/gotchas.md +200 -0
  28. package/templates/react/igr-ts/projects/_base/files/package.json +1 -1
  29. package/templates/webcomponents/igc-ts/dock-manager/default/index.js +1 -1
  30. package/templates/webcomponents/igc-ts/projects/_base/files/__dot__claude/skills/igniteui-wc-choose-components/SKILL.md +20 -0
  31. package/templates/webcomponents/igc-ts/projects/_base/files/__dot__claude/skills/igniteui-wc-choose-components/reference/mcp-setup.md +82 -0
  32. package/templates/webcomponents/igc-ts/projects/_base/files/package.json +1 -1
  33. package/templates/webcomponents/igc-ts/projects/_base_with_home/files/package.json +2 -2
  34. package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-customize-theme/reference/SASS-THEMING.md +0 -125
@@ -0,0 +1,146 @@
1
+ # Ignite UI React Component Mapping Reference
2
+
3
+ ## Table of Contents
4
+ - [Dashboard & Layout Components](#dashboard--layout-components)
5
+ - [Chart Components](#chart-components)
6
+ - [Data Display Components](#data-display-components)
7
+ - [Form & Input Components](#form--input-components)
8
+ - [Calendar & Scheduling Components](#calendar--scheduling-components)
9
+ - [Map Components](#map-components)
10
+ - [Gauge Components](#gauge-components)
11
+ - [Package Requirements](#package-requirements)
12
+ - [Import Patterns](#import-patterns)
13
+
14
+ ## Dashboard & Layout Components
15
+
16
+ | UI Pattern | Ignite UI Component | Key Properties |
17
+ |---|---|---|
18
+ | Top navigation bar | `IgrNavbar` | children plus named action/content slots |
19
+ | Side navigation | `IgrNavDrawer` | `open`, drawer items, `icon` and `content` slots |
20
+ | Content cards/panels | `IgrCard` | `IgrCardHeader`, `IgrCardContent`, `IgrCardActions` |
21
+ | Tabbed content | `IgrTabs` + `IgrTab` | `label`, `slot="label"` |
22
+ | Accordion sections | `IgrAccordion` | `IgrExpansionPanel` children |
23
+ | Split layouts | `IgrSplitter` | resizable panes when splitter chrome is visible |
24
+ | Tile dashboard | `IgrTileManager` | drag/resize tiles |
25
+
26
+ Decision rule:
27
+
28
+ - Use `IgrNavbar` for a top horizontal bar when its slot structure and behavior match the screenshot. Use custom children and CSS flex overrides to achieve multi-zone layouts inside it. Use a plain `<header>` when that is a closer structural fit.
29
+ - Use `IgrNavDrawer` for a sidebar or side-navigation panel when drawer structure and behavior match the screenshot. Configure open and mini behavior according to whether the design shows fixed, collapsible, or icon-only navigation. Use a plain `<aside>` when a static custom sidebar matches the screenshot better.
30
+ - Use `IgrTabs` for a horizontal tab strip when the screenshot clearly shows tabbed state switching. Use label-only tabs for routed navigation and inline tab content for local view switching.
31
+
32
+ Component decision matrix (by visual pattern, domain-neutral):
33
+
34
+ | Visual Pattern | Recommended Component | Notes |
35
+ |---|---|---|
36
+ | Repeated rows with icon/text/action | `IgrList` | Use when the row anatomy and interaction model match. Compose the row content with React children and the documented slots. Use native `<ul>/<li>` or custom containers when that is a closer visual fit |
37
+ | Spreadsheet-like editable or sortable table | `IgrGridLite` or `IgrGrid` | Use only when content is truly tabular. Prefer `IgrGridLite` for lightweight MIT cases and `IgrGrid` when advanced grid features are required |
38
+ | Hierarchical or tree-structured table | `IgrTreeGrid` or `IgrTree` | Use `IgrTreeGrid` for hierarchical tables and `IgrTree` for tree-style navigation or nested lists |
39
+ | Content blocks / summary cards | `IgrCard` | Use when card chrome helps match the panel shape and structure. Use `IgrCardHeader`, `IgrCardContent`, and `IgrCardActions`, or plain `<div>` containers for flat or highly custom tiles |
40
+ | Any text input field | `IgrInput` | Use when the input anatomy matches the screenshot, including search fields and inline editors. Apply CSS to match the screenshot's border/radius style |
41
+ | Dropdown or select | `IgrSelect` | Use when the screenshot clearly shows select/dropdown behavior |
42
+ | Form fields with labels and inputs | `IgrInput`, `IgrSelect`, `IgrCombo`, `IgrDatepicker`, `IgrDateTimeInput` | Cover text, select, combo, and date/time inputs |
43
+ | Multi-step form / wizard | `IgrStepper` | Use when a sequence of steps is visually present |
44
+ | Filter chips / tag inputs | `IgrChip` | Use when chip anatomy matches status badges, filter tags, or removable labels in the screenshot |
45
+ | Calendar or date picker as a primary view element | `IgrCalendar`, `IgrDatepicker`, `IgrDateRangePicker` | Use when scheduling or date selection is the core UI |
46
+ | Top icon/action bar | `IgrNavbar` with `IgrButton` / `IgrIconButton` | Use when a navbar structure matches the screenshot; use plain icon buttons or custom containers when that is a closer fit |
47
+
48
+ ## Chart Components
49
+
50
+ | UI Pattern | Ignite UI Component | Key Properties |
51
+ |---|---|---|
52
+ | Area chart | `IgrCategoryChart` | `chartType`, `markerTypes`, `areaFillOpacity` |
53
+ | Line chart | `IgrCategoryChart` | `chartType`, `markerTypes` |
54
+ | Column/bar chart | `IgrCategoryChart` | `chartType`, `markerTypes`, `includedProperties` |
55
+ | Sparkline (mini chart) | `IgrSparkline` or `IgrDataChart` | `displayType`, `valueMemberPath`, sized container |
56
+ | Pie/donut chart | `IgrPieChart` | `valueMemberPath`, `labelMemberPath` |
57
+ | Financial chart | `IgrFinancialChart` | OHLC/candlestick data |
58
+ | Complex multi-series | `IgrDataChart` | multiple series + axes plus module registration |
59
+
60
+ Decision rule:
61
+
62
+ - Financial or OHLC screenshot: prefer `IgrFinancialChart`
63
+ - Simple or moderate trend panel: prefer `IgrCategoryChart`; move to `IgrDataChart` when you need lower-level per-series control
64
+ - Highly custom sparkline or microchart: use the sparkline component from `igniteui-react-charts` or a custom fallback if the built-in anatomy is not a close visual match
65
+
66
+ ## Data Display Components
67
+
68
+ | UI Pattern | Ignite UI Component | Key Properties |
69
+ |---|---|---|
70
+ | Item list | `IgrList` | slot-based row content, selection, and dense list styling |
71
+ | User avatar | `IgrAvatar` | `initials`, `shape`, `size` |
72
+ | Status badge | `IgrBadge` | value/children plus token-based styling |
73
+ | Icons | `IgrIcon` | icon name, collection, styling |
74
+ | Progress bar | `IgrLinearProgress` | `value`, `max` |
75
+ | Circular progress | `IgrCircularProgress` | `value`, `max` |
76
+ | Flat data grid | `IgrGridLite` or `IgrGrid` | choose by feature level and package availability |
77
+ | Hierarchical/tree data grid | `IgrTreeGrid` | parent-child data |
78
+ | Filter/tag chips | `IgrChip` | selected state, removable UI, token-based styling |
79
+
80
+ Decision rule:
81
+
82
+ - Use `IgrList` for repeated-row content lists when its row structure and interaction model match the screenshot. The component adds accessible keyboard navigation, item structure, and theming when those benefits fit the design. Use native `<ul>/<li>` or custom containers when they are a closer visual fit.
83
+ - Choose `IgrGridLite` or `IgrGrid` only when the image is truly tabular (flat rows and columns, spreadsheet-style).
84
+ - Choose `IgrTreeGrid` when rows have parent-child or hierarchical structure.
85
+ - Use `IgrChip` when chip anatomy matches the screenshot's status badges, tags, or label pills. Use custom badge or pill markup when a simpler or more exact visual match is needed.
86
+
87
+ ## Form & Input Components
88
+
89
+ | UI Pattern | Ignite UI Component | Key Properties |
90
+ |---|---|---|
91
+ | Text input | `IgrInput` | `label`, `placeholder`, `type` |
92
+ | Dropdown select | `IgrSelect` | option children, label, value |
93
+ | Searchable multi-select | `IgrCombo` | `data`, `displayKey`, `valueKey` |
94
+ | Date picker | `IgrDatepicker` | value and label props |
95
+ | Date/time input | `IgrDateTimeInput` | value, format options |
96
+ | Toggle switch | `IgrSwitch` | checked state, change events |
97
+ | Checkbox | `IgrCheckbox` | checked state, `indeterminate` |
98
+ | Radio button group | `IgrRadioGroup` + `IgrRadio` | `name`, selected value |
99
+ | Slider | `IgrSlider` | `min`, `max`, `value` |
100
+ | Multi-step wizard | `IgrStepper` | orientation, step composition |
101
+ | Chip filter bar | `IgrChip` collection in a flex wrapper | compose removable/filter chips manually |
102
+
103
+ ## Calendar & Scheduling Components
104
+
105
+ | UI Pattern | Ignite UI Component | Key Properties |
106
+ |---|---|---|
107
+ | Calendar view | `IgrCalendar` | selection mode, `value`, change events |
108
+ | Date range picker | `IgrDateRangePicker` | range value, change events |
109
+ | Month/year picker | `IgrCalendar` | month/year view settings per docs |
110
+
111
+ ## Map Components
112
+
113
+ | UI Pattern | Ignite UI Component | Key Properties |
114
+ |---|---|---|
115
+ | World map | `IgrGeographicMap` | `zoomable`, `backgroundContent` |
116
+ | Map markers | `IgrGeographicSymbolSeries` | `latitudeMemberPath`, `longitudeMemberPath`, `markerType`, `markerBrush` |
117
+ | Bubble overlay | `IgrGeographicProportionalSymbolSeries` | sized markers |
118
+ | Shape regions | `IgrGeographicShapeSeries` | polygon rendering |
119
+
120
+ ## Gauge Components
121
+
122
+ | UI Pattern | Ignite UI Component | Key Properties |
123
+ |---|---|---|
124
+ | Linear gauge | `IgrLinearGauge` | `value`, `minimumValue`, `maximumValue`, `needleBrush` |
125
+ | Radial gauge | `IgrRadialGauge` | `value`, `minimumValue`, `maximumValue` |
126
+ | Bullet graph | `IgrBulletGraph` | performance vs target |
127
+
128
+ ## Package Requirements
129
+
130
+ The main `igniteui-react` package contains core UI components (list, avatar, navbar, nav drawer, card, badge, progress, icon, etc.).
131
+
132
+ Additional component families may require **additional packages** beyond the main React package:
133
+
134
+ | Capability | Additional packages |
135
+ |---|---|
136
+ | Grid Lite | `igniteui-react` and `igniteui-grid-lite` |
137
+ | Advanced grids | `igniteui-react-grids` or `@infragistics/igniteui-react-grids` |
138
+ | Charts / sparklines | `igniteui-react-charts` or `@infragistics/igniteui-react-charts` |
139
+ | Maps | `igniteui-react-maps` or `@infragistics/igniteui-react-maps` |
140
+ | Gauges / bullet graphs | `igniteui-react-gauges` or `@infragistics/igniteui-react-gauges` |
141
+
142
+ Install only the packages required by the components you actually selected. Resolve the exact package version against the installed Ignite UI major and the actual published package versions before installing. Charts, maps, and gauges also require module registration in React files.
143
+
144
+ ## Import Patterns
145
+
146
+ Treat this file as a component selection reference, not as authoritative import guidance for a specific repo. Confirm exact imports from the current workspace, the existing React skills, and `get_doc` results. For styling selectors, target the rendered `igc-*` tag names instead of the React `Igr*` component names.
@@ -0,0 +1,200 @@
1
+ # Ignite UI React Gotchas & Pitfalls
2
+
3
+ ## Table of Contents
4
+ - [React Wrappers & CSS Selectors](#react-wrappers--css-selectors)
5
+ - [Chart Properties](#chart-properties)
6
+ - [Component Properties](#component-properties)
7
+ - [Theming Pitfalls](#theming-pitfalls)
8
+ - [Map Component](#map-component)
9
+ - [Dark Theme Specifics](#dark-theme-specifics)
10
+
11
+ ## React Wrappers & CSS Selectors
12
+
13
+ ### Use JSX props and children
14
+ Pass dynamic values as JSX expressions and use children with `slot` attributes for named regions:
15
+
16
+ ```tsx
17
+ <IgrCard>
18
+ <IgrCardHeader>
19
+ <h3 slot="title">{'<resolved-card-title>'}</h3>
20
+ <p slot="subtitle">{'<resolved-card-subtitle>'}</p>
21
+ </IgrCardHeader>
22
+ <IgrCardContent>{'<resolved-card-content>'}</IgrCardContent>
23
+ </IgrCard>
24
+ ```
25
+
26
+ ### CSS selectors must target rendered `igc-*` tags
27
+ When applying CSS custom properties, `::part()` selectors, or MCP-generated component theme blocks, target the underlying web component selectors:
28
+
29
+ ```css
30
+ .dashboard-panel igc-card::part(header) {
31
+ padding: <resolved-header-padding>;
32
+ }
33
+ ```
34
+
35
+ Do not write selectors against React wrapper names.
36
+
37
+ ## Chart Properties
38
+
39
+ ### Charts, gauges, and maps require module registration
40
+ The React wrappers for charts, gauges, and maps must register their modules once at module level before use:
41
+
42
+ ```tsx
43
+ import { IgrCategoryChartModule } from 'igniteui-react-charts';
44
+
45
+ IgrCategoryChartModule.register();
46
+ ```
47
+
48
+ `IgrGridLite` does **not** require registration.
49
+
50
+ ### Markers shown by default
51
+ Category charts show markers at every data point by default. If the screenshot does not show markers, set `markerTypes` to the matching no-marker option documented for the component:
52
+ ```tsx
53
+ <IgrCategoryChart markerTypes="<resolved-marker-types>" />
54
+ ```
55
+
56
+ `markerTypes` must use the documented marker type values for the chosen chart. Do not pass an array of lowercase strings.
57
+
58
+ ### `plotAreaBackground` does NOT exist on `IgrCategoryChart`
59
+ Use CSS to style the chart container background instead.
60
+
61
+ ### `areaFillOpacity` exists on `IgrCategoryChart`
62
+ It does NOT exist on the sparkline component.
63
+
64
+ ### `includedProperties` must be an array prop
65
+ Use a JSX array expression, not a plain string:
66
+ ```tsx
67
+ <IgrCategoryChart includedProperties={['fieldOne', 'fieldTwo', 'fieldThree']} />
68
+ ```
69
+ Replace `'fieldOne'`, `'fieldTwo'`, etc. with the actual data property names from your mock data.
70
+
71
+ ### Chart callback props must receive function references
72
+ Function-valued chart props must receive a function reference:
73
+ ```tsx
74
+ <IgrCategoryChart xAxisFormatLabel={labelFormatter} />
75
+ ```
76
+
77
+ ### Smooth area charts
78
+ For smooth-looking area charts where the data should appear continuous rather than spiky:
79
+ - Increase data density until the line or area reads as continuous at the rendered size
80
+ - Apply smoothing only when the source shape in the design looks smoothed rather than point-to-point
81
+ - Hide markers unless the screenshot clearly shows visible data points
82
+ - Tune fill opacity and label density to match the screenshot instead of relying on a fixed default
83
+
84
+ ### Charts inside CSS Grid can collapse
85
+ In a flexible CSS Grid track, set `min-height: 0` on the grid cell and make the chart fill its container:
86
+ ```css
87
+ .chart-panel {
88
+ min-height: 0;
89
+ }
90
+
91
+ .chart-panel > * {
92
+ height: <resolved-chart-height>;
93
+ width: <resolved-chart-width>;
94
+ }
95
+ ```
96
+
97
+ ## Component Properties
98
+
99
+ ### `roundShape` does NOT exist on `IgrAvatar`
100
+ Use the supported `shape` input alone. Do not add `roundShape`.
101
+
102
+ ### Tabs used for navigation should be label-only
103
+ When a screenshot shows tabs that drive routed page content, use label-only `IgrTab` items and keep the routed content outside the `IgrTabs` component. Do not place inline tab panel content inside router-driven tabs.
104
+
105
+ ### Avatar background color via CSS variable
106
+ ```tsx
107
+ <div style={{ '--ig-avatar-background': color } as React.CSSProperties}>
108
+ <IgrAvatar />
109
+ </div>
110
+ ```
111
+
112
+ ## Theming Pitfalls
113
+
114
+ ### Theme CSS imports are required
115
+ Core components need a base theme import, and grids need an additional grid theme import:
116
+
117
+ ```tsx
118
+ import 'igniteui-webcomponents/themes/light/bootstrap.css';
119
+ import 'igniteui-react-grids/grids/themes/light/bootstrap.css';
120
+ ```
121
+
122
+ Do not remove or replace those imports unless the user explicitly wants a theme variant change.
123
+
124
+ ### DV components require explicit visual props
125
+ Charts, maps, gauges, and sparklines do not use the component-token theme generation flow from this skill. Set their visual properties explicitly via component props. After a palette exists, prefer palette tokens or local semantic CSS variables over leaving raw color literals in the final JSX:
126
+ ```tsx
127
+ <IgrCategoryChart
128
+ brushes="<resolved-series-brush>"
129
+ outlines="<resolved-series-outline>"
130
+ xAxisLabelTextColor="<resolved-axis-label-color>"
131
+ yAxisMajorStroke="<resolved-grid-line-color>"
132
+ />
133
+ ```
134
+
135
+ ### Component theme functions
136
+ For core UI component theming, prefer `create_component_theme` and apply the returned theme block as generated by the MCP server.
137
+
138
+ ### Nav drawer width
139
+ Override the drawer width using the nav drawer CSS custom properties measured from the design image:
140
+ ```css
141
+ igc-nav-drawer {
142
+ --ig-nav-drawer-size: <extracted-sidebar-width>;
143
+ --ig-nav-drawer-size--mini: <extracted-mini-drawer-width>;
144
+ }
145
+ ```
146
+
147
+ ### Read luminance warnings from theme generation
148
+ If `create_theme` returns a luminance warning for a generated surface, do not ignore it. If the design needs multiple surface depths, use `create_custom_palette` or define semantic CSS variables such as `--surface-1` and `--surface-2` in a shared CSS file instead of relying on a single generated surface color.
149
+
150
+ ## Map Component
151
+
152
+ ### Adding markers programmatically
153
+ The geographic map often requires programmatic series setup once the map ref is available:
154
+ ```tsx
155
+ const mapRef = useRef<IgrGeographicMap>(null);
156
+
157
+ useEffect(() => {
158
+ const map = mapRef.current;
159
+ if (!map) return;
160
+
161
+ const symbolSeries = new IgrGeographicSymbolSeries();
162
+ symbolSeries.dataSource = locations;
163
+ symbolSeries.latitudeMemberPath = '<latitude-field>';
164
+ symbolSeries.longitudeMemberPath = '<longitude-field>';
165
+ symbolSeries.markerType = <resolvedMarkerType>;
166
+ symbolSeries.markerBrush = '<resolved-accent-color>';
167
+ symbolSeries.markerOutline = '<resolved-accent-color>';
168
+ map.series.add(symbolSeries);
169
+ map.zoomToGeographic({ left: <min-longitude>, top: <top-latitude>, width: <longitude-span>, height: <latitude-span> });
170
+ }, []);
171
+ ```
172
+
173
+ ### Dark map styling
174
+ OpenStreetMap tiles are light by default. For dark themes, apply a CSS filter to the container. Adjust the values to match the map tone in the design image:
175
+ ```css
176
+ .map-container {
177
+ /* tune grayscale (0-1) and brightness (0-1) to match the design */
178
+ filter: grayscale(<0-1>) brightness(<0-1>);
179
+ }
180
+ ```
181
+
182
+ ## Dark Theme Specifics
183
+
184
+ ### CSS custom properties for dark panels
185
+ When the design uses multiple dark surface depths (panels, sidebars, cards on a dark background), define reusable semantic tokens using palette references or values derived from the design intent:
186
+
187
+ ```css
188
+ :root {
189
+ --surface-primary: <resolved-surface-token>;
190
+ --surface-secondary: <resolved-surface-token>;
191
+ --accent-strong: <resolved-accent-token>;
192
+ --text-primary: <resolved-text-token>;
193
+ --text-secondary: <resolved-text-token>;
194
+ }
195
+ ```
196
+
197
+ If `create_theme` returns a single surface color that doesn't cover all depth levels visible in the design, define additional surface tokens (`--surface-1`, `--surface-2`, etc.) for each distinct depth.
198
+
199
+ ### Scope dark overrides on a wrapper before reaching for file-wide theme swaps
200
+ When only one view or panel should match a dark screenshot, prefer a scoped wrapper class with semantic CSS variables over replacing the app's global theme import.
@@ -15,7 +15,7 @@
15
15
  "@testing-library/react": "^16.3.0",
16
16
  "element-internals-polyfill": "^3.0.2",
17
17
  "functions-have-names": "^1.2.3",
18
- "igniteui-react": "~19.6.1",
18
+ "igniteui-react": "~19.6.2",
19
19
  "react": "^19.2.4",
20
20
  "react-app-polyfill": "^3.0.0",
21
21
  "react-dom": "^19.2.4",
@@ -11,7 +11,7 @@ class IgcDockManagerTemplate extends IgniteUIForWebComponentsTemplate_1.IgniteUI
11
11
  this.projectType = "igc-ts";
12
12
  this.name = "Dock Manager";
13
13
  this.description = "Dock Manager with most functionalities and docking options";
14
- this.packages = ["igniteui-dockmanager@^2.1.0"];
14
+ this.packages = ["igniteui-dockmanager@^2.1.1"];
15
15
  }
16
16
  }
17
17
  module.exports = new IgcDockManagerTemplate();
@@ -8,6 +8,26 @@ user-invocable: true
8
8
 
9
9
  This skill helps AI agents and developers identify the best Ignite UI components for any UI requirement, then provides direct links to official documentation, usage examples, and API references.
10
10
 
11
+ ## Prerequisites
12
+
13
+ - The **Ignite UI CLI MCP server** (`igniteui-cli`) available as a tool provider
14
+
15
+ > **AGENT INSTRUCTION — MCP Server Setup (REQUIRED)**
16
+ >
17
+ > Before using the Ignite UI CLI MCP tools, you MUST verify the MCP server is available
18
+ > by calling `list_components`. If the tool is not available or the call fails,
19
+ > you MUST automatically configure it by following the setup instructions in
20
+ > [`reference/mcp-setup.md`](./reference/mcp-setup.md).
21
+ >
22
+ > After writing the file, inform the user that the MCP server has been
23
+ > configured and they may need to reload the editor for the tools to activate.
24
+ > Start the MCP server and wait for that MCP server to start before continuing the component-related work.
25
+ > Do NOT skip this step or ask the user to do it manually.
26
+
27
+ ## Setting Up the Ignite UI CLI MCP Server
28
+
29
+ > **Full setup instructions for VS Code, Cursor, Claude Desktop, and JetBrains IDEs are in [`reference/mcp-setup.md`](./reference/mcp-setup.md).** Read that file for editor-specific configuration steps and verification.
30
+
11
31
  ## Before You Answer
12
32
 
13
33
  - Choose the package before writing imports or install steps.
@@ -0,0 +1,82 @@
1
+ # Setting Up the Ignite UI CLI MCP Server
2
+
3
+ > **Part of the [`igniteui-wc-choose-components`](../SKILL.md) skill hub.**
4
+
5
+ ## Contents
6
+
7
+ - [Setting Up the Ignite UI CLI MCP Server](#setting-up-the-ignite-ui-cli-mcp-server)
8
+ - [Contents](#contents)
9
+ - [VS Code](#vs-code)
10
+ - [Cursor](#cursor)
11
+ - [Claude Desktop](#claude-desktop)
12
+ - [WebStorm / JetBrains IDEs](#webstorm--jetbrains-ides)
13
+ - [Verifying the Setup](#verifying-the-setup)
14
+
15
+ The Ignite UI CLI MCP server enables AI assistants to discover Ignite UI components, access component documentation, and support related Ignite UI workflows. It must be configured in your editor before these tools become available.
16
+
17
+ ## VS Code
18
+
19
+ Create or edit `.vscode/mcp.json` in your project:
20
+
21
+ ```json
22
+ {
23
+ "servers": {
24
+ "igniteui-cli": {
25
+ "command": "npx",
26
+ "args": ["-y", "igniteui-cli", "mcp"]
27
+ }
28
+ }
29
+ }
30
+ ```
31
+
32
+ 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.
33
+
34
+ ## Cursor
35
+
36
+ Create or edit `.cursor/mcp.json`:
37
+
38
+ ```json
39
+ {
40
+ "mcpServers": {
41
+ "igniteui-cli": {
42
+ "command": "npx",
43
+ "args": ["-y", "igniteui-cli", "mcp"]
44
+ }
45
+ }
46
+ }
47
+ ```
48
+
49
+ ## Claude Desktop
50
+
51
+ Edit the Claude Desktop config file:
52
+
53
+ - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
54
+ - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
55
+
56
+ ```json
57
+ {
58
+ "mcpServers": {
59
+ "igniteui-cli": {
60
+ "command": "npx",
61
+ "args": ["-y", "igniteui-cli", "mcp"]
62
+ }
63
+ }
64
+ }
65
+ ```
66
+
67
+ ## WebStorm / JetBrains IDEs
68
+
69
+ 1. Go to **Settings → Tools → AI Assistant → MCP Servers**
70
+ 2. Click **+ Add MCP Server**
71
+ 3. Set Command to `npx` and Arguments to `-y igniteui-cli mcp`
72
+ 4. Click OK and restart the AI Assistant
73
+
74
+ > The `-y` flag skips interactive prompts if `igniteui-cli` is not already installed locally.
75
+
76
+ ## Verifying the Setup
77
+
78
+ After configuring the MCP server, ask your AI assistant:
79
+
80
+ > "List all available Ignite UI components"
81
+
82
+ If the MCP server is running, the `list_components` tool will return all available components for the detected framework.
@@ -13,7 +13,7 @@
13
13
  },
14
14
  "dependencies": {
15
15
  "@vaadin/router": "^2.0.0",
16
- "igniteui-webcomponents": "~7.1.2",
16
+ "igniteui-webcomponents": "~7.1.3",
17
17
  "lit": "^3.3.2"
18
18
  },
19
19
  "devDependencies": {
@@ -14,8 +14,8 @@
14
14
  "dependencies": {
15
15
  "@vaadin/router": "^2.0.0",
16
16
  "@igniteui/material-icons-extended": "^3.0.2",
17
- "igniteui-dockmanager": "^2.1.0",
18
- "igniteui-webcomponents": "~7.1.2",
17
+ "igniteui-dockmanager": "^2.1.1",
18
+ "igniteui-webcomponents": "~7.1.3",
19
19
  "igniteui-webcomponents-charts": "~7.0.0",
20
20
  "igniteui-webcomponents-core": "~7.0.0",
21
21
  "igniteui-webcomponents-gauges": "~7.0.0",
@@ -1,125 +0,0 @@
1
- # Sass Theming
2
-
3
- > Requires Sass configured in the project (e.g., `sass` in `devDependencies` and Vite/webpack configured to handle `.scss` files).
4
-
5
- ## Basic Setup
6
-
7
- ```scss
8
- // src/styles.scss
9
- @use 'igniteui-theming' as *;
10
-
11
- // 1. Define a palette
12
- $my-palette: palette(
13
- $primary: #1976D2,
14
- $secondary: #FF9800,
15
- $surface: #FAFAFA
16
- );
17
-
18
- // 2. Apply the palette
19
- @include palette($my-palette);
20
-
21
- // 3. Optional: Typography
22
- @include typography($font-family: "'Roboto', sans-serif");
23
-
24
- // 4. Optional: Elevations
25
- @include elevations();
26
-
27
- // 5. Optional: Spacing
28
- @include spacing();
29
- ```
30
-
31
- Import in your React entry point:
32
-
33
- ```tsx
34
- // main.tsx
35
- import './styles.scss';
36
- ```
37
-
38
- ## Dark Theme
39
-
40
- For dark themes, use a dark surface color and a dark schema:
41
-
42
- ```scss
43
- @use 'igniteui-theming' as *;
44
-
45
- $dark-palette: palette(
46
- $primary: #90CAF9,
47
- $secondary: #FFB74D,
48
- $surface: #121212
49
- );
50
-
51
- @include palette($dark-palette, $schema: $dark-material-schema);
52
- ```
53
-
54
- > **Important:** Use `@use 'igniteui-theming'` — not `igniteui-angular/theming` or Angular-specific `core()` / `theme()` mixins.
55
-
56
- ## Component-Level Theming with Sass
57
-
58
- When Sass is configured, use component theme functions and the `tokens` mixin:
59
-
60
- ```scss
61
- @use 'igniteui-theming' as *;
62
-
63
- $custom-avatar: avatar-theme(
64
- $schema: $light-material-schema,
65
- $background: var(--ig-primary-500),
66
- $color: var(--ig-primary-500-contrast)
67
- );
68
-
69
- igc-avatar {
70
- @include tokens($custom-avatar);
71
- }
72
- ```
73
-
74
- ## Light/Dark Toggle with Sass
75
-
76
- ```scss
77
- @use 'igniteui-theming' as *;
78
-
79
- $light-palette: palette($primary: #1976D2, $secondary: #FF9800, $surface: #FAFAFA);
80
- $dark-palette: palette($primary: #90CAF9, $secondary: #FFB74D, $surface: #121212);
81
-
82
- @include typography($font-family: "'Roboto', sans-serif");
83
- @include elevations();
84
-
85
- // Light is default
86
- @include palette($light-palette, $schema: $light-material-schema);
87
-
88
- // Dark via class on a container or <body>
89
- .dark-theme {
90
- @include palette($dark-palette, $schema: $dark-material-schema);
91
- }
92
- ```
93
-
94
- ## Theming Architecture
95
-
96
- The Ignite UI theming system is built on four pillars:
97
-
98
- | Concept | Purpose |
99
- |---|---|
100
- | **Palette** | Color system with primary, secondary, surface, gray, info, success, warn, error families, each with shades 50–900 + accents A100–A700 |
101
- | **Typography** | Font family, type scale (h1–h6, subtitle, body, button, caption, overline) |
102
- | **Elevations** | Box-shadow levels 0–24 for visual depth |
103
- | **Schema** | Per-component recipes mapping palette colors to component tokens |
104
-
105
- ### Design Systems
106
-
107
- Four built-in design systems are available:
108
-
109
- - **Material** (default) — Material Design 3
110
- - **Bootstrap** — Bootstrap-inspired
111
- - **Fluent** — Microsoft Fluent Design
112
- - **Indigo** — Infragistics Indigo Design
113
-
114
- Each has light and dark variants (e.g., `$light-material-schema`, `$dark-fluent-schema`).
115
-
116
- ### Palette Shades
117
-
118
- - Shades 50 = lightest, 900 = darkest for all chromatic colors
119
- - Surface color must match the variant — light color for `light`, dark color for `dark`
120
-
121
- ## Key Rules
122
-
123
- 1. **Sass**: Use `@use 'igniteui-theming'` — not `igniteui-angular/theming`
124
- 2. **Sass**: Component themes use `@include tokens($theme)` inside a selector
125
- 3. **Never hardcode colors after palette generation** — use `var(--ig-<family>-<shade>)` palette tokens everywhere