-
- Chip
-
-
- Chip
-
-
- Chip
-
+
+ {sizes.map((size) => (
+
+ {size.label}
+
+
+ Chip
+
+
+
+ ))}
);
}
diff --git a/samples/inputs/chip/state/README.md b/samples/inputs/chip/state/README.md
new file mode 100644
index 0000000000..d686abd9ef
--- /dev/null
+++ b/samples/inputs/chip/state/README.md
@@ -0,0 +1,50 @@
+This folder contains implementation of React application with example of State feature using [Chip](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Branches
+
+> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository.
+
+## Instructions
+
+Follow these instructions to run this example:
+
+
+```
+git clone https://github.com/IgniteUI/igniteui-react-examples.git
+cd ./igniteui-react-examples
+git checkout master
+cd ./samples/inputs/chip/state
+```
+
+open above folder in VS Code or type:
+```
+code .
+```
+
+In terminal window, run:
+```
+npm install
+npm start
+```
+
+Then open http://localhost:4200/ in your browser
+
+
+## Learn More
+
+To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html).
diff --git a/samples/inputs/chip/state/index.html b/samples/inputs/chip/state/index.html
new file mode 100644
index 0000000000..f309053474
--- /dev/null
+++ b/samples/inputs/chip/state/index.html
@@ -0,0 +1,11 @@
+
+
+
+
ChipState
+
+
+
+
+
+
+
diff --git a/samples/inputs/chip/state/package.json b/samples/inputs/chip/state/package.json
new file mode 100644
index 0000000000..ec147149e5
--- /dev/null
+++ b/samples/inputs/chip/state/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "react-chip-state",
+ "description": "This project provides example of Chip State using Infragistics React components",
+ "author": "Infragistics",
+ "homepage": ".",
+ "version": "1.4.0",
+ "private": true,
+ "scripts": {
+ "start": "vite --port 4200",
+ "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build",
+ "preview": "vite preview",
+ "test": "vitest"
+ },
+ "dependencies": {
+ "igniteui-dockmanager": "^2.2.1",
+ "igniteui-react": "19.9.0",
+ "igniteui-react-core": "19.6.0",
+ "igniteui-webcomponents": "~7.4.1",
+ "react": "^19.3.0",
+ "react-dom": "^19.3.0",
+ "tslib": "^2.4.0"
+ },
+ "devDependencies": {
+ "@types/jest": "^30.0.0",
+ "@types/node": "^24.7.1",
+ "@types/react": "^19.3.0",
+ "@types/react-dom": "^19.3.0",
+ "@vitejs/plugin-react": "^6.1.1",
+ "@vitest/browser": "^5.0.2",
+ "typescript": "^5.9.3",
+ "vite": "^8.3.1",
+ "vitest": "^5.0.2",
+ "vitest-canvas-mock": "^1.2.0",
+ "worker-loader": "^3.0.8"
+ },
+ "browserslist": [
+ ">0.2%",
+ "not dead",
+ "not ie <= 11",
+ "not op_mini all"
+ ]
+}
diff --git a/samples/inputs/chip/state/src/index.css b/samples/inputs/chip/state/src/index.css
new file mode 100644
index 0000000000..ec9e0c9615
--- /dev/null
+++ b/samples/inputs/chip/state/src/index.css
@@ -0,0 +1,49 @@
+/* shared styles are loaded from: */
+/* https://dl.infragistics.com/x/css/samples/shared.v8.css */
+
+/* Aktiv Grotesk, from the same Adobe Fonts kit the docs use. */
+@import url("https://use.typekit.net/bng2zgw.css");
+
+.chip-state {
+ --ig-size: var(--ig-size-medium);
+
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
+ gap: 1.5rem 2.5rem;
+}
+
+.chip-state-item {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 1rem;
+}
+
+/* The chip host is a block box, so its line box would add height around the chip. */
+.chip-state-item igc-chip {
+ display: flex;
+}
+
+.chip-state-item span {
+ color: var(--ig-gray-600);
+ font-family: aktiv-grotesk, sans-serif;
+ font-size: 0.8125rem;
+ font-weight: 400;
+ line-height: 1.25rem;
+ letter-spacing: 0.3px;
+}
+
+/* Hover and focus only happen on interaction, so these chips show the colors the theme uses for them. */
+igc-chip.state-hover::part(base) {
+ background: var(--hover-background);
+ color: var(--hover-text-color);
+}
+
+/* The focus ring color is transparent in themes that show focus through the background alone. */
+igc-chip.state-focused::part(base) {
+ background: var(--focus-background);
+ color: var(--focus-text-color);
+ outline: 0.25rem solid var(--focus-shadow-color);
+}
diff --git a/samples/inputs/chip/state/src/index.tsx b/samples/inputs/chip/state/src/index.tsx
new file mode 100644
index 0000000000..900476d71b
--- /dev/null
+++ b/samples/inputs/chip/state/src/index.tsx
@@ -0,0 +1,48 @@
+import { useEffect, useRef } from 'react';
+import ReactDOM from 'react-dom/client';
+import './index.css';
+import { IgrChip, IgrIcon, registerIconFromText } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+const arrowUpwardIcon = '
';
+
+const states = [
+ { label: 'Idle', className: '' },
+ { label: 'Hover', className: 'state-hover' },
+ { label: 'Focused', className: 'state-focused' },
+ { label: 'Selected', className: '', selected: true },
+];
+
+export default function ChipState() {
+ const sampleRef = useRef
(null);
+
+ useEffect(() => {
+ registerIconFromText('arrow_upward', arrowUpwardIcon, 'material');
+ }, []);
+
+ // The chips only show their look, so inert keeps them out of the tab order and ignores pointer input.
+ // It also keeps a real hover or focus from changing the hover and focused chips.
+ useEffect(() => {
+ if (sampleRef.current) {
+ sampleRef.current.inert = true;
+ }
+ }, []);
+
+ return (
+
+ {states.map((state) => (
+
+ {state.label}
+
+
+ Chip
+
+
+ ))}
+
+ );
+}
+
+// rendering above component to the React DOM
+const root = ReactDOM.createRoot(document.getElementById('root')!);
+root.render( );
diff --git a/samples/inputs/chip/state/tsconfig.json b/samples/inputs/chip/state/tsconfig.json
new file mode 100644
index 0000000000..e27a22be9b
--- /dev/null
+++ b/samples/inputs/chip/state/tsconfig.json
@@ -0,0 +1,24 @@
+{
+ "compilerOptions": {
+ "target": "es2020",
+ "lib": [
+ "es2020",
+ "dom",
+ "dom.iterable"
+ ],
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "jsx": "react-jsx",
+ "types": [
+ "vite/client"
+ ],
+ "strict": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "skipLibCheck": true,
+ "noEmit": true
+ },
+ "include": [
+ "src"
+ ]
+}
diff --git a/samples/inputs/chip/state/vite.config.js b/samples/inputs/chip/state/vite.config.js
new file mode 100644
index 0000000000..342e2b8e11
--- /dev/null
+++ b/samples/inputs/chip/state/vite.config.js
@@ -0,0 +1,8 @@
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+
+export default defineConfig({
+ plugins: [react()],
+ build: { outDir: 'build' },
+ server: { open: false },
+});
diff --git a/samples/inputs/chip/styling/package.json b/samples/inputs/chip/styling/package.json
index 4092645262..12fde85447 100644
--- a/samples/inputs/chip/styling/package.json
+++ b/samples/inputs/chip/styling/package.json
@@ -1,6 +1,6 @@
{
"name": "react-chip-styling",
- "description": "This project provides example of Icon Sizing using Infragistics React components",
+ "description": "This project provides example of Chip Styling using Infragistics React components",
"author": "Infragistics",
"homepage": ".",
"version": "1.4.0",
diff --git a/samples/inputs/chip/styling/src/ChipStyle.css b/samples/inputs/chip/styling/src/ChipStyle.css
deleted file mode 100644
index 988dd8101e..0000000000
--- a/samples/inputs/chip/styling/src/ChipStyle.css
+++ /dev/null
@@ -1,8 +0,0 @@
-igc-chip::part(base) {
- background: #011627;
- color: #ECAA53;
-}
-
-igc-chip::part(suffix) {
- color: #B7B6C2;
-}
\ No newline at end of file
diff --git a/samples/inputs/chip/styling/src/index.css b/samples/inputs/chip/styling/src/index.css
index 1f53b8aa05..733162b38c 100644
--- a/samples/inputs/chip/styling/src/index.css
+++ b/samples/inputs/chip/styling/src/index.css
@@ -1,2 +1,71 @@
/* shared styles are loaded from: */
-/* https://dl.infragistics.com/x/css/samples/shared.v8.css */
\ No newline at end of file
+/* https://dl.infragistics.com/x/css/samples/shared.v8.css */
+
+.chip-styling {
+ --ig-size: var(--ig-size-medium);
+
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
+ gap: 1.5rem 1.875rem;
+}
+
+/* The chip host is a block box, so its line box would add height around the chip. */
+.chip-styling igc-chip {
+ display: flex;
+}
+
+/* Default chip */
+.tag-chip {
+ --ig-chip-background: var(--ig-error-50);
+ --ig-chip-text-color: var(--ig-error-50-contrast);
+ --ig-chip-hover-background: var(--ig-error-100);
+ --ig-chip-hover-text-color: var(--ig-error-100-contrast);
+ --ig-chip-focus-background: var(--ig-error-200);
+ --ig-chip-focus-text-color: var(--ig-error-200-contrast);
+ --ig-chip-remove-icon-color: var(--ig-error-500);
+ --ig-chip-remove-icon-color-focus: var(--ig-error-500);
+}
+
+/* Selected chip */
+.filter-chip {
+ --ig-chip-selected-background: var(--ig-primary-50);
+ --ig-chip-selected-text-color: var(--ig-primary-50-contrast);
+ --ig-chip-hover-selected-background: var(--ig-primary-100);
+ --ig-chip-hover-selected-text-color: var(--ig-primary-100-contrast);
+ --ig-chip-focus-selected-background: var(--ig-primary-200);
+ --ig-chip-focus-selected-text-color: var(--ig-primary-200-contrast);
+}
+
+/* The prefix part holds the select icon. */
+.filter-chip::part(prefix) {
+ color: var(--ig-primary-500);
+}
+
+/* Outlined chips */
+.product-chip {
+ --ig-chip-outlined-background: var(--ig-surface-500);
+ --ig-chip-outlined-text-color: var(--ig-gray-700);
+ --ig-chip-border-color: var(--ig-gray-700);
+ --ig-chip-hover-outlined-text-color: var(--ig-gray-800);
+ --ig-chip-hover-border-color: var(--ig-gray-800);
+ --ig-chip-focus-outlined-text-color: var(--ig-gray-900);
+ --ig-chip-focus-border-color: var(--ig-gray-900);
+}
+
+.contact-chip {
+ --ig-chip-outlined-background: var(--ig-secondary-100);
+ --ig-chip-outlined-text-color: var(--ig-secondary-100-contrast);
+ --ig-chip-border-color: var(--ig-secondary-500);
+ --ig-chip-hover-outlined-background: var(--ig-secondary-200);
+ --ig-chip-hover-outlined-text-color: var(--ig-secondary-200-contrast);
+ --ig-chip-hover-border-color: var(--ig-secondary-500);
+ --ig-chip-focus-outlined-background: var(--ig-secondary-300);
+ --ig-chip-focus-outlined-text-color: var(--ig-secondary-300-contrast);
+ --ig-chip-focus-border-color: var(--ig-secondary-500);
+}
+
+.contact-chip::part(prefix) {
+ color: var(--ig-secondary-800);
+}
diff --git a/samples/inputs/chip/styling/src/index.tsx b/samples/inputs/chip/styling/src/index.tsx
index 382f35c202..e0bd718826 100644
--- a/samples/inputs/chip/styling/src/index.tsx
+++ b/samples/inputs/chip/styling/src/index.tsx
@@ -1,21 +1,35 @@
+import { useEffect } from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
-import './ChipStyle.css';
-import { IgrChip } from 'igniteui-react';
+import { IgrChip, IgrIcon, registerIconFromText } from 'igniteui-react';
import 'igniteui-webcomponents/themes/light/bootstrap.css';
-export default function ChipStyling() {
+// The outline takes the chip text color, and the filled half keeps the warning color.
+const halfStarIcon = ' ';
+const peopleIcon = ' ';
- function handleChipRemove(event: CustomEvent) {
- const chip = event.target as IgrChip;
- chip.remove();
- }
+export default function ChipStyling() {
+ useEffect(() => {
+ registerIconFromText('star_half', halfStarIcon, 'material');
+ registerIconFromText('people', peopleIcon, 'material');
+ }, []);
return (
-
-
- Chip
-
+
+
+ Prototyping
+
+
+ Motion Design
+
+
+ Sony Headphones
+
+
+
+
+ Simon and Lisa
+
);
}
diff --git a/samples/inputs/chip/tailwind-styling/README.md b/samples/inputs/chip/tailwind-styling/README.md
new file mode 100644
index 0000000000..321bbb9305
--- /dev/null
+++ b/samples/inputs/chip/tailwind-styling/README.md
@@ -0,0 +1,50 @@
+This folder contains implementation of React application with example of Tailwind Styling feature using [Chip](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Branches
+
+> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository.
+
+## Instructions
+
+Follow these instructions to run this example:
+
+
+```
+git clone https://github.com/IgniteUI/igniteui-react-examples.git
+cd ./igniteui-react-examples
+git checkout master
+cd ./samples/inputs/chip/tailwind-styling
+```
+
+open above folder in VS Code or type:
+```
+code .
+```
+
+In terminal window, run:
+```
+npm install
+npm start
+```
+
+Then open http://localhost:4200/ in your browser
+
+
+## Learn More
+
+To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html).
diff --git a/samples/inputs/chip/tailwind-styling/index.html b/samples/inputs/chip/tailwind-styling/index.html
new file mode 100644
index 0000000000..89f0a5f35a
--- /dev/null
+++ b/samples/inputs/chip/tailwind-styling/index.html
@@ -0,0 +1,11 @@
+
+
+
+
ChipTailwindStyling
+
+
+
+
+
+
+
diff --git a/samples/inputs/chip/tailwind-styling/package.json b/samples/inputs/chip/tailwind-styling/package.json
new file mode 100644
index 0000000000..6a2f5378eb
--- /dev/null
+++ b/samples/inputs/chip/tailwind-styling/package.json
@@ -0,0 +1,44 @@
+{
+ "name": "react-chip-tailwind-styling",
+ "description": "This project provides example of Chip Tailwind Styling using Infragistics React components",
+ "author": "Infragistics",
+ "homepage": ".",
+ "version": "1.4.0",
+ "private": true,
+ "scripts": {
+ "start": "vite --port 4200",
+ "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build",
+ "preview": "vite preview",
+ "test": "vitest"
+ },
+ "dependencies": {
+ "igniteui-dockmanager": "^2.2.1",
+ "igniteui-react": "19.9.0",
+ "igniteui-react-core": "19.6.0",
+ "igniteui-webcomponents": "~7.4.1",
+ "react": "^19.3.0",
+ "react-dom": "^19.3.0",
+ "tslib": "^2.4.0"
+ },
+ "devDependencies": {
+ "@tailwindcss/vite": "^4.1.14",
+ "@types/jest": "^30.0.0",
+ "@types/node": "^24.7.1",
+ "@types/react": "^19.3.0",
+ "@types/react-dom": "^19.3.0",
+ "@vitejs/plugin-react": "^6.1.1",
+ "@vitest/browser": "^5.0.2",
+ "tailwindcss": "^4.1.14",
+ "typescript": "^5.9.3",
+ "vite": "^8.3.1",
+ "vitest": "^5.0.2",
+ "vitest-canvas-mock": "^1.2.0",
+ "worker-loader": "^3.0.8"
+ },
+ "browserslist": [
+ ">0.2%",
+ "not dead",
+ "not ie <= 11",
+ "not op_mini all"
+ ]
+}
diff --git a/samples/inputs/chip/tailwind-styling/src/icons.ts b/samples/inputs/chip/tailwind-styling/src/icons.ts
new file mode 100644
index 0000000000..eb4b879d56
--- /dev/null
+++ b/samples/inputs/chip/tailwind-styling/src/icons.ts
@@ -0,0 +1,13 @@
+// Material icons used by the sample, registered in the "material" collection.
+export const icons: Record
= {
+ self_improvement: ' ',
+ pool: ' ',
+ hiking: ' ',
+ fitness_center: ' ',
+ directions_bike: ' ',
+ sports_tennis: ' ',
+ sports_soccer: ' ',
+ sports_baseball: ' ',
+ close: ' ',
+ add: ' ',
+};
diff --git a/samples/inputs/chip/tailwind-styling/src/index.css b/samples/inputs/chip/tailwind-styling/src/index.css
new file mode 100644
index 0000000000..406353cab3
--- /dev/null
+++ b/samples/inputs/chip/tailwind-styling/src/index.css
@@ -0,0 +1,22 @@
+/* shared styles are loaded from: */
+/* https://dl.infragistics.com/x/css/samples/shared.v8.css */
+
+/* Keep this order. An @import after the Tailwind imports is dropped, and in
+ the samples browser one before the @layer statement drops the Tailwind
+ imports, so Aktiv Grotesk goes between them. */
+@layer theme, base, components, utilities;
+@import url("https://use.typekit.net/bng2zgw.css");
+@import "tailwindcss/theme.css" layer(theme);
+@import "tailwindcss/utilities.css" layer(utilities);
+@source "./index.tsx";
+
+@theme {
+ /* The design's own palette. It lives here instead of coming from the theme
+ palette, so the sample keeps its colors in every theme. */
+ --color-activity-primary: #006ae6;
+ --color-activity-primary-strong: #0055b8;
+ --color-activity-tint: #e6f2ff;
+ --color-activity-tint-strong: #cce4ff;
+ --color-activity-surface: #e5ebf3;
+ --color-activity-ink: #00142b;
+}
diff --git a/samples/inputs/chip/tailwind-styling/src/index.tsx b/samples/inputs/chip/tailwind-styling/src/index.tsx
new file mode 100644
index 0000000000..b5af738262
--- /dev/null
+++ b/samples/inputs/chip/tailwind-styling/src/index.tsx
@@ -0,0 +1,123 @@
+import { useEffect, useRef, useState } from 'react';
+import ReactDOM from 'react-dom/client';
+import './index.css';
+import { IgrChip, IgrIcon, registerIconFromText } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+import { icons } from './icons';
+
+const activities = [
+ { label: 'Yoga', icon: 'self_improvement' },
+ { label: 'Swimming', icon: 'pool' },
+ { label: 'Hiking', icon: 'hiking' },
+ { label: 'Lifting', icon: 'fitness_center' },
+ { label: 'Cycling', icon: 'directions_bike' },
+ { label: 'Tennis', icon: 'sports_tennis' },
+ { label: 'Soccer', icon: 'sports_soccer' },
+ { label: 'Baseball', icon: 'sports_baseball' },
+];
+
+type Activity = (typeof activities)[number];
+
+const chipLabel = 'text-sm font-medium leading-5 tracking-[0.25px]';
+
+// `flex` keeps the chip host's line box from adding height around the chip.
+const selectedChip =
+ 'flex [--ig-chip-border-radius:0.5rem] ' +
+ '[--ig-chip-background:var(--color-activity-primary)] [--ig-chip-text-color:white] ' +
+ '[--ig-chip-hover-background:var(--color-activity-primary-strong)] [--ig-chip-hover-text-color:white] ' +
+ '[--ig-chip-focus-background:var(--color-activity-primary-strong)] [--ig-chip-focus-text-color:white] ' +
+ '[--ig-chip-remove-icon-color:white] [--ig-chip-remove-icon-color-focus:white]';
+
+const availableChip =
+ 'flex [--ig-chip-border-radius:0.5rem] [--ig-chip-border-color:var(--color-activity-primary)] ' +
+ '[--ig-chip-outlined-background:var(--color-activity-tint)] [--ig-chip-outlined-text-color:var(--color-activity-primary)] ' +
+ '[--ig-chip-hover-outlined-background:var(--color-activity-tint-strong)] [--ig-chip-hover-outlined-text-color:var(--color-activity-primary)] [--ig-chip-hover-border-color:var(--color-activity-primary)] ' +
+ '[--ig-chip-focus-outlined-background:var(--color-activity-tint-strong)] [--ig-chip-focus-outlined-text-color:var(--color-activity-primary)] [--ig-chip-focus-border-color:var(--color-activity-primary)]';
+
+export default function ChipTailwindStyling() {
+ const [selected, setSelected] = useState(activities.slice(0, 2));
+ const available = activities.filter((activity) => !selected.includes(activity));
+ const cardRef = useRef(null);
+ const focusTarget = useRef<{ list: 'selected' | 'available'; label: string } | null>(null);
+
+ useEffect(() => {
+ Object.entries(icons).forEach(([name, svg]) => registerIconFromText(name, svg, 'material'));
+ }, []);
+
+ // The chip that had focus is gone, so focus a chip in the same list, or the moved chip when that list is empty.
+ useEffect(() => {
+ const target = focusTarget.current;
+ focusTarget.current = null;
+ const chip = target && cardRef.current?.querySelector(`[data-activity="${target.label}"]`);
+ if (!target || !chip) {
+ return;
+ }
+ // A moved chip renders after this effect, and chips don't delegate focus yet, so wait and focus the control directly.
+ chip.updateComplete.then(() => {
+ const control = target.list === 'selected'
+ ? chip.querySelector('[slot="remove"]')
+ : chip.shadowRoot?.querySelector('[part="action"]');
+ control?.focus();
+ });
+ }, [selected]);
+
+ const addActivity = (activity: Activity) => {
+ const rest = available.filter((item) => item !== activity);
+ const next = rest[Math.min(available.indexOf(activity), rest.length - 1)];
+ focusTarget.current = next ? { list: 'available', label: next.label } : { list: 'selected', label: activity.label };
+ setSelected([...selected, activity]);
+ };
+
+ const removeActivity = (activity: Activity) => {
+ const rest = selected.filter((item) => item !== activity);
+ const next = rest[Math.min(selected.indexOf(activity), rest.length - 1)];
+ focusTarget.current = next ? { list: 'selected', label: next.label } : { list: 'available', label: activity.label };
+ setSelected(rest);
+ };
+
+ return (
+
+
+ {/* Not a heading: the theme's heading styles sit outside any CSS layer and would override these utilities. */}
+
+ Preferred Activity
+
+
+ {selected.map((activity) => (
+ removeActivity(activity)}>
+
+ {activity.label}
+
+
+ ))}
+
+
+
+ {available.map((activity) => (
+ addActivity(activity)}>
+
+ {activity.label}
+
+ ))}
+
+
+
+ );
+}
+
+// rendering above component to the React DOM
+const root = ReactDOM.createRoot(document.getElementById('root')!);
+root.render( );
diff --git a/samples/inputs/chip/tailwind-styling/tsconfig.json b/samples/inputs/chip/tailwind-styling/tsconfig.json
new file mode 100644
index 0000000000..e27a22be9b
--- /dev/null
+++ b/samples/inputs/chip/tailwind-styling/tsconfig.json
@@ -0,0 +1,24 @@
+{
+ "compilerOptions": {
+ "target": "es2020",
+ "lib": [
+ "es2020",
+ "dom",
+ "dom.iterable"
+ ],
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "jsx": "react-jsx",
+ "types": [
+ "vite/client"
+ ],
+ "strict": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "skipLibCheck": true,
+ "noEmit": true
+ },
+ "include": [
+ "src"
+ ]
+}
diff --git a/samples/inputs/chip/tailwind-styling/vite.config.js b/samples/inputs/chip/tailwind-styling/vite.config.js
new file mode 100644
index 0000000000..4043727956
--- /dev/null
+++ b/samples/inputs/chip/tailwind-styling/vite.config.js
@@ -0,0 +1,13 @@
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+import tailwindcss from '@tailwindcss/vite';
+
+export default defineConfig({
+ plugins: [react(), tailwindcss()],
+ build: {
+ outDir: 'build',
+ },
+ server: {
+ open: false,
+ },
+});
diff --git a/samples/inputs/chip/types/README.md b/samples/inputs/chip/types/README.md
new file mode 100644
index 0000000000..44623b28b0
--- /dev/null
+++ b/samples/inputs/chip/types/README.md
@@ -0,0 +1,50 @@
+This folder contains implementation of React application with example of Types feature using [Chip](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html) component.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Branches
+
+> **_NOTE:_** You should use [master](https://github.com/IgniteUI/igniteui-react-examples/tree/master) branch of this repository if you want to run samples on your computer. Use the [vnext](https://github.com/IgniteUI/igniteui-react-examples/tree/vnext) branch only when you want to contribute new samples to this repository.
+
+## Instructions
+
+Follow these instructions to run this example:
+
+
+```
+git clone https://github.com/IgniteUI/igniteui-react-examples.git
+cd ./igniteui-react-examples
+git checkout master
+cd ./samples/inputs/chip/types
+```
+
+open above folder in VS Code or type:
+```
+code .
+```
+
+In terminal window, run:
+```
+npm install
+npm start
+```
+
+Then open http://localhost:4200/ in your browser
+
+
+## Learn More
+
+To learn more about **Ignite UI for React** components, check out the [React documentation](https://www.infragistics.com/products/ignite-ui-react/react/components/general-getting-started.html).
diff --git a/samples/inputs/chip/types/index.html b/samples/inputs/chip/types/index.html
new file mode 100644
index 0000000000..a31d6022f0
--- /dev/null
+++ b/samples/inputs/chip/types/index.html
@@ -0,0 +1,11 @@
+
+
+
+ ChipTypes
+
+
+
+
+
+
+
diff --git a/samples/inputs/chip/types/package.json b/samples/inputs/chip/types/package.json
new file mode 100644
index 0000000000..4cc024b7fa
--- /dev/null
+++ b/samples/inputs/chip/types/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "react-chip-types",
+ "description": "This project provides example of Chip Types using Infragistics React components",
+ "author": "Infragistics",
+ "homepage": ".",
+ "version": "1.4.0",
+ "private": true,
+ "scripts": {
+ "start": "vite --port 4200",
+ "build": "tsc && node --max-old-space-size=4096 node_modules/vite/bin/vite build",
+ "preview": "vite preview",
+ "test": "vitest"
+ },
+ "dependencies": {
+ "igniteui-dockmanager": "^2.2.1",
+ "igniteui-react": "19.9.0",
+ "igniteui-react-core": "19.6.0",
+ "igniteui-webcomponents": "~7.4.1",
+ "react": "^19.3.0",
+ "react-dom": "^19.3.0",
+ "tslib": "^2.4.0"
+ },
+ "devDependencies": {
+ "@types/jest": "^30.0.0",
+ "@types/node": "^24.7.1",
+ "@types/react": "^19.3.0",
+ "@types/react-dom": "^19.3.0",
+ "@vitejs/plugin-react": "^6.1.1",
+ "@vitest/browser": "^5.0.2",
+ "typescript": "^5.9.3",
+ "vite": "^8.3.1",
+ "vitest": "^5.0.2",
+ "vitest-canvas-mock": "^1.2.0",
+ "worker-loader": "^3.0.8"
+ },
+ "browserslist": [
+ ">0.2%",
+ "not dead",
+ "not ie <= 11",
+ "not op_mini all"
+ ]
+}
diff --git a/samples/inputs/chip/types/src/index.css b/samples/inputs/chip/types/src/index.css
new file mode 100644
index 0000000000..cbe7b50c7c
--- /dev/null
+++ b/samples/inputs/chip/types/src/index.css
@@ -0,0 +1,35 @@
+/* shared styles are loaded from: */
+/* https://dl.infragistics.com/x/css/samples/shared.v8.css */
+
+/* Aktiv Grotesk, from the same Adobe Fonts kit the docs use. */
+@import url("https://use.typekit.net/bng2zgw.css");
+
+.chip-types {
+ --ig-size: var(--ig-size-medium);
+
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: center;
+ gap: 1.5rem 3.75rem;
+}
+
+.chip-types-item {
+ display: flex;
+ align-items: center;
+ gap: 1.875rem;
+}
+
+/* The chip host is a block box, so its line box would add height around the chip. */
+.chip-types-item igc-chip {
+ display: flex;
+}
+
+.chip-types-item span {
+ color: var(--ig-gray-600);
+ font-family: aktiv-grotesk, sans-serif;
+ font-size: 0.8125rem;
+ font-weight: 400;
+ line-height: 1.25rem;
+ letter-spacing: 0.3px;
+}
diff --git a/samples/inputs/chip/types/src/index.tsx b/samples/inputs/chip/types/src/index.tsx
new file mode 100644
index 0000000000..b3fc3a722c
--- /dev/null
+++ b/samples/inputs/chip/types/src/index.tsx
@@ -0,0 +1,33 @@
+import { useEffect, useRef } from 'react';
+import ReactDOM from 'react-dom/client';
+import './index.css';
+import { IgrChip } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function ChipTypes() {
+ const sampleRef = useRef(null);
+
+ // The chips only show their look, so inert keeps them out of the tab order and ignores pointer input.
+ useEffect(() => {
+ if (sampleRef.current) {
+ sampleRef.current.inert = true;
+ }
+ }, []);
+
+ return (
+
+
+ Default
+ Chip
+
+
+ Primary
+ Chip
+
+
+ );
+}
+
+// rendering above component to the React DOM
+const root = ReactDOM.createRoot(document.getElementById('root')!);
+root.render( );
diff --git a/samples/inputs/chip/types/tsconfig.json b/samples/inputs/chip/types/tsconfig.json
new file mode 100644
index 0000000000..e27a22be9b
--- /dev/null
+++ b/samples/inputs/chip/types/tsconfig.json
@@ -0,0 +1,24 @@
+{
+ "compilerOptions": {
+ "target": "es2020",
+ "lib": [
+ "es2020",
+ "dom",
+ "dom.iterable"
+ ],
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "jsx": "react-jsx",
+ "types": [
+ "vite/client"
+ ],
+ "strict": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "skipLibCheck": true,
+ "noEmit": true
+ },
+ "include": [
+ "src"
+ ]
+}
diff --git a/samples/inputs/chip/types/vite.config.js b/samples/inputs/chip/types/vite.config.js
new file mode 100644
index 0000000000..342e2b8e11
--- /dev/null
+++ b/samples/inputs/chip/types/vite.config.js
@@ -0,0 +1,8 @@
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+
+export default defineConfig({
+ plugins: [react()],
+ build: { outDir: 'build' },
+ server: { open: false },
+});