igniteui-angular 22.2.0-rc.0 → 22.2.0-rc.2

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 (111) hide show
  1. package/README.md +1 -1
  2. package/button-group/README.md +42 -9
  3. package/calendar/README.md +30 -20
  4. package/card/README.md +1 -1
  5. package/fesm2022/igniteui-angular-accordion.mjs +7 -7
  6. package/fesm2022/igniteui-angular-action-strip.mjs +11 -22
  7. package/fesm2022/igniteui-angular-action-strip.mjs.map +1 -1
  8. package/fesm2022/igniteui-angular-avatar.mjs +7 -7
  9. package/fesm2022/igniteui-angular-badge.mjs +7 -7
  10. package/fesm2022/igniteui-angular-banner.mjs +10 -10
  11. package/fesm2022/igniteui-angular-bottom-nav.mjs +22 -22
  12. package/fesm2022/igniteui-angular-button-group.mjs +32 -35
  13. package/fesm2022/igniteui-angular-button-group.mjs.map +1 -1
  14. package/fesm2022/igniteui-angular-calendar.mjs +132 -180
  15. package/fesm2022/igniteui-angular-calendar.mjs.map +1 -1
  16. package/fesm2022/igniteui-angular-card.mjs +47 -58
  17. package/fesm2022/igniteui-angular-card.mjs.map +1 -1
  18. package/fesm2022/igniteui-angular-carousel.mjs +22 -22
  19. package/fesm2022/igniteui-angular-chat-extras.mjs +6 -6
  20. package/fesm2022/igniteui-angular-chat.mjs +12 -12
  21. package/fesm2022/igniteui-angular-checkbox.mjs +7 -7
  22. package/fesm2022/igniteui-angular-chips.mjs +10 -10
  23. package/fesm2022/igniteui-angular-combo.mjs +69 -67
  24. package/fesm2022/igniteui-angular-combo.mjs.map +1 -1
  25. package/fesm2022/igniteui-angular-core.mjs +139 -92
  26. package/fesm2022/igniteui-angular-core.mjs.map +1 -1
  27. package/fesm2022/igniteui-angular-date-picker.mjs +53 -70
  28. package/fesm2022/igniteui-angular-date-picker.mjs.map +1 -1
  29. package/fesm2022/igniteui-angular-dialog.mjs +13 -13
  30. package/fesm2022/igniteui-angular-directives.mjs +194 -194
  31. package/fesm2022/igniteui-angular-drop-down.mjs +29 -29
  32. package/fesm2022/igniteui-angular-expansion-panel.mjs +28 -28
  33. package/fesm2022/igniteui-angular-grids-core.mjs +737 -661
  34. package/fesm2022/igniteui-angular-grids-core.mjs.map +1 -1
  35. package/fesm2022/igniteui-angular-grids-grid.mjs +49 -49
  36. package/fesm2022/igniteui-angular-grids-hierarchical-grid.mjs +37 -37
  37. package/fesm2022/igniteui-angular-grids-lite.mjs +25 -17
  38. package/fesm2022/igniteui-angular-grids-lite.mjs.map +1 -1
  39. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs +80 -80
  40. package/fesm2022/igniteui-angular-grids-pivot-grid.mjs.map +1 -1
  41. package/fesm2022/igniteui-angular-grids-tree-grid.mjs +55 -55
  42. package/fesm2022/igniteui-angular-icon.mjs +10 -10
  43. package/fesm2022/igniteui-angular-input-group.mjs +59 -55
  44. package/fesm2022/igniteui-angular-input-group.mjs.map +1 -1
  45. package/fesm2022/igniteui-angular-list.mjs +40 -40
  46. package/fesm2022/igniteui-angular-navbar.mjs +13 -13
  47. package/fesm2022/igniteui-angular-navigation-drawer.mjs +43 -38
  48. package/fesm2022/igniteui-angular-navigation-drawer.mjs.map +1 -1
  49. package/fesm2022/igniteui-angular-paginator.mjs +19 -19
  50. package/fesm2022/igniteui-angular-progressbar.mjs +19 -19
  51. package/fesm2022/igniteui-angular-query-builder.mjs +22 -22
  52. package/fesm2022/igniteui-angular-radio.mjs +25 -21
  53. package/fesm2022/igniteui-angular-radio.mjs.map +1 -1
  54. package/fesm2022/igniteui-angular-select.mjs +29 -33
  55. package/fesm2022/igniteui-angular-select.mjs.map +1 -1
  56. package/fesm2022/igniteui-angular-simple-combo.mjs +9 -9
  57. package/fesm2022/igniteui-angular-simple-combo.mjs.map +1 -1
  58. package/fesm2022/igniteui-angular-slider.mjs +28 -28
  59. package/fesm2022/igniteui-angular-snackbar.mjs +7 -7
  60. package/fesm2022/igniteui-angular-splitter.mjs +13 -13
  61. package/fesm2022/igniteui-angular-stepper.mjs +34 -34
  62. package/fesm2022/igniteui-angular-switch.mjs +7 -7
  63. package/fesm2022/igniteui-angular-tabs.mjs +34 -34
  64. package/fesm2022/igniteui-angular-time-picker.mjs +26 -36
  65. package/fesm2022/igniteui-angular-time-picker.mjs.map +1 -1
  66. package/fesm2022/igniteui-angular-toast.mjs +7 -7
  67. package/fesm2022/igniteui-angular-tree.mjs +28 -28
  68. package/fesm2022/igniteui-angular-virtual-scroll.mjs +497 -145
  69. package/fesm2022/igniteui-angular-virtual-scroll.mjs.map +1 -1
  70. package/migrations/common/UpdateChanges.d.ts +56 -0
  71. package/migrations/common/UpdateChanges.js +366 -38
  72. package/migrations/common/UpdateChanges.spec.js +829 -0
  73. package/migrations/migration-collection.json +1 -1
  74. package/migrations/update-22_2_0/index.js +145 -0
  75. package/migrations/update-22_2_0/index.spec.js +206 -0
  76. package/navigation-drawer/README.md +1 -1
  77. package/package.json +3 -3
  78. package/schematics/tsconfig.tsbuildinfo +1 -1
  79. package/skills/igniteui-angular-components/SKILL.md +9 -5
  80. package/skills/igniteui-angular-components/references/form-controls.md +1 -1
  81. package/skills/igniteui-angular-components/references/mcp-setup.md +14 -2
  82. package/skills/igniteui-angular-figma-to-app/SKILL.md +112 -525
  83. package/skills/igniteui-angular-figma-to-app/references/asset-extraction.md +49 -75
  84. package/skills/igniteui-angular-figma-to-app/references/design-provenance.md +201 -0
  85. package/skills/igniteui-angular-figma-to-app/references/design-token-bridge.md +175 -52
  86. package/skills/igniteui-angular-figma-to-app/references/figma-component-map.md +153 -99
  87. package/skills/igniteui-angular-figma-to-app/references/figma-exploration.md +226 -0
  88. package/skills/igniteui-angular-figma-to-app/references/mcp-setup.md +71 -105
  89. package/skills/igniteui-angular-figma-to-app/references/project-setup.md +63 -0
  90. package/skills/igniteui-angular-figma-to-app/references/theme-generation.md +120 -0
  91. package/skills/igniteui-angular-figma-to-app/references/validation-patterns.md +48 -50
  92. package/skills/igniteui-angular-generate-from-image-design/SKILL.md +11 -7
  93. package/skills/igniteui-angular-grids/SKILL.md +7 -3
  94. package/skills/igniteui-angular-grids/references/editing.md +1 -2
  95. package/skills/igniteui-angular-grids/references/grid-migration.md +1 -1
  96. package/skills/igniteui-angular-theming/SKILL.md +9 -5
  97. package/skills/igniteui-angular-theming/references/mcp-setup.md +12 -2
  98. package/types/igniteui-angular-button-group.d.ts +49 -34
  99. package/types/igniteui-angular-calendar.d.ts +33 -50
  100. package/types/igniteui-angular-card.d.ts +12 -17
  101. package/types/igniteui-angular-combo.d.ts +6 -0
  102. package/types/igniteui-angular-core.d.ts +25 -8
  103. package/types/igniteui-angular-grids-core.d.ts +48 -4
  104. package/types/igniteui-angular-grids-lite.d.ts +5 -1
  105. package/types/igniteui-angular-grids-pivot-grid.d.ts +1 -1
  106. package/types/igniteui-angular-input-group.d.ts +17 -3
  107. package/types/igniteui-angular-navigation-drawer.d.ts +1 -0
  108. package/types/igniteui-angular-radio.d.ts +5 -0
  109. package/types/igniteui-angular-time-picker.d.ts +0 -1
  110. package/types/igniteui-angular-virtual-scroll.d.ts +41 -13
  111. package/virtual-scroll/README.md +32 -1
