igniteui-cli 15.2.2 → 15.3.1-beta.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 (134) hide show
  1. package/lib/commands/build.js +7 -12
  2. package/package.json +7 -7
  3. package/templates/blazor/igb/projects/ai-config/files/skills/AGENTS.md +0 -5
  4. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/SKILL.md +2 -0
  5. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/charts.md +7 -35
  6. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/data-display.md +0 -54
  7. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/feedback.md +0 -38
  8. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/form-controls.md +0 -68
  9. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/layout-manager.md +1 -124
  10. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-components/references/layout.md +0 -62
  11. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-grids/references/grid-migration.md +322 -0
  12. package/templates/blazor/igb/projects/ai-config/files/skills/igniteui-blazor-theming/SKILL.md +1 -1
  13. package/templates/react/igr-ts/projects/_base/files/package.json +1 -0
  14. package/templates/react/igr-ts/projects/_base/files/src/app/app.tsx +4 -2
  15. package/templates/react/igr-ts/projects/_base/files/src/setupTests.ts +12 -0
  16. package/templates/react/igr-ts/projects/_base/files/styles.css +6 -0
  17. package/templates/react/igr-ts/projects/_base_with_home/files/index.html +2 -1
  18. package/templates/react/igr-ts/projects/_base_with_home/files/src/app/home/home.tsx +60 -10
  19. package/templates/react/igr-ts/projects/_base_with_home/files/src/app/home/style.module.css +79 -20
  20. package/templates/react/igr-ts/projects/ai-config/files/skills/grid-lite-to-igr-grid-migration/SKILL.md +274 -0
  21. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-components/SKILL.md +0 -8
  22. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-components/reference/CHARTS-GRIDS.md +6 -36
  23. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-components/reference/COMPONENT-CATALOGUE.md +8 -142
  24. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-components/reference/EVENT-HANDLING.md +2 -0
  25. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-customize-theme/SKILL.md +7 -14
  26. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-customize-theme/reference/CSS-THEMING.md +2 -0
  27. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-customize-theme/reference/MCP-SERVER.md +0 -8
  28. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-generate-from-image-design/SKILL.md +2 -2
  29. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-generate-from-image-design/reference/component-mapping.md +60 -74
  30. package/templates/react/igr-ts/projects/ai-config/files/skills/igniteui-react-generate-from-image-design/reference/gotchas.md +2 -2
  31. package/templates/react/igr-ts/projects/empty/index.js +2 -2
  32. package/templates/react/igr-ts/projects/side-nav/files/src/app/app-routes.tsx +5 -0
  33. package/templates/react/igr-ts/projects/side-nav/files/src/app/app.css +82 -0
  34. package/templates/react/igr-ts/projects/side-nav/files/src/app/app.tsx +104 -0
  35. package/templates/react/igr-ts/projects/side-nav/files/src/app/home/home.tsx +69 -0
  36. package/templates/react/igr-ts/projects/side-nav/files/src/app/home/style.module.css +105 -0
  37. package/templates/react/igr-ts/projects/{top-nav → side-nav}/index.d.ts +2 -2
  38. package/templates/react/igr-ts/projects/{top-nav → side-nav}/index.js +7 -7
  39. package/templates/react/igr-ts/projects/side-nav-auth/files/index.html +19 -0
  40. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/app-routes.tsx +24 -0
  41. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/app.css +84 -0
  42. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/app.tsx +124 -0
  43. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/AuthContext.tsx +73 -0
  44. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/AuthGuard.tsx +14 -0
  45. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/components/Login.module.css +93 -0
  46. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/components/Login.tsx +69 -0
  47. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/components/LoginBar.module.css +42 -0
  48. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/components/LoginBar.tsx +44 -0
  49. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/components/LoginDialog.module.css +14 -0
  50. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/components/LoginDialog.tsx +49 -0
  51. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/components/Register.module.css +74 -0
  52. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/components/Register.tsx +67 -0
  53. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/models/external-login.ts +10 -0
  54. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/models/login.ts +4 -0
  55. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/models/register-info.ts +6 -0
  56. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/models/user.ts +19 -0
  57. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/pages/Profile.module.css +87 -0
  58. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/pages/Profile.tsx +42 -0
  59. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/pages/RedirectFacebook.tsx +44 -0
  60. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/pages/RedirectGoogle.tsx +40 -0
  61. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/pages/RedirectMicrosoft.tsx +40 -0
  62. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/services/authentication.ts +37 -0
  63. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/services/external-auth-config.ts +44 -0
  64. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/services/externalAuth.ts +272 -0
  65. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/services/fakeBackend.ts +88 -0
  66. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/services/jwtUtil.ts +10 -0
  67. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/services/pkce.ts +29 -0
  68. package/templates/react/igr-ts/projects/side-nav-auth/files/src/app/authentication/services/userStore.ts +39 -0
  69. package/templates/react/igr-ts/projects/side-nav-auth/index.d.ts +15 -0
  70. package/templates/react/igr-ts/projects/side-nav-auth/index.js +46 -0
  71. package/templates/react/igr-ts/projects/side-nav-mini/files/src/app/app-routes.tsx +5 -0
  72. package/templates/react/igr-ts/projects/side-nav-mini/files/src/app/app.css +109 -0
  73. package/templates/react/igr-ts/projects/side-nav-mini/files/src/app/app.test.tsx +20 -0
  74. package/templates/react/igr-ts/projects/side-nav-mini/files/src/app/app.tsx +81 -0
  75. package/templates/react/igr-ts/projects/side-nav-mini/files/src/app/home/home.tsx +69 -0
  76. package/templates/react/igr-ts/projects/side-nav-mini/files/src/app/home/style.module.css +105 -0
  77. package/templates/react/igr-ts/projects/side-nav-mini/index.d.ts +15 -0
  78. package/templates/react/igr-ts/projects/side-nav-mini/index.js +46 -0
  79. package/templates/react/igr-ts/projects/side-nav-mini-auth/files/src/app/app.css +106 -0
  80. package/templates/react/igr-ts/projects/side-nav-mini-auth/files/src/app/app.tsx +101 -0
  81. package/templates/react/igr-ts/projects/side-nav-mini-auth/index.d.ts +15 -0
  82. package/templates/react/igr-ts/projects/side-nav-mini-auth/index.js +50 -0
  83. package/templates/webcomponents/igc-ts/projects/_base/files/src/app/app.ts +6 -1
  84. package/templates/webcomponents/igc-ts/projects/_base/files/styles.css +1 -0
  85. package/templates/webcomponents/igc-ts/projects/_base_with_home/files/index.html +2 -0
  86. package/templates/webcomponents/igc-ts/projects/_base_with_home/files/src/app/home/home.ts +103 -9
  87. package/templates/webcomponents/igc-ts/projects/_base_with_home/files/src/assets/wc.png +0 -0
  88. package/templates/webcomponents/igc-ts/projects/ai-config/files/skills/igniteui-wc-choose-components/SKILL.md +122 -160
  89. package/templates/webcomponents/igc-ts/projects/ai-config/files/skills/igniteui-wc-customize-component-theme/SKILL.md +83 -311
  90. package/templates/webcomponents/igc-ts/projects/ai-config/files/skills/igniteui-wc-customize-component-theme/references/mcp-setup.md +69 -0
  91. package/templates/webcomponents/igc-ts/projects/ai-config/files/skills/igniteui-wc-generate-from-image-design/SKILL.md +4 -1
  92. package/templates/webcomponents/igc-ts/projects/ai-config/files/skills/igniteui-wc-generate-from-image-design/references/component-mapping.md +60 -61
  93. package/templates/webcomponents/igc-ts/projects/ai-config/files/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +15 -11
  94. package/templates/webcomponents/igc-ts/projects/ai-config/files/skills/igniteui-wc-migrate-grid-lite-to-premium/SKILL.md +446 -0
  95. package/templates/webcomponents/igc-ts/projects/ai-config/files/skills/igniteui-wc-optimize-bundle-size/SKILL.md +23 -274
  96. package/templates/webcomponents/igc-ts/projects/empty/index.js +1 -1
  97. package/templates/webcomponents/igc-ts/projects/side-nav/files/index.html +21 -0
  98. package/templates/webcomponents/igc-ts/projects/side-nav/files/src/app/app-routing.ts +9 -0
  99. package/templates/webcomponents/igc-ts/projects/side-nav/files/src/app/app.ts +192 -22
  100. package/templates/webcomponents/igc-ts/projects/side-nav/files/src/app/home/home.ts +175 -0
  101. package/templates/webcomponents/igc-ts/projects/side-nav/index.js +1 -1
  102. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/index.html +25 -0
  103. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/app-routing.ts +37 -0
  104. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/app.ts +251 -0
  105. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/authentication/login-bar/login-bar.ts +124 -0
  106. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/authentication/login-dialog/login-dialog.ts +253 -0
  107. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/authentication/models/external-login.ts +10 -0
  108. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/authentication/models/login.ts +4 -0
  109. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/authentication/models/register-info.ts +6 -0
  110. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/authentication/models/user.ts +19 -0
  111. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/authentication/services/authentication.ts +37 -0
  112. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/authentication/services/external-auth-config.ts +44 -0
  113. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/authentication/services/externalAuth.ts +272 -0
  114. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/authentication/services/fakeBackend.ts +88 -0
  115. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/authentication/services/jwtUtil.ts +10 -0
  116. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/authentication/services/pkce.ts +29 -0
  117. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/authentication/services/userStore.ts +39 -0
  118. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/profile/profile.ts +142 -0
  119. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/redirect/redirect-facebook.ts +57 -0
  120. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/redirect/redirect-google.ts +53 -0
  121. package/templates/webcomponents/igc-ts/projects/side-nav-auth/files/src/app/redirect/redirect-microsoft.ts +53 -0
  122. package/templates/webcomponents/igc-ts/projects/side-nav-auth/index.d.ts +15 -0
  123. package/templates/webcomponents/igc-ts/projects/side-nav-auth/index.js +46 -0
  124. package/templates/webcomponents/igc-ts/projects/side-nav-mini/files/src/app/app-routing.ts +13 -0
  125. package/templates/webcomponents/igc-ts/projects/side-nav-mini/files/src/app/app.ts +238 -0
  126. package/templates/webcomponents/igc-ts/projects/side-nav-mini/index.d.ts +14 -0
  127. package/templates/webcomponents/igc-ts/projects/side-nav-mini/index.js +45 -0
  128. package/templates/webcomponents/igc-ts/projects/side-nav-mini-auth/files/src/app/app.ts +258 -0
  129. package/templates/webcomponents/igc-ts/projects/side-nav-mini-auth/index.d.ts +15 -0
  130. package/templates/webcomponents/igc-ts/projects/side-nav-mini-auth/index.js +50 -0
  131. package/templates/react/igr-ts/projects/top-nav/files/src/app/app.css +0 -62
  132. package/templates/react/igr-ts/projects/top-nav/files/src/app/app.tsx +0 -18
  133. package/templates/react/igr-ts/projects/top-nav/files/src/components/navigation-header/index.tsx +0 -19
  134. /package/templates/react/igr-ts/projects/{top-nav → side-nav}/files/src/app/app.test.tsx +0 -0
