+
+ {name}
+ {noteElement}
+
+ {direction === 'horizontal' && }
+
+ );
+}
diff --git a/src/components/DefinitionList/constants.ts b/src/components/DefinitionList/constants.ts
new file mode 100644
index 0000000000..cb71c486a3
--- /dev/null
+++ b/src/components/DefinitionList/constants.ts
@@ -0,0 +1,3 @@
+import {block} from '../utils/cn';
+
+export const b = block('definition-list');
diff --git a/src/components/DefinitionList/i18n/en.json b/src/components/DefinitionList/i18n/en.json
new file mode 100644
index 0000000000..1e930ef2d4
--- /dev/null
+++ b/src/components/DefinitionList/i18n/en.json
@@ -0,0 +1,3 @@
+{
+ "label_note": "Note"
+}
diff --git a/src/components/DefinitionList/i18n/index.ts b/src/components/DefinitionList/i18n/index.ts
new file mode 100644
index 0000000000..e274729cd5
--- /dev/null
+++ b/src/components/DefinitionList/i18n/index.ts
@@ -0,0 +1,6 @@
+import {addComponentKeysets} from '../../../i18n';
+
+import en from './en.json';
+import ru from './ru.json';
+
+export default addComponentKeysets({en, ru}, 'DefinitionList');
diff --git a/src/components/DefinitionList/i18n/ru.json b/src/components/DefinitionList/i18n/ru.json
new file mode 100644
index 0000000000..0ea255da98
--- /dev/null
+++ b/src/components/DefinitionList/i18n/ru.json
@@ -0,0 +1,3 @@
+{
+ "label_note": "Справка"
+}
diff --git a/src/components/DefinitionList/index.ts b/src/components/DefinitionList/index.ts
new file mode 100644
index 0000000000..76cd806ea1
--- /dev/null
+++ b/src/components/DefinitionList/index.ts
@@ -0,0 +1,3 @@
+export {DefinitionList} from './DefinitionList';
+export {DefinitionListItem} from './components/DefinitionListItem';
+export type {DefinitionListProps, DefinitionListItemProps} from './types';
diff --git a/src/components/DefinitionList/types.ts b/src/components/DefinitionList/types.ts
new file mode 100644
index 0000000000..4cda2b3267
--- /dev/null
+++ b/src/components/DefinitionList/types.ts
@@ -0,0 +1,24 @@
+import type React from 'react';
+
+import type {HelpMarkProps} from '../HelpMark';
+import type {QAProps} from '../types';
+export type DefinitionListItemNote = string | HelpMarkProps;
+
+export interface DefinitionListItemProps {
+ name: React.ReactNode;
+ children?: React.ReactNode;
+ copyText?: string;
+ note?: DefinitionListItemNote;
+}
+
+export type DefinitionListDirection = 'vertical' | 'horizontal';
+
+export interface DefinitionListProps extends QAProps {
+ responsive?: boolean;
+ direction?: DefinitionListDirection;
+ nameMaxWidth?: number;
+ contentMaxWidth?: number;
+ className?: string;
+ groupLabelClassName?: string;
+ children: React.ReactNode;
+}
diff --git a/src/components/DefinitionList/utils.ts b/src/components/DefinitionList/utils.ts
new file mode 100644
index 0000000000..e5999334db
--- /dev/null
+++ b/src/components/DefinitionList/utils.ts
@@ -0,0 +1,17 @@
+import type React from 'react';
+
+export function isUnbreakableOver(limit: number) {
+ return function (value: string): boolean {
+ const posibleLines = value.split(/\s+/);
+
+ return posibleLines.some((line) => line.length > limit);
+ };
+}
+
+export function getTitle(content?: React.ReactNode) {
+ if (typeof content === 'string' || typeof content === 'number') {
+ return String(content);
+ }
+
+ return undefined;
+}
diff --git a/src/components/HelpMark/HelpMark.scss b/src/components/HelpMark/HelpMark.scss
new file mode 100644
index 0000000000..ad38a2f64d
--- /dev/null
+++ b/src/components/HelpMark/HelpMark.scss
@@ -0,0 +1,16 @@
+@use '../../../styles/mixins.scss';
+@use '../variables';
+
+$block: '.#{variables.$ns}help-mark';
+
+#{$block} {
+ &__button {
+ @include mixins.button-reset();
+ color: var(--g-color-text-hint);
+ }
+
+ &__button:focus-visible {
+ outline: 2px solid var(--g-color-line-focus);
+ border-radius: 50%;
+ }
+}
diff --git a/src/components/HelpMark/HelpMark.tsx b/src/components/HelpMark/HelpMark.tsx
new file mode 100644
index 0000000000..2dd4017167
--- /dev/null
+++ b/src/components/HelpMark/HelpMark.tsx
@@ -0,0 +1,45 @@
+import React from 'react';
+
+import {CircleQuestion} from '@gravity-ui/icons';
+
+import {Icon} from '../Icon';
+import {Popover} from '../Popover';
+import type {PopupPlacement} from '../Popup';
+import type {QAProps} from '../types';
+import {block} from '../utils/cn';
+
+import './HelpMark.scss';
+
+const b = block('help-mark');
+const ICON_SIZE = 16;
+
+export interface HelpMarkProps extends QAProps {
+ buttonProps?: React.ButtonHTMLAttributes