@@ -1,35 +1,83 @@
1
- # Indigo.Design UI Kit → Ignite UI Angular Component Map
1
+ # Figma Components → Ignite UI Angular Component Map
2
2
 
3
3
  > **Part of the [`igniteui-angular-figma-to-app`](../SKILL.md) skill.**
4
4
  >
5
- > The **Indigo.Design UI Kits** are Figma component libraries (Material, Fluent, Bootstrap,
6
- > Indigo variants) that designers use to build their app screens. Every component instance
7
- > in a design file is drawn from one of these libraries and maps 1:1 to an Ignite UI
8
- > Angular control.
5
+ > Use this file in Phase 2a to resolve every row of the Phase 1g Table A to an Ignite UI Angular selector, `get_doc` key, and key inputs. It has two entry points:
9
6
  >
10
- > Use this file in Phase 2a to map Figma layer names — as they appear in the kit
11
- > library — to Ignite UI Angular selectors, `get_doc` keys, and key inputs. When a
12
- > layer name is not in this table, call `list_components` then `get_doc` on the closest
13
- > match.
7
+ > - **Canonical Role Index** (next section). Use it for **Tier B and Tier C** layers: components from any other UI kit, or un-componentized frames, after they are normalized with [design-provenance.md](design-provenance.md).
8
+ > - **Kit Component Name** tables (the sections after it). Use them for **Tier A** layers from the Infragistics **Indigo.Design UI Kits** (Material, Fluent, Bootstrap, Indigo variants), whose layer names map to Ignite UI Angular directly.
9
+ >
10
+ > When a role or layer name is in neither, call `list_components` then `get_doc` on the closest match.
11
+
12
+ ---
13
+
14
+ ## Canonical Role Index
15
+
16
+ Normalized roles from `design-provenance.md` → the Ignite UI Angular selector, and the section below that holds its full row.
17
+
18
+ | Canonical role (+ normalized props) | Ignite UI Angular | Section |
19
+ | --- | --- | --- |
20
+ | `button` · high | `<button igxButton="contained">` | Button Components |
21
+ | `button` · medium (outlined) | `<button igxButton="outlined">` | Button Components |
22
+ | `button` · medium (tonal / secondary fill) | `<button igxButton="contained">` + `contained-button` tokens set to the **measured** tonal fill and text colors (usually a light shade such as `var(--ig-primary-100)`). Do not use the plain `secondary` palette: on a `material` baseline it holds the brand color, so tonal buttons would look like high-emphasis ones | Button Components |
23
+ | `button` · low | `<button igxButton="flat">` | Button Components |
24
+ | `button` · link | `<a igxButton="flat" routerLink="…">`, or a plain `<a>` styled as a link | Button Components |
25
+ | `button` · elevated | `<button igxButton="contained">` + elevation via tokens | Button Components |
26
+ | `button` · danger | Same variant + tokens bound to the `error` palette | Button Components |
27
+ | `icon-button` | `<button igxIconButton="flat\|outlined\|contained">` | Button Components |
28
+ | `fab` | `<button igxButton="fab">` | Button Components |
29
+ | `toggle-group` | `<igx-buttongroup>` | Button Components |
30
+ | `text-field` · outlined | `<igx-input-group type="border">` | Form Controls |
31
+ | `text-field` · filled | `<igx-input-group type="box">` | Form Controls |
32
+ | `text-field` · underlined | `<igx-input-group type="line">` | Form Controls |
33
+ | `textarea` | `<igx-input-group>` + `<textarea igxInput>` | Form Controls |
34
+ | `select` | `<igx-select>` | Form Controls |
35
+ | `combobox` (single, searchable) | `<igx-simple-combo>` | Form Controls |
36
+ | `combobox` (multi / tags) | `<igx-combo>` | Form Controls |
37
+ | `combobox` (free-text suggestions) | `igxAutocomplete` + `<igx-drop-down>` | Form Controls |
38
+ | `checkbox` / `radio` / `switch` | `<igx-checkbox>` / `<igx-radio-group>`+`<igx-radio>` / `<igx-switch>` | Form Controls |
39
+ | `slider` / `range-slider` | `<igx-slider>` (`type="slider\|range"`) | Form Controls |
40
+ | `rating` | `<igc-rating>` (web component) | Form Controls |
41
+ | `file-upload` | `<igx-input-group>` + `<input igxInput type="file">` — confirm with `search_docs` | Form Controls |
42
+ | `date-picker` / `date-range-picker` / `time-picker` / `calendar` | `<igx-date-picker>` / `<igx-date-range-picker>` / `<igx-time-picker>` / `<igx-calendar>` | Date & Time Pickers |
43
+ | `app-bar` | `<igx-navbar>` | Navigation Components |
44
+ | `side-nav` (expanded, always visible) | `<igx-nav-drawer [pin]="true" [isOpen]="true">` | Navigation Components |
45
+ | navigation rail (icon-only) | `<igx-nav-drawer [pin]="true" [isOpen]="false">` with an `igxDrawerMini` template. The mini template renders only while the drawer is closed | Navigation Components |
46
+ | `tabs` | `<igx-tabs>` | Navigation Components |
47
+ | `bottom-nav` | `<igx-bottom-nav>` | Navigation Components |
48
+ | `stepper` | `<igx-stepper>` | Navigation Components |
49
+ | `menu` | `<igx-drop-down>` + `igxToggleAction` | Form Controls (`_Dropdown Menu` row) |
50
+ | `accordion` / `expansion-panel` | `<igx-accordion>` / `<igx-expansion-panel>` | Layout Components |
51
+ | `card` | `<igx-card>` (only when header/media/content/actions anatomy fits) | Data Display Components |
52
+ | `list` | `<igx-list>` | Data Display Components |
53
+ | `tree` | `<igx-tree>` | Data Display Components |
54
+ | `data-table` (simple, read-only) | `<igx-grid-lite>` (requires the separate `igniteui-grid-lite` package; obtain approval before installing) — see the `igniteui-angular-grids` skill | Grid Components |
55
+ | `data-table` (editing, grouping, paging, summaries…) | `<igx-grid>` and family | Grid Components |
56
+ | `pagination` | `<igx-paginator>` | Data Display Components |
57
+ | `avatar` | `<igx-avatar>` | Data Display Components |
58
+ | `tag` / `count-badge` | `<igx-badge>` | Data Display Components |
59
+ | `chip` | `<igx-chip>` | Data Display Components |
60
+ | `progress-linear` / `progress-circular` | `<igx-linear-bar>` / `<igx-circular-bar>` | Data Display Components |
61
+ | `divider` | `<igx-divider>` | Data Display Components |
62
+ | `carousel` | `<igx-carousel>` | Data Display Components |
63
+ | `dialog` | `<igx-dialog>` | Feedback / Overlay Components |
64
+ | `toast` (text only) / (with action) | `<igx-toast>` / `<igx-snackbar>` | Feedback / Overlay Components |
65
+ | `inline-alert` | `<igx-banner>` | Feedback / Overlay Components |
66
+ | `tooltip` | `igxTooltip` + `igxTooltipTarget` | Directives |
67
+ | `chart-*` / `gauge-*` / `map` | See the DV tables | Chart / Gauge / Map Components |
68
+ | `color-picker` / `qr-code` | `<igc-color-picker>` / `<igc-qr-code>` (web components from `igniteui-webcomponents`) | Form Controls (web component setup note) |
69
+ | `breadcrumbs`, `sheet`, `skeleton` | No Angular component | Use semantic markup, document the substitution, and record it in the Phase 2d delta ledger |
14
70
 
