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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "igniteui-cli",
|
|
3
|
-
"version": "15.0.
|
|
3
|
+
"version": "15.0.1",
|
|
4
4
|
"description": "CLI tool for creating Ignite UI projects",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"CLI",
|
|
@@ -66,11 +66,10 @@
|
|
|
66
66
|
"all": true
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@igniteui/angular-templates": "~21.2.
|
|
70
|
-
"@igniteui/cli-core": "~15.0.
|
|
71
|
-
"@igniteui/mcp-server": "~15.0.
|
|
69
|
+
"@igniteui/angular-templates": "~21.2.1501",
|
|
70
|
+
"@igniteui/cli-core": "~15.0.1",
|
|
71
|
+
"@igniteui/mcp-server": "~15.0.1",
|
|
72
72
|
"@inquirer/prompts": "^7.9.0",
|
|
73
|
-
"@types/yargs": "^17.0.33",
|
|
74
73
|
"chalk": "^5.3.0",
|
|
75
74
|
"glob": "^11.0.0",
|
|
76
75
|
"open": "^10.1.0",
|
|
@@ -85,6 +84,7 @@
|
|
|
85
84
|
"@schematics/angular": "^21.0.0",
|
|
86
85
|
"@types/jasmine": "^5.1.4",
|
|
87
86
|
"@types/node": "^22.5.5",
|
|
87
|
+
"@types/yargs": "^17.0.33",
|
|
88
88
|
"browser-sync": "^3.0.3",
|
|
89
89
|
"coveralls-next": "^4.2.1",
|
|
90
90
|
"jasmine": "^5.12.0",
|
|
@@ -14,7 +14,7 @@ class GridTemplate extends IgniteUIForReactTemplate_1.IgniteUIForReactTemplate {
|
|
|
14
14
|
this.projectType = "igr-ts";
|
|
15
15
|
this.components = ["Grid"];
|
|
16
16
|
this.controlGroup = "Data Grids";
|
|
17
|
-
this.packages = ["igniteui-react-grids@~19.6.
|
|
17
|
+
this.packages = ["igniteui-react-grids@~19.6.2"];
|
|
18
18
|
this.hasExtraConfiguration = false;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -10,9 +10,10 @@ Skills are structured instructions that help AI agents understand and execute co
|
|
|
10
10
|
|
|
11
11
|
| Skill | Description | Use When |
|
|
12
12
|
| --- | --- | --- |
|
|
13
|
-
| [igniteui-react-components](./igniteui-react-components/SKILL.md) | Identify the right React components (`Igr*`) for a UI pattern, then install, import, and use them
|
|
13
|
+
| [igniteui-react-components](./igniteui-react-components/SKILL.md) | Identify the right React components (`Igr*`) for a UI pattern, then install, import, and use them - JSX patterns, events, refs, forms | Choosing components or setting up and using them in React |
|
|
14
14
|
| [igniteui-react-customize-theme](./igniteui-react-customize-theme/SKILL.md) | Customize styling using CSS custom properties, Sass, and the theming system in a React context | Applying custom brand colors/styles |
|
|
15
15
|
| [igniteui-react-optimize-bundle-size](./igniteui-react-optimize-bundle-size/SKILL.md) | Reduce bundle size with granular imports, tree-shaking, and lazy loading | Optimizing production performance |
|
|
16
|
+
| [igniteui-react-generate-from-image-design](./igniteui-react-generate-from-image-design/SKILL.md) | Build a React view from a screenshot or mockup using Ignite UI components plus MCP-first theming and token mapping | Converting a design image into a working Ignite UI React page or dashboard |
|
|
16
17
|
|
|
17
18
|
## How to Use
|
|
18
19
|
|
|
@@ -22,6 +23,7 @@ When working with an AI agent like GitHub Copilot, reference skills by name or a
|
|
|
22
23
|
|
|
23
24
|
- "How do I add a data grid to my React app?"
|
|
24
25
|
- "What Ignite UI component should I use for a date picker?"
|
|
26
|
+
- "Build this dashboard screenshot in Ignite UI React"
|
|
25
27
|
- "Help me customize the button colors to match my brand"
|
|
26
28
|
- "My bundle size is too large, how can I reduce it?"
|
|
27
29
|
- "How do I handle events on IgrCombo?"
|
|
@@ -29,6 +31,7 @@ When working with an AI agent like GitHub Copilot, reference skills by name or a
|
|
|
29
31
|
### Direct Skill Reference
|
|
30
32
|
|
|
31
33
|
- "Follow the igniteui-react-components skill for setting up my project"
|
|
34
|
+
- "Use the igniteui-react-generate-from-image-design skill for this mockup"
|
|
32
35
|
- "Use the igniteui-react-customize-theme skill to help me style components"
|
|
33
36
|
- "Apply the igniteui-react-optimize-bundle-size skill to reduce my bundle"
|
|
34
37
|
|
|
@@ -65,6 +68,9 @@ Copy the skill files into your project's `.agents/skills/` directory:
|
|
|
65
68
|
reference/
|
|
66
69
|
igniteui-react-optimize-bundle-size/
|
|
67
70
|
SKILL.md
|
|
71
|
+
igniteui-react-generate-from-image-design/
|
|
72
|
+
SKILL.md
|
|
73
|
+
references/
|
|
68
74
|
```
|
|
69
75
|
|
|
70
76
|
### Claude Code
|
|
@@ -82,6 +88,9 @@ Copy the skill files into your project's `.claude/skills/` directory:
|
|
|
82
88
|
reference/
|
|
83
89
|
igniteui-react-optimize-bundle-size/
|
|
84
90
|
SKILL.md
|
|
91
|
+
igniteui-react-generate-from-image-design/
|
|
92
|
+
SKILL.md
|
|
93
|
+
references/
|
|
85
94
|
```
|
|
86
95
|
|
|
87
96
|
### Other Agents (Cursor, Windsurf, etc.)
|
|
@@ -6,14 +6,24 @@ user-invocable: true
|
|
|
6
6
|
|
|
7
7
|
# Ignite UI for React Components
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Prerequisites
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
- The **Ignite UI CLI MCP server** (`igniteui-cli`) available as a tool provider
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
> **AGENT INSTRUCTION — MCP Server Setup (REQUIRED)**
|
|
14
|
+
>
|
|
15
|
+
> Before using the Ignite UI CLI MCP tools, you MUST verify the MCP server is available
|
|
16
|
+
> by calling `list_components`. If the tool is not available or the call fails,
|
|
17
|
+
> you MUST automatically configure it by following the setup process steps described below.
|
|
18
|
+
>
|
|
19
|
+
> After writing the file, inform the user that the MCP server has been
|
|
20
|
+
> configured and they may need to reload the editor for the tools to activate.
|
|
21
|
+
> Start the MCP server and wait for that MCP server to start before continuing the component-related work.
|
|
22
|
+
> Do NOT skip this step or ask the user to do it manually.
|
|
23
|
+
|
|
24
|
+
## Setting Up the Ignite UI CLI MCP Server
|
|
25
|
+
|
|
26
|
+
> **Full setup instructions for VS Code, Cursor, Claude Desktop, and JetBrains IDEs are in [`reference/MCP-SERVER.md`](./reference/MCP-SERVER.md).** Read that file for editor-specific configuration steps and verification.
|
|
17
27
|
|
|
18
28
|
### Package Routing
|
|
19
29
|
|
|
@@ -76,11 +86,9 @@ This skill is organized into focused reference files. Load the appropriate file
|
|
|
76
86
|
|
|
77
87
|
---
|
|
78
88
|
|
|
79
|
-
## Quick Start
|
|
80
|
-
|
|
81
|
-
This example uses the core UI package `igniteui-react`. For grids, Grid Lite, charts, gauges, and maps, use the package routing table above first.
|
|
89
|
+
## Quick Start
|
|
82
90
|
|
|
83
|
-
### 1. Install
|
|
91
|
+
### 1. Install
|
|
84
92
|
|
|
85
93
|
```bash
|
|
86
94
|
npm install igniteui-react
|
|
@@ -163,7 +171,7 @@ Use [COMPONENT-CATALOGUE.md](./reference/COMPONENT-CATALOGUE.md) to map any UI n
|
|
|
163
171
|
|
|
164
172
|
## Best Practices
|
|
165
173
|
|
|
166
|
-
1. **
|
|
174
|
+
1. **Start with the MIT package** (`igniteui-react`) — it covers most common UI needs
|
|
167
175
|
2. **Import theme CSS first** — components need it to render correctly
|
|
168
176
|
3. **Register chart/gauge/map modules** — call `.register()` at module level
|
|
169
177
|
4. **Wrap charts/gauges/maps in sized containers** — they need explicit dimensions
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Charts, Gauges, Maps & Grid Lite
|
|
2
2
|
|
|
3
|
+
## Overview
|
|
4
|
+
This reference gives high-level guidance on charts and grids, their key features, and common API members. For detailed documentation, call `get_doc` and `get_api_reference` from `igniteui-cli` with the specific chart, or grid component, or feature you're interested in.
|
|
5
|
+
|
|
3
6
|
## Module Registration
|
|
4
7
|
|
|
5
8
|
> **⚠️ IMPORTANT:** Unlike core UI components (from `igniteui-react`), chart, gauge, and map components from `igniteui-react-charts`, `igniteui-react-gauges`, and `igniteui-react-maps` **require explicit module registration** before use. You must import the corresponding `*Module` class and call `.register()` at the module level (outside the component function).
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# Component Catalogue
|
|
2
2
|
|
|
3
|
+
## Overview
|
|
4
|
+
This reference gives high-level guidance on Ignite UI for React components, their key features, and common use cases. For a full list of components, call `list_components` from `igniteui-cli` with the specific chart, or grid component, or feature you're interested in.
|
|
5
|
+
|
|
3
6
|
## Available Packages
|
|
4
7
|
|
|
5
8
|
Ignite UI for React is distributed across several packages depending on your needs:
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Setting Up the Ignite UI CLI MCP Server
|
|
2
|
+
|
|
3
|
+
> **Part of the [`igniteui-react-components`](../SKILL.md) skill hub.**
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- [VS Code](#vs-code)
|
|
8
|
+
- [Cursor](#cursor)
|
|
9
|
+
- [Claude Desktop](#claude-desktop)
|
|
10
|
+
- [WebStorm / JetBrains IDEs](#webstorm--jetbrains-ides)
|
|
11
|
+
- [Verifying the Setup](#verifying-the-setup)
|
|
12
|
+
|
|
13
|
+
The Ignite UI CLI MCP server enables AI assistants to generate production-ready theming code. It must be configured in your editor before the theming tools become available.
|
|
14
|
+
|
|
15
|
+
## VS Code
|
|
16
|
+
|
|
17
|
+
Create or edit `.vscode/mcp.json` in your project:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"servers": {
|
|
22
|
+
"igniteui-cli": {
|
|
23
|
+
"command": "npx",
|
|
24
|
+
"args": ["-y", "igniteui-cli", "mcp"]
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
This works whether `igniteui-cli` is installed locally in `node_modules` or needs to be pulled from the npm registry — `npx -y` handles both cases.
|
|
31
|
+
|
|
32
|
+
## Cursor
|
|
33
|
+
|
|
34
|
+
Create or edit `.cursor/mcp.json`:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"mcpServers": {
|
|
39
|
+
"igniteui-cli": {
|
|
40
|
+
"command": "npx",
|
|
41
|
+
"args": ["-y", "igniteui-cli", "mcp"]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Claude Desktop
|
|
48
|
+
|
|
49
|
+
Edit the Claude Desktop config file:
|
|
50
|
+
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
51
|
+
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"mcpServers": {
|
|
56
|
+
"igniteui-cli": {
|
|
57
|
+
"command": "npx",
|
|
58
|
+
"args": ["-y", "igniteui-cli", "mcp"]
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## WebStorm / JetBrains IDEs
|
|
65
|
+
|
|
66
|
+
1. Go to **Settings → Tools → AI Assistant → MCP Servers**
|
|
67
|
+
2. Click **+ Add MCP Server**
|
|
68
|
+
3. Set Command to `npx` and Arguments to `-y igniteui-cli mcp`
|
|
69
|
+
4. Click OK and restart the AI Assistant
|
|
70
|
+
|
|
71
|
+
## Verifying the Setup
|
|
72
|
+
|
|
73
|
+
After configuring the MCP server, ask your AI assistant:
|
|
74
|
+
|
|
75
|
+
> "List all available Ignite UI components"
|
|
76
|
+
|
|
77
|
+
If the MCP server is running, the `list_components` tool will return all available components for the detected framework.
|
|
@@ -1,17 +1,33 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: igniteui-react-customize-theme
|
|
3
|
-
description: This skill customizes Ignite UI for React component styling using CSS custom properties
|
|
3
|
+
description: This skill customizes Ignite UI for React component styling using CSS custom properties and the full theming system and should be used when applying brand colors, dark mode, component-level overrides, or scoped themes in a React application
|
|
4
4
|
user-invocable: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Ignite UI for React — Theming Skill
|
|
8
8
|
|
|
9
|
+
## Prerequisites
|
|
10
|
+
|
|
11
|
+
- A React project with `igniteui-react` installed
|
|
12
|
+
- A theme CSS file imported in your entry point (see [igniteui-react-components](../igniteui-react-components/SKILL.md))
|
|
13
|
+
- The **Ignite UI Theming MCP server** (`igniteui-theming`)
|
|
14
|
+
|
|
15
|
+
> **AGENT INSTRUCTION — MCP Server Setup (REQUIRED)**
|
|
16
|
+
>
|
|
17
|
+
> Before using any theming tools, you MUST verify the MCP server is available
|
|
18
|
+
> by calling `detect_platform`. If the tool is not available or the call fails,
|
|
19
|
+
> you MUST automatically configure it by following the setup process steps described below.
|
|
20
|
+
>
|
|
21
|
+
> After writing the file, inform the user that the MCP server has been
|
|
22
|
+
> configured and they may need to reload the editor for the tools to activate.
|
|
23
|
+
> Start the MCP server and wait for that MCP server to start before continuing the theming related work.
|
|
24
|
+
> Do NOT skip this step or ask the user to do it manually.
|
|
25
|
+
|
|
9
26
|
## Description
|
|
10
27
|
|
|
11
|
-
This skill teaches AI agents how to theme Ignite UI for React applications.
|
|
28
|
+
This skill teaches AI agents how to theme Ignite UI for React applications. One approach is supported:
|
|
12
29
|
|
|
13
30
|
- **CSS custom properties** — works in any project without additional build tooling
|
|
14
|
-
- **Sass** — available when the project has Sass configured; provides the full palette/typography/elevation API
|
|
15
31
|
|
|
16
32
|
The skill also covers component-level theming, layout controls (spacing, sizing, roundness), and how to use the **Ignite UI Theming MCP server** for AI-assisted code generation — all in a React application context.
|
|
17
33
|
|
|
@@ -23,12 +39,9 @@ The skill also covers component-level theming, layout controls (spacing, sizing,
|
|
|
23
39
|
- "How do I scope a theme to a specific section of my React app?"
|
|
24
40
|
- "Set up Material Design theming for Ignite UI components"
|
|
25
41
|
|
|
26
|
-
##
|
|
42
|
+
## Setting Up the Theming MCP Server
|
|
27
43
|
|
|
28
|
-
|
|
29
|
-
- A theme CSS file imported in your entry point (see [igniteui-react-components](../igniteui-react-components/SKILL.md))
|
|
30
|
-
- **Optional**: Sass configured in the project (enables the Sass-based theming API)
|
|
31
|
-
- **Optional**: The **Ignite UI Theming MCP server** (`igniteui-theming`) for AI-assisted code generation
|
|
44
|
+
> **Full setup instructions for VS Code, Cursor, Claude Desktop, and JetBrains IDEs are in [`reference/MCP-SERVER.md`](./reference/MCP-SERVER.md).** Read that file for editor-specific configuration steps and verification.
|
|
32
45
|
|
|
33
46
|
## Related Skills
|
|
34
47
|
|
|
@@ -52,7 +65,6 @@ This skill is organized into focused sections. Refer to the appropriate file for
|
|
|
52
65
|
| Topic | File | When to Use |
|
|
53
66
|
|---|---|---|
|
|
54
67
|
| CSS Theming | [CSS-THEMING.md](./reference/CSS-THEMING.md) | Pre-built themes, CSS custom properties, scoped overrides, layout controls, light/dark switching |
|
|
55
|
-
| Sass Theming | [SASS-THEMING.md](./reference/SASS-THEMING.md) | Sass-based theming with palette(), component theme functions |
|
|
56
68
|
| MCP Server | [MCP-SERVER.md](./reference/MCP-SERVER.md) | AI-assisted theming code generation |
|
|
57
69
|
| Troubleshooting | [TROUBLESHOOTING.md](./reference/TROUBLESHOOTING.md) | Common issues and solutions |
|
|
58
70
|
|
|
@@ -169,9 +181,7 @@ See [CSS-THEMING.md](./reference/CSS-THEMING.md) for approaches: class toggle, m
|
|
|
169
181
|
3. **Always call `get_component_design_tokens` before `create_component_theme`**
|
|
170
182
|
4. **Palette shades**: 50 = lightest, 900 = darkest
|
|
171
183
|
5. **Surface color must match variant** — light color for `light`, dark for `dark`
|
|
172
|
-
6. **
|
|
173
|
-
7. **Sass**: Component themes use `@include tokens($theme)` inside a selector
|
|
174
|
-
8. **Never hardcode colors after palette generation**
|
|
184
|
+
6. **Never hardcode colors after palette generation**
|
|
175
185
|
|
|
176
186
|
## Additional Resources
|
|
177
187
|
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: igniteui-react-generate-from-image-design
|
|
3
|
+
description: Implement React application views from design images using Ignite UI for React components. Uses MCP servers (igniteui-cli, igniteui-theming) and tools for component discovery, docs lookup, and theming to choose components, generate theme tokens, and follow React-specific best practices. Triggers when the user provides a design image (screenshot, mockup, wireframe) and wants it built as a working React view with Ignite UI for React. Also triggers when the user asks to "implement this design", "build this UI", "convert this mockup", or "create a page from this image" in an Ignite UI React project.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Implementing Ignite UI React Views from Design Images
|
|
8
|
+
|
|
9
|
+
## MANDATORY AGENT PROTOCOL
|
|
10
|
+
|
|
11
|
+
Before writing any implementation code, you must complete these steps in order:
|
|
12
|
+
|
|
13
|
+
1. Analyze the image and identify all visible regions and UI patterns.
|
|
14
|
+
2. Read [reference/component-mapping.md](reference/component-mapping.md) and [reference/gotchas.md](reference/gotchas.md).
|
|
15
|
+
3. This skill is React-only. Check package routing, theme CSS imports, or licensing only when imports, packages, or theming depend on it.
|
|
16
|
+
4. To apply a theme, use the theming workflow from this skill and the dedicated `igniteui-react-customize-theme` skill; use the `igniteui-theming` MCP tools instead of styling from memory. This skill is React-only, so hardcode `platform: "react"` in theme-generation calls.
|
|
17
|
+
5. Call `get_doc` for every chosen component family before using it.
|
|
18
|
+
6. Only then start coding.
|
|
19
|
+
|
|
20
|
+
## Workflow
|
|
21
|
+
|
|
22
|
+
1. **Analyze the design image** - Read the image, identify every UI section, component, and layout structure.
|
|
23
|
+
2. **Confirm package routing or theme setup if needed** - this skill is React-only; check package routing, theme CSS imports, or licensing only when imports, packages, or theming depend on it.
|
|
24
|
+
3. **Discover components** - Call `list_components` with targeted filters to find matching components for each UI pattern.
|
|
25
|
+
4. **Look up component docs** - Call `get_doc` for every chosen component family before coding.
|
|
26
|
+
5. **Generate theme** - (a) To generate a theme, first extract colors and create a color palette using `create_palette` or `create_custom_palette` depending on the scenario. Then extract elevations and call `create_elevations`. Then extract typography and call `create_typography`. Then call `create_theme` with the palette, elevations, and typography. (b) After a theme exists, prefer design tokens, or scoped semantic CSS variables over raw literals. (c) For every Ignite UI component, call `get_component_design_tokens`, map extracted image tokens to token roles, then call `create_component_theme` with the tokens differing from the global theme for the specific component.
|
|
27
|
+
6. **Implement** - Build the screenshot-first layout, data, and view components.
|
|
28
|
+
7. **Refine** - Use the `set_size`, `set_spacing`, and `set_roundness` tools to refine the view's visual fidelity against the image, then iterate on implementation and theming until the view matches the design closely.
|
|
29
|
+
8. **Validate** - Build, test, run, compare against the image, and fix differences.
|
|
30
|
+
|
|
31
|
+
## Step 1: Analyze the Design Image
|
|
32
|
+
|
|
33
|
+
Read the input image carefully. For each visual section, identify:
|
|
34
|
+
|
|
35
|
+
- **Layout structure**: grid rows/columns, sidebar, navbar, content area proportions, and estimated fixed widths or percentages for major regions.
|
|
36
|
+
> Note: Do not guess the exact CSS properties at this stage; just identify the high-level structure and relative proportions. Do not try to fit the view into exact breakpoints or pixel values. Try to generate a flexible layout that preserves the observed proportions and can adapt to different screen sizes. You will refine the exact CSS rules in Step 8 after building a first version of the view.
|
|
37
|
+
- **Component type**: chart, list, card, map, gauge, table, form, etc.
|
|
38
|
+
- **Color palette**: primary, secondary, surface/background, accent, text colors
|
|
39
|
+
- **Typography**: font sizes, weights, letter-spacing patterns
|
|
40
|
+
- **Surface styling**: borders, border-radius, shadows, elevation, divider treatments
|
|
41
|
+
- **Data patterns**: what mock data is needed (time series, lists, KPIs, geographic)
|
|
42
|
+
- **Spacing system**: translate observed padding and gaps into a small reusable scale derived from the design
|
|
43
|
+
|
|
44
|
+
Before writing code, create a decomposition table with one row per visible region containing:
|
|
45
|
+
|
|
46
|
+
| Region | Visual role | Candidate component | Custom CSS required | Data type |
|
|
47
|
+
|---|---|---|---|---|
|
|
48
|
+
| Example: sidebar item list | repeated rows with icon + label | `IgrList` | yes - item height, icon size | domain-appropriate mock data |
|
|
49
|
+
| Example: top bar | brand + tabs + search | `IgrNavbar` | yes - multi-zone flex layout | n/a |
|
|
50
|
+
| Example: side panel | always-visible navigation | `IgrNavDrawer` | yes - width, item styling | n/a |
|
|
51
|
+
|
|
52
|
+
Start every region with the most appropriate Ignite UI component from [reference/component-mapping.md](reference/component-mapping.md). Only fall back to plain semantic HTML when the component DOM structure is fundamentally incompatible with the design after CSS overrides are considered. Document the reason for any plain-HTML fallback in a code comment.
|
|
53
|
+
|
|
54
|
+
Before writing code, produce a compact implementation brief that captures:
|
|
55
|
+
|
|
56
|
+
- chosen components per region
|
|
57
|
+
- fallback HTML regions
|
|
58
|
+
- theme strategy
|
|
59
|
+
- package needs
|
|
60
|
+
- major assumptions
|
|
61
|
+
|
|
62
|
+
After the table, translate the image into CSS Grid rows and columns first. Preserve desktop proportions before adding responsive behavior, then define explicit breakpoint stacking rules for smaller screens.
|
|
63
|
+
|
|
64
|
+
## Step 2-3: Use MCP Tools for Discovery
|
|
65
|
+
|
|
66
|
+
This skill is React-only. Check package routing, theme CSS imports, or licensing only when imports, packages, or theming depend on it.
|
|
67
|
+
|
|
68
|
+
Then call `list_components` with `framework: "react"` and relevant filters to find components matching each UI pattern. Common filters:
|
|
69
|
+
|
|
70
|
+
- `chart`, `sparkline` - for data visualization
|
|
71
|
+
- `list view`, `card`, `avatar`, `badge` - for data display
|
|
72
|
+
- `nav`, `navbar`, `drawer` - for navigation
|
|
73
|
+
- `progress`, `gauge` - for metrics
|
|
74
|
+
- `map` - for geographic displays
|
|
75
|
+
- `grid`, `grid lite` - for tabular data
|
|
76
|
+
|
|
77
|
+
Use narrow search terms to reduce noisy MCP results. Search for the specific UI pattern you need, such as `list view` instead of `list`.
|
|
78
|
+
|
|
79
|
+
For component-to-Ignite-UI mapping, see [reference/component-mapping.md](reference/component-mapping.md).
|
|
80
|
+
|
|
81
|
+
## Step 4: Look Up Component API
|
|
82
|
+
|
|
83
|
+
For every chosen component category, call `get_doc` with the doc name from `list_components` results (e.g., `name: "card"`, `framework: "react"`). Use the doc `name` field from the MCP results, not the result title shown in the list. This is mandatory before coding and gives exact React usage patterns, prop names, slot structure, event signatures, and any required module registration.
|
|
84
|
+
|
|
85
|
+
Call `search_docs` for feature-based questions (e.g., "how to configure [component] for [specific behavior or styling need]").
|
|
86
|
+
|
|
87
|
+
## Step 5: Generate Theme with MCP
|
|
88
|
+
|
|
89
|
+
Use this skill for the image-to-view theming workflow only. The dedicated [`igniteui-react-customize-theme`](../igniteui-react-customize-theme/SKILL.md) skill remains the source of truth for palette-token behavior, global theme rules, and broader theming-system guidance.
|
|
90
|
+
|
|
91
|
+
### 5a - Existing app guard (always run first)
|
|
92
|
+
|
|
93
|
+
Before generating any theme code, inspect the app entry points and shared global styles. Typical files include `main.tsx`, `index.tsx`, `App.tsx`, `app/layout.tsx`, `src/index.css`, and other shared CSS files. Look for:
|
|
94
|
+
|
|
95
|
+
- existing theme CSS imports such as `igniteui-webcomponents/themes/...`
|
|
96
|
+
- grid theme imports such as `igniteui-react-grids/grids/themes/...`
|
|
97
|
+
- existing palette-token overrides or semantic CSS variables already used by the app
|
|
98
|
+
|
|
99
|
+
Treat a plain stock theme CSS import as required baseline setup, not as evidence of an already customized design system.
|
|
100
|
+
|
|
101
|
+
- **Existing customized theme found** -> the app already has meaningful palette or token overrides. Do **not** call `create_theme` or `create_palette` unless the user explicitly wants a global theme change. Instead:
|
|
102
|
+
1. Inspect the existing theme definition and any exposed palette tokens or semantic CSS variables
|
|
103
|
+
2. Reuse the current design system, variant, and palette tokens wherever they already match the design image
|
|
104
|
+
3. Skip to **5c** and apply only minimal scoped overrides for the new view's components
|
|
105
|
+
- **Only stock theme CSS import found** -> keep the import in place and proceed with **5b** to generate the minimal override layer needed for the design
|
|
106
|
+
- **No theme import found** -> add the required theme CSS import first, then proceed with **5b**
|
|
107
|
+
|
|
108
|
+
### 5b - Global theme generation (new projects)
|
|
109
|
+
|
|
110
|
+
Follow this order - MCP guidance first, image extraction second:
|
|
111
|
+
|
|
112
|
+
1. **Read MCP guidance first** - call `theming://guidance/colors/rules` (or `get_theming_guidance`) before looking at the image. This tells you the available theme inputs and any luminance or variant constraints.
|
|
113
|
+
2. **Resolve the design system** - infer it from the existing workspace, explicit user request, or the closest visual match in the design. Do not assume one if a stronger signal exists.
|
|
114
|
+
3. **Extract from the image** - now that you know the available slots, extract values only for the inputs you actually need.
|
|
115
|
+
4. **Call `create_theme` or `create_palette`** with the extracted seed values.
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
create_theme({
|
|
119
|
+
primaryColor: "<color extracted from image for primary slot>",
|
|
120
|
+
secondaryColor: "<color extracted from image for secondary slot>",
|
|
121
|
+
surfaceColor: "<color extracted from image for surface/background slot>",
|
|
122
|
+
variant: "<resolved theme variant>",
|
|
123
|
+
platform: "react",
|
|
124
|
+
fontFamily: "<font extracted from image or existing app>",
|
|
125
|
+
designSystem: "<resolved design system>"
|
|
126
|
+
})
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Read and act on any luminance warnings returned. If the design needs multiple surface depths that a single generated surface color does not cover, use `create_custom_palette` or define semantic CSS variables for the additional depths in the app's global stylesheet.
|
|
130
|
+
|
|
131
|
+
Use `create_palette` for straightforward designs with a small, coherent color system. Use `create_custom_palette` when the design has multiple distinct surface depths, several accent families, or when the generated palette cannot reliably match the screenshot.
|
|
132
|
+
|
|
133
|
+
### 5c - Per-component token discovery and mapping (always run)
|
|
134
|
+
|
|
135
|
+
> **Scope:** this step applies only to **core Ignite UI React components** (grid, grid lite, list, navbar, nav drawer, card, inputs, chips, avatar, etc.). DV components - charts, maps, gauges, and sparklines - do not use the component-token theme generation flow in this skill. Skip this step for them and set their visual properties exclusively via component props as described in [reference/gotchas.md](reference/gotchas.md) and in Step 7.
|
|
136
|
+
|
|
137
|
+
For **every** core Ignite UI component chosen in Steps 3-4, follow this MCP-first loop - query MCP before touching the image:
|
|
138
|
+
|
|
139
|
+
1. **Discover (MCP first)** - call `get_component_design_tokens(component)` before looking at the image for that component. Read the full token list with names, types, and descriptions. Identify which tokens correspond to visible surfaces, text, borders, icons, and interaction states.
|
|
140
|
+
2. **Extract (image second)** - now that you know the exact token names, go to the image region for that component and read the exact token value for each relevant token slot. Do not guess; zoom into the component region.
|
|
141
|
+
3. **Generate** - call `create_component_theme(component, platform, licensed, tokens)` passing only the tokens whose resolved value differs from the global theme. This produces scoped CSS or SCSS with the minimal override set.
|
|
142
|
+
|
|
143
|
+
**Example - theming a grid:**
|
|
144
|
+
- `get_component_design_tokens("grid")` returns `header-background`, `content-background`, `row-hover-background` among many others
|
|
145
|
+
- Look at the grid region in the image -> extract the color intent for header, row background, and hover state
|
|
146
|
+
- Resolve each value to a palette token or local semantic CSS variable
|
|
147
|
+
- Call `create_component_theme("grid", ...)` with only `{ "header-background": "<resolved token>", "content-background": "<resolved token>", "row-hover-background": "<resolved token>" }`
|
|
148
|
+
|
|
149
|
+
Apply the generated theme blocks in CSS using a scoped wrapper and the underlying web component selectors shown in the MCP output. In selectors, use the rendered `igc-*` tags or `::part()` hooks where applicable.
|
|
150
|
+
|
|
151
|
+
Do not run `create_component_theme` for regions built with custom HTML/CSS only.
|
|
152
|
+
|
|
153
|
+
### 5d - Theming sequence summary
|
|
154
|
+
|
|
155
|
+
Apply in this exact order:
|
|
156
|
+
|
|
157
|
+
1. Inspect the entry point and shared styles -> customized theme, stock theme only, or missing import?
|
|
158
|
+
2. Create or update the global theme layer: add the required theme CSS import if missing, then `create_theme` or `create_palette` as needed (Step 5b)
|
|
159
|
+
3. For each Ignite UI component: `get_component_design_tokens` -> map image design tokens -> resolve values to design tokens or semantic CSS variables -> `create_component_theme` (Step 5c)
|
|
160
|
+
4. Use `get_color` after palette generation whenever a palette token can represent the final color intent
|
|
161
|
+
|
|
162
|
+
## Step 6: Install Additional Packages
|
|
163
|
+
|
|
164
|
+
Core UI components ship with `igniteui-react`. Grid Lite requires both `igniteui-react` and `igniteui-grid-lite`. Advanced grids, charts, maps, and gauges use separate React package families and may also appear under `@infragistics/igniteui-react-*` in licensed workspaces. These packages are version-sensitive: determine the installed Ignite UI version, resolve the compatible published package version, and install only the package set required by the selected components. See [reference/component-mapping.md](reference/component-mapping.md) for package names and import patterns.
|
|
165
|
+
|
|
166
|
+
Theme CSS imports are also required:
|
|
167
|
+
|
|
168
|
+
- core components -> `igniteui-webcomponents/themes/<variant>/<design-system>.css`
|
|
169
|
+
- grids -> `igniteui-react-grids/grids/themes/<variant>/<design-system>.css`
|
|
170
|
+
|
|
171
|
+
If packages are missing, identify the exact packages and versions required first, then ask for approval before installing packages or changing dependency manifests.
|
|
172
|
+
|
|
173
|
+
Charts, maps, and gauges also require explicit `*.register()` calls at module level in React files. Grid Lite does **not** require registration.
|
|
174
|
+
|
|
175
|
+
## Step 7: Implement
|
|
176
|
+
|
|
177
|
+
### Structure
|
|
178
|
+
|
|
179
|
+
- **Layout**: use Ignite UI layout and data-display components as the starting point for standard regions, then apply CSS Grid/Flexbox and component overrides to match the screenshot. Only substitute plain semantic HTML when an Ignite UI component remains structurally incompatible after a genuine attempt.
|
|
180
|
+
- **Data**: use typed mock data that matches the design's density and domain; add models, helpers, or hooks only when they help the implementation.
|
|
181
|
+
- **View**: keep layout, spacing, typography, and surface styling in CSS modules or shared CSS rather than inline styles wherever practical.
|
|
182
|
+
- **Theming**: apply the resolved design system and theme variant from Step 5, and keep color usage aligned with palette tokens, or local semantic CSS variables.
|
|
183
|
+
|
|
184
|
+
### Implementation Checks
|
|
185
|
+
|
|
186
|
+
- Follow the surrounding repo conventions and the existing React skills in this repo, especially [`igniteui-react-components`](../igniteui-react-components/SKILL.md) and [`igniteui-react-customize-theme`](../igniteui-react-customize-theme/SKILL.md)
|
|
187
|
+
- Use [reference/component-mapping.md](reference/component-mapping.md) for component-choice and semantic-fallback rules
|
|
188
|
+
- Use [reference/gotchas.md](reference/gotchas.md) for components, theming, and API edge cases instead of re-encoding those rules inline
|
|
189
|
+
- Favor Ignite UI components over custom HTML when both approaches can reach similar visual fidelity
|
|
190
|
+
- Ensure the required theme CSS imports are present before component usage
|
|
191
|
+
- Preserve spacing, hierarchy, and data density before adding extra interactivity
|
|
192
|
+
- Avoid generic placeholders when the image shows domain-specific content
|
|
193
|
+
- Document brief assumptions when the image is ambiguous instead of silently guessing
|
|
194
|
+
|
|
195
|
+
## Step 8: Refine
|
|
196
|
+
|
|
197
|
+
After the first implementation pass, use the `set_size`, `set_spacing`, and `set_roundness` tools to adjust the view's visual properties and close the gap with the image. Focus on the most visually distinctive elements first (e.g., panel proportions, chart shape, button prominence) before tuning smaller details (e.g., row heights, spacing between regions).
|
|
198
|
+
|
|
199
|
+
## Step 9: Validate
|
|
200
|
+
|
|
201
|
+
Use this validation loop explicitly:
|
|
202
|
+
|
|
203
|
+
1. Build
|
|
204
|
+
2. Test
|
|
205
|
+
3. Run the app
|
|
206
|
+
4. Visually compare against the image
|
|
207
|
+
5. Adjust and repeat
|
|
208
|
+
|
|
209
|
+
In terminal-only environments, the user performs the visual comparison and provides feedback on any mismatches. Only perform the visual check directly when the environment has browser and screenshot capabilities available to the agent.
|
|
210
|
+
|
|
211
|
+
Use this checklist during the first visual comparison:
|
|
212
|
+
|
|
213
|
+
- panel proportions
|
|
214
|
+
- control density
|
|
215
|
+
- chart shape
|
|
216
|
+
- legend placement
|
|
217
|
+
- button prominence
|
|
218
|
+
- row heights
|
|
219
|
+
- spacing between regions
|
|
220
|
+
|
|
221
|
+
Fix TypeScript, JSX, styling, or runtime errors immediately during the build/test steps. Use the build output, component docs, [reference/gotchas.md](reference/gotchas.md), and the user's visual feedback to close the remaining gaps. Typical adjustments include:
|
|
222
|
+
|
|
223
|
+
- revisiting chart data density, smoothing, marker visibility, or missing module registration
|
|
224
|
+
- adjusting layout ratios, region spacing, or row heights
|
|
225
|
+
- correcting navigation mode, panel chrome, or component choice
|
|
226
|
+
- tuning map/filter treatment and dark-surface hierarchy
|
|
227
|
+
- re-examining the original design for overlooked sections, missing theme imports, or missing packages
|
|
228
|
+
|
|
229
|
+
After the build succeeds with zero errors, refine layout proportions, color values, missing sections, and typography until the view matches closely.
|