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.
- package/README.md +7 -1
- package/lib/cli.js +36 -40
- package/lib/commands/add.js +29 -15
- package/lib/commands/ai-config.js +2 -2
- package/lib/commands/build.js +3 -5
- package/lib/commands/config.js +10 -14
- package/lib/commands/doc.js +4 -5
- package/lib/commands/generate.js +5 -7
- package/lib/commands/list.js +46 -7
- package/lib/commands/mcp.js +1 -2
- package/lib/commands/new.js +11 -6
- package/lib/commands/start.js +3 -4
- package/lib/commands/test.js +3 -4
- package/lib/commands/types.d.ts +0 -15
- package/lib/commands/types.js +0 -27
- package/lib/commands/upgrade.js +4 -4
- package/package.json +5 -5
- package/templates/react/igr-ts/grid/basic/index.js +1 -1
- package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/README.md +10 -1
- package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-components/SKILL.md +19 -11
- package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-components/reference/CHARTS-GRIDS.md +3 -0
- package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-components/reference/COMPONENT-CATALOGUE.md +3 -0
- package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-components/reference/MCP-SERVER.md +77 -0
- package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-customize-theme/SKILL.md +22 -12
- package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-generate-from-image-design/SKILL.md +229 -0
- package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-generate-from-image-design/reference/component-mapping.md +146 -0
- package/templates/react/igr-ts/projects/_base/files/__dot__claude/skills/igniteui-react-generate-from-image-design/reference/gotchas.md +200 -0
- package/templates/react/igr-ts/projects/_base/files/package.json +1 -1
- package/templates/webcomponents/igc-ts/dock-manager/default/index.js +1 -1
- package/templates/webcomponents/igc-ts/projects/_base/files/__dot__claude/skills/igniteui-wc-choose-components/SKILL.md +20 -0
- package/templates/webcomponents/igc-ts/projects/_base/files/__dot__claude/skills/igniteui-wc-choose-components/reference/mcp-setup.md +82 -0
- package/templates/webcomponents/igc-ts/projects/_base/files/package.json +1 -1
- package/templates/webcomponents/igc-ts/projects/_base_with_home/files/package.json +2 -2
- 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.
|
|
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.
|
|
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.
|
|
@@ -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.
|
|
18
|
-
"igniteui-webcomponents": "~7.1.
|
|
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
|