15
71
  ---
16
72
 
17
- ## How to Use This File
73
+ ## How to Use the Kit Tables
18
74
 
19
- 1. Find the kit component name (as it appears in the Figma layers panel or the
20
- Indigo.Design kit library) in the **Kit Component Name** column.
75
+ 1. Find the kit component name (as it appears in the Figma layers panel or the Indigo.Design kit library) in the **Kit Component Name** column.
21
76
  2. Read the **Angular Selector** and **IgxXxx Class** for the template.
22
- 3. Try the **`get_doc` Key** with `get_doc({ framework: "angular", name: "<key>" })`.
23
- **The doc catalog covers only a subset of components** (verify with `list_components`
24
- once). When no doc exists for a key, use the
25
- [`igniteui-angular-components`](../../igniteui-angular-components/SKILL.md) /
26
- [`igniteui-angular-grids`](../../igniteui-angular-grids/SKILL.md) skill reference files
27
- for usage patterns and `search_api` for member-level API lookups — do not guess.
28
- 4. Consult **Key Inputs / Variants** for the properties most commonly configured from
29
- Figma variants.
30
-
31
- > The component names are identical across all four kit variants (Material, Fluent,
32
- > Bootstrap, Indigo). The kit variant determines the theme style, not the component name.
77
+ 3. Try the **`get_doc` Key** with `get_doc({ framework: "angular", name: "<key>" })`. **The doc catalog covers only a subset of components** (verify with `list_components` once). When no doc exists for a key, use the [`igniteui-angular-components`](../../igniteui-angular-components/SKILL.md) / [`igniteui-angular-grids`](../../igniteui-angular-grids/SKILL.md) skill reference files for usage patterns and `search_api` for member-level API lookups — do not guess.
78
+ 4. Consult **Key Inputs / Variants** for the properties most commonly configured from Figma variants.
79
+
80
+ > The component names are identical across all four kit variants (Material, Fluent, Bootstrap, Indigo). The kit variant determines the theme style, not the component name.
33
81
 
34
82
  ---
35
83
 
@@ -37,65 +85,66 @@
37
85
 
38
86
  | Kit Component Name | Angular Selector | IgxXxx Class | `get_doc` Key | Key Inputs / Variants |
39
87
  | -------------------------------------- | ------------------------------------ | ------------------------- | -------------- | ---------------------------------------------------------- |
40
- | `_Button/Flat` | `<button igxButton="flat">` | `IgxButtonDirective` | `button` | `igxButton="flat"`, `[disabled]`, size via `igxButtonSize` |
88
+ | `_Button/Flat` | `<button igxButton="flat">` | `IgxButtonDirective` | `button` | `igxButton="flat"`, `[disabled]`, size via `--ig-size` |
41
89
  | `_Button/Outlined` | `<button igxButton="outlined">` | `IgxButtonDirective` | `button` | `igxButton="outlined"` |
42
90
  | `_Button/Contained` / `_Button/Raised` | `<button igxButton="contained">` | `IgxButtonDirective` | `button` | `igxButton="contained"` |
43
91
  | `_Icon Button/Flat` | `<button igxIconButton="flat">` | `IgxIconButtonDirective` | `icon-button` | `igxIconButton="flat\|outlined\|contained"` |
44
92
  | `_Icon Button/Outlined` | `<button igxIconButton="outlined">` | `IgxIconButtonDirective` | `icon-button` | — |
45
93
  | `_Icon Button/Contained` | `<button igxIconButton="contained">` | `IgxIconButtonDirective` | `icon-button` | — |
46
- | `_Button Group` | `<igx-buttongroup>` | `IgxButtonGroupComponent` | `button-group` | `[values]`, `[multiSelection]`, `[alignment]` |
94
+ | `_Button Group` | `<igx-buttongroup>` | `IgxButtonGroupComponent` | `button-group` | `[values]`, `[selectionMode]` (`single\|singleRequired\|multi`), `[alignment]` |
47
95
  | `_FAB` / `Fab` | `<button igxButton="fab">` | `IgxButtonDirective` | `button` | `igxButton="fab"` |
48
96
 
49
97
  ---
50
98
 
51
99
  ## Form Controls
52
100
 
