From 0e5ce5868c75e07670007774ba6290ca9219b183 Mon Sep 17 00:00:00 2001 From: bender101 Date: Mon, 20 Nov 2023 21:36:20 +0300 Subject: [PATCH] refactor public api for shared ui --- .../refactoring/createPublicApiForSharedUi.ts | 49 +++++++++++++++++++ scripts/refactoring/updateImports.ts | 26 ++++++++++ scripts/updateImports.ts | 28 ----------- .../ArticleCodeBlockComponent.tsx | 2 +- .../ui/ArticleDetails/ArticleDetails.tsx | 8 +-- .../ArticleImageBlockComponent.tsx | 2 +- .../Article/ui/ArticleList/ArticleList.tsx | 2 +- .../ui/ArticleListItem/ArticleListItem.tsx | 12 ++--- .../ArticleListItemSkeleton.tsx | 4 +- .../ArticleSortSelector.tsx | 2 +- .../ArticleTextBlockComponent.tsx | 2 +- .../ui/ArticleTypeTabs/ArticleTypeTabs.tsx | 2 +- .../ArticleViewSelector.tsx | 4 +- .../Comment/ui/CommentCard/CommentCard.tsx | 8 +-- .../Comment/ui/CommentList/CommentList.tsx | 2 +- src/entities/Counter/ui/Counter.tsx | 2 +- .../ui/NotificationItem/NotificationItem.tsx | 4 +- .../ui/NotificationList/NotificationList.tsx | 2 +- .../Profile/ui/ProfileCard/ProfileCard.tsx | 8 +-- .../Rating/ui/RatingCard/RatingCard.tsx | 14 +++--- .../AuthByUsername/ui/LoginForm/LoginForm.tsx | 6 +-- .../ui/LoginModal/LoginModal.tsx | 4 +- src/features/LangSwitcher/ui/LangSwitcher.tsx | 2 +- .../ThemeSwitcher/ui/ThemeSwitcher.tsx | 2 +- .../ui/AddCommentForm/AddCommentForm.tsx | 4 +- .../ui/ArticleRating/ArticleRating.async.tsx | 2 +- .../ui/ArticleRating/ArticleRating.tsx | 2 +- .../ArticleRecommendationsList.tsx | 2 +- .../ui/AvatarDropdown/AvatarDropdown.tsx | 2 +- .../EditableProfileCard.tsx | 2 +- .../EditableProfileCardHeader.tsx | 4 +- .../NotificationButton/NotificationButton.tsx | 6 +-- .../ArticleDetailsComments.tsx | 2 +- .../ArticleDetailsPageHeader.tsx | 2 +- .../ArticleInfiniteList.tsx | 2 +- .../ArticlesPageFilters.tsx | 4 +- src/pages/ProfilePage/ui/ProfilePage.tsx | 2 +- src/widgets/Navbar/ui/Navbar.tsx | 6 +-- .../PageLoader/ui/PageLoader/PageLoader.tsx | 2 +- src/widgets/SideBar/ui/SideBar/SideBar.tsx | 2 +- .../SideBar/ui/SidebarItem/SidebarItem.tsx | 2 +- 41 files changed, 146 insertions(+), 99 deletions(-) create mode 100644 scripts/refactoring/createPublicApiForSharedUi.ts create mode 100644 scripts/refactoring/updateImports.ts delete mode 100644 scripts/updateImports.ts diff --git a/scripts/refactoring/createPublicApiForSharedUi.ts b/scripts/refactoring/createPublicApiForSharedUi.ts new file mode 100644 index 0000000..dca561c --- /dev/null +++ b/scripts/refactoring/createPublicApiForSharedUi.ts @@ -0,0 +1,49 @@ +import { Project } from 'ts-morph'; +import path from 'path'; + +const project = new Project({}); + +project.addSourceFilesAtPaths('src/**/*.ts'); +project.addSourceFilesAtPaths('src/**/*.tsx'); + +const files = project.getSourceFiles(); +const uiPath = path.resolve(__dirname, '..', '..', 'src', 'shared', 'ui'); +const sharedUiDirectory = project.getDirectory(uiPath); +const componentsDirs = sharedUiDirectory?.getDirectories(); + +function isAbsolute(value: string) { + const layers = ['app', 'shared', 'entities', 'features', 'widgets', 'pages']; + return layers.some((layer) => value.startsWith(layer)); +} + +componentsDirs?.forEach((directory) => { + const indexFilePath = `${directory.getPath()}/index.ts`; + const indexFile = directory.getSourceFile(indexFilePath); + + if (!indexFile) { + const sourceCode = `export * from './${directory.getBaseName()}'`; + const file = directory.createSourceFile(indexFilePath, sourceCode, { overwrite: true }); + + file.save(); + } +}); + +files.forEach((sourceFile) => { + const importDeclarations = sourceFile.getImportDeclarations(); + importDeclarations.forEach((importDeclaration) => { + const value = importDeclaration.getModuleSpecifierValue(); + const valueWithoutAlias = value.replace('@/', ''); + + const segments = valueWithoutAlias.split('/'); + + const isSharedLayer = segments?.[0] === 'shared'; + const isUiSlice = segments?.[1] === 'ui'; + + if (isAbsolute(valueWithoutAlias) && isSharedLayer && isUiSlice) { + const result = valueWithoutAlias.split('/').slice(0, 3).join('/'); + importDeclaration.setModuleSpecifier(`@/${result}`); + } + }); +}); + +project.save(); diff --git a/scripts/refactoring/updateImports.ts b/scripts/refactoring/updateImports.ts new file mode 100644 index 0000000..c7789a5 --- /dev/null +++ b/scripts/refactoring/updateImports.ts @@ -0,0 +1,26 @@ +import { Project } from 'ts-morph'; + +const project = new Project({}); + +project.addSourceFilesAtPaths('src/**/*.ts'); +project.addSourceFilesAtPaths('src/**/*.tsx'); + +const files = project.getSourceFiles(); + +function isAbsolute(value: string) { + const layers = ['app', 'shared', 'entities', 'features', 'widgets', 'pages']; + return layers.some((layer) => value.startsWith(layer)); +} + +files.forEach((sourceFile) => { + const importDeclarations = sourceFile.getImportDeclarations(); + importDeclarations.forEach((importDeclaration) => { + const value = importDeclaration.getModuleSpecifierValue(); + + if (isAbsolute(value)) { + importDeclaration.setModuleSpecifier(`@/${value}`); + } + }); +}); + +project.save(); diff --git a/scripts/updateImports.ts b/scripts/updateImports.ts deleted file mode 100644 index 36c44d2..0000000 --- a/scripts/updateImports.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Project } from "ts-morph"; - -const project = new Project({}); - -project.addSourceFilesAtPaths("src/**/*.ts"); -project.addSourceFilesAtPaths("src/**/*.tsx"); - -const files = project.getSourceFiles(); - -function isAbsolute(value: string) { - const layers = ["app", "entities", "features", "pages", "shared", "widgets"]; - - return layers.some((layer) => value.startsWith(layer)); -} - -files.forEach((sourceFile) => { - const importDeclarations = sourceFile.getImportDeclarations(); - - importDeclarations.forEach((importDeclaration) => { - const value = importDeclaration.getModuleSpecifierValue(); - - if (isAbsolute(value)) { - importDeclaration.setModuleSpecifier(`@/${value}`); - } - }); -}); - -project.save(); diff --git a/src/entities/Article/ui/ArticleCodeBlockComponent/ArticleCodeBlockComponent.tsx b/src/entities/Article/ui/ArticleCodeBlockComponent/ArticleCodeBlockComponent.tsx index f55daf5..ec86ee1 100644 --- a/src/entities/Article/ui/ArticleCodeBlockComponent/ArticleCodeBlockComponent.tsx +++ b/src/entities/Article/ui/ArticleCodeBlockComponent/ArticleCodeBlockComponent.tsx @@ -1,6 +1,6 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { memo } from "react"; -import { Code } from "@/shared/ui/Code/Code"; +import { Code } from "@/shared/ui/Code"; import cls from "./ArticleCodeBlockComponent.module.scss"; import { ArticleCodeBlock } from "../../model/types/article"; diff --git a/src/entities/Article/ui/ArticleDetails/ArticleDetails.tsx b/src/entities/Article/ui/ArticleDetails/ArticleDetails.tsx index e68630f..2e6fe99 100644 --- a/src/entities/Article/ui/ArticleDetails/ArticleDetails.tsx +++ b/src/entities/Article/ui/ArticleDetails/ArticleDetails.tsx @@ -3,12 +3,12 @@ import { useTranslation } from "react-i18next"; import { memo, useCallback, useEffect } from "react"; import { useSelector } from "react-redux"; import { useAppDispatch } from "@/shared/lib/hooks/useAppDispatch/useAppDispatch"; -import { Text, TextAlign, TextSize } from "@/shared/ui/Text/Text"; -import { Skeleton } from "@/shared/ui/Skeleton/Skeleton"; -import { Avatar } from "@/shared/ui/Avatar/Avatar"; +import { Text, TextAlign, TextSize } from "@/shared/ui/Text"; +import { Skeleton } from "@/shared/ui/Skeleton"; +import { Avatar } from "@/shared/ui/Avatar"; import EyeIcon from "@/shared/assets/icons/eye-20-20.svg"; import CalendarIcon from "@/shared/assets/icons/calendar-20-20.svg"; -import { Icon } from "@/shared/ui/Icon/Icon"; +import { Icon } from "@/shared/ui/Icon"; import { fetchArticleById } from "../../model/services/fetchArticleById/fetchArticleById"; import { articleDetailsReducer } from "../../model/slice/articleDetailsSlice"; import cls from "./ArticleDetails.module.scss"; diff --git a/src/entities/Article/ui/ArticleImageBlockComponent/ArticleImageBlockComponent.tsx b/src/entities/Article/ui/ArticleImageBlockComponent/ArticleImageBlockComponent.tsx index e7423e9..ab4959d 100644 --- a/src/entities/Article/ui/ArticleImageBlockComponent/ArticleImageBlockComponent.tsx +++ b/src/entities/Article/ui/ArticleImageBlockComponent/ArticleImageBlockComponent.tsx @@ -1,6 +1,6 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { memo } from "react"; -import { Text, TextAlign } from "@/shared/ui/Text/Text"; +import { Text, TextAlign } from "@/shared/ui/Text"; import cls from "./ArticleImageBlockComponent.module.scss"; import { ArticleImageBlock } from "../../model/types/article"; diff --git a/src/entities/Article/ui/ArticleList/ArticleList.tsx b/src/entities/Article/ui/ArticleList/ArticleList.tsx index 56d50bc..9d671e3 100644 --- a/src/entities/Article/ui/ArticleList/ArticleList.tsx +++ b/src/entities/Article/ui/ArticleList/ArticleList.tsx @@ -4,7 +4,7 @@ import { ArticleListItemSkeleton } from "../../ui/ArticleListItem/ArticleListIte import { ArticleListItem } from "../ArticleListItem/ArticleListItem"; import cls from "./ArticleList.module.scss"; import { Article } from "../../model/types/article"; -import { TextSize, Text } from "@/shared/ui/Text/Text"; +import { TextSize, Text } from "@/shared/ui/Text"; import { useTranslation } from "react-i18next"; import { ArticleView } from "../../model/consts/consts"; diff --git a/src/entities/Article/ui/ArticleListItem/ArticleListItem.tsx b/src/entities/Article/ui/ArticleListItem/ArticleListItem.tsx index a111402..ac9044f 100644 --- a/src/entities/Article/ui/ArticleListItem/ArticleListItem.tsx +++ b/src/entities/Article/ui/ArticleListItem/ArticleListItem.tsx @@ -1,16 +1,16 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { useTranslation } from "react-i18next"; import { HTMLAttributeAnchorTarget, memo } from "react"; -import { Text } from "@/shared/ui/Text/Text"; -import { Icon } from "@/shared/ui/Icon/Icon"; +import { Text } from "@/shared/ui/Text"; +import { Icon } from "@/shared/ui/Icon"; import EyeIcon from "@/shared/assets/icons/eye-20-20.svg"; -import { Card } from "@/shared/ui/Card/Card"; -import { Avatar } from "@/shared/ui/Avatar/Avatar"; -import { Button, ButtonTheme } from "@/shared/ui/Button/Button"; +import { Card } from "@/shared/ui/Card"; +import { Avatar } from "@/shared/ui/Avatar"; +import { Button, ButtonTheme } from "@/shared/ui/Button"; import cls from "./ArticleListItem.module.scss"; import { Article, ArticleTextBlock } from "../../model/types/article"; import { ArticleTextBlockComponent } from "../ArticleTextBlockComponent/ArticleTextBlockComponent"; -import { AppLink } from "@/shared/ui/AppLink/AppLink"; +import { AppLink } from "@/shared/ui/AppLink"; import { ArticleBlockType, ArticleView } from "../../model/consts/consts"; import {RoutePath} from "@/shared/const/router"; diff --git a/src/entities/Article/ui/ArticleListItem/ArticleListItemSkeleton.tsx b/src/entities/Article/ui/ArticleListItem/ArticleListItemSkeleton.tsx index f61156b..851ef49 100644 --- a/src/entities/Article/ui/ArticleListItem/ArticleListItemSkeleton.tsx +++ b/src/entities/Article/ui/ArticleListItem/ArticleListItemSkeleton.tsx @@ -1,7 +1,7 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { memo } from "react"; -import { Card } from "@/shared/ui/Card/Card"; -import { Skeleton } from "@/shared/ui/Skeleton/Skeleton"; +import { Card } from "@/shared/ui/Card"; +import { Skeleton } from "@/shared/ui/Skeleton"; import cls from "./ArticleListItem.module.scss"; import { ArticleView } from "../../model/consts/consts"; diff --git a/src/entities/Article/ui/ArticleSortSelector/ArticleSortSelector.tsx b/src/entities/Article/ui/ArticleSortSelector/ArticleSortSelector.tsx index 37c5e3e..e4d8dc9 100644 --- a/src/entities/Article/ui/ArticleSortSelector/ArticleSortSelector.tsx +++ b/src/entities/Article/ui/ArticleSortSelector/ArticleSortSelector.tsx @@ -1,7 +1,7 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { useTranslation } from "react-i18next"; import { memo, useCallback, useMemo } from "react"; -import { Select, SelectOption } from "@/shared/ui/Select/Select"; +import { Select, SelectOption } from "@/shared/ui/Select"; import { SortOrder } from "@/shared/types"; import cls from "./ArticleSortSelector.module.scss"; import { ArticleSortField } from "../../model/consts/consts"; diff --git a/src/entities/Article/ui/ArticleTextBlockComponent/ArticleTextBlockComponent.tsx b/src/entities/Article/ui/ArticleTextBlockComponent/ArticleTextBlockComponent.tsx index bc4d8b9..da79e31 100644 --- a/src/entities/Article/ui/ArticleTextBlockComponent/ArticleTextBlockComponent.tsx +++ b/src/entities/Article/ui/ArticleTextBlockComponent/ArticleTextBlockComponent.tsx @@ -1,6 +1,6 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { memo } from "react"; -import { Text } from "@/shared/ui/Text/Text"; +import { Text } from "@/shared/ui/Text"; import cls from "./ArticleTextBlockComponent.module.scss"; import { ArticleTextBlock } from "../../model/types/article"; diff --git a/src/entities/Article/ui/ArticleTypeTabs/ArticleTypeTabs.tsx b/src/entities/Article/ui/ArticleTypeTabs/ArticleTypeTabs.tsx index 64c5b75..03dcbcf 100644 --- a/src/entities/Article/ui/ArticleTypeTabs/ArticleTypeTabs.tsx +++ b/src/entities/Article/ui/ArticleTypeTabs/ArticleTypeTabs.tsx @@ -1,7 +1,7 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { useTranslation } from "react-i18next"; import { memo, useCallback, useMemo } from "react"; -import { TabItem, Tabs } from "@/shared/ui/Tabs/Tabs"; +import { TabItem, Tabs } from "@/shared/ui/Tabs"; import { ArticleType } from "../../model/consts/consts"; diff --git a/src/entities/Article/ui/ArticleViewSelector/ArticleViewSelector.tsx b/src/entities/Article/ui/ArticleViewSelector/ArticleViewSelector.tsx index 65ecbff..03cb351 100644 --- a/src/entities/Article/ui/ArticleViewSelector/ArticleViewSelector.tsx +++ b/src/entities/Article/ui/ArticleViewSelector/ArticleViewSelector.tsx @@ -2,8 +2,8 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { memo } from "react"; import ListIcon from "@/shared/assets/icons/list-24-24.svg"; import TiledIcon from "@/shared/assets/icons/tiled-24-24.svg"; -import { Icon } from "@/shared/ui/Icon/Icon"; -import { Button, ButtonTheme } from "@/shared/ui/Button/Button"; +import { Icon } from "@/shared/ui/Icon"; +import { Button, ButtonTheme } from "@/shared/ui/Button"; import cls from "./ArticleViewSelector.module.scss"; import { ArticleView } from "../../model/consts/consts"; diff --git a/src/entities/Comment/ui/CommentCard/CommentCard.tsx b/src/entities/Comment/ui/CommentCard/CommentCard.tsx index d68267b..c370461 100644 --- a/src/entities/Comment/ui/CommentCard/CommentCard.tsx +++ b/src/entities/Comment/ui/CommentCard/CommentCard.tsx @@ -1,11 +1,11 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { memo } from "react"; -import { Avatar } from "@/shared/ui/Avatar/Avatar"; -import { Text } from "@/shared/ui/Text/Text"; -import { Skeleton } from "@/shared/ui/Skeleton/Skeleton"; +import { Avatar } from "@/shared/ui/Avatar"; +import { Text } from "@/shared/ui/Text"; +import { Skeleton } from "@/shared/ui/Skeleton"; import cls from "./CommentCard.module.scss"; import { Comment } from "../../model/types/comment"; -import { AppLink } from "@/shared/ui/AppLink/AppLink"; +import { AppLink } from "@/shared/ui/AppLink"; import { VStack } from "@/shared/ui/Stack"; import {RoutePath} from "@/shared/const/router"; diff --git a/src/entities/Comment/ui/CommentList/CommentList.tsx b/src/entities/Comment/ui/CommentList/CommentList.tsx index 3110e48..788c194 100644 --- a/src/entities/Comment/ui/CommentList/CommentList.tsx +++ b/src/entities/Comment/ui/CommentList/CommentList.tsx @@ -1,6 +1,6 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { memo } from "react"; -import { Text } from "@/shared/ui/Text/Text"; +import { Text } from "@/shared/ui/Text"; import { useTranslation } from "react-i18next"; import { CommentCard } from "../CommentCard/CommentCard"; import { Comment } from "../../model/types/comment"; diff --git a/src/entities/Counter/ui/Counter.tsx b/src/entities/Counter/ui/Counter.tsx index 6464289..849d2da 100644 --- a/src/entities/Counter/ui/Counter.tsx +++ b/src/entities/Counter/ui/Counter.tsx @@ -1,7 +1,7 @@ import { useDispatch, useSelector } from "react-redux"; import { counterActions } from "../model/slice/counterSlice"; import { getCounterValue } from "../model/selectors/getCounterValue/getCounterValue"; -import { Button } from "@/shared/ui/Button/Button"; +import { Button } from "@/shared/ui/Button"; export const Counter = () => { const dispatch = useDispatch(); diff --git a/src/entities/Notification/ui/NotificationItem/NotificationItem.tsx b/src/entities/Notification/ui/NotificationItem/NotificationItem.tsx index 3ac0788..0d1f084 100644 --- a/src/entities/Notification/ui/NotificationItem/NotificationItem.tsx +++ b/src/entities/Notification/ui/NotificationItem/NotificationItem.tsx @@ -1,7 +1,7 @@ import { classNames } from '@/shared/lib/classNames/classNames'; import { memo } from 'react'; -import { Card, CardTheme } from '@/shared/ui/Card/Card'; -import { Text } from '@/shared/ui/Text/Text'; +import { Card, CardTheme } from '@/shared/ui/Card'; +import { Text } from '@/shared/ui/Text'; import cls from './NotificationItem.module.scss'; import { Notification } from '../../model/types/notification'; diff --git a/src/entities/Notification/ui/NotificationList/NotificationList.tsx b/src/entities/Notification/ui/NotificationList/NotificationList.tsx index 8ad29c1..588d93f 100644 --- a/src/entities/Notification/ui/NotificationList/NotificationList.tsx +++ b/src/entities/Notification/ui/NotificationList/NotificationList.tsx @@ -1,7 +1,7 @@ import { classNames } from '@/shared/lib/classNames/classNames'; import { memo } from 'react'; import { VStack } from '@/shared/ui/Stack'; -import { Skeleton } from '@/shared/ui/Skeleton/Skeleton'; +import { Skeleton } from '@/shared/ui/Skeleton'; import { useNotifications } from '../../api/notificationApi'; import cls from './NotificationList.module.scss'; import { NotificationItem } from '../NotificationItem/NotificationItem'; diff --git a/src/entities/Profile/ui/ProfileCard/ProfileCard.tsx b/src/entities/Profile/ui/ProfileCard/ProfileCard.tsx index 42a7da4..3d117b4 100644 --- a/src/entities/Profile/ui/ProfileCard/ProfileCard.tsx +++ b/src/entities/Profile/ui/ProfileCard/ProfileCard.tsx @@ -1,13 +1,13 @@ import { classNames, Mods } from "@/shared/lib/classNames/classNames"; import { useTranslation } from "react-i18next"; -import { Text, TextAlign, TextTheme } from "@/shared/ui/Text/Text"; -import { Input } from "@/shared/ui/Input/Input"; +import { Text, TextAlign, TextTheme } from "@/shared/ui/Text"; +import { Input } from "@/shared/ui/Input"; import cls from "./ProfileCard.module.scss"; import { Profile } from "../../model/types/profile"; -import { Loader } from "@/shared/ui/Loader/Loader"; +import { Loader } from "@/shared/ui/Loader"; import { Currency, CurrencySelect } from "@/entities/Currency"; import { Country, CountrySelect } from "@/entities/Country"; -import { Avatar } from "@/shared/ui/Avatar/Avatar"; +import { Avatar } from "@/shared/ui/Avatar"; import { HStack, VStack } from "@/shared/ui/Stack"; interface ProfileCardProps { diff --git a/src/entities/Rating/ui/RatingCard/RatingCard.tsx b/src/entities/Rating/ui/RatingCard/RatingCard.tsx index af120d9..f2ed158 100644 --- a/src/entities/Rating/ui/RatingCard/RatingCard.tsx +++ b/src/entities/Rating/ui/RatingCard/RatingCard.tsx @@ -2,14 +2,14 @@ import { useTranslation } from 'react-i18next'; import { memo, useCallback, useState } from 'react'; import { BrowserView, MobileView } from 'react-device-detect'; import { classNames } from '@/shared/lib/classNames/classNames'; -import { Card } from '@/shared/ui/Card/Card'; +import { Card } from '@/shared/ui/Card'; import { HStack, VStack } from '@/shared/ui/Stack'; -import { Text } from '@/shared/ui/Text/Text'; -import { StarRating } from '@/shared/ui/StarRating/StarRating'; -import { Modal } from '@/shared/ui/Modal/Modal'; -import { Input } from '@/shared/ui/Input/Input'; -import { Button, ButtonSize, ButtonTheme } from '@/shared/ui/Button/Button'; -import { Drawer } from '@/shared/ui/Drawer/Drawer'; +import { Text } from '@/shared/ui/Text'; +import { StarRating } from '@/shared/ui/StarRating'; +import { Modal } from '@/shared/ui/Modal'; +import { Input } from '@/shared/ui/Input'; +import { Button, ButtonSize, ButtonTheme } from '@/shared/ui/Button'; +import { Drawer } from '@/shared/ui/Drawer'; interface RatingCardProps { className?: string; diff --git a/src/features/AuthByUsername/ui/LoginForm/LoginForm.tsx b/src/features/AuthByUsername/ui/LoginForm/LoginForm.tsx index aa9d3e4..b60866a 100644 --- a/src/features/AuthByUsername/ui/LoginForm/LoginForm.tsx +++ b/src/features/AuthByUsername/ui/LoginForm/LoginForm.tsx @@ -1,10 +1,10 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { useTranslation } from "react-i18next"; -import { Button, ButtonTheme } from "@/shared/ui/Button/Button"; -import { Input } from "@/shared/ui/Input/Input"; +import { Button, ButtonTheme } from "@/shared/ui/Button"; +import { Input } from "@/shared/ui/Input"; import { useSelector } from "react-redux"; import { memo, useCallback } from "react"; -import { Text, TextTheme } from "@/shared/ui/Text/Text"; +import { Text, TextTheme } from "@/shared/ui/Text"; import { getLoginUsername } from "../../model/selectors/getLoginUsername/getLoginUsername"; import { getLoginPassword } from "../../model/selectors/getLoginPassword/getLoginPassword"; import { getLoginIsLoading } from "../../model/selectors/getLoginIsLoading/getLoginIsLoading"; diff --git a/src/features/AuthByUsername/ui/LoginModal/LoginModal.tsx b/src/features/AuthByUsername/ui/LoginModal/LoginModal.tsx index 7294535..9eaf6ea 100644 --- a/src/features/AuthByUsername/ui/LoginModal/LoginModal.tsx +++ b/src/features/AuthByUsername/ui/LoginModal/LoginModal.tsx @@ -1,7 +1,7 @@ -import { Modal } from "@/shared/ui/Modal/Modal"; +import { Modal } from "@/shared/ui/Modal"; import { classNames } from "@/shared/lib/classNames/classNames"; import { Suspense } from "react"; -import { Loader } from "@/shared/ui/Loader/Loader"; +import { Loader } from "@/shared/ui/Loader"; import { LoginFormAsync } from "../LoginForm/LoginForm.async"; interface LoginModalProps { diff --git a/src/features/LangSwitcher/ui/LangSwitcher.tsx b/src/features/LangSwitcher/ui/LangSwitcher.tsx index 2ab8078..2978ce2 100644 --- a/src/features/LangSwitcher/ui/LangSwitcher.tsx +++ b/src/features/LangSwitcher/ui/LangSwitcher.tsx @@ -1,7 +1,7 @@ import React, { memo } from "react"; import { classNames } from "@/shared/lib/classNames/classNames"; import { useTranslation } from "react-i18next"; -import { Button, ButtonTheme } from "@/shared/ui/Button/Button"; +import { Button, ButtonTheme } from "@/shared/ui/Button"; enum Locale { RU = "ru", diff --git a/src/features/ThemeSwitcher/ui/ThemeSwitcher.tsx b/src/features/ThemeSwitcher/ui/ThemeSwitcher.tsx index b81114f..cc56c83 100644 --- a/src/features/ThemeSwitcher/ui/ThemeSwitcher.tsx +++ b/src/features/ThemeSwitcher/ui/ThemeSwitcher.tsx @@ -2,7 +2,7 @@ import { memo } from "react"; import DarkIcon from "@/shared/assets/icons/theme-dark.svg"; import LightIcon from "@/shared/assets/icons/theme-light.svg"; import { classNames } from "@/shared/lib/classNames/classNames"; -import { Button, ButtonTheme } from "@/shared/ui/Button/Button"; +import { Button, ButtonTheme } from "@/shared/ui/Button"; import { useTheme } from "@/shared/lib/hooks/useTheme/useTheme"; import { Theme } from "@/shared/const/theme"; diff --git a/src/features/addCommentForm/ui/AddCommentForm/AddCommentForm.tsx b/src/features/addCommentForm/ui/AddCommentForm/AddCommentForm.tsx index 8c5b656..b0acbf3 100644 --- a/src/features/addCommentForm/ui/AddCommentForm/AddCommentForm.tsx +++ b/src/features/addCommentForm/ui/AddCommentForm/AddCommentForm.tsx @@ -1,8 +1,8 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { useTranslation } from "react-i18next"; import { memo, useCallback } from "react"; -import { Input } from "@/shared/ui/Input/Input"; -import { Button, ButtonTheme } from "@/shared/ui/Button/Button"; +import { Input } from "@/shared/ui/Input"; +import { Button, ButtonTheme } from "@/shared/ui/Button"; import { useSelector } from "react-redux"; import { useAppDispatch } from "@/shared/lib/hooks/useAppDispatch/useAppDispatch"; import { diff --git a/src/features/articleRating/ui/ArticleRating/ArticleRating.async.tsx b/src/features/articleRating/ui/ArticleRating/ArticleRating.async.tsx index 522a79e..947ef12 100644 --- a/src/features/articleRating/ui/ArticleRating/ArticleRating.async.tsx +++ b/src/features/articleRating/ui/ArticleRating/ArticleRating.async.tsx @@ -1,5 +1,5 @@ import { lazy, Suspense } from "react"; -import { Skeleton } from "@/shared/ui/Skeleton/Skeleton"; +import { Skeleton } from "@/shared/ui/Skeleton"; import { ArticleRatingProps } from "./ArticleRating"; const ArticleRatingLazy = lazy(() => import("./ArticleRating")); diff --git a/src/features/articleRating/ui/ArticleRating/ArticleRating.tsx b/src/features/articleRating/ui/ArticleRating/ArticleRating.tsx index 1492dba..ffedf56 100644 --- a/src/features/articleRating/ui/ArticleRating/ArticleRating.tsx +++ b/src/features/articleRating/ui/ArticleRating/ArticleRating.tsx @@ -7,7 +7,7 @@ import { useRateArticle, } from "../../api/articleRatingApi"; import { getUserAuthData } from "@/entities/User"; -import { Skeleton } from "@/shared/ui/Skeleton/Skeleton"; +import { Skeleton } from "@/shared/ui/Skeleton"; export interface ArticleRatingProps { className?: string; diff --git a/src/features/articleRecommendationsList/ui/ArticleRecommendationsList/ArticleRecommendationsList.tsx b/src/features/articleRecommendationsList/ui/ArticleRecommendationsList/ArticleRecommendationsList.tsx index 59591fe..2d25cd1 100644 --- a/src/features/articleRecommendationsList/ui/ArticleRecommendationsList/ArticleRecommendationsList.tsx +++ b/src/features/articleRecommendationsList/ui/ArticleRecommendationsList/ArticleRecommendationsList.tsx @@ -1,7 +1,7 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { useTranslation } from "react-i18next"; import { memo } from "react"; -import { Text, TextSize } from "@/shared/ui/Text/Text"; +import { Text, TextSize } from "@/shared/ui/Text"; import { ArticleList } from "@/entities/Article"; import { VStack } from "@/shared/ui/Stack"; import { useArticleRecommendationsList } from "../../api/aritcleRecommendationsApi"; diff --git a/src/features/avatarDropdown/ui/AvatarDropdown/AvatarDropdown.tsx b/src/features/avatarDropdown/ui/AvatarDropdown/AvatarDropdown.tsx index 7b7ef98..15c0600 100644 --- a/src/features/avatarDropdown/ui/AvatarDropdown/AvatarDropdown.tsx +++ b/src/features/avatarDropdown/ui/AvatarDropdown/AvatarDropdown.tsx @@ -1,7 +1,7 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { useTranslation } from "react-i18next"; import React, { memo, useCallback } from "react"; -import { Avatar } from "@/shared/ui/Avatar/Avatar"; +import { Avatar } from "@/shared/ui/Avatar"; import { Dropdown } from "@/shared/ui/Popups"; import { useDispatch, useSelector } from "react-redux"; import { diff --git a/src/features/editableProfileCard/ui/EditableProfileCard/EditableProfileCard.tsx b/src/features/editableProfileCard/ui/EditableProfileCard/EditableProfileCard.tsx index da3b2e2..1858125 100644 --- a/src/features/editableProfileCard/ui/EditableProfileCard/EditableProfileCard.tsx +++ b/src/features/editableProfileCard/ui/EditableProfileCard/EditableProfileCard.tsx @@ -6,7 +6,7 @@ import { useSelector } from "react-redux"; import { useInitialEffect } from "@/shared/lib/hooks/useInitialEffect/useInitialEffect"; import { Currency } from "@/entities/Currency"; import { Country } from "@/entities/Country"; -import { Text, TextTheme } from "@/shared/ui/Text/Text"; +import { Text, TextTheme } from "@/shared/ui/Text"; import { ProfileCard } from "@/entities/Profile"; import { DynamicModuleLoader, diff --git a/src/features/editableProfileCard/ui/EditableProfileCardHeader/EditableProfileCardHeader.tsx b/src/features/editableProfileCard/ui/EditableProfileCardHeader/EditableProfileCardHeader.tsx index e78ac16..f3aaa22 100644 --- a/src/features/editableProfileCard/ui/EditableProfileCardHeader/EditableProfileCardHeader.tsx +++ b/src/features/editableProfileCard/ui/EditableProfileCardHeader/EditableProfileCardHeader.tsx @@ -5,8 +5,8 @@ import { useSelector } from 'react-redux'; import { useAppDispatch } from '@/shared/lib/hooks/useAppDispatch/useAppDispatch'; import { HStack } from '@/shared/ui/Stack'; -import { Text } from '@/shared/ui/Text/Text'; -import { Button, ButtonTheme } from '@/shared/ui/Button/Button'; +import { Text } from '@/shared/ui/Text'; +import { Button, ButtonTheme } from '@/shared/ui/Button'; import { getUserAuthData } from '@/entities/User'; import { profileActions } from '../../model/slice/profileSlice'; import { getProfileReadonly } from '../../model/selectors/getProfileReadonly/getProfileReadonly'; diff --git a/src/features/notificationButton/ui/NotificationButton/NotificationButton.tsx b/src/features/notificationButton/ui/NotificationButton/NotificationButton.tsx index c4c1e7e..3c62426 100644 --- a/src/features/notificationButton/ui/NotificationButton/NotificationButton.tsx +++ b/src/features/notificationButton/ui/NotificationButton/NotificationButton.tsx @@ -1,11 +1,11 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import React, { memo, useCallback, useState } from "react"; -import { Button, ButtonTheme } from "@/shared/ui/Button/Button"; -import { Icon } from "@/shared/ui/Icon/Icon"; +import { Button, ButtonTheme } from "@/shared/ui/Button"; +import { Icon } from "@/shared/ui/Icon"; import NotificationIcon from "@/shared/assets/icons/notification-20-20.svg"; import { NotificationList } from "@/entities/Notification"; import { Popover } from "@/shared/ui/Popups"; -import { Drawer } from "@/shared/ui/Drawer/Drawer"; +import { Drawer } from "@/shared/ui/Drawer"; import { BrowserView, MobileView } from "react-device-detect"; import cls from "./NotificationButton.module.scss"; diff --git a/src/pages/ArticleDetailsPage/ui/ArticleDetailsComments/ArticleDetailsComments.tsx b/src/pages/ArticleDetailsPage/ui/ArticleDetailsComments/ArticleDetailsComments.tsx index 7092282..10bd4c8 100644 --- a/src/pages/ArticleDetailsPage/ui/ArticleDetailsComments/ArticleDetailsComments.tsx +++ b/src/pages/ArticleDetailsPage/ui/ArticleDetailsComments/ArticleDetailsComments.tsx @@ -1,7 +1,7 @@ import { classNames } from '@/shared/lib/classNames/classNames'; import { useTranslation } from 'react-i18next'; import { memo, useCallback } from 'react'; -import { Text, TextSize } from '@/shared/ui/Text/Text'; +import { Text, TextSize } from '@/shared/ui/Text'; import { AddCommentForm } from '@/features/addCommentForm'; import { CommentList } from '@/entities/Comment'; import { useDispatch, useSelector } from 'react-redux'; diff --git a/src/pages/ArticleDetailsPage/ui/ArticleDetailsPageHeader/ArticleDetailsPageHeader.tsx b/src/pages/ArticleDetailsPage/ui/ArticleDetailsPageHeader/ArticleDetailsPageHeader.tsx index 558d55f..aa30544 100644 --- a/src/pages/ArticleDetailsPage/ui/ArticleDetailsPageHeader/ArticleDetailsPageHeader.tsx +++ b/src/pages/ArticleDetailsPage/ui/ArticleDetailsPageHeader/ArticleDetailsPageHeader.tsx @@ -2,7 +2,7 @@ import { classNames } from "@/shared/lib/classNames/classNames"; import { useTranslation } from "react-i18next"; import { memo, useCallback } from "react"; import { useNavigate } from "react-router-dom"; -import { Button, ButtonTheme } from "@/shared/ui/Button/Button"; +import { Button, ButtonTheme } from "@/shared/ui/Button"; import { useSelector } from "react-redux"; import { getArticleDetailsData } from "@/entities/Article"; import { getCanEditArticle } from "../../model/selectors/article"; diff --git a/src/pages/ArticlesPage/ui/ArticleInfiniteList/ArticleInfiniteList.tsx b/src/pages/ArticlesPage/ui/ArticleInfiniteList/ArticleInfiniteList.tsx index 47f248c..34e62d1 100644 --- a/src/pages/ArticlesPage/ui/ArticleInfiniteList/ArticleInfiniteList.tsx +++ b/src/pages/ArticlesPage/ui/ArticleInfiniteList/ArticleInfiniteList.tsx @@ -2,7 +2,7 @@ import { useTranslation } from 'react-i18next'; import { memo } from 'react'; import { useSelector } from 'react-redux'; import { ArticleList } from '@/entities/Article'; -import { Text } from '@/shared/ui/Text/Text'; +import { Text } from '@/shared/ui/Text'; import { getArticles } from '../../model/slices/articlesPageSlice'; import { getArticlesPageError, diff --git a/src/pages/ArticlesPage/ui/ArticlesPageFilters/ArticlesPageFilters.tsx b/src/pages/ArticlesPage/ui/ArticlesPageFilters/ArticlesPageFilters.tsx index ed7787a..a4aa19d 100644 --- a/src/pages/ArticlesPage/ui/ArticlesPageFilters/ArticlesPageFilters.tsx +++ b/src/pages/ArticlesPage/ui/ArticlesPageFilters/ArticlesPageFilters.tsx @@ -11,8 +11,8 @@ import { } from "@/entities/Article"; import { useSelector } from "react-redux"; import { useAppDispatch } from "@/shared/lib/hooks/useAppDispatch/useAppDispatch"; -import { Card } from "@/shared/ui/Card/Card"; -import { Input } from "@/shared/ui/Input/Input"; +import { Card } from "@/shared/ui/Card"; +import { Input } from "@/shared/ui/Input"; import { SortOrder } from "@/shared/types"; import { useDebounce } from "@/shared/lib/hooks/useDebounce/useDebounce"; import { fetchArticlesList } from "../../model/services/fetchArticlesList/fetchArticlesList"; diff --git a/src/pages/ProfilePage/ui/ProfilePage.tsx b/src/pages/ProfilePage/ui/ProfilePage.tsx index bc7f8b9..c6c1b61 100644 --- a/src/pages/ProfilePage/ui/ProfilePage.tsx +++ b/src/pages/ProfilePage/ui/ProfilePage.tsx @@ -1,5 +1,5 @@ import { classNames } from "@/shared/lib/classNames/classNames"; -import { Text } from "@/shared/ui/Text/Text"; +import { Text } from "@/shared/ui/Text"; import { useTranslation } from "react-i18next"; import { useParams } from "react-router-dom"; import { Page } from "@/widgets/Page"; diff --git a/src/widgets/Navbar/ui/Navbar.tsx b/src/widgets/Navbar/ui/Navbar.tsx index cebb6af..fe9b903 100644 --- a/src/widgets/Navbar/ui/Navbar.tsx +++ b/src/widgets/Navbar/ui/Navbar.tsx @@ -1,13 +1,13 @@ import cls from "./Navbar.module.scss"; import { memo, useCallback, useState } from "react"; import { classNames } from "@/shared/lib/classNames/classNames"; -import { Button, ButtonTheme } from "@/shared/ui/Button/Button"; +import { Button, ButtonTheme } from "@/shared/ui/Button"; import { useTranslation } from "react-i18next"; import { LoginModal } from "@/features/AuthByUsername"; import { useSelector } from "react-redux"; import { getUserAuthData } from "@/entities/User"; -import { Text, TextTheme } from "@/shared/ui/Text/Text"; -import { AppLink, AppLinkTheme } from "@/shared/ui/AppLink/AppLink"; +import { Text, TextTheme } from "@/shared/ui/Text"; +import { AppLink, AppLinkTheme } from "@/shared/ui/AppLink"; import { HStack } from "@/shared/ui/Stack"; import { NotificationButton } from "@/features/notificationButton"; import { AvatarDropdown } from "@/features/avatarDropdown"; diff --git a/src/widgets/PageLoader/ui/PageLoader/PageLoader.tsx b/src/widgets/PageLoader/ui/PageLoader/PageLoader.tsx index a65013f..8cb1819 100644 --- a/src/widgets/PageLoader/ui/PageLoader/PageLoader.tsx +++ b/src/widgets/PageLoader/ui/PageLoader/PageLoader.tsx @@ -1,7 +1,7 @@ import cls from "./PageLoader.module.scss"; import { FC } from "react"; import { classNames } from "@/shared/lib/classNames/classNames"; -import { Loader } from "@/shared/ui/Loader/Loader"; +import { Loader } from "@/shared/ui/Loader"; interface PageLoaderProps { className?: string; diff --git a/src/widgets/SideBar/ui/SideBar/SideBar.tsx b/src/widgets/SideBar/ui/SideBar/SideBar.tsx index e3122fa..54c20f7 100644 --- a/src/widgets/SideBar/ui/SideBar/SideBar.tsx +++ b/src/widgets/SideBar/ui/SideBar/SideBar.tsx @@ -3,7 +3,7 @@ import { useState, useMemo, memo } from "react"; import { classNames } from "@/shared/lib/classNames/classNames"; import { ThemeSwitcher } from "@/features/ThemeSwitcher"; import { LangSwitcher } from "@/features/LangSwitcher"; -import { Button, ButtonSize, ButtonTheme } from "@/shared/ui/Button/Button"; +import { Button, ButtonSize, ButtonTheme } from "@/shared/ui/Button"; import { SidebarItem } from "../SidebarItem/SidebarItem"; import { useSelector } from "react-redux"; import { getSideBarItems } from "../../model/selectors/getSideBarItems"; diff --git a/src/widgets/SideBar/ui/SidebarItem/SidebarItem.tsx b/src/widgets/SideBar/ui/SidebarItem/SidebarItem.tsx index 888036e..a35479a 100644 --- a/src/widgets/SideBar/ui/SidebarItem/SidebarItem.tsx +++ b/src/widgets/SideBar/ui/SidebarItem/SidebarItem.tsx @@ -1,5 +1,5 @@ import { useTranslation } from "react-i18next"; -import { AppLink, AppLinkTheme } from "@/shared/ui/AppLink/AppLink"; +import { AppLink, AppLinkTheme } from "@/shared/ui/AppLink"; import { memo } from "react"; import { classNames } from "@/shared/lib/classNames/classNames"; import cls from "./SidebarItem.module.scss";