diff --git a/packages/cli/templates/react/igr-ts/accordion/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/accordion/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/accordion/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/accordion/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/accordion/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..355e8f05b
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/accordion/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,27 @@
+import style from './style.module.css';
+import { IgrAccordion, IgrExpansionPanel } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Accordion
+
+
+
+ Ignite UI for React
+ Ignite UI for React is a complete library of UI components, giving you the ability to build modern web applications using encapsulation and the concept of reusable components in a dependency-free approach.
+
+
+ Ignite UI for Angular
+ Ignite UI for Angular is a complete set of Material-based UI Widgets, Components and Sketch UI kits by Infragistics.
+
+
+ Ignite UI for Web Components
+ Ignite UI for Web Components is a complete library of UI components, giving you the ability to build modern web applications.
+
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/accordion/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/accordion/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/accordion/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/accordion/default/index.ts b/packages/cli/templates/react/igr-ts/accordion/default/index.ts
new file mode 100644
index 000000000..d87e3ac0c
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/accordion/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrAccordionTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Accordion"];
+ this.controlGroup = "Layouts";
+ this.listInComponentTemplates = true;
+ this.id = "accordion";
+ this.projectType = "igr-ts";
+ this.name = "Accordion";
+ this.description = "basic IgrAccordion";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrAccordionTemplate();
diff --git a/packages/cli/templates/react/igr-ts/accordion/index.ts b/packages/cli/templates/react/igr-ts/accordion/index.ts
new file mode 100644
index 000000000..1e260063f
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/accordion/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrAccordionComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Accordion";
+ this.group = "Layouts";
+ this.description = `enables displaying of content in a vertically collapsible fashion.`;
+ }
+}
+module.exports = new IgrAccordionComponent();
diff --git a/packages/cli/templates/react/igr-ts/avatar/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/avatar/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/avatar/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/avatar/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/avatar/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..577e1e9a5
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/avatar/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,16 @@
+import style from './style.module.css';
+import { IgrAvatar } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/avatar/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/avatar/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/avatar/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/avatar/default/index.ts b/packages/cli/templates/react/igr-ts/avatar/default/index.ts
new file mode 100644
index 000000000..caa4c29e6
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/avatar/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrAvatarTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Avatar"];
+ this.controlGroup = "Layouts";
+ this.listInComponentTemplates = true;
+ this.id = "avatar";
+ this.projectType = "igr-ts";
+ this.name = "Avatar";
+ this.description = "displays an avatar with customizable shape, size, and initials.";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrAvatarTemplate();
diff --git a/packages/cli/templates/react/igr-ts/avatar/index.ts b/packages/cli/templates/react/igr-ts/avatar/index.ts
new file mode 100644
index 000000000..6029bc1d7
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/avatar/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrAvatarComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Avatar";
+ this.group = "Layouts";
+ this.description = `displays an avatar with customizable shape, size, and initials.`;
+ }
+}
+module.exports = new IgrAvatarComponent();
diff --git a/packages/cli/templates/react/igr-ts/badge/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/badge/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/badge/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/badge/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/badge/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..32d8f9ccb
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/badge/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,16 @@
+import style from './style.module.css';
+import { IgrBadge } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Badge
+
+ Awaiting test
+ Critical issue
+ Verified
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/badge/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/badge/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/badge/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/badge/default/index.ts b/packages/cli/templates/react/igr-ts/badge/default/index.ts
new file mode 100644
index 000000000..8270e5abd
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/badge/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrBadgeTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Badge"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "badge";
+ this.projectType = "igr-ts";
+ this.name = "Badge";
+ this.description = "displays a badge with customizable variants and styles.";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrBadgeTemplate();
diff --git a/packages/cli/templates/react/igr-ts/badge/index.ts b/packages/cli/templates/react/igr-ts/badge/index.ts
new file mode 100644
index 000000000..c3d23cf9c
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/badge/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrBadgeComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Badge";
+ this.group = "Data Entry & Display";
+ this.description = `displays a badge with customizable variants and styles.`;
+ }
+}
+module.exports = new IgrBadgeComponent();
diff --git a/packages/cli/templates/react/igr-ts/banner/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/banner/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/banner/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/banner/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/banner/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..c8b0f7c4e
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/banner/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,16 @@
+import style from './style.module.css';
+import { IgrBanner } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Banner
+
+
+ You are currently not logged in! Please, log into your account first.
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/banner/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/banner/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/banner/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/banner/default/index.ts b/packages/cli/templates/react/igr-ts/banner/default/index.ts
new file mode 100644
index 000000000..9318e8330
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/banner/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrBannerTemplate extends IgniteUIForReactTemplate {
+constructor() {
+super(__dirname);
+this.components = ["Banner"];
+this.controlGroup = "Notifications";
+this.listInComponentTemplates = true;
+this.id = "banner";
+this.projectType = "igr-ts";
+this.name = "Banner";
+this.description = "basic IgrBanner";
+this.packages = ["igniteui-react@~19.5.2"];
+}
+}
+module.exports = new IgrBannerTemplate();
diff --git a/packages/cli/templates/react/igr-ts/banner/index.ts b/packages/cli/templates/react/igr-ts/banner/index.ts
new file mode 100644
index 000000000..1ccb7c13a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/banner/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrBannerComponent extends BaseComponent {
+constructor() {
+super(__dirname);
+this.name = "Banner";
+this.group = "Notifications";
+this.description = `displays banner component`;
+}
+}
+module.exports = new IgrBannerComponent();
diff --git a/packages/cli/templates/react/igr-ts/button-group/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/button-group/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/button-group/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/button-group/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/button-group/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..123cd1ade
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/button-group/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,18 @@
+import style from './style.module.css';
+import { IgrButtonGroup, IgrToggleButton } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Button Group
+
+
+ Left
+ Center
+ Right
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/button-group/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/button-group/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/button-group/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/button-group/default/index.ts b/packages/cli/templates/react/igr-ts/button-group/default/index.ts
new file mode 100644
index 000000000..c561ed7da
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/button-group/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrButtonGroupTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Button group"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "button-group";
+ this.projectType = "igr-ts";
+ this.name = "Button group";
+ this.description = "basic IgrButtonGroup";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrButtonGroupTemplate();
diff --git a/packages/cli/templates/react/igr-ts/button-group/index.ts b/packages/cli/templates/react/igr-ts/button-group/index.ts
new file mode 100644
index 000000000..8222bd170
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/button-group/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrButtonGroupComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Button group";
+ this.group = "Data Entry & Display";
+ this.description = `displays a group of buttons with toggle functionality.`;
+ }
+}
+module.exports = new IgrButtonGroupComponent();
diff --git a/packages/cli/templates/react/igr-ts/button/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/button/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/button/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/button/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/button/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..4503ef58c
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/button/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,14 @@
+import style from './style.module.css';
+import { IgrButton } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Button
+
+ Large button
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/button/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/button/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/button/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/button/default/index.ts b/packages/cli/templates/react/igr-ts/button/default/index.ts
new file mode 100644
index 000000000..a6a6553ee
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/button/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrButtonTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Button"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "button";
+ this.projectType = "igr-ts";
+ this.name = "Button";
+ this.description = "displays a button with customizable size and content.";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrButtonTemplate();
diff --git a/packages/cli/templates/react/igr-ts/button/index.ts b/packages/cli/templates/react/igr-ts/button/index.ts
new file mode 100644
index 000000000..5c9926a66
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/button/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrButtonComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Button";
+ this.group = "Data Entry & Display";
+ this.description = `displays a button with customizable size and content.`;
+ }
+}
+module.exports = new IgrButtonComponent();
diff --git a/packages/cli/templates/react/igr-ts/calendar/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/calendar/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/calendar/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/calendar/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/calendar/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..b9138d355
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/calendar/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,14 @@
+import style from './style.module.css';
+import { IgrCalendar } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/calendar/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/calendar/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/calendar/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/calendar/default/index.ts b/packages/cli/templates/react/igr-ts/calendar/default/index.ts
new file mode 100644
index 000000000..bcf4170c7
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/calendar/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrCalendarTemplate extends IgniteUIForReactTemplate {
+constructor() {
+super(__dirname);
+this.components = ["Calendar"];
+this.controlGroup = "Scheduling";
+this.listInComponentTemplates = true;
+this.id = "calendar";
+this.projectType = "igr-ts";
+this.name = "Calendar";
+this.description = "basic IgrCalendar";
+this.packages = ["igniteui-react@~19.5.2"];
+}
+}
+module.exports = new IgrCalendarTemplate();
diff --git a/packages/cli/templates/react/igr-ts/calendar/index.ts b/packages/cli/templates/react/igr-ts/calendar/index.ts
new file mode 100644
index 000000000..cee8bef01
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/calendar/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrCalendarComponent extends BaseComponent {
+constructor() {
+super(__dirname);
+this.name = "Calendar";
+this.group = "Scheduling";
+this.description = `displays calendar component`;
+}
+}
+module.exports = new IgrCalendarComponent();
diff --git a/packages/cli/templates/react/igr-ts/card/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/card/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/card/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/card/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/card/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..61d0f4dd4
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/card/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,26 @@
+import style from './style.module.css';
+import { IgrCard, IgrCardHeader, IgrCardContent, IgrCardActions, IgrButton } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Card
+
+
+
+ New York City
+ City Guide
+
+
+ New York City comprises 5 boroughs sitting where the Hudson River meets the Atlantic Ocean. At its core is Manhattan, a densely populated borough that's among the world's major commercial, financial and cultural centers.
+
+
+ Like
+ Learn More
+
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/card/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/card/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/card/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/card/default/index.ts b/packages/cli/templates/react/igr-ts/card/default/index.ts
new file mode 100644
index 000000000..452f29ada
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/card/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrCardTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Card"];
+ this.controlGroup = "Layouts";
+ this.listInComponentTemplates = true;
+ this.id = "card";
+ this.projectType = "igr-ts";
+ this.name = "Card";
+ this.description = "basic IgrCard";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrCardTemplate();
diff --git a/packages/cli/templates/react/igr-ts/card/index.ts b/packages/cli/templates/react/igr-ts/card/index.ts
new file mode 100644
index 000000000..0a868d008
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/card/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrCardComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Card";
+ this.group = "Layouts";
+ this.description = `displays organized content and actions about a single subject.`;
+ }
+}
+module.exports = new IgrCardComponent();
diff --git a/packages/cli/templates/react/igr-ts/checkbox/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/checkbox/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/checkbox/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/checkbox/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/checkbox/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..efd15486a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/checkbox/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,14 @@
+import style from './style.module.css';
+import { IgrCheckbox } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/checkbox/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/checkbox/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/checkbox/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/checkbox/default/index.ts b/packages/cli/templates/react/igr-ts/checkbox/default/index.ts
new file mode 100644
index 000000000..6e4c84569
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/checkbox/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrCheckboxTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Checkbox"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "checkbox";
+ this.projectType = "igr-ts";
+ this.name = "Checkbox";
+ this.description = "basic IgrCheckbox";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrCheckboxTemplate();
diff --git a/packages/cli/templates/react/igr-ts/checkbox/index.ts b/packages/cli/templates/react/igr-ts/checkbox/index.ts
new file mode 100644
index 000000000..bbab581b7
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/checkbox/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrCheckboxComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Checkbox";
+ this.group = "Data Entry & Display";
+ this.description = `displays a checkbox with customizable label and state.`;
+ }
+}
+module.exports = new IgrCheckboxComponent();
diff --git a/packages/cli/templates/react/igr-ts/chip/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/chip/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/chip/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/chip/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/chip/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..9aaf5069c
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/chip/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,14 @@
+import style from './style.module.css';
+import { IgrChip } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Chip
+
+ Chip Content
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/chip/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/chip/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/chip/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/chip/default/index.ts b/packages/cli/templates/react/igr-ts/chip/default/index.ts
new file mode 100644
index 000000000..4692f5ec1
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/chip/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrChipTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Chip"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "chip";
+ this.projectType = "igr-ts";
+ this.name = "Chip";
+ this.description = "basic IgrChip";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrChipTemplate();
diff --git a/packages/cli/templates/react/igr-ts/chip/index.ts b/packages/cli/templates/react/igr-ts/chip/index.ts
new file mode 100644
index 000000000..b7e591e2d
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/chip/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrChipComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Chip";
+ this.group = "Data Entry & Display";
+ this.description = `displays a chip with selectable and removable options.`;
+ }
+}
+module.exports = new IgrChipComponent();
diff --git a/packages/cli/templates/react/igr-ts/circular-progress/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/circular-progress/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/circular-progress/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/circular-progress/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/circular-progress/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..d7981ef56
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/circular-progress/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,14 @@
+import style from './style.module.css';
+import { IgrCircularProgress } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Circular Progress
+
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/circular-progress/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/circular-progress/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/circular-progress/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/circular-progress/default/index.ts b/packages/cli/templates/react/igr-ts/circular-progress/default/index.ts
new file mode 100644
index 000000000..50d105fc0
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/circular-progress/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrCircularProgressTemplate extends IgniteUIForReactTemplate {
+constructor() {
+super(__dirname);
+this.components = ["Circular Progress"];
+this.controlGroup = "Data Entry & Display";
+this.listInComponentTemplates = true;
+this.id = "circular-progress";
+this.projectType = "igr-ts";
+this.name = "Circular Progress";
+this.description = "basic IgrCircularProgress";
+this.packages = ["igniteui-react@~19.5.2"];
+}
+}
+module.exports = new IgrCircularProgressTemplate();
diff --git a/packages/cli/templates/react/igr-ts/circular-progress/index.ts b/packages/cli/templates/react/igr-ts/circular-progress/index.ts
new file mode 100644
index 000000000..0e4a7c5d8
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/circular-progress/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrCircularProgressComponent extends BaseComponent {
+constructor() {
+super(__dirname);
+this.name = "Circular Progress";
+this.group = "Data Entry & Display";
+this.description = `displays circular progress component`;
+}
+}
+module.exports = new IgrCircularProgressComponent();
diff --git a/packages/cli/templates/react/igr-ts/custom-templates/subscription-form/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/custom-templates/subscription-form/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/custom-templates/subscription-form/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/custom-templates/subscription-form/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/custom-templates/subscription-form/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..45ccaf756
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/custom-templates/subscription-form/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,33 @@
+import style from './style.module.css';
+import { IgrInput, IgrCheckbox, IgrButton } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ const handleSubmit = (event: React.SubmitEvent) => {
+ event.preventDefault();
+ const form = event.target as HTMLFormElement;
+ const formData = new FormData(form);
+ const entries = Array.from(formData.entries());
+ const result = entries.map(([key, value]) => `${key}=${value}`).join('; ');
+ alert(result);
+ };
+
+ return (
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/custom-templates/subscription-form/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/custom-templates/subscription-form/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/custom-templates/subscription-form/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/custom-templates/subscription-form/index.ts b/packages/cli/templates/react/igr-ts/custom-templates/subscription-form/index.ts
new file mode 100644
index 000000000..0a9c73063
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/custom-templates/subscription-form/index.ts
@@ -0,0 +1,15 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrSubscriptionFormTemplate extends IgniteUIForReactTemplate {
+constructor() {
+super(__dirname);
+this.listInComponentTemplates = false;
+this.listInCustomTemplates = true;
+this.id = "subscription-form";
+this.projectType = "igr-ts";
+this.name = "Subscription Form";
+this.description = "Subscription form with inputs, buttons and a checkbox inside";
+this.packages = ["igniteui-react@~19.5.2"];
+}
+}
+module.exports = new IgrSubscriptionFormTemplate();
diff --git a/packages/cli/templates/react/igr-ts/date-picker/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/date-picker/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/date-picker/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/date-picker/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/date-picker/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..d55d2ed7f
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/date-picker/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,14 @@
+import style from './style.module.css';
+import { IgrDatePicker } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/date-picker/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/date-picker/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/date-picker/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/date-picker/default/index.ts b/packages/cli/templates/react/igr-ts/date-picker/default/index.ts
new file mode 100644
index 000000000..cbe37f48a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/date-picker/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrDatePickerTemplate extends IgniteUIForReactTemplate {
+constructor() {
+super(__dirname);
+this.components = ["Date Picker"];
+this.controlGroup = "Scheduling";
+this.listInComponentTemplates = true;
+this.id = "date-picker";
+this.projectType = "igr-ts";
+this.name = "Date Picker";
+this.description = "basic IgrDatePicker";
+this.packages = ["igniteui-react@~19.5.2"];
+}
+}
+module.exports = new IgrDatePickerTemplate();
diff --git a/packages/cli/templates/react/igr-ts/date-picker/index.ts b/packages/cli/templates/react/igr-ts/date-picker/index.ts
new file mode 100644
index 000000000..d4616ec23
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/date-picker/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrDatePickerComponent extends BaseComponent {
+constructor() {
+super(__dirname);
+this.name = "Date Picker";
+this.group = "Scheduling";
+this.description = `displays date picker component`;
+}
+}
+module.exports = new IgrDatePickerComponent();
diff --git a/packages/cli/templates/react/igr-ts/divider/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/divider/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/divider/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/divider/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/divider/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..4e1e2876a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/divider/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,18 @@
+import style from './style.module.css';
+import { IgrDivider } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Divider
+
+
+
Content above
+
+
Content below
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/divider/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/divider/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/divider/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/divider/default/index.ts b/packages/cli/templates/react/igr-ts/divider/default/index.ts
new file mode 100644
index 000000000..0022a41e0
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/divider/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrDividerTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Divider"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "divider";
+ this.projectType = "igr-ts";
+ this.name = "Divider";
+ this.description = "basic IgrDivider";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrDividerTemplate();
diff --git a/packages/cli/templates/react/igr-ts/divider/index.ts b/packages/cli/templates/react/igr-ts/divider/index.ts
new file mode 100644
index 000000000..c7c155cac
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/divider/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrDividerComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Divider";
+ this.group = "Data Entry & Display";
+ this.description = `provides a thin, lightweight separator.`;
+ }
+}
+module.exports = new IgrDividerComponent();
diff --git a/packages/cli/templates/react/igr-ts/dropdown/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/dropdown/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/dropdown/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/dropdown/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/dropdown/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..082581368
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/dropdown/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,19 @@
+import style from './style.module.css';
+import { IgrDropdown, IgrDropdownItem, IgrButton } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Dropdown
+
+
+ Options
+ Option 1
+ Option 2
+ Option 3
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/dropdown/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/dropdown/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/dropdown/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/dropdown/default/index.ts b/packages/cli/templates/react/igr-ts/dropdown/default/index.ts
new file mode 100644
index 000000000..657f355cf
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/dropdown/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrDropdownTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Dropdown"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "dropdown";
+ this.projectType = "igr-ts";
+ this.name = "Dropdown";
+ this.description = "basic IgrDropdown";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrDropdownTemplate();
diff --git a/packages/cli/templates/react/igr-ts/dropdown/index.ts b/packages/cli/templates/react/igr-ts/dropdown/index.ts
new file mode 100644
index 000000000..379d12147
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/dropdown/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrDropdownComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Dropdown";
+ this.group = "Data Entry & Display";
+ this.description = `represents a dropdown component`;
+ }
+}
+module.exports = new IgrDropdownComponent();
diff --git a/packages/cli/templates/react/igr-ts/expansion-panel/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/expansion-panel/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/expansion-panel/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/expansion-panel/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/expansion-panel/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..6195b6bcb
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/expansion-panel/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,17 @@
+import style from './style.module.css';
+import { IgrExpansionPanel } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Expansion Panel
+
+
+ Expansion Panel Title
+ This is the content of the expansion panel. Click the header to expand or collapse this section.
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/expansion-panel/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/expansion-panel/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/expansion-panel/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/expansion-panel/default/index.ts b/packages/cli/templates/react/igr-ts/expansion-panel/default/index.ts
new file mode 100644
index 000000000..126aedc30
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/expansion-panel/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrExpansionPanelTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Expansion Panel"];
+ this.controlGroup = "Layouts";
+ this.listInComponentTemplates = true;
+ this.id = "expansion-panel";
+ this.projectType = "igr-ts";
+ this.name = "Expansion Panel";
+ this.description = "basic IgrExpansionPanel";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrExpansionPanelTemplate();
diff --git a/packages/cli/templates/react/igr-ts/expansion-panel/index.ts b/packages/cli/templates/react/igr-ts/expansion-panel/index.ts
new file mode 100644
index 000000000..fdc2a1404
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/expansion-panel/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrExpansionPanelComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Expansion Panel";
+ this.group = "Layouts";
+ this.description = `provides a collapsible content section with a header.`;
+ }
+}
+module.exports = new IgrExpansionPanelComponent();
diff --git a/packages/cli/templates/react/igr-ts/form/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/form/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/form/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/form/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/form/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..8388a4773
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/form/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,24 @@
+import style from './style.module.css';
+import { IgrInput, IgrRadioGroup, IgrRadio } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/form/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/form/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/form/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/form/default/index.ts b/packages/cli/templates/react/igr-ts/form/default/index.ts
new file mode 100644
index 000000000..3f6b31d56
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/form/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrFormTemplate extends IgniteUIForReactTemplate {
+constructor() {
+super(__dirname);
+this.components = ["Form"];
+this.controlGroup = "Data Entry & Display";
+this.listInComponentTemplates = true;
+this.id = "form";
+this.projectType = "igr-ts";
+this.name = "Form";
+this.description = "basic IgrForm";
+this.packages = ["igniteui-react@~19.5.2"];
+}
+}
+module.exports = new IgrFormTemplate();
diff --git a/packages/cli/templates/react/igr-ts/form/index.ts b/packages/cli/templates/react/igr-ts/form/index.ts
new file mode 100644
index 000000000..bbd2c7110
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/form/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrFormComponent extends BaseComponent {
+constructor() {
+super(__dirname);
+this.name = "Form";
+this.group = "Data Entry & Display";
+this.description = `displays form component`;
+}
+}
+module.exports = new IgrFormComponent();
diff --git a/packages/cli/templates/react/igr-ts/groups.json b/packages/cli/templates/react/igr-ts/groups.json
index f55a8a30b..8a73cda4c 100644
--- a/packages/cli/templates/react/igr-ts/groups.json
+++ b/packages/cli/templates/react/igr-ts/groups.json
@@ -1,5 +1,12 @@
{
- "Gauges": "scale measure Controls including Linear and Radial Gauge and Bullet Graph.",
+ "Data Entry & Display": "user input and display controls including buttons, inputs, checkboxes and more.",
+ "Interactions": "interactive UI components including sliders and visual effects.",
+ "Menus": "navigation controls including navbar.",
+ "Grids & Lists": "components for displaying collections of data in list and tree views.",
+ "Scheduling": "date and time selection controls including calendar and date picker.",
+ "Layouts": "layout and structure controls including accordion, cards, tabs and panels.",
"Charts": "high-performance data visualization for category and financial data.",
- "Grids": "bind and display data sets with little coding or configuration."
+ "Gauges": "scale measure Controls including Linear and Radial Gauge and Bullet Graph.",
+ "Grids": "bind and display data sets with little coding or configuration.",
+ "Notifications": "informational components including banners and alerts."
}
diff --git a/packages/cli/templates/react/igr-ts/icon-button/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/icon-button/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/icon-button/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/icon-button/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/icon-button/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..d3049f52f
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/icon-button/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,14 @@
+import style from './style.module.css';
+import { IgrIconButton } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/icon-button/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/icon-button/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/icon-button/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/icon-button/default/index.ts b/packages/cli/templates/react/igr-ts/icon-button/default/index.ts
new file mode 100644
index 000000000..b14994c78
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/icon-button/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrIconButtonTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Icon button"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "icon-button";
+ this.projectType = "igr-ts";
+ this.name = "Icon button";
+ this.description = "basic IgrIconButton";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrIconButtonTemplate();
diff --git a/packages/cli/templates/react/igr-ts/icon-button/index.ts b/packages/cli/templates/react/igr-ts/icon-button/index.ts
new file mode 100644
index 000000000..98aac3399
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/icon-button/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrIconButtonComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Icon button";
+ this.group = "Data Entry & Display";
+ this.description = `displays an icon button.`;
+ }
+}
+module.exports = new IgrIconButtonComponent();
diff --git a/packages/cli/templates/react/igr-ts/icon/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/icon/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/icon/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/icon/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/icon/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..4d7e04354
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/icon/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,21 @@
+import style from './style.module.css';
+import { IgrIcon } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Icon
+
+
+ Home icon:
+
+
+
+ Search icon:
+
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/icon/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/icon/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/icon/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/icon/default/index.ts b/packages/cli/templates/react/igr-ts/icon/default/index.ts
new file mode 100644
index 000000000..3fe799a2f
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/icon/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrIconTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Icon"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "icon";
+ this.projectType = "igr-ts";
+ this.name = "Icon";
+ this.description = "basic IgrIcon";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrIconTemplate();
diff --git a/packages/cli/templates/react/igr-ts/icon/index.ts b/packages/cli/templates/react/igr-ts/icon/index.ts
new file mode 100644
index 000000000..79e27a892
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/icon/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrIconComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Icon";
+ this.group = "Data Entry & Display";
+ this.description = `displays an icon.`;
+ }
+}
+module.exports = new IgrIconComponent();
diff --git a/packages/cli/templates/react/igr-ts/input/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/input/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/input/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/input/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/input/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..592f40622
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/input/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,16 @@
+import style from './style.module.css';
+import { IgrInput } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Input
+
+
+ This is some helper text
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/input/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/input/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/input/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/input/default/index.ts b/packages/cli/templates/react/igr-ts/input/default/index.ts
new file mode 100644
index 000000000..8aad8b8d2
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/input/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrInputTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Input"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "input";
+ this.projectType = "igr-ts";
+ this.name = "Input";
+ this.description = "basic IgrInput";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrInputTemplate();
diff --git a/packages/cli/templates/react/igr-ts/input/index.ts b/packages/cli/templates/react/igr-ts/input/index.ts
new file mode 100644
index 000000000..c72d0c2ac
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/input/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrInputComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Input";
+ this.group = "Data Entry & Display";
+ this.description = `displays an input field.`;
+ }
+}
+module.exports = new IgrInputComponent();
diff --git a/packages/cli/templates/react/igr-ts/linear-progress/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/linear-progress/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/linear-progress/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/linear-progress/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/linear-progress/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..1aa007661
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/linear-progress/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,16 @@
+import style from './style.module.css';
+import { IgrLinearProgress } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/linear-progress/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/linear-progress/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/linear-progress/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/linear-progress/default/index.ts b/packages/cli/templates/react/igr-ts/linear-progress/default/index.ts
new file mode 100644
index 000000000..4b0982d33
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/linear-progress/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrLinearProgressTemplate extends IgniteUIForReactTemplate {
+constructor() {
+super(__dirname);
+this.components = ["Linear Progress"];
+this.controlGroup = "Data Entry & Display";
+this.listInComponentTemplates = true;
+this.id = "linear-progress";
+this.projectType = "igr-ts";
+this.name = "Linear Progress";
+this.description = "basic IgrLinearProgress";
+this.packages = ["igniteui-react@~19.5.2"];
+}
+}
+module.exports = new IgrLinearProgressTemplate();
diff --git a/packages/cli/templates/react/igr-ts/linear-progress/index.ts b/packages/cli/templates/react/igr-ts/linear-progress/index.ts
new file mode 100644
index 000000000..4250c82a8
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/linear-progress/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrLinearProgressComponent extends BaseComponent {
+constructor() {
+super(__dirname);
+this.name = "Linear Progress";
+this.group = "Data Entry & Display";
+this.description = `displays linear progress component`;
+}
+}
+module.exports = new IgrLinearProgressComponent();
diff --git a/packages/cli/templates/react/igr-ts/list/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/list/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/list/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/list/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/list/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..69b37c934
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/list/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,31 @@
+import style from './style.module.css';
+import { IgrList, IgrListItem, IgrListHeader, IgrAvatar } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
List
+
+
+ Job Positions
+
+
+ Abraham Lee
+ Software Developer
+
+
+
+ John Smith
+ Team Lead
+
+
+
+ Jonathan Deberkow
+ UX Designer
+
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/list/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/list/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/list/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/list/default/index.ts b/packages/cli/templates/react/igr-ts/list/default/index.ts
new file mode 100644
index 000000000..f14ae344c
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/list/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrListTemplate extends IgniteUIForReactTemplate {
+constructor() {
+super(__dirname);
+this.components = ["List"];
+this.controlGroup = "Grids & Lists";
+this.listInComponentTemplates = true;
+this.id = "list";
+this.projectType = "igr-ts";
+this.name = "List";
+this.description = "basic IgrList";
+this.packages = ["igniteui-react@~19.5.2"];
+}
+}
+module.exports = new IgrListTemplate();
diff --git a/packages/cli/templates/react/igr-ts/list/index.ts b/packages/cli/templates/react/igr-ts/list/index.ts
new file mode 100644
index 000000000..53961a74f
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/list/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrListComponent extends BaseComponent {
+constructor() {
+super(__dirname);
+this.name = "List";
+this.group = "Grids & Lists";
+this.description = `displays list component`;
+}
+}
+module.exports = new IgrListComponent();
diff --git a/packages/cli/templates/react/igr-ts/navbar/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/navbar/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/navbar/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/navbar/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/navbar/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..119d668c2
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/navbar/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,16 @@
+import style from './style.module.css';
+import { IgrNavbar } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Navbar
+
+
+ Home
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/navbar/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/navbar/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/navbar/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/navbar/default/index.ts b/packages/cli/templates/react/igr-ts/navbar/default/index.ts
new file mode 100644
index 000000000..944354fd7
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/navbar/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrNavbarTemplate extends IgniteUIForReactTemplate {
+constructor() {
+super(__dirname);
+this.components = ["Navbar"];
+this.controlGroup = "Menus";
+this.listInComponentTemplates = true;
+this.id = "navbar";
+this.projectType = "igr-ts";
+this.name = "Navbar";
+this.description = "basic IgrNavbar";
+this.packages = ["igniteui-react@~19.5.2"];
+}
+}
+module.exports = new IgrNavbarTemplate();
diff --git a/packages/cli/templates/react/igr-ts/navbar/index.ts b/packages/cli/templates/react/igr-ts/navbar/index.ts
new file mode 100644
index 000000000..112b8c078
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/navbar/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrNavbarComponent extends BaseComponent {
+constructor() {
+super(__dirname);
+this.name = "Navbar";
+this.group = "Menus";
+this.description = `displays navbar component`;
+}
+}
+module.exports = new IgrNavbarComponent();
diff --git a/packages/cli/templates/react/igr-ts/radio-group/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/radio-group/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/radio-group/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/radio-group/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/radio-group/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..23fe6182a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/radio-group/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,18 @@
+import style from './style.module.css';
+import { IgrRadioGroup, IgrRadio } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Radio Group
+
+
+ Banana
+ Orange
+ Mango
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/radio-group/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/radio-group/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/radio-group/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/radio-group/default/index.ts b/packages/cli/templates/react/igr-ts/radio-group/default/index.ts
new file mode 100644
index 000000000..6c53e7e82
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/radio-group/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrRadioGroupTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Radio Group"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "radio-group";
+ this.projectType = "igr-ts";
+ this.name = "Radio Group";
+ this.description = "basic IgrRadioGroup";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrRadioGroupTemplate();
diff --git a/packages/cli/templates/react/igr-ts/radio-group/index.ts b/packages/cli/templates/react/igr-ts/radio-group/index.ts
new file mode 100644
index 000000000..dee4124d9
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/radio-group/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrRadioGroupComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Radio Group";
+ this.group = "Data Entry & Display";
+ this.description = `displays a radio group.`;
+ }
+}
+module.exports = new IgrRadioGroupComponent();
diff --git a/packages/cli/templates/react/igr-ts/rating/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/rating/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/rating/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/rating/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/rating/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..a07a1f6de
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/rating/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,14 @@
+import style from './style.module.css';
+import { IgrRating } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/rating/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/rating/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/rating/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/rating/default/index.ts b/packages/cli/templates/react/igr-ts/rating/default/index.ts
new file mode 100644
index 000000000..114d08909
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/rating/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrRatingTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Rating"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "rating";
+ this.projectType = "igr-ts";
+ this.name = "Rating";
+ this.description = "basic IgrRating";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrRatingTemplate();
diff --git a/packages/cli/templates/react/igr-ts/rating/index.ts b/packages/cli/templates/react/igr-ts/rating/index.ts
new file mode 100644
index 000000000..841b5a2d3
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/rating/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrRatingComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Rating";
+ this.group = "Data Entry & Display";
+ this.description = `represents a rating component`;
+ }
+}
+module.exports = new IgrRatingComponent();
diff --git a/packages/cli/templates/react/igr-ts/ripple/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/ripple/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/ripple/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/ripple/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/ripple/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..c18c3afc8
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/ripple/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,17 @@
+import style from './style.module.css';
+import { IgrButton, IgrRipple } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Ripple
+
+
+
+ Button with ripple
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/ripple/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/ripple/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/ripple/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/ripple/default/index.ts b/packages/cli/templates/react/igr-ts/ripple/default/index.ts
new file mode 100644
index 000000000..8afdb6fe4
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/ripple/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrRippleTemplate extends IgniteUIForReactTemplate {
+constructor() {
+super(__dirname);
+this.components = ["Ripple"];
+this.controlGroup = "Interactions";
+this.listInComponentTemplates = true;
+this.id = "ripple";
+this.projectType = "igr-ts";
+this.name = "Ripple";
+this.description = "basic IgrRipple";
+this.packages = ["igniteui-react@~19.5.2"];
+}
+}
+module.exports = new IgrRippleTemplate();
diff --git a/packages/cli/templates/react/igr-ts/ripple/index.ts b/packages/cli/templates/react/igr-ts/ripple/index.ts
new file mode 100644
index 000000000..217781d00
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/ripple/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrRippleComponent extends BaseComponent {
+constructor() {
+super(__dirname);
+this.name = "Ripple";
+this.group = "Interactions";
+this.description = `displays ripple component`;
+}
+}
+module.exports = new IgrRippleComponent();
diff --git a/packages/cli/templates/react/igr-ts/slider/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/slider/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/slider/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/slider/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/slider/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..b0ef7bc75
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/slider/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,14 @@
+import style from './style.module.css';
+import { IgrSlider } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/slider/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/slider/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/slider/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/slider/default/index.ts b/packages/cli/templates/react/igr-ts/slider/default/index.ts
new file mode 100644
index 000000000..6dd4fca5c
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/slider/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrSliderTemplate extends IgniteUIForReactTemplate {
+constructor() {
+super(__dirname);
+this.components = ["Slider"];
+this.controlGroup = "Interactions";
+this.listInComponentTemplates = true;
+this.id = "slider";
+this.projectType = "igr-ts";
+this.name = "Slider";
+this.description = "basic IgrSlider";
+this.packages = ["igniteui-react@~19.5.2"];
+}
+}
+module.exports = new IgrSliderTemplate();
diff --git a/packages/cli/templates/react/igr-ts/slider/index.ts b/packages/cli/templates/react/igr-ts/slider/index.ts
new file mode 100644
index 000000000..3843da395
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/slider/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrSliderComponent extends BaseComponent {
+constructor() {
+super(__dirname);
+this.name = "Slider";
+this.group = "Interactions";
+this.description = `displays slider component`;
+}
+}
+module.exports = new IgrSliderComponent();
diff --git a/packages/cli/templates/react/igr-ts/switch/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/switch/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/switch/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/switch/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/switch/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..95f768bdf
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/switch/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,14 @@
+import style from './style.module.css';
+import { IgrSwitch } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/switch/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/switch/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/switch/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/switch/default/index.ts b/packages/cli/templates/react/igr-ts/switch/default/index.ts
new file mode 100644
index 000000000..0c466e11e
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/switch/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrSwitchTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Switch"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "switch";
+ this.projectType = "igr-ts";
+ this.name = "Switch";
+ this.description = "basic IgrSwitch";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrSwitchTemplate();
diff --git a/packages/cli/templates/react/igr-ts/switch/index.ts b/packages/cli/templates/react/igr-ts/switch/index.ts
new file mode 100644
index 000000000..eb2f03a41
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/switch/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrSwitchComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Switch";
+ this.group = "Data Entry & Display";
+ this.description = `represents a switch component`;
+ }
+}
+module.exports = new IgrSwitchComponent();
diff --git a/packages/cli/templates/react/igr-ts/tabs/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/tabs/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/tabs/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/tabs/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/tabs/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..26841969d
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/tabs/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,27 @@
+import style from './style.module.css';
+import { IgrTabs, IgrTab } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Tabs
+
+
+
+ Sgt. Peppers Lonely Hearts Club Band
+ The Dark Side of the Moon
+ Thriller
+
+
+ The Dark Side of the Moon
+ Led Zeppelin IV
+
+
+ No content available
+
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/tabs/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/tabs/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/tabs/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/tabs/default/index.ts b/packages/cli/templates/react/igr-ts/tabs/default/index.ts
new file mode 100644
index 000000000..a06e811cd
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/tabs/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrTabsTemplate extends IgniteUIForReactTemplate {
+constructor() {
+super(__dirname);
+this.components = ["Tabs"];
+this.controlGroup = "Layouts";
+this.listInComponentTemplates = true;
+this.id = "tabs";
+this.projectType = "igr-ts";
+this.name = "Tabs";
+this.description = "basic IgrTabs";
+this.packages = ["igniteui-react@~19.5.2"];
+}
+}
+module.exports = new IgrTabsTemplate();
diff --git a/packages/cli/templates/react/igr-ts/tabs/index.ts b/packages/cli/templates/react/igr-ts/tabs/index.ts
new file mode 100644
index 000000000..a92040987
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/tabs/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrTabsComponent extends BaseComponent {
+constructor() {
+super(__dirname);
+this.name = "Tabs";
+this.group = "Layouts";
+this.description = `displays tabs component`;
+}
+}
+module.exports = new IgrTabsComponent();
diff --git a/packages/cli/templates/react/igr-ts/text-area/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/text-area/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/text-area/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/text-area/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/text-area/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..3b7fb68de
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/text-area/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,14 @@
+import style from './style.module.css';
+import { IgrTextarea } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/text-area/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/text-area/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/text-area/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/text-area/default/index.ts b/packages/cli/templates/react/igr-ts/text-area/default/index.ts
new file mode 100644
index 000000000..a427628c5
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/text-area/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrTextAreaTemplate extends IgniteUIForReactTemplate {
+ constructor() {
+ super(__dirname);
+ this.components = ["Text area"];
+ this.controlGroup = "Data Entry & Display";
+ this.listInComponentTemplates = true;
+ this.id = "text-area";
+ this.projectType = "igr-ts";
+ this.name = "Text area";
+ this.description = "basic IgrTextarea";
+ this.packages = ["igniteui-react@~19.5.2"];
+ }
+}
+module.exports = new IgrTextAreaTemplate();
diff --git a/packages/cli/templates/react/igr-ts/text-area/index.ts b/packages/cli/templates/react/igr-ts/text-area/index.ts
new file mode 100644
index 000000000..47f26766b
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/text-area/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrTextAreaComponent extends BaseComponent {
+ constructor() {
+ super(__dirname);
+ this.name = "Text area";
+ this.group = "Data Entry & Display";
+ this.description = `represents a text area component`;
+ }
+}
+module.exports = new IgrTextAreaComponent();
diff --git a/packages/cli/templates/react/igr-ts/tree/default/files/src/app/__path__/__filePrefix__.test.tsx b/packages/cli/templates/react/igr-ts/tree/default/files/src/app/__path__/__filePrefix__.test.tsx
new file mode 100644
index 000000000..854681a3a
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/tree/default/files/src/app/__path__/__filePrefix__.test.tsx
@@ -0,0 +1,13 @@
+import { beforeAll, expect, test } from 'vitest';
+import { render } from '@testing-library/react';
+import $(ClassName) from './$(path)';
+import { setupTestMocks } from '../../setupTests';
+
+beforeAll(() => {
+ setupTestMocks();
+})
+
+test('renders $(ClassName) component', () => {
+ const wrapper = render(<$(ClassName) />);
+ expect(wrapper).toBeTruthy();
+});
diff --git a/packages/cli/templates/react/igr-ts/tree/default/files/src/app/__path__/__filePrefix__.tsx b/packages/cli/templates/react/igr-ts/tree/default/files/src/app/__path__/__filePrefix__.tsx
new file mode 100644
index 000000000..0fb7dc736
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/tree/default/files/src/app/__path__/__filePrefix__.tsx
@@ -0,0 +1,29 @@
+import style from './style.module.css';
+import { IgrTree, IgrTreeItem } from 'igniteui-react';
+import 'igniteui-webcomponents/themes/light/bootstrap.css';
+
+export default function $(ClassName)() {
+ return (
+
+
Tree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/packages/cli/templates/react/igr-ts/tree/default/files/src/app/__path__/style.module.css b/packages/cli/templates/react/igr-ts/tree/default/files/src/app/__path__/style.module.css
new file mode 100644
index 000000000..1bcd0e328
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/tree/default/files/src/app/__path__/style.module.css
@@ -0,0 +1,9 @@
+:local(.container) {
+ padding-top: 24px;
+ display: flex;
+ flex-flow: row;
+ justify-content: space-around;
+}
+:local(.title) {
+ color: rgb(0, 153, 255);
+}
diff --git a/packages/cli/templates/react/igr-ts/tree/default/index.ts b/packages/cli/templates/react/igr-ts/tree/default/index.ts
new file mode 100644
index 000000000..23e567c27
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/tree/default/index.ts
@@ -0,0 +1,16 @@
+import { IgniteUIForReactTemplate } from "../../../../../lib/templates/IgniteUIForReactTemplate";
+
+class IgrTreeTemplate extends IgniteUIForReactTemplate {
+constructor() {
+super(__dirname);
+this.components = ["Tree"];
+this.controlGroup = "Grids & Lists";
+this.listInComponentTemplates = true;
+this.id = "tree";
+this.projectType = "igr-ts";
+this.name = "Tree";
+this.description = "basic IgrTree";
+this.packages = ["igniteui-react@~19.5.2"];
+}
+}
+module.exports = new IgrTreeTemplate();
diff --git a/packages/cli/templates/react/igr-ts/tree/index.ts b/packages/cli/templates/react/igr-ts/tree/index.ts
new file mode 100644
index 000000000..c7d74fedd
--- /dev/null
+++ b/packages/cli/templates/react/igr-ts/tree/index.ts
@@ -0,0 +1,11 @@
+import { BaseComponent } from "@igniteui/cli-core";
+
+class IgrTreeComponent extends BaseComponent {
+constructor() {
+super(__dirname);
+this.name = "Tree";
+this.group = "Grids & Lists";
+this.description = `displays tree component`;
+}
+}
+module.exports = new IgrTreeComponent();