53
- > **Input type defaults differ from the Figma kit defaults.** When a Figma design uses
54
- > `border`-type inputs globally, set the `IGX_INPUT_GROUP_TYPE` injection token once in
55
- > `app.config.ts` rather than adding `type="border"` to every component tag. This covers
56
- > all compound components: `IgxSimpleCombo` (default: `box`), `IgxDatePickerComponent`
57
- > (default: `line`), `IgxDateRangePickerComponent`, `IgxTimePickerComponent`,
58
- > `IgxSelectComponent`.
101
+ > **The default input type is `box`** (since Ignite UI for Angular 22.0.0) for `igx-input-group` and every component that wraps it. When a Figma design uses one non-default type everywhere, set the `IGX_INPUT_GROUP_TYPE` injection token once in `app.config.ts` rather than adding `type` to every component tag. The token is read by `IgxInputGroupComponent`, `IgxComboComponent`, `IgxSimpleComboComponent`, `IgxSelectComponent`, `IgxDatePickerComponent`, `IgxDateRangePickerComponent`, and `IgxTimePickerComponent`.
59
102
  >
60
103
  > ```typescript
61
104
  > import { IGX_INPUT_GROUP_TYPE } from 'igniteui-angular/input-group';
62
105
  > // providers: [{ provide: IGX_INPUT_GROUP_TYPE, useValue: 'border' }]
63
106
  > ```
64
107
  >
65
- > Detect the intended type from Phase 1d: look for hidden `size-[0.5px]` nodes whose
66
- > `data-name` encodes the variant (e.g. `"Date Picker Type"` → `border`).
108
+ > Detect the intended type from Phase 1d: look for hidden `size-[0.5px]` nodes whose `data-name` encodes the variant (e.g. `"Date Picker Type"` → `border`).
67
109
 
68
110
  | Kit Component Name | Angular Selector | IgxXxx Class | `get_doc` Key | Default Type | Key Inputs / Variants |
69
111
  | ------------------------------ | --------------------------------- | --------------------------------------------------------------------------- | ------------------------ | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
70
- | `_Input/Line` | `<igx-input-group type="line">` | `IgxInputGroupComponent` | `input` | `line` | `type="line\|border\|box\|search"`, `[disabled]` |
71
- | `_Input/Border` | `<igx-input-group type="border">` | `IgxInputGroupComponent` | `input` | `line` | `type="border"` |
72
- | `_Input/Box` / `_Input/Filled` | `<igx-input-group type="box">` | `IgxInputGroupComponent` | `input` | `line` | `type="box"` |
73
- | `_Input/Search` | `<igx-input-group type="search">` | `IgxInputGroupComponent` | `input` | `line` | `type="search"` |
112
+ | `_Input/Line` | `<igx-input-group type="line">` | `IgxInputGroupComponent` | `input-group` | `box` | `type="line\|border\|box\|search"`, `[disabled]` |
113
+ | `_Input/Border` | `<igx-input-group type="border">` | `IgxInputGroupComponent` | `input-group` | `box` | `type="border"` |
114
+ | `_Input/Box` / `_Input/Filled` | `<igx-input-group type="box">` | `IgxInputGroupComponent` | `input-group` | `box` | `type="box"` |
115
+ | `_Input/Search` | `<igx-input-group type="search">` | `IgxInputGroupComponent` | `input-group` | `box` | `type="search"` |
74
116
  | `_Combo` / `_ComboBox` | `<igx-combo>` | `IgxComboComponent` | `combo` | `box` | `[data]`, `[displayKey]`, `[valueKey]`, `[groupKey]`, `[allowCustomValues]` |
75
117
  | `_Simple Combo` | `<igx-simple-combo>` | `IgxSimpleComboComponent` | `simple-combo` | `box` | `[data]`, `[displayKey]`, `[valueKey]` |
76
- | `_Select` / `_Dropdown` | `<igx-select>` | `IgxSelectComponent` | `select` | `line` | `<igx-select-item>` children, `[type]` |
118
+ | `_Select` / `_Dropdown` | `<igx-select>` | `IgxSelectComponent` | `select` | `box` | `<igx-select-item>` children, `[type]` |
77
119
  | `_Autocomplete` | `igxAutocomplete` directive | `IgxAutocompleteDirective` | `autocomplete` | n/a | Used alongside `igx-input-group` + `igx-drop-down` |
120
+ | `_Text Area` | `<igx-input-group>` + `<textarea igxInput>` | `IgxInputGroupComponent` | `input-group` | `box` | `rows`, `[(ngModel)]` on the `textarea` |
121
+ | `_File Upload` | `<igx-input-group>` + `<input igxInput type="file">` | `IgxInputGroupComponent` | `input-group` | `box` | `multiple`, `accept` on the `input` |
122
+ | `_Dropdown Menu` / `_Menu` | `<igx-drop-down>` + `igxToggleAction` on the trigger | `IgxDropDownComponent` | `drop-down` | n/a | `<igx-drop-down-item>` children, `(selectionChanging)` |
123
+ | `_Color Picker` | `<igc-color-picker>` (**web component**) | `IgcColorPickerComponent` | search `color picker` | n/a | `value`; `[(ngModel)]` / `formControlName` via `IgcFormControlDirective` |
78
124
  | `_Checkbox` | `<igx-checkbox>` | `IgxCheckboxComponent` | `checkbox` | n/a | `[(ngModel)]`, `[checked]`, `[indeterminate]`, `[disabled]`, `labelPosition` |
79
125
  | `_Radio` / `_Radio Button` | `<igx-radio>` | `IgxRadioComponent` | `radio-button` | n/a | `[value]`, `[(ngModel)]`; wrap multiple in `<igx-radio-group>` |
80
126
  | `_Switch` / `_Toggle` | `<igx-switch>` | `IgxSwitchComponent` | `switch` | n/a | `[(ngModel)]`, `[checked]`, `labelPosition` |
81
- | `_Slider` / `_Range Slider` | `<igx-slider>` | `IgxSliderComponent` | `slider` | n/a | `[type]` (`SLIDER\|RANGE`), `[minValue]`, `[maxValue]`, `[step]`, `[(ngModel)]` |
82
- | `_Rating` | `<igc-rating>` | `IgcRatingComponent` (**web component** — `igniteui-webcomponents` package) | _(see setup note below)_ | n/a | `value` attribute; `igcChange` event; no `[(ngModel)]` — bind via `(igcChange)` |
127
+ | `_Slider` / `_Range Slider` | `<igx-slider>` | `IgxSliderComponent` | `slider-slider` | n/a | `type="slider\|range"` (`IgxSliderType`), `[minValue]`, `[maxValue]`, `[step]`, `[(ngModel)]` |
128
+ | `_Rating` | `<igc-rating>` | `IgcRatingComponent` (**web component** — `igniteui-webcomponents` package) | `rating` | n/a | `value`; `[(ngModel)]` / `formControlName` via `IgcFormControlDirective`; `igcChange` event |
83
129
 