@@ -9,18 +9,24 @@
9
9
  - [Package Requirements](#package-requirements)
10
10
  - [Import Patterns](#import-patterns)
11
11
 
12
+ > **MCP lookup pattern (applies to all sections):**
13
+ > - Find doc names → `list_components({ framework: "webcomponents", filter: "<keyword>" })`
14
+ > - Usage examples and slots → `get_doc({ framework: "webcomponents", name: "<doc-name>" })`
15
+ > - Find exact class names → `search_api({ platform: "webcomponents", query: "<keyword>" })`
16
+ > - Full property/method/event API → `get_api_reference({ platform: "webcomponents", component: "<ClassName>" })`
17
+
12
18
  ## Dashboard & Layout Components
13
19
 
14
- | UI Pattern | Ignite UI Component | Key Properties |
15
- |---|---|---|
16
- | Top navigation bar | `IgcNavbarComponent` | `slot="start"`, default slot, `slot="end"` |
17
- | Side navigation | `IgcNavDrawerComponent` | `open`, `position`, default slot, `slot="mini"` |
18
- | Content cards/panels | `IgcCardComponent` | `<igc-card-header>`, `<igc-card-content>`, `<igc-card-actions>` |
19
- | Tabbed content | `IgcTabsComponent` | `<igc-tab>` children, `alignment`, `activation` |
20
- | Accordion sections | `IgcAccordionComponent` | `IgcExpansionPanelComponent` children |
21
- | Split layouts | `IgcSplitterComponent` | pane-based layout, nested split regions |
22
- | Tile dashboard | `IgcTileManagerComponent` | drag/resize tiles |
23
- | IDE-style dock layout | `IgcDockManagerComponent` | floating/docking panels (Commercial) |
20
+ | UI Pattern | Ignite UI Component |
21
+ |---|---|
22
+ | Top navigation bar | `IgcNavbarComponent` |
23
+ | Side navigation | `IgcNavDrawerComponent` |
24
+ | Content cards/panels | `IgcCardComponent` |
25
+ | Tabbed content | `IgcTabsComponent` |
26
+ | Accordion sections | `IgcAccordionComponent` |
27
+ | Split layouts | `IgcSplitterComponent` |
28
+ | Tile dashboard | `IgcTileManagerComponent` |
29
+ | IDE-style dock layout | `IgcDockManagerComponent` |
24
30
 
25
31
  Decision rule:
26
32
 
@@ -47,17 +53,19 @@ Component decision matrix (by visual pattern, domain-neutral):
47
53
 
48
54
  ## Chart Components
49
55
 
50
- | UI Pattern | Ignite UI Component | Key Properties |
51
- |---|---|---|
52
- | Area chart | `IgcCategoryChartComponent` | `chartType`, `markerTypes`, `brushes`, `outlines` |
53
- | Line chart | `IgcCategoryChartComponent` | `chartType`, `markerTypes`, `brushes` |
54
- | Column chart | `IgcCategoryChartComponent` | `chartType`, `markerTypes`|
55
- | Bar chart | `IgcDataChartComponent` | `IgxBarSeriesComponent`, `valueMemberPath`, `argumentMemberPath` |
56
- | Sparkline (mini chart) | `IgcSparklineComponent` | `displayType`, `valueMemberPath` |
57
- | Pie chart | `IgcPieChartComponent` | `valueMemberPath`, `labelMemberPath` |
58
- | Donut chart | `IgcDoughnutChartComponent` | `innerExtent`; bind data via child `IgcRingSeriesBaseComponent` with `valueMemberPath`, `labelMemberPath` |
59
- | Financial chart | `IgcFinancialChartComponent` | OHLC/candlestick data |
60
- | Complex multi-series | `IgcDataChartComponent` | multiple series plus axes |
56
+ > Use the lookup pattern above with `filter: "chart"` to find all chart doc names.
57
+
58
+ | UI Pattern | Ignite UI Component |
59
+ |---|---|
60
+ | Area chart | `IgcCategoryChartComponent` |
61
+ | Line chart | `IgcCategoryChartComponent` |
62
+ | Column chart | `IgcCategoryChartComponent` |
63
+ | Bar chart | `IgcDataChartComponent` |
64
+ | Sparkline (mini chart) | `IgcSparklineComponent` |
65
+ | Pie chart | `IgcPieChartComponent` |
66
+ | Donut chart | `IgcDoughnutChartComponent` |
67
+ | Financial chart | `IgcFinancialChartComponent` |
68
+ | Complex multi-series | `IgcDataChartComponent` |
61
69
 
62
70
  Decision rule:
63
71
 
@@ -67,17 +75,17 @@ Decision rule:
67
75
 
68
76
  ## Data Display Components
69
77
 
70
- | UI Pattern | Ignite UI Component | Key Properties |
71
- |---|---|---|
72
- | Item list | `IgcListComponent` + `IgcListItemComponent` | `slot="title"`, `slot="subtitle"`, `slot="start"`, `slot="end"` |
73
- | User avatar | `IgcAvatarComponent` | `initials`, `shape`, `src` |
74
- | Status badge | `IgcBadgeComponent` | `value`, styling |
75
- | Icons | `IgcIconComponent` | `name`, `collection`, styling |
76
- | Progress bar | `IgcLinearProgressComponent` | `value`, `max` |
77
- | Circular progress | `IgcCircularProgressComponent` | `value`, `max` |
78
- | Flat data grid | `IgcGridComponent` | Grid Lite or full Data Grid depending features |
79
- | Hierarchical/tree data grid | `IgcTreeGridComponent` / `IgcHierarchicalGridComponent` | hierarchical data support |
80
- | Filter/tag chips | `IgcChipComponent` | `removable`, `selectable` |
78
+ | UI Pattern | Ignite UI Component |
79
+ |---|---|
80
+ | Item list | `IgcListComponent` + `IgcListItemComponent` |
81
+ | User avatar | `IgcAvatarComponent` |
82
+ | Status badge | `IgcBadgeComponent` |
83
+ | Icons | `IgcIconComponent` |
84
+ | Progress bar | `IgcLinearProgressComponent` |
85
+ | Circular progress | `IgcCircularProgressComponent` |
86
+ | Flat data grid | `IgcGridComponent` |
87
+ | Hierarchical/tree data grid | `IgcTreeGridComponent` / `IgcHierarchicalGridComponent` |
88
+ | Filter/tag chips | `IgcChipComponent` |
81
89
 
82
90
  Decision rule:
83
91
 
@@ -88,42 +96,33 @@ Decision rule:
88
96
 
89
97
  ## Form & Input Components
90
98
 
91
- | UI Pattern | Ignite UI Component | Key Properties |
92
- |---|---|---|
93
- | Text input | `IgcInputComponent` | `type`, `value`, prefix/suffix/helper slots |
94
- | Dropdown select | `IgcSelectComponent` | `<igc-select-item>` children, prefix/suffix slots |
95
- | Searchable multi-select | `IgcComboComponent` | data binding, display/value keys, selection mode |
96
- | Date picker | `IgcDatePickerComponent` | `value`, `min`, `max` |
97
- | Time or date-time entry | `IgcDateTimeInputComponent` | typed editing for date/time fields |
98
- | Toggle switch | `IgcSwitchComponent` | checked state, change events |
99
- | Checkbox | `IgcCheckboxComponent` | checked state, validation |
100
- | Radio button group | `IgcRadioGroupComponent` + `IgcRadioComponent` | grouped selection |
101
- | Slider | `IgcSliderComponent` | `min`, `max`, labels/ticks |
102
- | Multi-step wizard | `IgcStepperComponent` + `IgcStepComponent` | orientation, linear step flow |
103
- | Chip filter bar | `IgcChipComponent` or `IgcButtonGroupComponent` | choose based on chip versus segmented-control anatomy |
99
+ | UI Pattern | Ignite UI Component |
100
+ |---|---|
101
+ | Text input | `IgcInputComponent` |
102
+ | Dropdown select | `IgcSelectComponent` |
103
+ | Searchable multi-select | `IgcComboComponent` |
104
+ | Date picker | `IgcDatePickerComponent` |
105
+ | Time or date-time entry | `IgcDateTimeInputComponent` |
106
+ | Toggle switch | `IgcSwitchComponent` |
107
+ | Checkbox | `IgcCheckboxComponent` |
108
+ | Radio button group | `IgcRadioGroupComponent` + `IgcRadioComponent` |
109
+ | Slider | `IgcSliderComponent` |
110
+ | Multi-step wizard | `IgcStepperComponent` + `IgcStepComponent` |
111
+ | Chip filter bar | `IgcChipComponent` or `IgcButtonGroupComponent` |
104
112
 
105
113
  ## Calendar & Scheduling Components
106
114
 
107
- | UI Pattern | Ignite UI Component | Key Properties |
108
- |---|---|---|
109
- | Calendar view | `IgcCalendarComponent` | `value`, selection mode |
110
- | Date range picker | `IgcDateRangePickerComponent` | `value`, range selection |
111
- | Month/year picker | `IgcCalendarComponent` | month/year modes when the calendar UI is primary |
115
+ | UI Pattern | Ignite UI Component |
116
+ |---|---|
117
+ | Calendar view | `IgcCalendarComponent` |
118
+ | Date range picker | `IgcDateRangePickerComponent` |
119
+ | Month/year picker | `IgcCalendarComponent` |
112
120
 
113
121
  ## Package Requirements
114
122
 
115
- The main `igniteui-webcomponents` package contains general UI components (list, avatar, navbar, drawer, card, badge, progress, icon, inputs, scheduling, layout, etc.).
116
-
117
- Additional packages may be required beyond the main package:
118
-
119
- | Capability | Additional packages |
120
- |---|---|
121
- | Lightweight tabular data | `igniteui-grid-lite` |
122
- | Advanced grids | `igniteui-webcomponents-grids` (trial) or `@infragistics/igniteui-webcomponents-grids` (licensed) |
123
- | Charts / sparklines | `igniteui-webcomponents-core` + `igniteui-webcomponents-charts` (trial) or licensed equivalents |
124
- | Dock manager | `igniteui-dockmanager` (trial) or `@infragistics/igniteui-dockmanager` (licensed) |
123
+ See [`igniteui-wc-choose-components`](../../igniteui-wc-choose-components/SKILL.md) for the full package routing table (general UI, grids, charts, dock manager, trial vs. licensed).
125
124
 
126
- Install only the packages required by the components you actually selected. Resolve the exact package layout from the current workspace before installing or importing.
125
+ Install only the packages required by the components you actually selected.
127
126
 
128
127
  ## Import Patterns
129
128
 
@@ -28,14 +28,21 @@ Do not assume everything comes from `igniteui-webcomponents`. Advanced grids, ch
28
28
 
29
29
  ## Chart Properties
30
30
 
31
+ > **Always use the MCP lookup pattern before coding any chart.** Chart APIs are extensive and change between versions.
32
+ > - Find doc names → `list_components({ framework: "webcomponents", filter: "chart" })`
33
+ > - Usage examples and slots → `get_doc({ framework: "webcomponents", name: "<doc-name>" })`
34
+ > - Find exact class names → `search_api({ platform: "webcomponents", query: "<keyword>" })`
35
+ > - Full property/method/event API → `get_api_reference({ platform: "webcomponents", component: "<ClassName>" })`
36
+
31
37
  ### Markers shown by default
32
38
  Category charts can show markers by default. If the screenshot does not show markers, set `markerTypes` to the matching no-marker option documented for the component. Confirm the exact value shape from `get_doc`.
33
39
 
34
- ### `plotAreaBackground` does NOT exist on `igc-category-chart`
35
- Use CSS to style the chart container background instead.
36
-
37
- ### `areaFillOpacity` exists on `IgcCategoryChartComponent`
38
- It does NOT exist on `IgcSparklineComponent`.
40
+ ### `plotAreaBackground` and `areaFillOpacity` are inherited — not visible in `get_api_reference`
41
+ Both properties exist but are defined on parent classes, so `get_api_reference({ platform: "webcomponents", component: "IgcCategoryChartComponent" })` will not list them. Use `search_api` to find them:
42
+ ```ts
43
+ chart.plotAreaBackground = 'transparent'; // inherited from IgcSeriesViewerComponent
44
+ chart.areaFillOpacity = 0.3; // inherited from IgcDomainChartComponent (not on IgcSparklineComponent)
45
+ ```
39
46
 
40
47
  ### `includedProperties` must be a real array
41
48
  Assign it as an array through JavaScript or TypeScript, not as a serialized string:
@@ -74,9 +81,6 @@ igc-category-chart {
74
81
 
75
82
  ## Component Properties
76
83
 
77
- ### Avatar shape is controlled by `shape`
78
- Use the supported `shape` API (`circle`, `rounded`, `square`, etc. as documented for the component).
79
-
80
84
  ### List item title and subtitle are slots
81
85
  Use the Web Components slot anatomy:
82
86
  ```html
@@ -94,11 +98,11 @@ Use the Web Components slot anatomy:
94
98
  ```
95
99
 
96
100
  ### Nav drawer width
97
- The drawer sizing hooks in the current implementation are `--menu-full-width` and `--menu-mini-width`:
101
+ Width is controlled by two CSS custom properties exposed on the host they are **not** design tokens and won't appear in `get_component_design_tokens`. Override them directly:
98
102
  ```css
99
103
  igc-nav-drawer {
100
- --menu-full-width: <extracted-sidebar-width>;
101
- --menu-mini-width: <extracted-mini-drawer-width>;
104
+ --menu-full-width: 280px; /* default: 240px */
105
+ --menu-mini-width: 56px; /* no default — collapses to content width if unset */
102
106
  }
103
107
  ```
104
108
 
@@ -0,0 +1,446 @@
1
+ ---
2
+ name: igniteui-wc-migrate-grid-lite-to-premium
3
+ description: Step-by-step migration guide from igniteui-grid-lite (IgcGridLite) to the premium igniteui-webcomponents-grids (IgcGridComponent), covering every import, class name, HTML tag, property, event, template, sorting, filtering, and theming API change.
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Migrate from Grid Lite to Premium Data Grid (Web Components)
8
+
9
+ ## Purpose
10
+
11
+ This skill automates the migration from **Grid Lite** (`igniteui-grid-lite`, MIT licensed, `<igc-grid-lite>`) to the **Premium Data Grid** (`igniteui-webcomponents-grids`, commercially licensed, `<igc-grid>`). Use it when a project outgrows Grid Lite's read-only capabilities and needs enterprise features such as editing, selection, paging, grouping, summaries, Excel export, or state persistence.
12
+
13
+ ## MANDATORY AGENT PROTOCOL
14
+
15
+ > **DO NOT write any code from memory.** Grid APIs change between versions.
16
+
17
+ Before producing migration code:
18
+
19
+ 1. **Identify the current Grid Lite usage** - read the user's existing TypeScript and HTML files to understand their column configuration, cell templates, data binding, and any `dataPipelineConfiguration` usage.
20
+ 2. **Use the MCP server** - call `mcp_igniteui-cli_get_api_reference` or `mcp_igniteui-cli_get_doc` (framework: `webcomponents`) to verify current API details when in doubt.
21
+ 3. **Only then produce output** - base all code on verified references, not memory.
22
+
23
+ ---
24
+
25
+ ## When to Migrate
26
+
27
+ Migrate from Grid Lite to the Premium Grid when the user needs **any** of these features:
28
+
29
+ | Required Feature | Grid Lite | Premium Grid |
30
+ |---|---|---|
31
+ | Cell / Row / Batch editing | No | Yes |
32
+ | Row adding / deleting | No | Yes |
33
+ | Row / Cell / Column selection | No | Yes |
34
+ | Paging (client or remote) | No | Yes |
35
+ | GroupBy | No | Yes |
36
+ | Summaries (built-in & custom) | No | Yes |
37
+ | Column pinning | No | Yes |
38
+ | Column moving | No | Yes |
39
+ | Master-Detail rows | No | Yes |
40
+ | Export (Excel / CSV) | No | Yes |
41
+ | Toolbar | No | Yes |
42
+ | State persistence | No | Yes |
43
+ | Advanced filtering | No | Yes |
44
+ | Action strip | No | Yes |
45
+ | Row drag | No | Yes |
46
+ | Clipboard support | No | Yes |
47
+ | Cell merging | No | Yes |
48
+
49
+ > **IMPORTANT:** The upgrade path from Grid Lite is **always** to `IgcGridComponent` (`<igc-grid>`). Never recommend a different component type as a substitute.
50
+
51
+ ---
52
+
53
+ ## Step 1 - Install / Verify the Premium Package
54
+
55
+ Grid Lite uses the separate `igniteui-grid-lite` npm package. The Premium Grid ships in `igniteui-webcomponents-grids` (or `@infragistics/igniteui-webcomponents-grids` for licensed builds).
56
+
57
+ > **AGENT INSTRUCTION:** Check `package.json` to determine which package variant is installed. If only `igniteui-grid-lite` is present, the user needs to install the premium package.
58
+
59
+ ```bash
60
+ # Remove Grid Lite
61
+ npm uninstall igniteui-grid-lite
62
+
63
+ # Open-source / trial (shows watermark)
64
+ npm install igniteui-webcomponents-grids
65
+
66
+ # OR licensed package (requires private registry)
67
+ npm install @infragistics/igniteui-webcomponents-grids
68
+ ```
69
+
70
+ ## Step 2 - Update Imports and Registration
71
+
72
+ **Before (Grid Lite):**
73
+
74
+ ```typescript
75
+ import { IgcGridLite, IgcGridLiteColumn } from 'igniteui-grid-lite';
76
+ import type { BaseIgcCellContext } from 'igniteui-grid-lite';
77
+ import 'igniteui-webcomponents/themes/light/bootstrap.css';
78
+ ```
79
+
80
+ **After (Premium Grid):**
81
+
82
+ ```typescript
83
+ // Side-effect import - registers all premium grid custom elements; must come first
84
+ import 'igniteui-webcomponents-grids/grids/combined.js';
85
+
86
+ // Type imports
87
+ import type {
88
+ IgcGridComponent,
89
+ IgcColumnComponent,
90
+ IgcCellTemplateContext,
91
+ IgcColumnTemplateContext,
92
+ IgcSortingEventArgs,
93
+ IgcFilteringEventArgs,
94
+ IgcRowSelectionEventArgs,
95
+ IgcSortingExpression,
96
+ } from 'igniteui-webcomponents-grids';
97
+
98
+ // Value imports
99
+ import {
100
+ SortingDirection,
101
+ IgcStringFilteringOperand,
102
+ IgcNumberFilteringOperand,
103
+ IgcBooleanFilteringOperand,
104
+ IgcDateFilteringOperand,
105
+ IgcFilteringExpressionsTree,
106
+ FilteringLogic,
107
+ IgcNoopSortingStrategy,
108
+ IgcNoopFilteringStrategy,
109
+ } from 'igniteui-webcomponents-grids';
110
+
111
+ // Theme - change to the grids-specific path
112
+ // Available: light|dark x bootstrap|material|fluent|indigo
113
+ import 'igniteui-webcomponents-grids/grids/themes/light/bootstrap.css';
114
+ ```
115
+
116
+ ## Step 3 - Update HTML Tags
117
+
118
+ | Grid Lite | Premium Grid |
119
+ |---|---|
120
+ | `<igc-grid-lite>` | `<igc-grid>` |
121
+ | `<igc-grid-lite-column>` | `<igc-column>` |
122
+ | Bare boolean attrs (`sortable`, `filterable`, `hidden`) | Quoted values (`sortable="true"`, `filterable="true"`, `hidden="true"`) |
123
+ | No grid-level filter toggle | `allow-filtering="true"` required on `<igc-grid>` |
124
+ | No height requirement | `height` attribute required for row virtualization |
125
+
126
+ **Before:**
127
+
128
+ ```html
129
+ <igc-grid-lite id="grid" auto-generate>
130
+ <igc-grid-lite-column field="name" sortable filterable resizable></igc-grid-lite-column>
131
+ <igc-grid-lite-column field="price" data-type="number" sortable></igc-grid-lite-column>
132
+ </igc-grid-lite>
133
+ ```
134
+
135
+ **After:**
136
+
137
+ ```html
138
+ <!-- height is required for row virtualization; set it here or on a fixed-height parent -->
139
+ <igc-grid id="grid" auto-generate="true" allow-filtering="true" height="600px">
140
+ <igc-column field="name" sortable="true" filterable="true" resizable="true"></igc-column>
141
+ <igc-column field="price" data-type="number" sortable="true"></igc-column>
142
+ </igc-grid>
143
+ ```
144
+
145
+ > **Note:** `allow-filtering="true"` on `<igc-grid>` is required to enable filtering. Grid Lite had no grid-level filter toggle.
146
+
147
+ ## Step 4 - Update TypeScript References
148
+
149
+ ```typescript
150
+ // Before
151
+ const grid = document.getElementById('grid') as IgcGridLite;
152
+ const column = document.querySelector('igc-grid-lite-column[field="name"]') as IgcGridLiteColumn;
153
+
154
+ // After
155
+ const grid = document.getElementById('grid') as IgcGridComponent;
156
+ const column = document.querySelector('igc-column[field="name"]') as IgcColumnComponent;
157
+
158
+ // grid.data = myArray - unchanged
159
+ ```
160
+
161
+ ## Step 5 - Migrate Column Properties
162
+
163
+ | Grid Lite Property | Premium Grid Property | Notes |
164
+ |---|---|---|
165
+ | `field` | `field` | Unchanged |
166
+ | `header` | `header` | Unchanged |
167
+ | `width` | `width` | Unchanged |
168
+ | `hidden` | `hidden` | Unchanged |
169
+ | `resizable` | `resizable` | Unchanged |
170
+ | `sortable` | `sortable` | Unchanged |
171
+ | `filterable` | `filterable` | Unchanged |
172
+ | `dataType` | `dataType` | Premium adds `dateTime`, `time`, `currency`, `percent` |
173
+ | `filteringCaseSensitive` | `filteringIgnoreCase` | **Logic inverted** - `true` becomes `false` |
174
+ | `sortingCaseSensitive` | `sortingIgnoreCase` | **Logic inverted** - `true` becomes `false` |
175
+ | `sortConfiguration: { comparer }` | `sortStrategy: IgcSortingStrategy` | Class-based (see below) |
176
+ | _(none)_ | `editable`, `pinned`, `groupable`, `hasSummary`, `disableHiding`, `disablePinning`, `selectable`, `searchable`, `formatter`, `minWidth`, `maxWidth` | Premium-only |
177
+
178
+ **Custom sort strategy migration:**
179
+
180
+ ```typescript
181
+ // Before (Grid Lite) - function comparer on column
182
+ column.sortConfiguration = { comparer: (a, b) => a.length - b.length };
183
+
184
+ // After (Premium Grid) - class extending DefaultSortingStrategy
185
+ import { DefaultSortingStrategy } from 'igniteui-webcomponents-grids';
186
+
187
+ class LengthSort extends DefaultSortingStrategy {
188
+ override compareValues(a: string, b: string) { return a.length - b.length; }
189
+ }
190
+ column.sortStrategy = new LengthSort();
191
+ ```
192
+
193
+ ## Step 6 - Migrate Cell and Header Templates
194
+
195
+ | Aspect | Grid Lite | Premium Grid |
196
+ |---|---|---|
197
+ | Cell template property | `column.cellTemplate` | `column.bodyTemplate` |
198
+ | Cell context type | `BaseIgcCellContext` | `IgcCellTemplateContext` |
199
+ | Cell value | `ctx.value` | `ctx.implicit` |
200
+ | Row data | `ctx.row` | `ctx.cell.row.data` |
201
+ | Header template | no params | `IgcColumnTemplateContext` param |
202
+
203
+ **Cell template migration:**
204
+
205
+ ```typescript
206
+ // Before (Grid Lite)
207
+ column.cellTemplate = (ctx) => html`<span class=${ctx.value}>${ctx.value}</span>`;
208
+
209
+ // After (Premium Grid)
210
+ column.bodyTemplate = (ctx: IgcCellTemplateContext) =>
211
+ html`<span class=${ctx.implicit}>${ctx.implicit}</span>`;
212
+ ```
213
+
214
+ **Header template migration:**
215
+
216
+ ```typescript
217
+ // Before (Grid Lite) - no parameters
218
+ column.headerTemplate = () => html`<strong>Name</strong>`;
219
+
220
+ // After (Premium Grid) - receives IgcColumnTemplateContext
221
+ column.headerTemplate = (ctx: IgcColumnTemplateContext) =>
222
+ html`<strong>${ctx.column.header ?? ctx.column.field}</strong>`;
223
+ ```
224
+
225
+ ## Step 7 - Migrate Remote Data Operations
226
+
227
+ Grid Lite uses `dataPipelineConfiguration` (async callbacks). The Premium Grid uses **noop strategies + events**.
228
+
229
+ **Before (Grid Lite):**
230
+
231
+ ```typescript
232
+ grid.dataPipelineConfiguration = {
233
+ sort: async ({ grid }) => dataService.sortRemote(grid.sortingExpressions),
234
+ filter: async ({ grid }) => dataService.filterRemote(grid.filterExpressions),
235
+ };
236
+ ```
237
+
238
+ **After (Premium Grid):**
239
+
240
+ ```typescript
241
+ const grid = document.getElementById('grid') as IgcGridComponent;
242
+
243
+ // Disable built-in sort/filter so the grid does not process data locally
244
+ grid.sortStrategy = IgcNoopSortingStrategy.instance();
245
+ grid.filterStrategy = IgcNoopFilteringStrategy.instance();
246
+
247
+ // React to done events and reload data from the server
248
+ grid.addEventListener('sortingDone', async () => {
249
+ grid.data = await dataService.sortRemote(grid.sortingExpressions);
250
+ });
251
+
252
+ grid.addEventListener('filteringDone', async () => {
253
+ grid.data = await dataService.filterRemote(grid.filteringExpressionsTree);
254
+ });
255
+ ```
256
+
257
+ ## Step 8 - Migrate Sort / Filter Events
258
+
259
+ | Grid Lite Event | Premium Grid Event | Notes |
260
+ |---|---|---|
261
+ | `sorting` | `sorting` | Same name - both cancellable (`e.detail.cancel = true`) |
262
+ | `sorted` | `sortingDone` | Name changed - `CustomEvent<IgcSortingExpression[]>` |
263
+ | `filtering` | `filtering` | Same name - both cancellable |
264
+ | `filtered` | `filteringDone` | Name changed - `CustomEvent<IgcFilteringExpressionsTree>` |
265
+
266
+ ```typescript
267
+ // Cancel a sort before it applies
268
+ grid.addEventListener('sorting', (e: CustomEvent<IgcSortingEventArgs>) => {
269
+ e.detail.cancel = true;
270
+ });
271
+
272
+ // React after sort completes
273
+ grid.addEventListener('sortingDone', (e: CustomEvent<IgcSortingExpression[]>) => {
274
+ console.log('Sorted by', e.detail);
275
+ });
276
+
277
+ // Cancel a filter before it applies
278
+ grid.addEventListener('filtering', (e: CustomEvent<IgcFilteringEventArgs>) => {
279
+ e.detail.cancel = true;
280
+ });
281
+
282
+ // React after filter completes
283
+ grid.addEventListener('filteringDone', (e: CustomEvent<IgcFilteringExpressionsTree>) => {
284
+ console.log('Filter tree', e.detail);
285
+ });
286
+ ```
287
+
288
+ ## Step 9 - Migrate Programmatic Sort / Filter API
289
+
290
+ **Grid Lite API:**
291
+
292
+ ```typescript
293
+ grid.sort({ key: 'name', direction: 'ascending' });
294
+ grid.filter({ key: 'age', condition: 'greaterThan', searchTerm: 21 });
295
+ grid.clearSort();
296
+ grid.clearFilter();
297
+ ```
298
+
299
+ **Premium Grid API:**
300
+
301
+ ```typescript
302
+ import { SortingDirection, IgcNumberFilteringOperand } from 'igniteui-webcomponents-grids';
303
+
304
+ // Sorting - fieldName + SortingDirection enum (Asc = 1, Desc = 2, None = 0)
305
+ grid.sort([{ fieldName: 'name', dir: SortingDirection.Asc, ignoreCase: true }]);
306
+ grid.clearSort('name'); // clear one column
307
+ grid.clearSort(); // clear all
308
+
309
+ // Filtering - positional arguments with typed operand instances
310
+ grid.filter('age', 21, IgcNumberFilteringOperand.instance().condition('greaterThan'), true);
311
+ grid.clearFilter('age'); // clear one column
312
+ grid.clearFilter(); // clear all
313
+
314
+ // Multi-column filtering via expression tree
315
+ const tree = new IgcFilteringExpressionsTree(FilteringLogic.And);
316
+ tree.filteringOperands.push({
317
+ fieldName: 'age',
318
+ condition: IgcNumberFilteringOperand.instance().condition('greaterThan'),
319
+ searchVal: 21,
320
+ ignoreCase: true,
321
+ });
322
+ grid.filteringExpressionsTree = tree;
323
+ ```
324
+
325
+ **Key expression shape changes:**
326
+
327
+ | Aspect | Grid Lite | Premium Grid |
328
+ |---|---|---|
329
+ | Sort target field | `key` | `fieldName` |
330
+ | Sort direction | `direction: 'ascending'` (string) | `dir: SortingDirection.Asc` (enum) |
331
+ | Filter target field | `key` | `fieldName` |
332
+ | Filter search value | `searchTerm` | `searchVal` (expression tree) |
333
+ | Case sensitivity (sort) | `caseSensitive: true` | `ignoreCase: false` (**inverted**) |
334
+ | Case sensitivity (filter) | `caseSensitive: true` | `ignoreCase: false` (**inverted**) |
335
+ | Filter criteria | `criteria` string | `FilteringLogic` enum on the tree |
336
+
337
+ ---
338
+
339
+ ## Adding Enterprise Features Post-Migration
340
+
341
+ Once on the Premium Grid, enable the features that motivated the migration:
342
+
343
+ ### Row Editing
344
+
345
+ ```html
346
+ <igc-grid id="grid" row-editable="true" primary-key="id" height="600px">
347
+ <igc-column field="name" editable="true"></igc-column>
348
+ <igc-column field="price" data-type="number" editable="true"></igc-column>
349
+ </igc-grid>
350
+ ```
351
+
352
+ > **Note:** `primary-key` is strongly recommended whenever editing, selection, or row-targeted APIs (`getRowByKey`, row pinning, transactions) are used. Without it the grid falls back to object identity, which breaks across virtualization and remote data.
353
+
354
+ ### Row Selection
355
+
356
+ ```html
357
+ <igc-grid id="grid" row-selection="multiple" primary-key="id" height="600px">
358
+ <!-- columns -->
359
+ </igc-grid>
360
+ ```
361
+
362
+ ```typescript
363
+ grid.addEventListener('rowSelectionChanging', (e: CustomEvent<IgcRowSelectionEventArgs>) => {
364
+ console.log('Selected rows:', e.detail.added);
365
+ });
366
+ ```
367
+
368
+ ### Paging
369
+
370
+ ```html
371
+ <igc-grid id="grid" primary-key="id" height="600px">
372
+ <!-- columns -->
373
+ <igc-paginator per-page="15"></igc-paginator>
374
+ </igc-grid>
375
+ ```
376
+
377
+ ### GroupBy
378
+
379
+ ```html
380
+ <igc-grid id="grid" primary-key="id" height="600px">
381
+ <igc-column field="category" groupable="true"></igc-column>
382
+ </igc-grid>
383
+ ```
384
+
385
+ ```typescript
386
+ grid.groupBy([{ fieldName: 'category', dir: SortingDirection.Asc }]);
387
+ ```
388
+
389
+ ### Column Pinning
390
+
391
+ ```typescript
392
+ const column = grid.getColumnByName('name');
393
+ column.pin(); // pin to start (default)
394
+ column.unpin();
395
+ ```
396
+
397
+ ### Summaries
398
+
399
+ ```html
400
+ <igc-column field="price" data-type="number" has-summary="true"></igc-column>
401
+ ```
402
+
403
+ ### Toolbar (Column Hiding, Pinning, Export)
404
+
405
+ ```html
406
+ <igc-grid id="grid" auto-generate="true" height="600px">
407
+ <igc-grid-toolbar>
408
+ <igc-grid-toolbar-title>My Grid</igc-grid-toolbar-title>
409
+ <igc-grid-toolbar-actions>
410
+ <igc-grid-toolbar-advanced-filtering></igc-grid-toolbar-advanced-filtering>
411
+ <igc-grid-toolbar-hiding></igc-grid-toolbar-hiding>
412
+ <igc-grid-toolbar-pinning></igc-grid-toolbar-pinning>
413
+ <igc-grid-toolbar-exporter></igc-grid-toolbar-exporter>
414
+ </igc-grid-toolbar-actions>
415
+ </igc-grid-toolbar>
416
+ <!-- columns -->
417
+ </igc-grid>
418
+ ```
419
+
420
+ ### Advanced Filtering Dialog
421
+
422
+ ```typescript
423
+ grid.allowAdvancedFiltering = true;
424
+ grid.openAdvancedFilteringDialog();
425
+ ```
426
+
427
+ ### Excel-Style Filter UI
428
+
429
+ ```typescript
430
+ grid.filterMode = 'excelStyleFilter'; // default is 'quickFilter'
431
+ ```
432
+
433
+ ### Batch Editing
434
+
435
+ ```html
436
+ <igc-grid id="grid" batch-editing="true" row-editable="true" primary-key="id" height="600px">
437
+ <igc-column field="name" editable="true"></igc-column>
438
+ </igc-grid>
439
+ ```
440
+
441
+ ---
442
+ ## Related Skills
443
+
444
+ - **[`igniteui-wc-integrate-with-framework`](../igniteui-wc-integrate-with-framework/SKILL.md)** - Framework integration setup
445
+ - **[`igniteui-wc-customize-component-theme`](../igniteui-wc-customize-component-theme/SKILL.md)** - Theming and styling
446
+ - **[`igniteui-wc-choose-components`](../igniteui-wc-choose-components/SKILL.md)** - Choosing the right grid component