+ );
+};
diff --git a/src/components/PlaceholderContainer/README.md b/src/components/PlaceholderContainer/README.md
new file mode 100644
index 0000000000..e7b1b6b9b8
--- /dev/null
+++ b/src/components/PlaceholderContainer/README.md
@@ -0,0 +1,221 @@
+
+
+# PlaceholderContainer
+
+
+
+`PlaceholderContainer` is a component for displaying content with image, text content and action controls.
+
+## Direction
+
+The component has `row` and `column` directions of the content layout. To control it use the `direction` property. The default size is `row`.
+
+## Size
+
+To control the size of the `PlaceholderContainer` use the `size` property. The default size is `l`. Possible values: `s`, `m`, `l`, `promo`. The `promo` value sets full width of the content block without minimal content height and a larger title size.
+
+## Action controls
+
+The component can render button control or array of buttons. To display it use `actions` property.
+
+
+
+```tsx
+
+
+
+
+ 1:1
+
+
+
+ }
+ actions={[
+ {
+ text: 'Main button',
+ view: 'normal',
+ onClick: () => console.log('Click by main button'),
+ },
+ ]}
+/>
+```
+
+
+
+It is also possible to render custom controls:
+
+
+
+```tsx
+
+
+
+
+ 1:1
+
+
+
+ }
+ actions={
+ console.log()},
+ {text: 'text 2', action: () => console.log()},
+ ]}
+ onSwitcherClick={(e) => console.log(e)}
+ switcher={
+
+ }
+ />
+ }
+/>
+```
+
+
+
+## Image and content
+
+The property `image` allows to set up image `src` and `alt` settings or react node.
+
+
+
+```tsx
+
+
+
+
+ 1:1
+
+
+
+ }
+/>
+```
+
+with src and alt settings
+
+```tsx
+
+```
+
+
+
+The content of component contains from title and description blocks that can be set by the same properties names. To render custom content use `content` property.
+
+```tsx
+
+
+
+
+ 1:1
+
+
+
+ }
+ content={
+
+
There is any custom title here
+
+ You can add here any long text with custom content and use custom content
+ size for displaying very long texts.
+
+
+ }
+/>
+```
+
+## Align
+
+To control alignment of content inside parent container use `align` property. The default value is `center`.
+
+## Properties
+
+| Name | Description | Type | Default |
+| :---------- | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------------: | :--------: |
+| className | Optional HTML `class` attribute | `string` | |
+| direction | Used to set the direction of content layout, possible values: `"row"` or `"column"` | `string` | `"row"` |
+| size | Size of component, possible values: `"s"`, `"m"`, `"l"` or `"promo"` | `string` | `"l"` |
+| align | Used to set content horizontal align, possible values: `"center"` or `"left"` | `string` | `"center"` |
+| title | Content title text | `string` | |
+| description | Content description text | `string` | |
+| image | Used to set image by src or passing react node | `PlaceholderContainerImageNodeProps` `\| PlaceholderContainerImageProps` | |
+| content | Used to render node instead of content (title, description and actions) | `React.ReactNode` | |
+| actions | Used to render array of button controls or custom node | `PlaceholderContainerActionProps[]` `\| React.ReactNode ` | |
diff --git a/src/components/PlaceholderContainer/__stories__/Docs.mdx b/src/components/PlaceholderContainer/__stories__/Docs.mdx
new file mode 100644
index 0000000000..8a02df5a2f
--- /dev/null
+++ b/src/components/PlaceholderContainer/__stories__/Docs.mdx
@@ -0,0 +1,7 @@
+import {Meta, Markdown} from '@storybook/addon-docs';
+import * as Stories from './PlaceholderContainer.stories';
+import Readme from '../README.md?raw';
+
+
+
+{Readme}
diff --git a/src/components/PlaceholderContainer/__stories__/PlaceholderContainer.stories.tsx b/src/components/PlaceholderContainer/__stories__/PlaceholderContainer.stories.tsx
new file mode 100644
index 0000000000..5215c57589
--- /dev/null
+++ b/src/components/PlaceholderContainer/__stories__/PlaceholderContainer.stories.tsx
@@ -0,0 +1,183 @@
+import React from 'react';
+
+import {ChevronDown} from '@gravity-ui/icons';
+import type {Meta, StoryObj} from '@storybook/react';
+
+import {Showcase} from '../../../demo/Showcase';
+import {Button} from '../../Button';
+import {DropdownMenu} from '../../DropdownMenu';
+import {Icon} from '../../Icon';
+import {block} from '../../utils/cn';
+import {PlaceholderContainer} from '../PlaceholderContainer';
+import type {PlaceholderContainerActionProps} from '../types';
+
+import './PlaceholderContainerShowcase.scss';
+
+export default {
+ title: 'Components/Data Display/PlaceholderContainer',
+ component: PlaceholderContainer,
+ parameters: {
+ a11y: {
+ element: '#storybook-root',
+ config: {
+ rules: [
+ {
+ id: 'color-contrast',
+ enabled: false,
+ },
+ ],
+ },
+ },
+ },
+} as Meta;
+
+type Story = StoryObj;
+
+const b = block('placeholder-container-showcase');
+
+const ImageComponentTest = () => {
+ return (
+
+ );
+};
+
+const actionComponentTest = (
+