84
- > **Rating setup:** `npm install igniteui-webcomponents`. In the component:
130
+ > **Web component setup (rating, color picker, QR code, chat):** these need the `igniteui-webcomponents` package, an **optional** peer dependency of `igniteui-angular`. Install the version range `igniteui-angular` declares in its `peerDependencies` (check `node_modules/igniteui-angular/package.json`), after the user approves. In the component:
85
131
  >
86
132
  > ```typescript
87
133
  > import { IgcRatingComponent, defineComponents } from 'igniteui-webcomponents';
134
+ > import { IgcFormControlDirective } from 'igniteui-angular/directives'; // ngModel / formControlName
88
135
  > defineComponents(IgcRatingComponent);
89
136
  > // Add CUSTOM_ELEMENTS_SCHEMA to the component's schemas array
90
137
  > ```
91
138
 
92
139
  ---
93
140
 
141
+ ## Date & Time Pickers
142
+
94
143
  | Kit Component Name | Angular Selector | IgxXxx Class | `get_doc` Key | Key Inputs / Variants |
95
144
  | -------------------- | ------------------------- | ----------------------------- | ------------------- | ------------------------------------------------------------------------------------------- |
96
145
  | `_Date Picker` | `<igx-date-picker>` | `IgxDatePickerComponent` | `date-picker` | `[(ngModel)]`, `[minValue]`, `[maxValue]`, `[mode]` (`dropdown\|dialog`), `[displayFormat]` |
97
146
  | `_Date Range Picker` | `<igx-date-range-picker>` | `IgxDateRangePickerComponent` | `date-range-picker` | `[(ngModel)]`, `[minValue]`, `[maxValue]`, `[mode]` |
98
- | `_Time Picker` | `<igx-time-picker>` | `IgxTimePickerComponent` | `time-picker` | `[(ngModel)]`, `[mode]` (`dropdown\|dialog`), `[format]` |
147
+ | `_Time Picker` | `<igx-time-picker>` | `IgxTimePickerComponent` | `time-picker` | `[(ngModel)]`, `[mode]` (`dropdown\|dialog`), `[inputFormat]`, `[displayFormat]` |
99
148
  | `_Calendar` | `<igx-calendar>` | `IgxCalendarComponent` | `calendar` | `[selection]` (`single\|multi\|range`), `[(ngModel)]`, `[viewDate]`, `[disabledDates]` |
100
149
 
101
150
  ---
@@ -107,7 +156,7 @@
107
156
  | `_Navbar` | `<igx-navbar>` | `IgxNavbarComponent` | `navbar` | `[title]`, `igxNavbarAction` slot, `igxNavbarTitle` slot |
108
157
  | `_Navigation Drawer` / `_Side Nav` | `<igx-nav-drawer>` | `IgxNavigationDrawerComponent` | `navdrawer` | `[pin]`, `[pinThreshold]`, `[miniWidth]`, `[width]`, `igxDrawer` + `igxDrawerMini` templates |
109
158
  | `_Tabs` | `<igx-tabs>` | `IgxTabsComponent` | `tabs` | `<igx-tab-item>` with `<igx-tab-header>` and `<igx-tab-content>` children, `[tabAlignment]` |
110
- | `_Bottom Navigation` / `_Bottom Nav` | `<igx-bottom-nav>` | `IgxBottomNavComponent` | `bottom-nav` | `<igx-bottom-nav-item>` children with `<igx-bottom-nav-header>` and `<igx-bottom-nav-content>` |
159
+ | `_Bottom Navigation` / `_Bottom Nav` | `<igx-bottom-nav>` | `IgxBottomNavComponent` | `tabbar`| `<igx-bottom-nav-item>` children with `<igx-bottom-nav-header>` and `<igx-bottom-nav-content>` |
111
160
  | `_Stepper` | `<igx-stepper>` | `IgxStepperComponent` | `stepper` | `[orientation]` (`horizontal\|vertical`), `[stepType]`, `[linear]`; `<igx-step>` children |
112
161
 
113
162
  ---
@@ -118,7 +167,7 @@
118
167
  | ------------------ | ----------------------- | ---------------------------- | ----------------- | ---------------------------------------------------------------------- |
119
168
  | `_Accordion` | `<igx-accordion>` | `IgxAccordionComponent` | `accordion` | `[singleBranchExpand]`; `<igx-expansion-panel>` children |
120
169
  | `_Expansion Panel` | `<igx-expansion-panel>` | `IgxExpansionPanelComponent` | `expansion-panel` | `<igx-expansion-panel-header>` + `<igx-expansion-panel-body>` |
121
- | `_Splitter` | `<igx-splitter>` | `IgxSplitterComponent` | `splitter` | `[type]` (`horizontal\|vertical`); `<igx-splitter-pane>` children |
170
+ | `_Splitter` | `<igx-splitter>` | `IgxSplitterComponent` | `splitter` | `[type]="SplitterType.Vertical"` (numeric enum); `<igx-splitter-pane>` children |
122
171
  | `_Tile Manager` | `<igc-tile-manager>` | Web component (standalone) | `tile-manager` | `<igc-tile>` children; web component — see [`layout-manager.md`](../../igniteui-angular-components/references/layout-manager.md) |
123
172
  | `_Dock Manager` | `<igc-dockmanager>` | Web component (standalone) | `dock-manager` | `[layout]` JSON input; web component — see [`layout-manager.md`](../../igniteui-angular-components/references/layout-manager.md) |
124
173
 
@@ -130,17 +179,17 @@
130
179
  | ------------------------------------ | -------------------- | --------------------------------- | ----------------------- | -------------------------------------------------------------------------------------------------------- |
131
180
  | `_List` | `<igx-list>` | `IgxListComponent` | `list` | `<igx-list-item>` children; `igxListLine`, `igxListThumbnail`, `igxListAction` slot directives |
132
181
  | `_Tree` / `_Tree View` | `<igx-tree>` | `IgxTreeComponent` | `tree` | `[selection]`; `<igx-tree-node>` children |
133
- | `_Card` | `<igx-card>` | `IgxCardComponent` | `card` | `igxCardHeader`, `igxCardThumbnail`, `igxCardContent`, `igxCardActions` slots; `[horizontal]` |
182
+ | `_Card` | `<igx-card>` | `IgxCardComponent` | `card` | `<igx-card-header>`, `<igx-card-media>`, `<igx-card-content>`, `<igx-card-actions>` elements; `igxCardThumbnail` attribute; `[horizontal]` |
134
183
  | `_Chip` / `_Chips` | `<igx-chip>` | `IgxChipComponent` | `chip` | `[removable]`, `[selectable]`, `[selected]`, `[disabled]`; wrap in `<igx-chips-area>` |
135
184
  | `_Avatar` | `<igx-avatar>` | `IgxAvatarComponent` | `avatar` | `[src]`, `[initials]`, `[icon]`, `[shape]` (`circle\|rounded\|square`), `[size]` |
136
185
  | `_Badge` | `<igx-badge>` | `IgxBadgeComponent` | `badge` | `[value]`, `[type]` (`primary\|info\|success\|warning\|error`), `[shape]` (`square\|rounded`) |
