diff --git a/src/shared/ui/wrapper-truncate/index.tsx b/src/shared/ui/wrapper-truncate/index.tsx
new file mode 100644
index 00000000..a2b1f812
--- /dev/null
+++ b/src/shared/ui/wrapper-truncate/index.tsx
@@ -0,0 +1,36 @@
+import { useState } from "react";
+import { Typography } from "../typography";
+import styles from "./styles.module.css"
+
+type WrapperTruncateProps = {
+ symbolsForCutting: number;
+ textButtonForReading: string;
+ textButtonForCollapsing: string;
+ text: string;
+}
+
+export const WrapperTruncate = ({ symbolsForCutting, textButtonForReading, textButtonForCollapsing, text }: WrapperTruncateProps) => {
+ const [openedText, setOpenedText] = useState(false);
+
+ const handleLimitation = (text: string, numberOfSymbols: number) => {
+ let newText = text;
+ if (!openedText) {
+ newText = text.slice(0, numberOfSymbols) + "...";
+ }
+
+ return newText + " "
+ }
+
+ return (
+
+
+ {text.length < symbolsForCutting ? text : (
+ <>
+ {handleLimitation(text, symbolsForCutting)}
+
+ >
+ )}
+
+
+ )
+}
\ No newline at end of file
diff --git a/src/shared/ui/wrapper-truncate/styles.module.css b/src/shared/ui/wrapper-truncate/styles.module.css
new file mode 100644
index 00000000..bc9961a7
--- /dev/null
+++ b/src/shared/ui/wrapper-truncate/styles.module.css
@@ -0,0 +1,18 @@
+.container {
+ width: 100%;
+ height: 100%;
+}
+
+.button {
+ display: inline;
+ border: none;
+ background-color: transparent;
+ color: var(--colors-interface-primary);
+ border-radius: 5px;
+}
+
+.button:hover {
+ color: white;
+ background-color: var(--colors-interface-primary);
+ transition: 0.2s;
+}
\ No newline at end of file
diff --git a/src/shared/ui/wrapper-truncate/wrapper-truncate.stories.ts b/src/shared/ui/wrapper-truncate/wrapper-truncate.stories.ts
new file mode 100644
index 00000000..429aa8ac
--- /dev/null
+++ b/src/shared/ui/wrapper-truncate/wrapper-truncate.stories.ts
@@ -0,0 +1,29 @@
+import { Meta, StoryObj } from "@storybook/react/*";
+import { WrapperTruncate } from "./";
+
+const meta: Meta = {
+ title: 'shared/ui/WrapperTruncate',
+ component: WrapperTruncate,
+ tags: ['autodocs'],
+};
+
+export default meta;
+type Story = StoryObj;
+
+export const MoreSymbols: Story = {
+ args: {
+ symbolsForCutting: 50,
+ textButtonForReading: "Читать",
+ textButtonForCollapsing: "Свернуть",
+ text: "Пожалуйста, погуляйте с моей собакой, я не смогу ее выгуливать с 12.06 по 24.06 потому что уеду на обследование к врачу. Если есть желающие помочь в выгуле собаки, то звоните."
+ },
+};
+
+export const LessSymbols: Story = {
+ args: {
+ symbolsForCutting: 50,
+ textButtonForReading: "Читать",
+ textButtonForCollapsing: "Свернуть",
+ text: "Пожалуйста, погуляйте с моей собакой"
+ },
+};
\ No newline at end of file