@igniteui/angular-templates 21.1.14100-alpha.2 → 21.1.14100-alpha.4

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 (23) hide show
  1. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/SKILL.md +68 -0
  2. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/charts.md +457 -0
  3. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/data-display.md +360 -0
  4. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/directives.md +272 -0
  5. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/feedback.md +149 -0
  6. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/form-controls.md +313 -0
  7. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/layout-manager.md +420 -0
  8. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/layout.md +225 -0
  9. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-components/references/setup.md +166 -0
  10. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/SKILL.md +110 -0
  11. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/data-operations.md +445 -0
  12. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/editing.md +491 -0
  13. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/features.md +234 -0
  14. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/paging-remote.md +397 -0
  15. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/state.md +314 -0
  16. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/structure.md +299 -0
  17. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-grids/references/types.md +507 -0
  18. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-theming/SKILL.md +439 -0
  19. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-theming/references/common-patterns.md +45 -0
  20. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-theming/references/contributing.md +471 -0
  21. package/igx-ts/projects/_base/files/__dot__claude/skills/igniteui-angular-theming/references/mcp-setup.md +77 -0
  22. package/igx-ts/projects/_base/files/__dot__vscode/mcp.json +2 -2
  23. package/package.json +2 -2
@@ -0,0 +1,420 @@
1
+ # Layout Manager & Dock Manager
2
+
3
+ > **Part of the [`igniteui-angular-components`](../SKILL.md) skill hub.**
4
+ > For app setup, providers, and import patterns — see [`setup.md`](./setup.md).
5
+
6
+ ## Contents
7
+
8
+ - [Layout Manager Directives](#layout-manager-directives)
9
+ - [Dock Manager](#dock-manager)
10
+
11
+ ---
12
+
13
+ ## Layout Manager Directives
14
+
15
+ > **Docs:** [Layout Manager](https://www.infragistics.com/products/ignite-ui-angular/angular/components/layout)
16
+
17
+ The Layout Manager is a pair of Angular directives (`igxLayout` / `igxFlex`) that wrap CSS Flexbox. Apply `igxLayout` to any container to control its children's flow; apply `igxFlex` to individual children to control their flex properties.
18
+
19
+ ```typescript
20
+ import { IgxLayoutDirective, IgxFlexDirective } from 'igniteui-angular/directives';
21
+ ```
22
+
23
+ ```html
24
+ <!-- Basic row layout -->
25
+ <div igxLayout igxLayoutDir="row" igxLayoutJustify="space-between">
26
+ <div igxFlex>Item 1</div>
27
+ <div igxFlex>Item 2</div>
28
+ <div igxFlex>Item 3</div>
29
+ </div>
30
+ ```
31
+
32
+ ### Common Layout Patterns
33
+
34
+ #### App Shell (Sidebar + Content)
35
+
36
+ ```html
37
+ <div igxLayout igxLayoutDir="row" style="height: 100vh;">
38
+
39
+ <!-- Sidebar column -->
40
+ <div igxFlex igxFlexGrow="0" igxFlexShrink="0" igxFlexBasis="240px"
41
+ igxLayout igxLayoutDir="column" class="sidebar">
42
+ <div igxFlex>Nav item 1</div>
43
+ <div igxFlex>Nav item 2</div>
44
+ </div>
45
+
46
+ <!-- Main content column -->
47
+ <div igxFlex igxLayout igxLayoutDir="column" class="main">
48
+ <div igxFlex igxFlexGrow="0" class="header">Header</div>
49
+ <div igxFlex class="body">
50
+ <!-- Nested row -->
51
+ <div igxLayout igxLayoutDir="row">
52
+ <div igxFlex>Col 1</div>
53
+ <div igxFlex>Col 2</div>
54
+ <div igxFlex>Col 3</div>
55
+ </div>
56
+ </div>
57
+ <div igxFlex igxFlexGrow="0" class="footer">Footer</div>
58
+ </div>
59
+
60
+ </div>
61
+ ```
62
+
63
+ #### Centered Content
64
+
65
+ ```html
66
+ <div igxLayout igxLayoutDir="row" igxLayoutJustify="center" igxLayoutItemAlign="center"
67
+ style="height: 100vh;">
68
+ <div igxFlex igxFlexGrow="0">Centered content</div>
69
+ </div>
70
+ ```
71
+
72
+ #### Wrapping Tiles
73
+
74
+ ```html
75
+ <div igxLayout igxLayoutDir="row" igxLayoutWrap="wrap" igxLayoutJustify="flex-start">
76
+ @for (item of items; track item.id) {
77
+ <div igxFlex igxFlexBasis="200px" igxFlexGrow="0" class="tile">
78
+ {{ item.title }}
79
+ </div>
80
+ }
81
+ </div>
82
+ ```
83
+
84
+ ### `igxLayout` Directive Inputs
85
+
86
+ | Input | Values | Default | Description |
87
+ |---|---|---|---|
88
+ | `igxLayoutDir` | `'row'` \| `'column'` | `'row'` | Flex direction |
89
+ | `igxLayoutReverse` | `true` \| `false` | `false` | Reverse flow order |
90
+ | `igxLayoutWrap` | `'nowrap'` \| `'wrap'` \| `'wrap-reverse'` | `'nowrap'` | Child wrapping |
91
+ | `igxLayoutJustify` | `'flex-start'` \| `'center'` \| `'flex-end'` \| `'space-between'` \| `'space-around'` | `'flex-start'` | Main axis alignment |
92
+ | `igxLayoutItemAlign` | `'flex-start'` \| `'center'` \| `'flex-end'` \| `'stretch'` \| `'baseline'` | `'stretch'` | Cross axis alignment |
93
+
94
+ ### `igxFlex` Directive Inputs
95
+
96
+ | Input | Type | Default | Description |
97
+ |---|---|---|---|
98
+ | `igxFlexGrow` | `number` | `1` | How much the element grows to fill space |
99
+ | `igxFlexShrink` | `number` | `1` | How much the element shrinks when space is limited |
100
+ | `igxFlexBasis` | `string` | `'auto'` | Initial main-axis size (e.g., `'200px'`, `'30%'`) |
101
+ | `igxFlexOrder` | `number` | `0` | Visual order among siblings |
102
+
103
+ ### Key Rules for Layout Manager
104
+
105
+ - `igxLayout` affects its **immediate children only** — nest multiple `igxLayout` containers for deeper control
106
+ - Combine `igxLayoutDir="column"` on the outer container with `igxFlex` on children to create page shells
107
+ - `igxFlexGrow="0"` on headers/footers/sidebars prevents them from stretching; leave it at `1` (default) for the main content area
108
+ - This is a thin CSS Flexbox wrapper — the container element gets `display: flex` applied
109
+
110
+ ---
111
+
112
+ ## Dock Manager
113
+
114
+ > **Docs:** [Dock Manager (Angular)](https://www.infragistics.com/products/ignite-ui-angular/angular/components/dock-manager)
115
+ > **Full API Docs:** [Dock Manager Web Component](https://www.infragistics.com/products/ignite-ui-web-components/web-components/components/dock-manager.html)
116
+
117
+ The Dock Manager is a **separate package** (`igniteui-dockmanager`) and is implemented as a **Web Component** (`<igc-dockmanager>`). It provides IDE-style dockable, resizable, floating, and tabbed pane layouts. It is a **premium** (licensed) component.
118
+
119
+ ### Installation
120
+
121
+ ```bash
122
+ npm install igniteui-dockmanager
123
+ ```
124
+
125
+ ### Setup
126
+
127
+ Because Dock Manager is a Web Component, it requires two one-time setup steps:
128
+
129
+ **1. Register custom elements — `main.ts`:**
130
+
131
+ ```typescript
132
+ import { defineCustomElements } from 'igniteui-dockmanager/loader';
133
+
134
+ // Must be called before bootstrapApplication
135
+ defineCustomElements();
136
+ ```
137
+
138
+ **2. Add `CUSTOM_ELEMENTS_SCHEMA` to every standalone component that uses `<igc-dockmanager>`:**
139
+
140
+ ```typescript
141
+ import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
142
+
143
+ @Component({
144
+ selector: 'app-dock-manager',
145
+ templateUrl: './dock-manager.component.html',
146
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
147
+ })
148
+ export class DockManagerComponent { ... }
149
+ ```
150
+
151
+ ### Basic Usage
152
+
153
+ ```typescript
154
+ import { ChangeDetectionStrategy, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
155
+ import {
156
+ IgcDockManagerLayout,
157
+ IgcDockManagerPaneType,
158
+ IgcSplitPaneOrientation
159
+ } from 'igniteui-dockmanager';
160
+
161
+ @Component({
162
+ selector: 'app-dock-manager',
163
+ templateUrl: './dock-manager.component.html',
164
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
165
+ changeDetection: ChangeDetectionStrategy.OnPush
166
+ })
167
+ export class DockManagerComponent {
168
+ layout: IgcDockManagerLayout = {
169
+ rootPane: {
170
+ type: IgcDockManagerPaneType.splitPane,
171
+ orientation: IgcSplitPaneOrientation.horizontal,
172
+ panes: [
173
+ {
174
+ type: IgcDockManagerPaneType.contentPane,
175
+ contentId: 'sidebar',
176
+ header: 'Explorer'
177
+ },
178
+ {
179
+ type: IgcDockManagerPaneType.documentHost,
180
+ rootPane: {
181
+ type: IgcDockManagerPaneType.splitPane,
182
+ orientation: IgcSplitPaneOrientation.horizontal,
183
+ allowEmpty: true,
184
+ panes: [
185
+ {
186
+ type: IgcDockManagerPaneType.tabGroupPane,
187
+ panes: [
188
+ {
189
+ type: IgcDockManagerPaneType.contentPane,
190
+ header: 'File 1',
191
+ contentId: 'doc1',
192
+ documentOnly: true
193
+ },
194
+ {
195
+ type: IgcDockManagerPaneType.contentPane,
196
+ header: 'File 2',
197
+ contentId: 'doc2',
198
+ documentOnly: true
199
+ }
200
+ ]
201
+ }
202
+ ]
203
+ }
204
+ },
205
+ {
206
+ type: IgcDockManagerPaneType.splitPane,
207
+ orientation: IgcSplitPaneOrientation.vertical,
208
+ size: 280,
209
+ panes: [
210
+ {
211
+ type: IgcDockManagerPaneType.contentPane,
212
+ contentId: 'properties',
213
+ header: 'Properties'
214
+ },
215
+ {
216
+ type: IgcDockManagerPaneType.contentPane,
217
+ contentId: 'output',
218
+ header: 'Output',
219
+ isPinned: false // starts unpinned (auto-hidden)
220
+ }
221
+ ]
222
+ }
223
+ ]
224
+ },
225
+ floatingPanes: [
226
+ {
227
+ type: IgcDockManagerPaneType.splitPane,
228
+ orientation: IgcSplitPaneOrientation.horizontal,
229
+ floatingWidth: 300,
230
+ floatingHeight: 200,
231
+ floatingLocation: { x: 200, y: 150 },
232
+ panes: [
233
+ {
234
+ type: IgcDockManagerPaneType.contentPane,
235
+ contentId: 'search',
236
+ header: 'Search'
237
+ }
238
+ ]
239
+ }
240
+ ]
241
+ };
242
+ }
243
+ ```
244
+
245
+ ```html
246
+ <!-- Each slot value matches a contentId in the layout -->
247
+ <igc-dockmanager [layout]="layout" style="height: 100vh; display: block;">
248
+ <div slot="sidebar">File explorer content</div>
249
+ <div slot="doc1">Document 1 content</div>
250
+ <div slot="doc2">Document 2 content</div>
251
+ <div slot="properties">Properties panel</div>
252
+ <div slot="output">Output panel</div>
253
+ <div slot="search">Search panel</div>
254
+ </igc-dockmanager>
255
+ ```
256
+
257
+ ### Full Example (from user-provided code)
258
+
259
+ ```typescript
260
+ import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
261
+ import {
262
+ IgcDockManagerLayout,
263
+ IgcDockManagerPaneType,
264
+ IgcSplitPaneOrientation
265
+ } from 'igniteui-dockmanager';
266
+
267
+ @Component({
268
+ selector: 'app-dock-manager',
269
+ templateUrl: './dock-manager.component.html',
270
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
271
+ })
272
+ export class DockManagerComponent {
273
+ layout: IgcDockManagerLayout = {
274
+ rootPane: {
275
+ type: IgcDockManagerPaneType.splitPane,
276
+ orientation: IgcSplitPaneOrientation.horizontal,
277
+ panes: [
278
+ {
279
+ type: IgcDockManagerPaneType.splitPane,
280
+ orientation: IgcSplitPaneOrientation.vertical,
281
+ panes: [
282
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content1', header: 'Content Pane 1' },
283
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content2', header: 'Unpinned Pane 1', isPinned: false }
284
+ ]
285
+ },
286
+ {
287
+ type: IgcDockManagerPaneType.splitPane,
288
+ orientation: IgcSplitPaneOrientation.vertical,
289
+ size: 200,
290
+ panes: [
291
+ {
292
+ type: IgcDockManagerPaneType.documentHost,
293
+ size: 200,
294
+ rootPane: {
295
+ type: IgcDockManagerPaneType.splitPane,
296
+ orientation: IgcSplitPaneOrientation.horizontal,
297
+ allowEmpty: true,
298
+ panes: [
299
+ {
300
+ type: IgcDockManagerPaneType.tabGroupPane,
301
+ panes: [
302
+ { type: IgcDockManagerPaneType.contentPane, header: 'Document 1', contentId: 'content3', documentOnly: true },
303
+ { type: IgcDockManagerPaneType.contentPane, header: 'Document 2', contentId: 'content4', documentOnly: true }
304
+ ]
305
+ }
306
+ ]
307
+ }
308
+ },
309
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content5', header: 'Unpinned Pane 2', isPinned: false }
310
+ ]
311
+ },
312
+ {
313
+ type: IgcDockManagerPaneType.splitPane,
314
+ orientation: IgcSplitPaneOrientation.vertical,
315
+ panes: [
316
+ {
317
+ type: IgcDockManagerPaneType.tabGroupPane,
318
+ size: 200,
319
+ panes: [
320
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content6', header: 'Tab 1' },
321
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content7', header: 'Tab 2' },
322
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content8', header: 'Tab 3' },
323
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content9', header: 'Tab 4' },
324
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content10', header: 'Tab 5' }
325
+ ]
326
+ },
327
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content11', header: 'Content Pane 2' }
328
+ ]
329
+ }
330
+ ]
331
+ },
332
+ floatingPanes: [
333
+ {
334
+ type: IgcDockManagerPaneType.splitPane,
335
+ orientation: IgcSplitPaneOrientation.horizontal,
336
+ floatingHeight: 150,
337
+ floatingWidth: 250,
338
+ floatingLocation: { x: 300, y: 200 },
339
+ panes: [
340
+ { type: IgcDockManagerPaneType.contentPane, contentId: 'content12', header: 'Floating Pane' }
341
+ ]
342
+ }
343
+ ]
344
+ };
345
+ }
346
+ ```
347
+
348
+ ```html
349
+ <igc-dockmanager [layout]="layout" style="height: 600px;">
350
+ <div slot="content1" class="dockManagerContent">Content 1</div>
351
+ <div slot="content2" class="dockManagerContent">Content 2</div>
352
+ <div slot="content3" class="dockManagerContent">Content 3</div>
353
+ <div slot="content4" class="dockManagerContent">Content 4</div>
354
+ <div slot="content5" class="dockManagerContent">Content 5</div>
355
+ <div slot="content6" class="dockManagerContent">Content 6</div>
356
+ <div slot="content7" class="dockManagerContent">Content 7</div>
357
+ <div slot="content8" class="dockManagerContent">Content 8</div>
358
+ <div slot="content9" class="dockManagerContent">Content 9</div>
359
+ <div slot="content10" class="dockManagerContent">Content 10</div>
360
+ <div slot="content11" class="dockManagerContent">Content 11</div>
361
+ <div slot="content12" class="dockManagerContent">Content 12</div>
362
+ </igc-dockmanager>
363
+ ```
364
+
365
+ ### Pane Types
366
+
367
+ | `IgcDockManagerPaneType` | Purpose |
368
+ |---|---|
369
+ | `splitPane` | Splits space horizontally or vertically between child panes |
370
+ | `contentPane` | A single leaf pane that renders a slotted element via `contentId` |
371
+ | `tabGroupPane` | Groups multiple `contentPane` children as tabs |
372
+ | `documentHost` | A special area for `documentOnly: true` panes (like an editor area) |
373
+
374
+ ### `IgcSplitPaneOrientation`
375
+
376
+ | Value | Layout |
377
+ |---|---|
378
+ | `horizontal` | Children placed left-to-right |
379
+ | `vertical` | Children placed top-to-bottom |
380
+
381
+ ### Key `contentPane` Properties
382
+
383
+ | Property | Type | Description |
384
+ |---|---|---|
385
+ | `contentId` | `string` | Matches the `slot` attribute on the rendered HTML element |
386
+ | `header` | `string` | Tab/title bar label |
387
+ | `isPinned` | `boolean` | `false` = auto-hidden (collapsed to edge); default `true` |
388
+ | `documentOnly` | `boolean` | Restricts pane to `documentHost` areas only |
389
+ | `size` | `number` | Relative size within parent split |
390
+ | `allowClose` | `boolean` | Show close button (default `true`) |
391
+ | `allowPinning` | `boolean` | Allow user to pin/unpin (default `true`) |
392
+ | `allowFloating` | `boolean` | Allow user to float the pane (default `true`) |
393
+
394
+ ### Key `splitPane` / floating pane Properties
395
+
396
+ | Property | Type | Description |
397
+ |---|---|---|
398
+ | `orientation` | `IgcSplitPaneOrientation` | `horizontal` or `vertical` |
399
+ | `size` | `number` | Relative size in the parent split |
400
+ | `allowEmpty` | `boolean` | Allow pane to remain when all children are closed |
401
+ | `floatingWidth` | `number` | Initial width of floating pane (px) |
402
+ | `floatingHeight` | `number` | Initial height of floating pane (px) |
403
+ | `floatingLocation` | `{x, y}` | Initial top-left corner position of floating pane |
404
+
405
+ ### Key Rules for Dock Manager
406
+
407
+ 1. **Separate package** — `igniteui-dockmanager` is installed independently of `igniteui-angular`
408
+ 2. **Call `defineCustomElements()` in `main.ts`** before `bootstrapApplication` — without this the `<igc-dockmanager>` element renders as an unknown element
409
+ 3. **Add `CUSTOM_ELEMENTS_SCHEMA`** to every standalone component or NgModule that uses `<igc-dockmanager>`
410
+ 4. **Slot names = `contentId` values** — the `slot="..."` attribute on child elements must exactly match the `contentId` string in the layout
411
+ 5. **Premium component** — requires a licensed Ignite UI subscription; verify availability before recommending to users
412
+ 6. **Not part of `igniteui-angular`** — do not import from `igniteui-angular` entry points; all Dock Manager types come from `igniteui-dockmanager`
413
+
414
+ ## See Also
415
+
416
+ - [`setup.md`](./setup.md) — App providers, architecture, all entry points
417
+ - [`layout.md`](./layout.md) — Tabs, Stepper, Accordion, Splitter, Navigation Drawer
418
+ - [`data-display.md`](./data-display.md) — List, Tree, Card and other display components
419
+ - [`feedback.md`](./feedback.md) — Dialog, Snackbar, Toast, Banner
420
+ - [`directives.md`](./directives.md) — Button, Ripple, Tooltip, Drag and Drop
@@ -0,0 +1,225 @@
1
+ # Layout Components
2
+
3
+ > **Part of the [`igniteui-angular-components`](../SKILL.md) skill hub.**
4
+ > For app setup, providers, and import patterns — see [`setup.md`](./setup.md).
5
+
6
+ ## Contents
7
+
8
+ - [Tabs](#tabs)
9
+ - [Bottom Navigation](#bottom-navigation)
10
+ - [Stepper](#stepper)
11
+ - [Accordion](#accordion)
12
+ - [Splitter](#splitter)
13
+ - [Navigation Drawer](#navigation-drawer)
14
+
15
+ ## Tabs
16
+
17
+ > **Docs:** [Tabs Component](https://www.infragistics.com/products/ignite-ui-angular/angular/components/tabs)
18
+
19
+ ```typescript
20
+ import { IGX_TABS_DIRECTIVES } from 'igniteui-angular/tabs';
21
+ import { IgxIconComponent } from 'igniteui-angular/icon';
22
+ ```
23
+
24
+ ```html
25
+ <igx-tabs [(selectedIndex)]="activeTab">
26
+ <igx-tab-item>
27
+ <igx-tab-header>
28
+ <igx-icon igxTabHeaderIcon>info</igx-icon>
29
+ <span igxTabHeaderLabel>Info</span>
30
+ </igx-tab-header>
31
+ <igx-tab-content>Content for Info tab</igx-tab-content>
32
+ </igx-tab-item>
33
+ <igx-tab-item>
34
+ <igx-tab-header>
35
+ <span igxTabHeaderLabel>Settings</span>
36
+ </igx-tab-header>
37
+ <igx-tab-content>Settings content</igx-tab-content>
38
+ </igx-tab-item>
39
+ </igx-tabs>
40
+ ```
41
+
42
+ Key inputs: `[(selectedIndex)]`, `[tabAlignment]` (`'start'` | `'end'` | `'center'` | `'justify'`), `[disableAnimation]`.
43
+
44
+ ## Bottom Navigation
45
+
46
+ > **Docs:** [Bottom Navigation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/tabbar)
47
+
48
+ ```typescript
49
+ import { IgxBottomNavComponent, IgxBottomNavItemComponent, IgxBottomNavHeaderComponent, IgxBottomNavContentComponent } from 'igniteui-angular/bottom-nav';
50
+ ```
51
+
52
+ ```html
53
+ <igx-bottom-nav [(selectedIndex)]="activeNavItem">
54
+ <igx-bottom-nav-item>
55
+ <igx-bottom-nav-header>
56
+ <igx-icon>home</igx-icon>
57
+ <span>Home</span>
58
+ </igx-bottom-nav-header>
59
+ <igx-bottom-nav-content>Home content</igx-bottom-nav-content>
60
+ </igx-bottom-nav-item>
61
+ <igx-bottom-nav-item>
62
+ <igx-bottom-nav-header>
63
+ <igx-icon>settings</igx-icon>
64
+ <span>Settings</span>
65
+ </igx-bottom-nav-header>
66
+ <igx-bottom-nav-content>Settings content</igx-bottom-nav-content>
67
+ </igx-bottom-nav-item>
68
+ </igx-bottom-nav>
69
+ ```
70
+
71
+ ## Stepper
72
+
73
+ > **Docs:** [Stepper Component](https://www.infragistics.com/products/ignite-ui-angular/angular/components/stepper)
74
+
75
+ ```typescript
76
+ import { IGX_STEPPER_DIRECTIVES } from 'igniteui-angular/stepper';
77
+ ```
78
+
79
+ ```html
80
+ <igx-stepper [linear]="true" [orientation]="'horizontal'">
81
+ <igx-step [completed]="step1Done">
82
+ <div igxStepTitle>Account</div>
83
+ <div igxStepSubtitle>Create your account</div>
84
+ <div igxStepContent>
85
+ <!-- form fields -->
86
+ </div>
87
+ </igx-step>
88
+ <igx-step [optional]="true">
89
+ <div igxStepTitle>Profile</div>
90
+ <div igxStepSubtitle>Optional step</div>
91
+ <div igxStepContent>...</div>
92
+ </igx-step>
93
+ <igx-step>
94
+ <div igxStepTitle>Confirm</div>
95
+ <div igxStepContent>Review and submit</div>
96
+ </igx-step>
97
+ </igx-stepper>
98
+ ```
99
+
100
+ Key inputs: `[linear]`, `[orientation]` (`'horizontal'` | `'vertical'`), `[stepType]` (`'indicator'` | `'title'` | `'full'`), `[animationType]`.
101
+
102
+ Events: `(activeStepChanging)`, `(activeStepChanged)`.
103
+
104
+ Programmatic navigation:
105
+ ```typescript
106
+ stepper = viewChild.required(IgxStepperComponent);
107
+
108
+ next() { this.stepper().next(); }
109
+ prev() { this.stepper().prev(); }
110
+ navigateTo(index: number) { this.stepper().navigateTo(index); }
111
+ ```
112
+
113
+ ## Accordion
114
+
115
+ > **Docs:** [Accordion Component](https://www.infragistics.com/products/ignite-ui-angular/angular/components/accordion)
116
+
117
+ ```typescript
118
+ import { IgxAccordionComponent } from 'igniteui-angular/accordion';
119
+ import { IGX_EXPANSION_PANEL_DIRECTIVES } from 'igniteui-angular/expansion-panel';
120
+ ```
121
+
122
+ ```html
123
+ <igx-accordion [singleBranchExpand]="true">
124
+ <igx-expansion-panel>
125
+ <igx-expansion-panel-header>
126
+ <igx-expansion-panel-title>Panel 1</igx-expansion-panel-title>
127
+ <igx-expansion-panel-description>Subtitle text</igx-expansion-panel-description>
128
+ </igx-expansion-panel-header>
129
+ <igx-expansion-panel-body>
130
+ Content for panel 1
131
+ </igx-expansion-panel-body>
132
+ </igx-expansion-panel>
133
+ <igx-expansion-panel>
134
+ <igx-expansion-panel-header>
135
+ <igx-expansion-panel-title>Panel 2</igx-expansion-panel-title>
136
+ </igx-expansion-panel-header>
137
+ <igx-expansion-panel-body>Content for panel 2</igx-expansion-panel-body>
138
+ </igx-expansion-panel>
139
+ </igx-accordion>
140
+ ```
141
+
142
+ Standalone `igx-expansion-panel` (without accordion):
143
+ ```html
144
+ <igx-expansion-panel [(collapsed)]="isCollapsed">
145
+ <igx-expansion-panel-header>
146
+ <igx-expansion-panel-title>Settings</igx-expansion-panel-title>
147
+ </igx-expansion-panel-header>
148
+ <igx-expansion-panel-body>Content</igx-expansion-panel-body>
149
+ </igx-expansion-panel>
150
+ ```
151
+
152
+ ## Splitter
153
+
154
+ > **Docs:** [Splitter Component](https://www.infragistics.com/products/ignite-ui-angular/angular/components/splitter)
155
+
156
+ ```typescript
157
+ import { IgxSplitterComponent, IgxSplitterPaneComponent, SplitterType } from 'igniteui-angular/splitter';
158
+ ```
159
+
160
+ ```html
161
+ <!-- Horizontal split (side by side) -->
162
+ <igx-splitter [type]="SplitterType.Horizontal" style="height: 400px">
163
+ <igx-splitter-pane [size]="'30%'" [minSize]="'20%'">
164
+ Left panel content
165
+ </igx-splitter-pane>
166
+ <igx-splitter-pane>
167
+ Right panel content
168
+ </igx-splitter-pane>
169
+ </igx-splitter>
170
+
171
+ <!-- Vertical split (top/bottom) -->
172
+ <igx-splitter [type]="SplitterType.Vertical" style="height: 600px">
173
+ <igx-splitter-pane [size]="'50%'">Top panel</igx-splitter-pane>
174
+ <igx-splitter-pane>Bottom panel</igx-splitter-pane>
175
+ </igx-splitter>
176
+ ```
177
+
178
+ ## Navigation Drawer
179
+
180
+ > **Docs:** [Navigation Drawer](https://www.infragistics.com/products/ignite-ui-angular/angular/components/navdrawer)
181
+
182
+ ```typescript
183
+ import { IgxNavigationDrawerComponent, IgxNavDrawerItemDirective, IgxNavDrawerTemplateDirective, IgxNavDrawerMiniTemplateDirective } from 'igniteui-angular/navigation-drawer';
184
+ import { IgxIconComponent } from 'igniteui-angular/icon';
185
+ import { IgxRippleDirective } from 'igniteui-angular/directives';
186
+ ```
187
+
188
+ ```html
189
+ <igx-nav-drawer #drawer [isOpen]="drawerOpen" [pinThreshold]="1024" [pin]="isDesktop">
190
+ <ng-template igxDrawer>
191
+ <nav>
192
+ <span igxDrawerItem [isHeader]="true">Navigation</span>
193
+ <span igxDrawerItem igxRipple [active]="activeRoute === 'home'" routerLink="/home">
194
+ <igx-icon>home</igx-icon>
195
+ <span>Home</span>
196
+ </span>
197
+ <span igxDrawerItem igxRipple [active]="activeRoute === 'settings'" routerLink="/settings">
198
+ <igx-icon>settings</igx-icon>
199
+ <span>Settings</span>
200
+ </span>
201
+ </nav>
202
+ </ng-template>
203
+ <!-- Mini mode (icons only, shown when drawer is collapsed but pinned) -->
204
+ <ng-template igxDrawerMini>
205
+ <span igxDrawerItem igxRipple routerLink="/home"><igx-icon>home</igx-icon></span>
206
+ <span igxDrawerItem igxRipple routerLink="/settings"><igx-icon>settings</igx-icon></span>
207
+ </ng-template>
208
+ </igx-nav-drawer>
209
+
210
+ <button igxButton (click)="drawer.toggle()">Toggle Menu</button>
211
+ ```
212
+
213
+ Key inputs: `[isOpen]`, `[pin]` (dock to content), `[pinThreshold]` (auto-pin at viewport width), `[width]`, `[miniWidth]`.
214
+
215
+ Events: `(opened)`, `(closed)`, `(pinChange)`.
216
+
217
+ > **AGENT INSTRUCTION:** The Navigation Drawer uses the Ignite UI overlay/animation system — ensure `provideAnimations()` is in `app.config.ts`.
218
+
219
+ ## See Also
220
+
221
+ - [`setup.md`](./setup.md) — App providers, architecture, all entry points
222
+ - [`form-controls.md`](./form-controls.md) — Input Group, Combo, Select, Date/Time Pickers, Calendar, Checkbox, Radio, Switch, Slider
223
+ - [`data-display.md`](./data-display.md) — List, Tree, Card and other display components
224
+ - [`feedback.md`](./feedback.md) — Dialog, Snackbar, Toast, Banner
225
+ - [`directives.md`](./directives.md) — Button, Ripple, Tooltip, Drag and Drop