diff --git a/components/lib/inputgroup/BaseInputGroup.vue b/components/lib/inputgroup/BaseInputGroup.vue
new file mode 100644
index 000000000..c5aa25648
--- /dev/null
+++ b/components/lib/inputgroup/BaseInputGroup.vue
@@ -0,0 +1,15 @@
+
diff --git a/components/lib/inputgroup/InputGroup.d.ts b/components/lib/inputgroup/InputGroup.d.ts
new file mode 100644
index 000000000..8ff295c74
--- /dev/null
+++ b/components/lib/inputgroup/InputGroup.d.ts
@@ -0,0 +1,114 @@
+/**
+ *
+ * InputGroup displays text, icon, buttons and other content can be grouped next to an input.
+ *
+ * [Live Demo](https://www.primevue.org/inputgroup/)
+ *
+ * @module inputgroup
+ *
+ */
+import { VNode } from 'vue';
+import { ComponentHooks } from '../basecomponent';
+import { PassThroughOptions } from '../passthrough';
+import { ClassComponent, GlobalComponentConstructor, PassThrough } from '../ts-helpers';
+
+export declare type InputGroupPassThroughOptionType = InputGroupPassThroughAttributes | ((options: InputGroupPassThroughMethodOptions) => InputGroupPassThroughAttributes | string) | string | null | undefined;
+
+/**
+ * Custom passthrough(pt) option method.
+ */
+export interface InputGroupPassThroughMethodOptions {
+ /**
+ * Defines instance.
+ */
+ instance: any;
+ /**
+ * Defines passthrough(pt) options in global config.
+ */
+ global: object | undefined;
+}
+
+/**
+ * Custom passthrough(pt) options.
+ * @see {@link InputGroupProps.pt}
+ */
+export interface InputGroupPassThroughOptions {
+ /**
+ * Used to pass attributes to the root's DOM element.
+ */
+ root?: InputGroupPassThroughOptionType;
+ /**
+ * Used to manage all lifecycle hooks
+ * @see {@link BaseComponent.ComponentHooks}
+ */
+ hooks?: ComponentHooks;
+}
+
+/**
+ * Custom passthrough attributes for each DOM elements
+ */
+export interface InputGroupPassThroughAttributes {
+ [key: string]: any;
+}
+
+/**
+ * Defines valid properties in InputGroup component.
+ */
+export interface InputGroupProps {
+ /**
+ * Used to pass attributes to DOM elements inside the component.
+ * @type {InputGroupPassThroughOptions}
+ */
+ pt?: PassThrough;
+ /**
+ * Used to configure passthrough(pt) options of the component.
+ * @type {PassThroughOptions}
+ */
+ ptOptions?: PassThroughOptions;
+ /**
+ * When enabled, it removes component related styles in the core.
+ * @defaultValue false
+ */
+ unstyled?: boolean;
+}
+
+/**
+ * Defines valid slots in InputGroup component.
+ */
+export interface InputGroupSlots {
+ /**
+ * Custom default template.
+ */
+ default(): VNode[];
+ /**
+ * Dynamic content template.
+ * @todo
+ */
+ [key: string]: (node: any) => VNode[];
+}
+
+/**
+ * Defines valid emits in InputGroup component.
+ */
+export interface InputGroupEmits {}
+
+/**
+ * **PrimeVue - InputGroup**
+ *
+ * _InputGroup displays text, icon, buttons and other content can be grouped next to an input._
+ *
+ * [Live Demo](https://www.primevue.org/inputgroup/)
+ * --- ---
+ * ![PrimeVue](https://primefaces.org/cdn/primevue/images/logo-100.png)
+ *
+ * @group Component
+ */
+declare class InputGroup extends ClassComponent {}
+
+declare module '@vue/runtime-core' {
+ interface GlobalComponents {
+ InputGroup: GlobalComponentConstructor;
+ }
+}
+
+export default InputGroup;
diff --git a/components/lib/inputgroup/InputGroup.vue b/components/lib/inputgroup/InputGroup.vue
new file mode 100644
index 000000000..f281102b4
--- /dev/null
+++ b/components/lib/inputgroup/InputGroup.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
diff --git a/components/lib/inputgroup/package.json b/components/lib/inputgroup/package.json
new file mode 100644
index 000000000..cc3baf8ee
--- /dev/null
+++ b/components/lib/inputgroup/package.json
@@ -0,0 +1,9 @@
+{
+ "main": "./inputgroup.cjs.js",
+ "module": "./inputgroup.esm.js",
+ "unpkg": "./inputgroup.min.js",
+ "types": "./InputGroup.d.ts",
+ "browser": {
+ "./sfc": "./InputGroup.vue"
+ }
+}
\ No newline at end of file
diff --git a/components/lib/inputgroup/style/InputGroupStyle.d.ts b/components/lib/inputgroup/style/InputGroupStyle.d.ts
new file mode 100644
index 000000000..3cd83c5b4
--- /dev/null
+++ b/components/lib/inputgroup/style/InputGroupStyle.d.ts
@@ -0,0 +1,3 @@
+import { BaseStyle } from '../../base/style';
+
+export interface InputGroupStyle extends BaseStyle {}
diff --git a/components/lib/inputgroup/style/InputGroupStyle.js b/components/lib/inputgroup/style/InputGroupStyle.js
new file mode 100644
index 000000000..051f9a5ed
--- /dev/null
+++ b/components/lib/inputgroup/style/InputGroupStyle.js
@@ -0,0 +1,10 @@
+import BaseStyle from 'primevue/base/style';
+
+const classes = {
+ root: 'p-inputgroup'
+};
+
+export default BaseStyle.extend({
+ name: 'inputgroup',
+ classes
+});
diff --git a/components/lib/inputgroup/style/package.json b/components/lib/inputgroup/style/package.json
new file mode 100644
index 000000000..77bd264b9
--- /dev/null
+++ b/components/lib/inputgroup/style/package.json
@@ -0,0 +1,6 @@
+{
+ "main": "./inputgroupstyle.cjs.js",
+ "module": "./inputgroupstyle.esm.js",
+ "unpkg": "./inputgroupstyle.min.js",
+ "types": "./InputGroupStyle.d.ts"
+}
\ No newline at end of file
diff --git a/components/lib/inputgroupaddon/BaseInputGroupAddon.vue b/components/lib/inputgroupaddon/BaseInputGroupAddon.vue
new file mode 100644
index 000000000..b5e29ffb2
--- /dev/null
+++ b/components/lib/inputgroupaddon/BaseInputGroupAddon.vue
@@ -0,0 +1,15 @@
+
diff --git a/components/lib/inputgroupaddon/InputGroupAddon.d.ts b/components/lib/inputgroupaddon/InputGroupAddon.d.ts
new file mode 100644
index 000000000..0e9a406a3
--- /dev/null
+++ b/components/lib/inputgroupaddon/InputGroupAddon.d.ts
@@ -0,0 +1,114 @@
+/**
+ *
+ * InputGroupAddon displays text, icon, buttons and other content can be grouped next to an input.
+ *
+ * [Live Demo](https://www.primevue.org/inputgroup/)
+ *
+ * @module inputgroupaddon
+ *
+ */
+import { VNode } from 'vue';
+import { ComponentHooks } from '../basecomponent';
+import { PassThroughOptions } from '../passthrough';
+import { ClassComponent, GlobalComponentConstructor, PassThrough } from '../ts-helpers';
+
+export declare type InputGroupPassThroughOptionType = InputGroupPassThroughAttributes | ((options: InputGroupPassThroughMethodOptions) => InputGroupPassThroughAttributes | string) | string | null | undefined;
+
+/**
+ * Custom passthrough(pt) option method.
+ */
+export interface InputGroupPassThroughMethodOptions {
+ /**
+ * Defines instance.
+ */
+ instance: any;
+ /**
+ * Defines passthrough(pt) options in global config.
+ */
+ global: object | undefined;
+}
+
+/**
+ * Custom passthrough(pt) options.
+ * @see {@link InputGroupProps.pt}
+ */
+export interface InputGroupPassThroughOptions {
+ /**
+ * Used to pass attributes to the root's DOM element.
+ */
+ root?: InputGroupPassThroughOptionType;
+ /**
+ * Used to manage all lifecycle hooks
+ * @see {@link BaseComponent.ComponentHooks}
+ */
+ hooks?: ComponentHooks;
+}
+
+/**
+ * Custom passthrough attributes for each DOM elements
+ */
+export interface InputGroupPassThroughAttributes {
+ [key: string]: any;
+}
+
+/**
+ * Defines valid properties in InputGroupAddon component.
+ */
+export interface InputGroupProps {
+ /**
+ * Used to pass attributes to DOM elements inside the component.
+ * @type {InputGroupPassThroughOptions}
+ */
+ pt?: PassThrough;
+ /**
+ * Used to configure passthrough(pt) options of the component.
+ * @type {PassThroughOptions}
+ */
+ ptOptions?: PassThroughOptions;
+ /**
+ * When enabled, it removes component related styles in the core.
+ * @defaultValue false
+ */
+ unstyled?: boolean;
+}
+
+/**
+ * Defines valid slots in InputGroupAddon component.
+ */
+export interface InputGroupSlots {
+ /**
+ * Custom default template.
+ */
+ default(): VNode[];
+ /**
+ * Dynamic content template.
+ * @todo
+ */
+ [key: string]: (node: any) => VNode[];
+}
+
+/**
+ * Defines valid emits in InputGroupAddon component.
+ */
+export interface InputGroupEmits {}
+
+/**
+ * **PrimeVue - InputGroupAddon**
+ *
+ * _InputGroup displays text, icon, buttons and other content can be grouped next to an input._
+ *
+ * [Live Demo](https://www.primevue.org/inputgroup/)
+ * --- ---
+ * ![PrimeVue](https://primefaces.org/cdn/primevue/images/logo-100.png)
+ *
+ * @group Component
+ */
+declare class InputGroupAddon extends ClassComponent {}
+
+declare module '@vue/runtime-core' {
+ interface GlobalComponents {
+ InputGroupAddon: GlobalComponentConstructor;
+ }
+}
+
+export default InputGroupAddon;
diff --git a/components/lib/inputgroupaddon/InputGroupAddon.vue b/components/lib/inputgroupaddon/InputGroupAddon.vue
new file mode 100644
index 000000000..8df8a9bba
--- /dev/null
+++ b/components/lib/inputgroupaddon/InputGroupAddon.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
diff --git a/components/lib/inputgroupaddon/package.json b/components/lib/inputgroupaddon/package.json
new file mode 100644
index 000000000..cea4e8903
--- /dev/null
+++ b/components/lib/inputgroupaddon/package.json
@@ -0,0 +1,9 @@
+{
+ "main": "./inputgroupaddon.cjs.js",
+ "module": "./inputgrouaddonp.esm.js",
+ "unpkg": "./inputgroupaddon.min.js",
+ "types": "./InputGroupAddon.d.ts",
+ "browser": {
+ "./sfc": "./InputGroupAddon.vue"
+ }
+}
diff --git a/components/lib/inputgroupaddon/style/InputGroupAddonStyle.d.ts b/components/lib/inputgroupaddon/style/InputGroupAddonStyle.d.ts
new file mode 100644
index 000000000..cbfe1a750
--- /dev/null
+++ b/components/lib/inputgroupaddon/style/InputGroupAddonStyle.d.ts
@@ -0,0 +1,3 @@
+import { BaseStyle } from '../../base/style';
+
+export interface InputGroupAddonStyle extends BaseStyle {}
diff --git a/components/lib/inputgroupaddon/style/InputGroupAddonStyle.js b/components/lib/inputgroupaddon/style/InputGroupAddonStyle.js
new file mode 100644
index 000000000..4564c1eeb
--- /dev/null
+++ b/components/lib/inputgroupaddon/style/InputGroupAddonStyle.js
@@ -0,0 +1,10 @@
+import BaseStyle from 'primevue/base/style';
+
+const classes = {
+ root: 'p-inputgroup-addon'
+};
+
+export default BaseStyle.extend({
+ name: 'inputgroupaddon',
+ classes
+});
diff --git a/components/lib/inputgroupaddon/style/package.json b/components/lib/inputgroupaddon/style/package.json
new file mode 100644
index 000000000..f1f6345ff
--- /dev/null
+++ b/components/lib/inputgroupaddon/style/package.json
@@ -0,0 +1,6 @@
+{
+ "main": "./inputgroupaddonstyle.cjs.js",
+ "module": "./inputgroupaddonstyle.esm.js",
+ "unpkg": "./inputgroupaddonstyle.min.js",
+ "types": "./InputGroupAddonStyle.d.ts"
+}
diff --git a/modules/nuxt-primevue/runtime/core/components/index.js b/modules/nuxt-primevue/runtime/core/components/index.js
index 7814ec043..0cf8830ec 100644
--- a/modules/nuxt-primevue/runtime/core/components/index.js
+++ b/modules/nuxt-primevue/runtime/core/components/index.js
@@ -7,6 +7,8 @@ const form = [
'ColorPicker',
'Dropdown',
'Editor',
+ 'InputGroup',
+ 'InputGroupAddon',
'InputMask',
'InputNumber',
'InputSwitch',
diff --git a/nuxt-vite.config.js b/nuxt-vite.config.js
index 10fa77d50..143bd7bdf 100644
--- a/nuxt-vite.config.js
+++ b/nuxt-vite.config.js
@@ -48,6 +48,8 @@ const STYLE_ALIAS = {
'primevue/image/style': path.resolve(__dirname, './components/lib/image/style/ImageStyle.js'),
'primevue/inlinemessage/style': path.resolve(__dirname, './components/lib/inlinemessage/style/InlineMessageStyle.js'),
'primevue/inplace/style': path.resolve(__dirname, './components/lib/inplace/style/InplaceStyle.js'),
+ 'primevue/inputgroup/style': path.resolve(__dirname, './components/lib/inputgroup/style/InputGroupStyle.js'),
+ 'primevue/inputgroupaddon/style': path.resolve(__dirname, './components/lib/inputgroupaddon/style/InputGroupAddonStyle.js'),
'primevue/inputmask/style': path.resolve(__dirname, './components/lib/inputmask/style/InputMaskStyle.js'),
'primevue/inputnumber/style': path.resolve(__dirname, './components/lib/inputnumber/style/InputNumberStyle.js'),
'primevue/inputswitch/style': path.resolve(__dirname, './components/lib/inputswitch/style/InputSwitchStyle.js'),
diff --git a/rollup.config.js b/rollup.config.js
index bc6296fa7..099c7d8a0 100644
--- a/rollup.config.js
+++ b/rollup.config.js
@@ -112,6 +112,8 @@ const CORE_STYLE_DEPENDENCIES = {
'primevue/image/style': 'primevue.image.style',
'primevue/inlinemessage/style': 'primevue.inlinemessage.style',
'primevue/inplace/style': 'primevue.inplace.style',
+ 'primevue/inputgroup/style': 'primevue.inputgroup.style',
+ 'primevue/inputgroupaddon/style': 'primevue.inputgroupaddon.style',
'primevue/inputmask/style': 'primevue.inputmask.style',
'primevue/inputnumber/style': 'primevue.inputnumber.style',
'primevue/inputswitch/style': 'primevue.inputswitch.style',