diff --git a/src/app/layouts/MainLayout/SkeletonGenerator/SkeletonGenerator.tsx b/src/app/layouts/MainLayout/SkeletonGenerator/SkeletonGenerator.tsx
index 688a7faa4..c6fc193cc 100644
--- a/src/app/layouts/MainLayout/SkeletonGenerator/SkeletonGenerator.tsx
+++ b/src/app/layouts/MainLayout/SkeletonGenerator/SkeletonGenerator.tsx
@@ -21,6 +21,7 @@ import { InterviewQuizResultPageSkeleton } from '@/pages/interview/interviewQuiz
import { InterviewStatisticsPageSkeleton } from '@/pages/interview/interviewStatistics';
import { MainPageSkeleton } from '@/pages/interview/main';
import { ProfilePageSkeleton } from '@/pages/profile/profileInfo';
+import { UserProfilePageSkeleton } from '@/pages/profile/userProfile';
import { QuestionsPageSkeleton } from '@/pages/wiki/question/questions';
const SkeletonGenerator = () => {
@@ -31,6 +32,7 @@ const SkeletonGenerator = () => {
ROUTES.admin.questions.details.page,
location.pathname,
);
+ const isUserProfilePage = matchPath(ROUTES.users.page, location.pathname);
if (isInterviewResultPage) {
return ;
@@ -40,6 +42,10 @@ const SkeletonGenerator = () => {
return ;
}
+ if (isUserProfilePage) {
+ return ;
+ }
+
switch (location.pathname) {
case ROUTES.appRoute:
return ;
diff --git a/src/entities/user/index.ts b/src/entities/user/index.ts
index 5116ca93e..40e521970 100644
--- a/src/entities/user/index.ts
+++ b/src/entities/user/index.ts
@@ -17,6 +17,7 @@ export {
export { UserCard } from './ui/UserCard/UserCard';
export { RoleSelect } from './ui/RoleSelect/RoleSelect';
export { UserEditButton } from './ui/UserEditButton/UserEditButton';
+export { UserEditButtonSkeleton } from './ui/UserEditButton/UserEditButton.skeleton';
export { UserRolesList } from './ui/UserRolesList/UserRolesList';
export { UserSelect } from './ui/UserSelect/UserSelect';
export { UserSelectSkeleton } from './ui/UserSelect/UserSelect.skeleton';
diff --git a/src/entities/user/ui/UserEditButton/UserEditButton.module.css b/src/entities/user/ui/UserEditButton/UserEditButton.module.css
index e196dbfdd..07b59a541 100644
--- a/src/entities/user/ui/UserEditButton/UserEditButton.module.css
+++ b/src/entities/user/ui/UserEditButton/UserEditButton.module.css
@@ -3,3 +3,21 @@
margin-left: auto;
font-size: var(--font-size-p-s);
}
+
+.skeleton-link {
+ margin-left: auto;
+ width: 100px;
+ height: 20px;
+}
+
+@media (width <=1280px) {
+ .skeleton-link {
+ width: 20px;
+ }
+}
+
+@media (width <=720px) {
+ .skeleton-link-profile {
+ order: 1;
+ }
+}
\ No newline at end of file
diff --git a/src/entities/user/ui/UserEditButton/UserEditButton.skeleton.tsx b/src/entities/user/ui/UserEditButton/UserEditButton.skeleton.tsx
new file mode 100644
index 000000000..11634c2ff
--- /dev/null
+++ b/src/entities/user/ui/UserEditButton/UserEditButton.skeleton.tsx
@@ -0,0 +1,13 @@
+import { Skeleton } from '@/shared/ui/Skeleton';
+
+import styles from './UserEditButton.module.css';
+
+export const UserEditButtonSkeleton = () => {
+ return (
+
+ );
+};
diff --git a/src/pages/profile/profileInfo/ui/ProfilePage/ProfilePage.module.css b/src/pages/profile/profileInfo/ui/ProfilePage/ProfilePage.module.css
index e686c53e2..3c9bc6c13 100644
--- a/src/pages/profile/profileInfo/ui/ProfilePage/ProfilePage.module.css
+++ b/src/pages/profile/profileInfo/ui/ProfilePage/ProfilePage.module.css
@@ -1,7 +1,3 @@
-.title {
- margin: 0;
-}
-
.content {
display: flex;
flex-direction: row;
@@ -26,53 +22,6 @@
width: 360px;
}
-.separator {
- margin: 16px 0;
- width: 100%;
- height: 1px;
- background-color: var(--color-black-50);
-}
-
-.profile-card-skeleton,
-.card-skeleton {
- gap: 0;
- height: auto;
-}
-
-.profile-card-skeleton {
- padding: 16px;
-}
-
-.flex-profile-skeleton {
- display: flex;
- gap: 16px;
-}
-
-.card-skeleton {
- padding: 24px;
-}
-
-.profile-card-skeleton,
-.card-skeleton:not(:last-child) {
- margin-bottom: 24px;
-}
-
-.header-card-skeleton {
- margin-bottom: 20px;
-}
-
-.sleleton-link {
- margin-left: auto;
- width: 100px;
- height: 20px;
-}
-
-@media (width <= 1280px) {
- .sleleton-link {
- width: 20px;
- }
-}
-
@media (width <= 1440px) {
.content {
flex-direction: column-reverse;
@@ -87,17 +36,3 @@
width: 100%;
}
}
-
-@media (width <= 720px) {
- .flex-profile-skeleton {
- flex-direction: column;
- }
-
- .sleleton-link-profile {
- order: -1;
- }
-
- .card {
- min-height: 100%;
- }
-}
\ No newline at end of file
diff --git a/src/pages/profile/profileInfo/ui/ProfilePage/ProfilePage.skeleton.tsx b/src/pages/profile/profileInfo/ui/ProfilePage/ProfilePage.skeleton.tsx
index b8bbd100d..ab1cf1962 100644
--- a/src/pages/profile/profileInfo/ui/ProfilePage/ProfilePage.skeleton.tsx
+++ b/src/pages/profile/profileInfo/ui/ProfilePage/ProfilePage.skeleton.tsx
@@ -1,6 +1,6 @@
-import { Card } from '@/shared/ui/Card';
-import { Flex } from '@/shared/ui/Flex';
-import { Skeleton } from '@/shared/ui/Skeleton';
+import { InfoBlockSkeleton } from '@/widgets/Profile/InfoBlock';
+import { SkillsBlockSkeleton } from '@/widgets/Profile/SkillsBlock';
+import { UserBlockSkeleton } from '@/widgets/Profile/UserBlock';
import styles from './ProfilePage.module.css';
@@ -8,90 +8,9 @@ export const ProfilePageSkeleton = () => {
return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {[...Array(4)].map((_, index) => (
-
-
-
- ))}
-
-
- {[...Array(2)].map((_, index) => (
-
-
-
- ))}
-
-
- {[...Array(6)].map((_, index) => (
-
-
-
- ))}
-
-
-
-
-
-
-
-
- {[...Array(6)].map((_, index) => (
-
- ))}
-
-
-
-
-
- {[...Array(8)].map((_, index) => (
-
-
-
- ))}
-
-
+
+
+
);
diff --git a/src/pages/profile/userProfile/ui/UserProfilePage/UserProfilePage.module.css b/src/pages/profile/userProfile/ui/UserProfilePage/UserProfilePage.module.css
index 72e19b6a8..1b7c188cd 100644
--- a/src/pages/profile/userProfile/ui/UserProfilePage/UserProfilePage.module.css
+++ b/src/pages/profile/userProfile/ui/UserProfilePage/UserProfilePage.module.css
@@ -1,7 +1,3 @@
-.title {
- margin: 0;
-}
-
.content {
display: flex;
flex-direction: row;
@@ -26,52 +22,6 @@
width: 360px;
}
-.separator {
- margin: 16px 0;
- width: 100%;
- height: 1px;
- background-color: var(--color-black-50);
-}
-
-.profile-card-skeleton,
-.card-skeleton {
- gap: 0;
- height: auto;
-}
-
-.profile-card-skeleton {
- padding: 16px;
-}
-
-.flex-profile-skeleton {
- display: flex;
- gap: 16px;
-}
-
-.card-skeleton {
- padding: 24px;
-}
-
-.profile-card-skeleton,
-.card-skeleton:not(:last-child) {
- margin-bottom: 24px;
-}
-
-.header-card-skeleton {
- margin-bottom: 20px;
-}
-
-.sleleton-link {
- margin-left: auto;
- width: 100px;
- height: 20px;
-}
-
-@media (width <= 1280px) {
- .sleleton-link {
- width: 20px;
- }
-}
@media (width <= 1440px) {
.content {
@@ -89,18 +39,6 @@
}
@media (width <= 720px) {
- .flex-profile-skeleton {
- flex-direction: column;
- }
-
- .sleleton-link-profile {
- order: -1;
- }
-
- .card {
- min-height: 100%;
- }
-
.content {
gap: 0
}
diff --git a/src/pages/profile/userProfile/ui/UserProfilePage/UserProfilePage.skeleton.tsx b/src/pages/profile/userProfile/ui/UserProfilePage/UserProfilePage.skeleton.tsx
index 47873ccee..99efae79b 100644
--- a/src/pages/profile/userProfile/ui/UserProfilePage/UserProfilePage.skeleton.tsx
+++ b/src/pages/profile/userProfile/ui/UserProfilePage/UserProfilePage.skeleton.tsx
@@ -1,6 +1,6 @@
-import { Card } from '@/shared/ui/Card';
-import { Flex } from '@/shared/ui/Flex';
-import { Skeleton } from '@/shared/ui/Skeleton';
+import { InfoBlockSkeleton } from '@/widgets/Profile/InfoBlock';
+import { SkillsBlockSkeleton } from '@/widgets/Profile/SkillsBlock';
+import { UserBlockSkeleton } from '@/widgets/Profile/UserBlock';
import styles from './UserProfilePage.module.css';
@@ -8,90 +8,9 @@ export const UserProfilePageSkeleton = () => {
return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {[...Array(4)].map((_, index) => (
-
-
-
- ))}
-
-
- {[...Array(2)].map((_, index) => (
-
-
-
- ))}
-
-
- {[...Array(6)].map((_, index) => (
-
-
-
- ))}
-
-
-
-
-
-
-
-
- {[...Array(6)].map((_, index) => (
-
- ))}
-
-
-
-
-
- {[...Array(8)].map((_, index) => (
-
-
-
- ))}
-
-
+
+
+
);
diff --git a/src/widgets/Profile/InfoBlock/index.ts b/src/widgets/Profile/InfoBlock/index.ts
index 5d90517a4..bc2a686ce 100644
--- a/src/widgets/Profile/InfoBlock/index.ts
+++ b/src/widgets/Profile/InfoBlock/index.ts
@@ -1,3 +1,6 @@
+export { InfoBlockSkeleton } from './ui/InfoBlock/InfoBlock.skeleton';
export { InfoBlock } from './ui/InfoBlock/InfoBlock';
export { InfoBlockHeader } from './ui/InfoBlockHeader/InfoBlockHeader';
+export { InfoBlockHeaderSkeleton } from './ui/InfoBlockHeader/InfoBlockHeader.skeleton';
export { InfoBlockText } from './ui/InfoBlockText/InfoBlockText';
+export { InfoBlockTextSkeleton } from './ui/InfoBlockText/InfoBlockText.skeleton';
diff --git a/src/widgets/Profile/InfoBlock/ui/InfoBlock/InfoBlock.module.css b/src/widgets/Profile/InfoBlock/ui/InfoBlock/InfoBlock.module.css
index 878559fc6..aaef5f5fd 100644
--- a/src/widgets/Profile/InfoBlock/ui/InfoBlock/InfoBlock.module.css
+++ b/src/widgets/Profile/InfoBlock/ui/InfoBlock/InfoBlock.module.css
@@ -7,4 +7,10 @@
.container {
height: auto;
+}
+
+.card-skeleton {
+ gap: 0;
+ padding: 24px;
+ height: auto;
}
\ No newline at end of file
diff --git a/src/widgets/Profile/InfoBlock/ui/InfoBlock/InfoBlock.skeleton.tsx b/src/widgets/Profile/InfoBlock/ui/InfoBlock/InfoBlock.skeleton.tsx
new file mode 100644
index 000000000..7c37f7402
--- /dev/null
+++ b/src/widgets/Profile/InfoBlock/ui/InfoBlock/InfoBlock.skeleton.tsx
@@ -0,0 +1,15 @@
+import { Card } from '@/shared/ui/Card';
+
+import { InfoBlockHeaderSkeleton } from '../InfoBlockHeader/InfoBlockHeader.skeleton';
+import { InfoBlockTextSkeleton } from '../InfoBlockText/InfoBlockText.skeleton';
+
+import styles from './InfoBlock.module.css';
+
+export const InfoBlockSkeleton = () => {
+ return (
+
+
+
+
+ );
+};
diff --git a/src/widgets/Profile/InfoBlock/ui/InfoBlockHeader/InfoBlockHeader.module.css b/src/widgets/Profile/InfoBlock/ui/InfoBlockHeader/InfoBlockHeader.module.css
index 0f35af5f1..fb993e573 100644
--- a/src/widgets/Profile/InfoBlock/ui/InfoBlockHeader/InfoBlockHeader.module.css
+++ b/src/widgets/Profile/InfoBlock/ui/InfoBlockHeader/InfoBlockHeader.module.css
@@ -10,7 +10,6 @@
font-size: var(--font-size-h-xs);
}
-.info-edit {
- cursor: pointer;
- font-size: var(--font-size-p-s);
-}
+.header-card-skeleton {
+ margin-bottom: 20px;
+}
\ No newline at end of file
diff --git a/src/widgets/Profile/InfoBlock/ui/InfoBlockHeader/InfoBlockHeader.skeleton.tsx b/src/widgets/Profile/InfoBlock/ui/InfoBlockHeader/InfoBlockHeader.skeleton.tsx
new file mode 100644
index 000000000..63615149d
--- /dev/null
+++ b/src/widgets/Profile/InfoBlock/ui/InfoBlockHeader/InfoBlockHeader.skeleton.tsx
@@ -0,0 +1,17 @@
+import { Flex } from '@/shared/ui/Flex';
+import { Skeleton } from '@/shared/ui/Skeleton';
+
+import { UserEditButtonSkeleton } from '@/entities/user';
+
+import styles from './InfoBlockHeader.module.css';
+
+export const InfoBlockHeaderSkeleton = () => {
+ return (
+
+
+
+
+
+
+ );
+};
diff --git a/src/widgets/Profile/InfoBlock/ui/InfoBlockText/InfoBlockText.skeleton.tsx b/src/widgets/Profile/InfoBlock/ui/InfoBlockText/InfoBlockText.skeleton.tsx
new file mode 100644
index 000000000..4f3110984
--- /dev/null
+++ b/src/widgets/Profile/InfoBlock/ui/InfoBlockText/InfoBlockText.skeleton.tsx
@@ -0,0 +1,12 @@
+import { Flex } from '@/shared/ui/Flex';
+import { Skeleton } from '@/shared/ui/Skeleton';
+
+export const InfoBlockTextSkeleton = () => {
+ return (
+
+ {[...Array(6)].map((_, index) => (
+
+ ))}
+
+ );
+};
diff --git a/src/widgets/Profile/SkillsBlock/index.ts b/src/widgets/Profile/SkillsBlock/index.ts
index 89d0056fc..04c18cca0 100644
--- a/src/widgets/Profile/SkillsBlock/index.ts
+++ b/src/widgets/Profile/SkillsBlock/index.ts
@@ -1,4 +1,7 @@
+export { SkillsBlockSkeleton } from './ui/SkillsBlock/SkillsBlock.skeleton';
export { SkillsBlock } from './ui/SkillsBlock/SkillsBlock';
export { SkillsBlockList } from './ui/SkillsBlockList/SkillsBlockList';
+export { SkillsBlockListSkeleton } from './ui/SkillsBlockList/SkillsBlockList.skeleton';
export { SkillsBlockItem } from './ui/SkillsBlockItem/SkillsBlockItem';
export { SkillsBlockHeader } from './ui/SkillsBlockHeader/SkillsBlockHeader';
+export { SkillsBlockHeaderSkeleton } from './ui/SkillsBlockHeader/SkillsBlockHeader.skeleton';
diff --git a/src/widgets/Profile/SkillsBlock/ui/SkillsBlock/SkillsBlock.module.css b/src/widgets/Profile/SkillsBlock/ui/SkillsBlock/SkillsBlock.module.css
index 7c8c7d387..22bbc57a5 100644
--- a/src/widgets/Profile/SkillsBlock/ui/SkillsBlock/SkillsBlock.module.css
+++ b/src/widgets/Profile/SkillsBlock/ui/SkillsBlock/SkillsBlock.module.css
@@ -3,4 +3,10 @@
flex-direction: column;
gap: 20px;
width: 100%;
+}
+
+.card-skeleton {
+ gap: 0;
+ padding: 24px;
+ height: auto;
}
\ No newline at end of file
diff --git a/src/widgets/Profile/SkillsBlock/ui/SkillsBlock/SkillsBlock.skeleton.tsx b/src/widgets/Profile/SkillsBlock/ui/SkillsBlock/SkillsBlock.skeleton.tsx
new file mode 100644
index 000000000..3977a72cb
--- /dev/null
+++ b/src/widgets/Profile/SkillsBlock/ui/SkillsBlock/SkillsBlock.skeleton.tsx
@@ -0,0 +1,15 @@
+import { Card } from '@/shared/ui/Card';
+
+import { SkillsBlockHeaderSkeleton } from '../SkillsBlockHeader/SkillsBlockHeader.skeleton';
+import { SkillsBlockListSkeleton } from '../SkillsBlockList/SkillsBlockList.skeleton';
+
+import styles from './SkillsBlock.module.css';
+
+export const SkillsBlockSkeleton = () => {
+ return (
+
+
+
+
+ );
+};
diff --git a/src/widgets/Profile/SkillsBlock/ui/SkillsBlockHeader/SkillsBlockHeader.module.css b/src/widgets/Profile/SkillsBlock/ui/SkillsBlockHeader/SkillsBlockHeader.module.css
index 738f8deaa..6e72ceae8 100644
--- a/src/widgets/Profile/SkillsBlock/ui/SkillsBlockHeader/SkillsBlockHeader.module.css
+++ b/src/widgets/Profile/SkillsBlock/ui/SkillsBlockHeader/SkillsBlockHeader.module.css
@@ -9,7 +9,6 @@
font-size: var(--font-size-h-xs);
}
-.skills-edit {
- cursor: pointer;
- font-size: var(--font-size-p-s);
+.header-card-skeleton {
+ margin-bottom: 20px;
}
\ No newline at end of file
diff --git a/src/widgets/Profile/SkillsBlock/ui/SkillsBlockHeader/SkillsBlockHeader.skeleton.tsx b/src/widgets/Profile/SkillsBlock/ui/SkillsBlockHeader/SkillsBlockHeader.skeleton.tsx
new file mode 100644
index 000000000..392b23738
--- /dev/null
+++ b/src/widgets/Profile/SkillsBlock/ui/SkillsBlockHeader/SkillsBlockHeader.skeleton.tsx
@@ -0,0 +1,17 @@
+import { Flex } from '@/shared/ui/Flex';
+import { Skeleton } from '@/shared/ui/Skeleton';
+
+import { UserEditButtonSkeleton } from '@/entities/user';
+
+import styles from './SkillsBlockHeader.module.css';
+
+export const SkillsBlockHeaderSkeleton = () => {
+ return (
+
+
+
+
+
+
+ );
+};
diff --git a/src/widgets/Profile/SkillsBlock/ui/SkillsBlockList/SkillsBlockList.skeleton.tsx b/src/widgets/Profile/SkillsBlock/ui/SkillsBlockList/SkillsBlockList.skeleton.tsx
new file mode 100644
index 000000000..66804db2a
--- /dev/null
+++ b/src/widgets/Profile/SkillsBlock/ui/SkillsBlockList/SkillsBlockList.skeleton.tsx
@@ -0,0 +1,14 @@
+import { Flex } from '@/shared/ui/Flex';
+import { Skeleton } from '@/shared/ui/Skeleton';
+
+export const SkillsBlockListSkeleton = () => {
+ return (
+
+ {[...Array(8)].map((_, index) => (
+
+
+
+ ))}
+
+ );
+};
diff --git a/src/widgets/Profile/UserBlock/index.ts b/src/widgets/Profile/UserBlock/index.ts
index bd65ba273..a1ef9abd6 100644
--- a/src/widgets/Profile/UserBlock/index.ts
+++ b/src/widgets/Profile/UserBlock/index.ts
@@ -1 +1 @@
-export { UserBlock } from './ui/UserBlock';
+export { UserBlock, UserBlockSkeleton } from './ui/UserBlock';
diff --git a/src/widgets/Profile/UserBlock/ui/UserBlock/UserBlock.module.css b/src/widgets/Profile/UserBlock/ui/UserBlock/UserBlock.module.css
index 3385c8193..34126745e 100644
--- a/src/widgets/Profile/UserBlock/ui/UserBlock/UserBlock.module.css
+++ b/src/widgets/Profile/UserBlock/ui/UserBlock/UserBlock.module.css
@@ -12,6 +12,17 @@
width: 100%;
}
+.profile-card-skeleton {
+ gap: 0;
+ padding: 16px;
+ height: auto;
+}
+
+.flex-profile-skeleton {
+ display: flex;
+ gap: 16px;
+}
+
@media (width <= 768px) {
.card {
flex-direction: column;
@@ -29,3 +40,9 @@
width: 100%;
}
}
+
+@media (width <=720px) {
+ .flex-profile-skeleton {
+ flex-direction: column;
+ }
+}
\ No newline at end of file
diff --git a/src/widgets/Profile/UserBlock/ui/UserBlock/UserBlock.skeleton.tsx b/src/widgets/Profile/UserBlock/ui/UserBlock/UserBlock.skeleton.tsx
new file mode 100644
index 000000000..dde05a7f6
--- /dev/null
+++ b/src/widgets/Profile/UserBlock/ui/UserBlock/UserBlock.skeleton.tsx
@@ -0,0 +1,20 @@
+import { Card } from '@/shared/ui/Card';
+
+import { UserEditButtonSkeleton } from '@/entities/user';
+
+import { UserImageBlockSkeleton } from '../UserImageBlock';
+import { UserInfoBlockSkeleton } from '../UserInfoBlock';
+
+import styles from './UserBlock.module.css';
+
+export const UserBlockSkeleton = () => {
+ return (
+
+
+
+
+
+
+
+ );
+};
diff --git a/src/widgets/Profile/UserBlock/ui/UserBlock/index.ts b/src/widgets/Profile/UserBlock/ui/UserBlock/index.ts
index fd27aff41..b599a1ec3 100644
--- a/src/widgets/Profile/UserBlock/ui/UserBlock/index.ts
+++ b/src/widgets/Profile/UserBlock/ui/UserBlock/index.ts
@@ -1 +1,2 @@
export { UserBlock } from './UserBlock';
+export { UserBlockSkeleton } from './UserBlock.skeleton';
diff --git a/src/widgets/Profile/UserBlock/ui/UserImageBlock/UserImageBlock.skeleton.tsx b/src/widgets/Profile/UserBlock/ui/UserImageBlock/UserImageBlock.skeleton.tsx
new file mode 100644
index 000000000..c49a451bf
--- /dev/null
+++ b/src/widgets/Profile/UserBlock/ui/UserImageBlock/UserImageBlock.skeleton.tsx
@@ -0,0 +1,14 @@
+import { Flex } from '@/shared/ui/Flex';
+import { Skeleton } from '@/shared/ui/Skeleton';
+
+export const UserImageBlockSkeleton = () => {
+ return (
+
+
+
+
+
+
+
+ );
+};
diff --git a/src/widgets/Profile/UserBlock/ui/UserImageBlock/index.ts b/src/widgets/Profile/UserBlock/ui/UserImageBlock/index.ts
index 548712366..498b8068e 100644
--- a/src/widgets/Profile/UserBlock/ui/UserImageBlock/index.ts
+++ b/src/widgets/Profile/UserBlock/ui/UserImageBlock/index.ts
@@ -1 +1,2 @@
+export { UserImageBlockSkeleton } from './UserImageBlock.skeleton';
export { UserImageBlock } from './UserImageBlock';
diff --git a/src/widgets/Profile/UserBlock/ui/UserInfoBlock/UserInfoBlock.skeleton.tsx b/src/widgets/Profile/UserBlock/ui/UserInfoBlock/UserInfoBlock.skeleton.tsx
new file mode 100644
index 000000000..177b80cf3
--- /dev/null
+++ b/src/widgets/Profile/UserBlock/ui/UserInfoBlock/UserInfoBlock.skeleton.tsx
@@ -0,0 +1,34 @@
+import { Flex } from '@/shared/ui/Flex';
+import { Skeleton } from '@/shared/ui/Skeleton';
+
+export const UserInfoBlockSkeleton = () => {
+ return (
+
+
+
+
+
+
+ {[...Array(4)].map((_, index) => (
+
+
+
+ ))}
+
+
+ {[...Array(2)].map((_, index) => (
+
+
+
+ ))}
+
+
+ {[...Array(6)].map((_, index) => (
+
+
+
+ ))}
+
+
+ );
+};
diff --git a/src/widgets/Profile/UserBlock/ui/UserInfoBlock/index.ts b/src/widgets/Profile/UserBlock/ui/UserInfoBlock/index.ts
index f02d5d634..ac566c338 100644
--- a/src/widgets/Profile/UserBlock/ui/UserInfoBlock/index.ts
+++ b/src/widgets/Profile/UserBlock/ui/UserInfoBlock/index.ts
@@ -1 +1,2 @@
+export { UserInfoBlockSkeleton } from './UserInfoBlock.skeleton';
export { UserInfoBlock } from './UserInfoBlock';