137
186
  | `_Icon` | `<igx-icon>` | `IgxIconComponent` | `icon` | `[family]`, `[name]`; content text (ligature-based) |
138
187
  | `_Carousel` | `<igx-carousel>` | `IgxCarouselComponent` | `carousel` | `[loop]`, `[navigation]`, `[pause]`; `<igx-slide>` children |
139
188
  | `_Paginator` | `<igx-paginator>` | `IgxPaginatorComponent` | `paginator` | `[totalRecords]`, `[perPage]`, `[selectOptions]` |
140
- | `_Linear Progress` / `_Progress Bar` | `<igx-linear-bar>` | `IgxLinearProgressBarComponent` | `linear-progress-bar` | `[value]`, `[max]`, `[indeterminate]`, `[type]` (`default\|success\|info\|warning\|danger`), `[striped]` |
141
- | `_Circular Progress` | `<igx-circular-bar>` | `IgxCircularProgressBarComponent` | `circular-progress-bar` | `[value]`, `[max]`, `[indeterminate]`, `[animate]` |
142
- | `_Divider` | `<igx-divider>` | `IgxDividerDirective` | `divider` | `[type]` (`solid\|dashed`), `[vertical]` |
143
- | `_Chat` | `<igx-chat>` | `IgxChatComponent` | `chat` | `[messages]`, `[user]`, `[sendMessage]` event |
189
+ | `_Linear Progress` / `_Progress Bar` | `<igx-linear-bar>` | `IgxLinearProgressBarComponent` | `linear-progress` | `[value]`, `[max]`, `[indeterminate]`, `[type]` (`default\|success\|info\|warning\|error`), `[striped]` |
190
+ | `_Circular Progress` | `<igx-circular-bar>` | `IgxCircularProgressBarComponent` | `circular-progress` | `[value]`, `[max]`, `[indeterminate]`, `[animate]` |
191
+ | `_Divider` | `<igx-divider>` | `IgxDividerComponent` | `divider` | `[type]` (`solid\|dashed`), `[vertical]` |
192
+ | `_Chat` | `<igx-chat>` | `IgxChatComponent` | `chat` | `[messages]`, `[draftMessage]`, `[options]`, `[templates]`, `(messageCreated)`; needs `igniteui-webcomponents` (see the web component setup note) |
144
193
 
145
194
  ---
146
195
 
@@ -151,7 +200,7 @@
151
200
  | `_Dialog` | `<igx-dialog>` | `IgxDialogComponent` | `dialog` | `[title]`, `[leftButtonLabel]`, `[rightButtonLabel]`, `[closeOnOutsideSelect]`, `[isModal]` |
152
201
  | `_Toast` | `<igx-toast>` | `IgxToastComponent` | `toast` | `[displayTime]`, `[autoHide]`; opened via `toast.open()` |
153
202
  | `_Snackbar` | `<igx-snackbar>` | `IgxSnackbarComponent` | `snackbar` | `[displayTime]`, `[autoHide]`, `[actionText]`; opened via `snackbar.open(message)` |
154
- | `_Banner` | `<igx-banner>` | `IgxBannerComponent` | `banner` | `<igx-icon>` projected; `igxBannerActions` for action buttons |
203
+ | `_Banner` | `<igx-banner>` | `IgxBannerComponent` | `banner` | `<igx-icon>` projected; `<igx-banner-actions>` for action buttons |
155
204
 
156
205
  ---
157
206
 
@@ -159,42 +208,35 @@
159
208
 
160
209
  | Kit Component Name | Angular Selector | IgxXxx Class | `get_doc` Key | Key Inputs / Variants |
161
210
  | ---------------------- | ------------------------- | ------------------------------ | ------------------- | ------------------------------------------------------------------------------------ |
162
- | `_Grid` / `_Data Grid` | `<igx-grid>` | `IgxGridComponent` | `grid` | `[data]`, `[primaryKey]`, `[rowEditable]`, `[columnHiding]`; `<igx-column>` children |
163
- | `_Tree Grid` | `<igx-tree-grid>` | `IgxTreeGridComponent` | `tree-grid` | `[data]`, `[primaryKey]`, `[foreignKey]` or `[childDataKey]` |
164
- | `_Hierarchical Grid` | `<igx-hierarchical-grid>` | `IgxHierarchicalGridComponent` | `hierarchical-grid` | `[data]`, `[primaryKey]`; nested `<igx-row-island>` for child grids |
165
- | `_Pivot Grid` | `<igx-pivot-grid>` | `IgxPivotGridComponent` | `pivot-grid` | `[data]`, `[pivotConfiguration]` |
211
+ | `_Grid` / `_Data Grid` | `<igx-grid>` | `IgxGridComponent` | `grid-grid` | `[data]`, `[primaryKey]`, `[rowEditable]`, `<igx-column>` children |
212
+ | Lightweight table | `<igx-grid-lite>` | `IgxGridLiteComponent` | `grid-lite-overview` | Read-only display with sorting/filtering/virtualization; import from `igniteui-angular/grids/lite`. Needs the `igniteui-grid-lite` package (an optional peer dependency of `igniteui-angular`, `~0.10.0`): check `package.json` and ask for approval before installing. Upgrade to `igx-grid` when editing, selection, or paging is shown |
213
+ | `_Tree Grid` | `<igx-tree-grid>` | `IgxTreeGridComponent` | `treegrid-tree-grid` | `[data]`, `[primaryKey]`, `[foreignKey]` or `[childDataKey]` |
214
+ | `_Hierarchical Grid` | `<igx-hierarchical-grid>` | `IgxHierarchicalGridComponent` | `hierarchicalgrid-hierarchical-grid` | `[data]`, `[primaryKey]`; nested `<igx-row-island>` for child grids |
215
+ | `_Pivot Grid` | `<igx-pivot-grid>` | `IgxPivotGridComponent` | `pivotGrid-pivot-grid` | `[data]`, `[pivotConfiguration]` |
166
216
 
167
- > **Grid features:** search for feature-specific docs using `search_docs`. Examples:
168
- > `"grid filtering"`, `"grid sorting"`, `"grid paging"`, `"grid row selection"`,
169
- > `"grid cell editing"`, `"grid column pinning"`, `"grid virtualization"`.
217
+ > **Grid features:** search for feature-specific docs using `search_docs`. Examples: `"grid filtering"`, `"grid sorting"`, `"grid paging"`, `"grid row selection"`, `"grid cell editing"`, `"grid column pinning"`, `"grid virtualization"`.
170
218
 
171
219
  ---
172
220
 
173
221
  ## Chart & Data Visualization Components
174
222
 
175
- > DV components have **no Sass design tokens**. All visual configuration is done via
176
- > component inputs. Do **not** call `theming_get_component_design_tokens` for these.
223
+ > DV components have **no Sass design tokens**. All visual configuration is done via component inputs. Do **not** call `theming_get_component_design_tokens` for these.
177
224
  >
178
- > **`get_doc`:** the current doc catalog has **no chart docs** — use the
179
- > [`charts.md`](../../igniteui-angular-components/references/charts.md) reference in the
180
- > components skill for usage patterns and `search_api` for member lookups.
225
+ > **`get_doc`:** chart docs are `charts-chart-overview` plus one `types-<type>-chart` page per chart type (keys below). The [`charts.md`](../../igniteui-angular-components/references/charts.md) reference in the components skill covers setup, and `search_api` covers member lookups.
181
226
  >
182
- > **Series colors:** chart components use their own default brush palette. Always
183
- > explicitly set `[brushes]` and `[outlines]` with space-separated hex colors extracted
184
- > from the Phase 1d design context to match the Figma series colors:
185
- > `[brushes]="'#9DE772 #6DB1FF'"`
227
+ > **Series colors:** chart components use their own default brush palette. Always explicitly set `[brushes]` and `[outlines]` with space-separated hex colors extracted from the Phase 1d design context to match the Figma series colors: `[brushes]="'#9DE772 #6DB1FF'"`
186
228
 
187
229
  | Kit Component Name | Angular Selector | IgxXxx Class | `get_doc` Key | Key Inputs / Variants |
188
230
  | ---------------------------------------------------------------- | -------------------------------------- | ---------------------------- | ----------------------- | ------------------------------------------------------------------------------------- |
189
- | `_Category Chart` / `_Line Chart` / `_Area Chart` / `_Bar Chart` | `<igx-category-chart>` | `IgxCategoryChartComponent` | — | `[dataSource]`, `[chartType]`, `[brushes]`, `[outlines]`, `[legend]`, `[markerTypes]` |
190
- | `_Pie Chart` / `_Donut Chart` | `<igx-pie-chart>` | `IgxPieChartComponent` | — | `[dataSource]`, `[valueMemberPath]`, `[labelMemberPath]` |
191
- | `_Financial Chart` / `_Stock Chart` | `<igx-financial-chart>` | `IgxFinancialChartComponent` | — | `[dataSource]`, `[chartType]` (`Candle\|Bar\|Line`), `[volumeType]` |
192
- | `_Sparkline` | `<igx-sparkline>` | `IgxSparklineComponent` | — | `[dataSource]`, `[valueMemberPath]`, `[displayType]` (`Line\|Area\|Column\|WinLoss`) |
193
- | `_Data Chart` | `<igx-data-chart>` | `IgxDataChartComponent` | — | `[dataSource]`; series added as child elements |
194
- | `_Doughnut Chart` | `<igx-doughnut-chart>` | `IgxDoughnutChartComponent` | — | `[dataSource]`; `<igx-ring-series>` children |
195
- | `_Treemap` | `<igx-treemap>` | `IgxTreemapComponent` | — | `[dataSource]`, `[valueMemberPath]`, `[labelMemberPath]` |
196
- | `_Funnel Chart` | `<igx-funnel-chart>` | `IgxFunnelChartComponent` | — | `[dataSource]`, `[valueMemberPath]`, `[labelMemberPath]` |
197
- | `_Scatter Chart` / `_Bubble Chart` | `<igx-data-chart>` with scatter series | `IgxDataChartComponent` | — | Use `<igx-scatter-series>` or `<igx-bubble-series>` |
231
+ | `_Category Chart` / `_Line Chart` / `_Area Chart` / `_Bar Chart` | `<igx-category-chart>` | `IgxCategoryChartComponent` | `types-line-chart` / `types-area-chart` / `types-column-chart` / `types-bar-chart` | `[dataSource]`, `[chartType]`, `[brushes]`, `[outlines]`, `[legend]`, `[markerTypes]` |
232
+ | `_Pie Chart` | `<igx-pie-chart>` | `IgxPieChartComponent` | `types-pie-chart` | `[dataSource]`, `[valueMemberPath]`, `[labelMemberPath]` |
233
+ | `_Financial Chart` / `_Stock Chart` | `<igx-financial-chart>` | `IgxFinancialChartComponent` | `types-stock-chart` | `[dataSource]`, `[chartType]` (`Candle\|Bar\|Line`), `[volumeType]` |
234
+ | `_Sparkline` | `<igx-sparkline>` | `IgxSparklineComponent` | `types-sparkline-chart` | `[dataSource]`, `[valueMemberPath]`, `[displayType]` (`Line\|Area\|Column\|WinLoss`) |
235
+ | `_Data Chart` | `<igx-data-chart>` | `IgxDataChartComponent` | `charts-chart-overview` | `[dataSource]`; series added as child elements |
236
+ | `_Doughnut Chart` / `_Donut Chart` | `<igx-doughnut-chart>` | `IgxDoughnutChartComponent` | `types-donut-chart` | `[dataSource]`; `<igx-ring-series>` children |
237
+ | `_Treemap` | `<igx-treemap>` | `IgxTreemapComponent` | `types-treemap-chart` | `[dataSource]`, `[valueMemberPath]`, `[labelMemberPath]` |
238
+ | `_Funnel Chart` | `<igx-funnel-chart>` | `IgxFunnelChartComponent` | search `funnel chart` | `[dataSource]`, `[valueMemberPath]`, `[innerLabelMemberPath]`, `[outerLabelMemberPath]` |
239
+ | `_Scatter Chart` / `_Bubble Chart` | `<igx-data-chart>` with scatter series | `IgxDataChartComponent` | `types-scatter-chart` / `types-bubble-chart` | Use `<igx-scatter-series>` or `<igx-bubble-series>` |
198
240
 
199
241
  ---
200
242
 
@@ -216,7 +258,7 @@
216
258
 
217
259
  | Kit Component Name | Angular Selector | IgxXxx Class | `get_doc` Key | Key Inputs / Variants |
218
260
  | ------------------ | ---------------------- | --------------------------- | ------------- | -------------------------------------------------------------------------------------------------- |
219
- | `_Geographic Map` | `<igx-geographic-map>` | `IgxGeographicMapComponent` | `map` | `[zoomable]`; `<igx-geographic-symbol-series>` or `<igx-geographic-shape-series>` for data overlay |
261
+ | `_Geographic Map` | `<igx-geographic-map>` | `IgxGeographicMapComponent` | `geo-map` | `[zoomable]`; `<igx-geographic-symbol-series>` or `<igx-geographic-shape-series>` for data overlay |
220
262
 
221
263
  ---
222
264
 
@@ -224,7 +266,7 @@
224
266
 
225
267
  | Kit Component Name | Angular Selector | Directive Class | `get_doc` Key | Notes |
226
268
  | ------------------ | -------------------------------------------- | --------------------- | ------------- | --------------------------------------------------------------------------- |
227
- | `_Tooltip` | `igxTooltip` on trigger + `igxTooltipTarget` | `IgxTooltipDirective` | `tooltip` | Pair `igxTooltipTarget` on the host and `igxTooltip` on the tooltip element |
269
+ | `_Tooltip` | `igxTooltipTarget` on the trigger + `igxTooltip` on the tooltip element | `IgxTooltipDirective` | `tooltip` | Pair `igxTooltipTarget` on the host and `igxTooltip` on the tooltip element |
228
270
  | `_Ripple` | `igxRipple` attribute | `IgxRippleDirective` | `ripple` | Add to any interactive element |
229
271
 
230
272
  ---
@@ -235,42 +277,35 @@
235
277
  | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
236
278
  | Open-source package | `import { Igx... } from 'igniteui-angular/<entry-point>'` |
237
279
  | Licensed package | `import { Igx... } from '@infragistics/igniteui-angular/<entry-point>'` |
238
- | Web components (Tile Manager, Dock Manager) | `import 'igniteui-dockmanager'` / see [`layout-manager.md`](../../igniteui-angular-components/references/layout-manager.md) in the components skill |
280
+ | Web components (Tile Manager, Dock Manager) | Dock Manager: `defineComponents(IgcDockManagerComponent)` from `igniteui-dockmanager` (`defineCustomElements()` is deprecated since 2.0.0) / see [`layout-manager.md`](../../igniteui-angular-components/references/layout-manager.md) in the components skill |
239
281
  | Rating web component | `import { IgcRatingComponent, defineComponents } from 'igniteui-webcomponents'` + `CUSTOM_ELEMENTS_SCHEMA` |
240
282
  | DV charts/gauges/maps | Require separate `igniteui-angular-charts`, `igniteui-angular-gauges`, or `igniteui-angular-maps` packages |
241
283
 
242
- > **DV package install:** determine the installed Ignite UI version first
243
- > (`npm list igniteui-angular`), then install the closest matching DV package version.
244
- > If no exact version match exists, install the closest lower version with
245
- > `--legacy-peer-deps`. Always ask for approval before installing any new package.
284
+ > **DV package install:** determine the installed Ignite UI version first (`npm list igniteui-angular`), then install the closest matching DV package version. If no exact version match exists, install the closest lower version with `--legacy-peer-deps`. Always ask for approval before installing any new package.
246
285
 
247
286
  ---
248
287
 
249
288
  ## Material Icons Extended (`@igniteui/material-icons-extended`)
250
289
 
251
- The Indigo.Design UI Kit for Material includes domain and navigation icons from
252
- `@igniteui/material-icons-extended`. These appear in Figma component descriptions with
253
- the suffix **"material extended"**.
290
+ The Indigo.Design UI Kit for Material includes domain and navigation icons from `@igniteui/material-icons-extended`. These appear in Figma component descriptions with the suffix **"material extended"**.
254
291
 
255
- **Detection in Phase 1d:** scan all `data-name` or component description strings for
256
- "material extended". If found, add this package to the required packages list and ask
257
- for user approval before Phase 4.
292
+ **Detection in Phase 1d:** scan all `data-name` or component description strings for "material extended".
258
293
 
259
- **Setup:**
260
-
261
- ```bash
262
- npm install @igniteui/material-icons-extended
263
- ```
294
+ **Setup:** the package is already a dependency of `igniteui-angular`, so it is installed. Add it to the app's own `package.json` (with the user's approval) only when a strict package manager (pnpm, Yarn PnP) refuses the direct import.
264
295
 
265
296
  ```typescript
266
- // In root component (e.g. app.ts)
297
+ // In the root component (e.g. app.ts)
298
+ import { Component, OnInit, inject } from '@angular/core';
267
299
  import { IgxIconService } from 'igniteui-angular/icon';
268
- import { addIcons } from '@igniteui/material-icons-extended';
300
+ import { all } from '@igniteui/material-icons-extended';
301
+ // To register fewer, import individual icons instead:
302
+ // import { creditCards, piggyBank } from '@igniteui/material-icons-extended';
269
303
 
270
- export class AppComponent implements OnInit {
304
+ @Component({ selector: 'app-root', templateUrl: './app.html' })
305
+ export class App implements OnInit {
271
306
  private iconService = inject(IgxIconService);
272
307
  ngOnInit() {
273
- for (const icon of addIcons()) {
308
+ for (const icon of all) {
274
309
  this.iconService.addSvgIconFromText(icon.name, icon.value, 'imx-icons');
275
310
  }
276
311
  }
@@ -291,7 +326,26 @@ export class AppComponent implements OnInit {
291
326
  | loan, borrow | `loan` |
292
327
  | crypto, bitcoin | `bitcoin` |
293
328
  | calculator, math | `calculator` |
294
- | poll, analytics | `poll` |
329
+
330
+ ### Icons from other kits
331
+
332
+ Third-party kits come with their own icon sets. Identify the set from the icon instance names (`lucide/chevron-down`, `ic_fluent_…`, `Icon / arrow-right`, `Symbols/…`), from the component descriptions, or from the kit fingerprint in `design-provenance.md`. Then register the glyphs the design uses **from that set's SVG package** with `IgxIconService.addSvgIconFromText(name, svgText, family)`:
333
+
334
+ | Icon set | SVG source package (confirm name, version, and license before installing) |
335
+ | --- | --- |
336
+ | Material Symbols | `@material-symbols/svg-400` (pick the weight/fill the design uses) |
337
+ | Fluent System Icons | `@fluentui/svg-icons` |
338
+ | Lucide (shadcn/ui kits) | `lucide-static` |
339
+ | Bootstrap Icons | `bootstrap-icons` |
340
+ | Heroicons | `heroicons` |
341
+ | Phosphor | `@phosphor-icons/core` |
342
+ | Ant Design Icons | `@ant-design/icons-svg` |
343
+
344
+ ```html
345
+ <igx-icon family="lucide" name="chevron-down"></igx-icon>
346
+ ```
347
+
348
+ Register only the glyphs the design uses. When the set is paid (for example Untitled UI Icons Pro) or unknown, or is not licensed for the web (SF Symbols), extract the used glyphs as SVG with Tier 1 Method B from `asset-extraction.md` and register those instead. Tell the user which icons came from a licensed set.
295
349
 
296
350
  ---
297
351
 
@@ -299,7 +353,7 @@ export class AppComponent implements OnInit {
299
353
 
300
354
  When you encounter a Figma layer that is **not in this table**:
301
355
 
302
- 1. Extract the visual pattern (is it a list? a form field? a card?)
356
+ 1. Normalize it with [design-provenance.md](design-provenance.md) (Tier B variant properties, or Tier C structure) and retry the Canonical Role Index. Otherwise, extract the visual pattern (is it a list? a form field? a card?)
303
357
  2. Call `list_components({ framework: "angular" })` and scan for the closest match
304
358
  3. Call `get_doc` on the closest match before generating code
305
359
  4. If no Ignite UI component matches after a genuine attempt, use plain semantic HTML and document the reason in a code comment