diff --git a/.gitignore b/.gitignore index 31214249b..de705e5a6 100644 --- a/.gitignore +++ b/.gitignore @@ -26,7 +26,7 @@ dist-ssr *.njsproj *.sln *.sw? -src/__tests__/visualTesting/results -src/__tests__/visualTesting/report +src/shared/__tests__/visualTesting/results +src/shared/__tests__/visualTesting/report /blob-report/ /playwright/.cache/ diff --git a/eslint.config.js b/eslint.config.js index 790467d9c..a5a20186a 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -19,7 +19,7 @@ export default [ 'build/', 'coverage/', 'optimizeImages/', - 'src/__tests__/', + 'src/shared/__tests__/', 'vite.config.ts', 'vitest.config.ts', 'eslint.config.js', diff --git a/package.json b/package.json index ca67dd4a1..2f8ac6c88 100644 --- a/package.json +++ b/package.json @@ -71,4 +71,4 @@ "vite": "^5.2.12", "vitest": "^1.5.0" } -} +} \ No newline at end of file diff --git a/playwright.config.ts b/playwright.config.ts index 4a64be604..73a777bdc 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -1,19 +1,19 @@ import { defineConfig, devices } from '@playwright/test'; export default defineConfig({ - testDir: 'src/__tests__/visualTesting', + testDir: 'src/shared/__tests__/visualTesting', fullyParallel: true, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 1 : undefined, reporter: process.env.CI ? 'dot' - : [['html', { outputFolder: 'src/__tests__/visualTesting/report' }]], + : [['html', { outputFolder: 'src/shared/__tests__/visualTesting/report' }]], use: { baseURL: 'http://localhost:5173', trace: 'off', }, - outputDir: 'src/__tests__/visualTesting/results', + outputDir: 'src/shared/__tests__/visualTesting/results', projects: [ { name: 'Mobile Chrome', diff --git a/readme/end-to-end-testing.md b/readme/end-to-end-testing.md index fbd30d2cd..d743cbd16 100644 --- a/readme/end-to-end-testing.md +++ b/readme/end-to-end-testing.md @@ -46,7 +46,7 @@ npx playwright test --ui image -- if there are any problems whith screenshots comparison, go to `src/__tests__/visualTesting/results` and watch the results like this: +- if there are any problems whith screenshots comparison, go to `src/shared/__tests__/visualTesting/results` and watch the results like this: image @@ -58,7 +58,7 @@ npx playwright test --ui npx playwright test ``` -- if there are any problems whith screenshots comparison, go to `src/__tests__/visualTesting/results` and watch the results. +- if there are any problems whith screenshots comparison, go to `src/shared/__tests__/visualTesting/results` and watch the results. ### 🔁Update Screenshots @@ -70,7 +70,7 @@ When intentional design changes cause test failures, to create new references us npx playwright test --update-snapshots ``` -- to update one or several screenshots only, please delete outdated reference images from the according folder (`src/__tests__/visualTesting/[NAME_OF_THE_TEST].spec.ts-snapshots`) and rerun tests again. On testing without samples, Playwright firstly will create them from your code. +- to update one or several screenshots only, please delete outdated reference images from the according folder (`src/shared/__tests__/visualTesting/[NAME_OF_THE_TEST].spec.ts-snapshots`) and rerun tests again. On testing without samples, Playwright firstly will create them from your code. ### 👀 Real-time Browsing via Specified Engine @@ -96,7 +96,7 @@ If intentional changes affect the site's appearance, update the reference images ### 🗐 Screenshot Comparison Failed -When tests fail, review the error messages and comparison images in the `src/__tests__/visualTesting/results` folder to understand what went wrong. Common issues include layout shifts, missing elements, or unintended changes in styling. +When tests fail, review the error messages and comparison images in the `src/shared/__tests__/visualTesting/results` folder to understand what went wrong. Common issues include layout shifts, missing elements, or unintended changes in styling. ### ⏳Timeout Error diff --git a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Chrome-darwin.png b/src/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Chrome-darwin.png deleted file mode 100644 index d777f8b9b..000000000 Binary files a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Chrome-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Safari-darwin.png b/src/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Safari-darwin.png deleted file mode 100644 index d376960b5..000000000 Binary files a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Safari-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-chromium-darwin.png b/src/__tests__/visualTesting/community.spec.ts-snapshots/community-chromium-darwin.png deleted file mode 100644 index c9a9b7e6d..000000000 Binary files a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-chromium-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-firefox-darwin.png b/src/__tests__/visualTesting/community.spec.ts-snapshots/community-firefox-darwin.png deleted file mode 100644 index 0e4b55d72..000000000 Binary files a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-firefox-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-webkit-darwin.png b/src/__tests__/visualTesting/community.spec.ts-snapshots/community-webkit-darwin.png deleted file mode 100644 index 81ce34c77..000000000 Binary files a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-webkit-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Chrome-darwin.png b/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Chrome-darwin.png deleted file mode 100644 index 897286917..000000000 Binary files a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Chrome-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Safari-darwin.png b/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Safari-darwin.png deleted file mode 100644 index 911391707..000000000 Binary files a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Safari-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-chromium-darwin.png b/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-chromium-darwin.png deleted file mode 100644 index bdeda4619..000000000 Binary files a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-chromium-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-firefox-darwin.png b/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-firefox-darwin.png deleted file mode 100644 index 2b6df69cc..000000000 Binary files a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-firefox-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-webkit-darwin.png b/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-webkit-darwin.png deleted file mode 100644 index 2f9513e3f..000000000 Binary files a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-webkit-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Chrome-darwin.png b/src/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Chrome-darwin.png deleted file mode 100644 index 8cc5e1500..000000000 Binary files a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Chrome-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Safari-darwin.png b/src/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Safari-darwin.png deleted file mode 100644 index eec0cf447..000000000 Binary files a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Safari-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-chromium-darwin.png b/src/__tests__/visualTesting/main.spec.ts-snapshots/main-chromium-darwin.png deleted file mode 100644 index 258fe8268..000000000 Binary files a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-chromium-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-firefox-darwin.png b/src/__tests__/visualTesting/main.spec.ts-snapshots/main-firefox-darwin.png deleted file mode 100644 index 1e67438ef..000000000 Binary files a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-firefox-darwin.png and /dev/null differ diff --git a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-webkit-darwin.png b/src/__tests__/visualTesting/main.spec.ts-snapshots/main-webkit-darwin.png deleted file mode 100644 index 981e844c7..000000000 Binary files a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-webkit-darwin.png and /dev/null differ diff --git a/src/app/components/breadcrumbs/index.ts b/src/app/components/breadcrumbs/index.ts deleted file mode 100644 index 7f24f4c22..000000000 --- a/src/app/components/breadcrumbs/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Breadcrumbs } from './breadcrumbs'; diff --git a/src/app/components/course-card/index.ts b/src/app/components/course-card/index.ts deleted file mode 100644 index 930bfa22d..000000000 --- a/src/app/components/course-card/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { CourseCard } from './course-card'; diff --git a/src/app/components/event-card/index.ts b/src/app/components/event-card/index.ts deleted file mode 100644 index f481bce4d..000000000 --- a/src/app/components/event-card/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { EventCard, type EventCardProps } from './event-card'; diff --git a/src/app/components/index.ts b/src/app/components/index.ts deleted file mode 100644 index 38817d9e9..000000000 --- a/src/app/components/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -export { Actions } from './actions'; -export { Breadcrumbs } from './breadcrumbs'; -export { CourseCard } from './course-card'; -export { DateLang } from './date-lang'; -export { EventCard, type EventCardProps } from './event-card'; -export { LinkCustom } from './link-custom'; -export { LogoWrapper } from './logo-wrapper'; -export { MobileView } from './mobile-view'; -export { OptionItem, type OptionItemProps } from './option-item'; -export { Paragraph } from './paragraph'; -export { Places } from './places'; -export { PrincipleCard, type PrincipleCardProps } from './principle-card'; -export { SchoolMenu } from './school-menu'; -export { SectionLabel } from './section-label'; -export { SocialMedia, type SocialMediaProps } from './social-media'; -export { Subtitle } from './subtitle'; -export { TextWithLink } from './text-with-link'; -export { Title, TitleType } from './title'; diff --git a/src/app/components/mobile-view/index.ts b/src/app/components/mobile-view/index.ts deleted file mode 100644 index 3877a7a57..000000000 --- a/src/app/components/mobile-view/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { MobileView } from './mobile-view'; diff --git a/src/app/components/option-item/index.ts b/src/app/components/option-item/index.ts deleted file mode 100644 index 091a40dc5..000000000 --- a/src/app/components/option-item/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { OptionItem, type OptionItemProps } from './option-item'; diff --git a/src/app/components/places/index.ts b/src/app/components/places/index.ts deleted file mode 100644 index efc6c34a2..000000000 --- a/src/app/components/places/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Places } from './places'; diff --git a/src/app/components/principle-card/index.ts b/src/app/components/principle-card/index.ts deleted file mode 100644 index 6d55e87cb..000000000 --- a/src/app/components/principle-card/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { PrincipleCard, type PrincipleCardProps } from './principle-card'; diff --git a/src/app/components/school-menu/index.ts b/src/app/components/school-menu/index.ts deleted file mode 100644 index c13857628..000000000 --- a/src/app/components/school-menu/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { SchoolMenu } from './school-menu'; diff --git a/src/app/hooks/index.ts b/src/app/hooks/index.ts deleted file mode 100644 index 318e21664..000000000 --- a/src/app/hooks/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export { useCourseByTitle } from './use-course-by-title'; -export { useDataByName } from './use-data-by-name'; -export { useNearestCourse } from './use-nearest-course'; -export { usePositionDropdown } from './use-position-dropdown'; -export { useTitle } from './use-title'; -export { useWindowSize } from './use-window-size'; diff --git a/src/app/hooks/use-nearest-course/index.ts b/src/app/hooks/use-nearest-course/index.ts deleted file mode 100644 index faaece58f..000000000 --- a/src/app/hooks/use-nearest-course/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { finedNearestCourse } from './utils/fined-nearest-course'; -export { useNearestCourse } from './use-nearest-course'; diff --git a/src/app/hooks/use-nearest-course/use-nearest-course.test.tsx b/src/app/hooks/use-nearest-course/use-nearest-course.test.tsx deleted file mode 100644 index e9375e95f..000000000 --- a/src/app/hooks/use-nearest-course/use-nearest-course.test.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import { renderHook } from '@testing-library/react'; -import { Mock, afterAll, describe, expect, it, vi } from 'vitest'; -import { useNearestCourse } from './use-nearest-course'; -import { useDataByName } from '../use-data-by-name'; - -const originalDateNow = Date.now; -const mockData = [ - { - id: 1, - title: 'React JS course', - startDate: 'Apr 5, 2024', - }, - { - id: 2, - title: 'JavaScript / Front-end', - startDate: 'May 29, 2024', - }, - { - id: 3, - title: 'Some course title', - startDate: 'May 20, 2024', - }, -]; - -vi.mock('../use-data-by-name', () => ({ useDataByName: vi.fn() })); - -describe('useNearestCourse', () => { - afterAll(() => { - Date.now = originalDateNow; - }); - - it('returns the nearest course', () => { - const bufferPeriod = 14; - const date1 = Date.parse(mockData[0].startDate) + (bufferPeriod - 1) * 24 * 60 * 60 * 1000; - const date2 = Date.parse(mockData[0].startDate) + bufferPeriod * 24 * 60 * 60 * 1000; - - (useDataByName as Mock).mockReturnValue({ - data: mockData, - loading: false, - error: null, - }); - Date.now = vi.fn(() => date1); - const { result: res1 } = renderHook(() => useNearestCourse(bufferPeriod)); - - expect(res1.current.course).toEqual(mockData[0]); - expect(res1.current.loading).toBeFalsy(); - expect(res1.current.error).toBeNull(); - - Date.now = vi.fn(() => date2); - const { result: res2 } = renderHook(() => useNearestCourse(bufferPeriod)); - - expect(res2.current.course).toEqual(mockData[2]); - expect(res2.current.loading).toBeFalsy(); - expect(res2.current.error).toBeNull(); - }); - - it('always returns the next course', () => { - const bufferPeriod = 0; - - (useDataByName as Mock).mockReturnValue({ - data: mockData, - loading: false, - error: null, - }); - Date.now = vi.fn(() => Date.parse(mockData[0].startDate) + 1); - - const { result } = renderHook(() => useNearestCourse(bufferPeriod)); - - expect(result.current.course).toEqual(mockData[2]); - - expect(result.current.loading).toBeFalsy(); - expect(result.current.error).toBeNull(); - }); - - it('returns next course when there are no previous courses', () => { - (useDataByName as Mock).mockReturnValue({ - data: mockData, - loading: false, - error: null, - }); - Date.now = vi.fn(() => Date.parse('Apr 1, 2024')); - - const { result } = renderHook(() => useNearestCourse()); - - expect(result.current.course).toEqual(mockData[0]); - - expect(result.current.loading).toBeFalsy(); - expect(result.current.error).toBeNull(); - }); - - it('returns next course when there are no next courses', () => { - (useDataByName as Mock).mockReturnValue({ - data: mockData, - loading: false, - error: null, - }); - Date.now = vi.fn(() => Date.parse('May 30, 2024')); - - const { result } = renderHook(() => useNearestCourse()); - - expect(result.current.course).toEqual(mockData[1]); - - expect(result.current.loading).toBeFalsy(); - expect(result.current.error).toBeNull(); - }); - - it('returns null as course and error message if there are no courses available', () => { - (useDataByName as Mock).mockReturnValue({ - data: [], - loading: false, - error: new Error('No courses data available.'), - }); - - const { result } = renderHook(() => useNearestCourse()); - - expect(result.current.course).toBeNull(); - expect(result.current.hasError).toBe(true); - expect(result.current.error).toBeInstanceOf(Error); - expect(result.current.error?.message).toBe('No courses data available.'); - }); - - it('keeps the state of loading and error from useNearestCourse', () => { - (useDataByName as Mock).mockReturnValue({ - data: null, - loading: true, - error: null, - }); - - const { result } = renderHook(() => useNearestCourse()); - - expect(result.current.loading).toBeTruthy(); - expect(result.current.error).toBeNull(); - }); -}); diff --git a/src/app/hooks/use-nearest-course/use-nearest-course.ts b/src/app/hooks/use-nearest-course/use-nearest-course.ts deleted file mode 100644 index b873129e0..000000000 --- a/src/app/hooks/use-nearest-course/use-nearest-course.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { BUFFER_PERIOD } from './constants'; -import { finedNearestCourse } from './utils/fined-nearest-course'; -import { useDataByName } from '../use-data-by-name'; - -type Day = number; - -export const useNearestCourse = (bufferPeriod: Day = BUFFER_PERIOD) => { - const { data: coursesData, error, loading } = useDataByName('courses'); - - if (loading) { - return { - course: null, - loading, - hasError: false, - error: null, - }; - } - if (!coursesData || coursesData.length === 0) { - return { - course: null, - loading: false, - hasError: true, - error: new Error('No courses data available.'), - }; - } - - const course = finedNearestCourse(coursesData, bufferPeriod); - const hasError = !!error || (!loading && !course); - - return { - course, - loading, - error, - hasError, - }; -}; diff --git a/src/features/base-layout/base-layout.test.tsx b/src/app/layouts/base-layout/base-layout.test.tsx similarity index 100% rename from src/features/base-layout/base-layout.test.tsx rename to src/app/layouts/base-layout/base-layout.test.tsx diff --git a/src/features/base-layout/base-layout.tsx b/src/app/layouts/base-layout/base-layout.tsx similarity index 100% rename from src/features/base-layout/base-layout.tsx rename to src/app/layouts/base-layout/base-layout.tsx diff --git a/src/features/base-layout/components/footer/about-list.tsx b/src/app/layouts/base-layout/components/footer/about-list.tsx similarity index 92% rename from src/features/base-layout/components/footer/about-list.tsx rename to src/app/layouts/base-layout/components/footer/about-list.tsx index 4fe76821d..bc7d45eb0 100644 --- a/src/features/base-layout/components/footer/about-list.tsx +++ b/src/app/layouts/base-layout/components/footer/about-list.tsx @@ -1,6 +1,6 @@ import { Link } from 'react-router-dom'; -import { LogoWrapper } from '@/app/components'; import { buildUrl } from '@/app/services/platform'; +import { LogoWrapper } from '@/shared/ui/logo-wrapper'; const aboutList = [ { diff --git a/src/features/base-layout/components/footer/copyright.tsx b/src/app/layouts/base-layout/components/footer/copyright.tsx similarity index 100% rename from src/features/base-layout/components/footer/copyright.tsx rename to src/app/layouts/base-layout/components/footer/copyright.tsx diff --git a/src/features/base-layout/components/footer/desktop-view.tsx b/src/app/layouts/base-layout/components/footer/desktop-view.tsx similarity index 87% rename from src/features/base-layout/components/footer/desktop-view.tsx rename to src/app/layouts/base-layout/components/footer/desktop-view.tsx index 1883ec121..f706e4ef5 100644 --- a/src/features/base-layout/components/footer/desktop-view.tsx +++ b/src/app/layouts/base-layout/components/footer/desktop-view.tsx @@ -1,5 +1,5 @@ import { AboutList } from './about-list'; -import { SchoolMenu } from '@/app/components'; +import { SchoolMenu } from '@/widgets/school-menu'; export const DesktopView = () => { return ( diff --git a/src/features/base-layout/components/footer/footer.scss b/src/app/layouts/base-layout/components/footer/footer.scss similarity index 100% rename from src/features/base-layout/components/footer/footer.scss rename to src/app/layouts/base-layout/components/footer/footer.scss diff --git a/src/features/base-layout/components/footer/footer.test.tsx b/src/app/layouts/base-layout/components/footer/footer.test.tsx similarity index 82% rename from src/features/base-layout/components/footer/footer.test.tsx rename to src/app/layouts/base-layout/components/footer/footer.test.tsx index 62801755d..9e0db7800 100644 --- a/src/features/base-layout/components/footer/footer.test.tsx +++ b/src/app/layouts/base-layout/components/footer/footer.test.tsx @@ -1,12 +1,10 @@ import { type Mock, describe, expect, it } from 'vitest'; import { Footer } from './footer'; -import { renderWithRouter } from '@/__tests__/utils'; -import { useWindowSize } from '@/app/hooks'; +import { renderWithRouter } from '@/shared/__tests__/utils'; +import { useWindowSize } from '@/shared/hooks/use-window-size'; -vi.mock('@/app/hooks', () => ({ - useWindowSize: vi.fn().mockImplementation(() => ({ width: 1200 })), - useDataByName: vi.fn().mockImplementation(() => ({ data: [] })), -})); +vi.mock('@/shared/hooks/use-window-size', () => ({ useWindowSize: vi.fn().mockImplementation(() => ({ width: 1200 })) })); +vi.mock('@/shared/hooks/use-data-by-name', () => ({ useDataByName: vi.fn().mockImplementation(() => ({ data: [] })) })); describe('Footer', () => { it('should render without crashing', () => { diff --git a/src/features/base-layout/components/footer/footer.tsx b/src/app/layouts/base-layout/components/footer/footer.tsx similarity index 79% rename from src/features/base-layout/components/footer/footer.tsx rename to src/app/layouts/base-layout/components/footer/footer.tsx index e0e11c0f1..d5b86245b 100644 --- a/src/features/base-layout/components/footer/footer.tsx +++ b/src/app/layouts/base-layout/components/footer/footer.tsx @@ -1,7 +1,8 @@ import { Copyright } from './copyright'; import { DesktopView } from './desktop-view'; -import { MobileView } from '@/app/components'; -import { useWindowSize } from '@/app/hooks'; + +import { useWindowSize } from '@/shared/hooks/use-window-size'; +import { MobileView } from '@/widgets/mobile-view'; import './footer.scss'; diff --git a/src/features/base-layout/components/footer/index.ts b/src/app/layouts/base-layout/components/footer/index.ts similarity index 100% rename from src/features/base-layout/components/footer/index.ts rename to src/app/layouts/base-layout/components/footer/index.ts diff --git a/src/features/base-layout/components/header/burger/burger.module.scss b/src/app/layouts/base-layout/components/header/burger/burger.module.scss similarity index 100% rename from src/features/base-layout/components/header/burger/burger.module.scss rename to src/app/layouts/base-layout/components/header/burger/burger.module.scss diff --git a/src/features/base-layout/components/header/burger/burger.tsx b/src/app/layouts/base-layout/components/header/burger/burger.tsx similarity index 100% rename from src/features/base-layout/components/header/burger/burger.tsx rename to src/app/layouts/base-layout/components/header/burger/burger.tsx diff --git a/src/features/base-layout/components/header/dropdown/dropdown-wrapper.module.scss b/src/app/layouts/base-layout/components/header/dropdown/dropdown-wrapper.module.scss similarity index 100% rename from src/features/base-layout/components/header/dropdown/dropdown-wrapper.module.scss rename to src/app/layouts/base-layout/components/header/dropdown/dropdown-wrapper.module.scss diff --git a/src/features/base-layout/components/header/dropdown/dropdown-wrapper.tsx b/src/app/layouts/base-layout/components/header/dropdown/dropdown-wrapper.tsx similarity index 90% rename from src/features/base-layout/components/header/dropdown/dropdown-wrapper.tsx rename to src/app/layouts/base-layout/components/header/dropdown/dropdown-wrapper.tsx index 1ef6479bc..7ad40afae 100644 --- a/src/features/base-layout/components/header/dropdown/dropdown-wrapper.tsx +++ b/src/app/layouts/base-layout/components/header/dropdown/dropdown-wrapper.tsx @@ -1,6 +1,7 @@ import { ReactNode } from 'react'; import classNames from 'classnames/bind'; -import { usePositionDropdown } from '@/app/hooks'; + +import { usePositionDropdown } from '@/shared/hooks/use-position-dropdown'; import styles from './dropdown-wrapper.module.scss'; diff --git a/src/features/base-layout/components/header/header.module.scss b/src/app/layouts/base-layout/components/header/header.module.scss similarity index 100% rename from src/features/base-layout/components/header/header.module.scss rename to src/app/layouts/base-layout/components/header/header.module.scss diff --git a/src/features/base-layout/components/header/header.test.tsx b/src/app/layouts/base-layout/components/header/header.test.tsx similarity index 89% rename from src/features/base-layout/components/header/header.test.tsx rename to src/app/layouts/base-layout/components/header/header.test.tsx index ebfd950ce..e474e72af 100644 --- a/src/features/base-layout/components/header/header.test.tsx +++ b/src/app/layouts/base-layout/components/header/header.test.tsx @@ -4,8 +4,9 @@ import classNames from 'classnames/bind'; import { Mock, beforeEach, vi } from 'vitest'; import { DropdownWrapper } from './dropdown/dropdown-wrapper'; import { Header } from './header'; -import { renderWithRouter } from '@/__tests__/utils'; -import { useWindowSize } from '@/app/hooks'; +import { renderWithRouter } from '@/shared/__tests__/utils'; + +import { useWindowSize } from '@/shared/hooks/use-window-size'; import stylesDropdown from './dropdown/dropdown-wrapper.module.scss'; import stylesHeader from './header.module.scss'; @@ -15,8 +16,8 @@ const cxDropdown = classNames.bind(stylesDropdown); const cxHeader = classNames.bind(stylesHeader); const cxNavItem = classNames.bind(stylesNavItem); -vi.mock('@/app/hooks', async (importOriginal) => { - const originalModule = await importOriginal(); +vi.mock('@/shared/hooks/use-window-size', async (importOriginal) => { + const originalModule = await importOriginal(); return { ...originalModule, @@ -112,7 +113,7 @@ describe('Header', () => { it('should be open when isDropdownOpen is true', async () => { await act(async () => renderWithRouter( - {}} onMouseLeave={() => {}} isOpen={true}> + { }} onMouseLeave={() => { }} isOpen={true}> TEST , ), diff --git a/src/features/base-layout/components/header/header.tsx b/src/app/layouts/base-layout/components/header/header.tsx similarity index 92% rename from src/features/base-layout/components/header/header.tsx rename to src/app/layouts/base-layout/components/header/header.tsx index 7e4fe0434..88bb31340 100644 --- a/src/features/base-layout/components/header/header.tsx +++ b/src/app/layouts/base-layout/components/header/header.tsx @@ -3,8 +3,10 @@ import classNames from 'classnames/bind'; import { Link, useLocation } from 'react-router-dom'; import { BurgerMenu } from './burger/burger'; import { NavItem } from './nav-item/nav-item'; -import { LogoWrapper, MobileView, SchoolMenu } from '@/app/components'; -import { useWindowSize } from '@/app/hooks'; +import { useWindowSize } from '@/shared/hooks/use-window-size'; +import { LogoWrapper } from '@/shared/ui/logo-wrapper'; +import { MobileView } from '@/widgets/mobile-view'; +import { SchoolMenu } from '@/widgets/school-menu'; import styles from './header.module.scss'; diff --git a/src/features/base-layout/components/header/index.ts b/src/app/layouts/base-layout/components/header/index.ts similarity index 100% rename from src/features/base-layout/components/header/index.ts rename to src/app/layouts/base-layout/components/header/index.ts diff --git a/src/features/base-layout/components/header/nav-item/nav-item.module.scss b/src/app/layouts/base-layout/components/header/nav-item/nav-item.module.scss similarity index 100% rename from src/features/base-layout/components/header/nav-item/nav-item.module.scss rename to src/app/layouts/base-layout/components/header/nav-item/nav-item.module.scss diff --git a/src/features/base-layout/components/header/nav-item/nav-item.tsx b/src/app/layouts/base-layout/components/header/nav-item/nav-item.tsx similarity index 95% rename from src/features/base-layout/components/header/nav-item/nav-item.tsx rename to src/app/layouts/base-layout/components/header/nav-item/nav-item.tsx index 0b43a4b44..be1f27562 100644 --- a/src/features/base-layout/components/header/nav-item/nav-item.tsx +++ b/src/app/layouts/base-layout/components/header/nav-item/nav-item.tsx @@ -2,7 +2,7 @@ import { ReactNode, useState } from 'react'; import classNames from 'classnames/bind'; import { NavLink } from 'react-router-dom'; import { DropdownWrapper } from '../dropdown/dropdown-wrapper'; -import { DropdownArrow } from '@/icons/dropdown-arrow'; +import { DropdownArrow } from '@/shared/icons/dropdown-arrow'; import styles from './nav-item.module.scss'; diff --git a/src/features/base-layout/components/index.ts b/src/app/layouts/base-layout/components/index.ts similarity index 100% rename from src/features/base-layout/components/index.ts rename to src/app/layouts/base-layout/components/index.ts diff --git a/src/features/base-layout/components/partnered/index.ts b/src/app/layouts/base-layout/components/partnered/index.ts similarity index 100% rename from src/features/base-layout/components/partnered/index.ts rename to src/app/layouts/base-layout/components/partnered/index.ts diff --git a/src/features/base-layout/components/partnered/partnered.scss b/src/app/layouts/base-layout/components/partnered/partnered.scss similarity index 100% rename from src/features/base-layout/components/partnered/partnered.scss rename to src/app/layouts/base-layout/components/partnered/partnered.scss diff --git a/src/features/base-layout/components/partnered/partnered.test.tsx b/src/app/layouts/base-layout/components/partnered/partnered.test.tsx similarity index 100% rename from src/features/base-layout/components/partnered/partnered.test.tsx rename to src/app/layouts/base-layout/components/partnered/partnered.test.tsx diff --git a/src/features/base-layout/components/partnered/partnered.tsx b/src/app/layouts/base-layout/components/partnered/partnered.tsx similarity index 96% rename from src/features/base-layout/components/partnered/partnered.tsx rename to src/app/layouts/base-layout/components/partnered/partnered.tsx index 32100a282..8d7cb0c7d 100644 --- a/src/features/base-layout/components/partnered/partnered.tsx +++ b/src/app/layouts/base-layout/components/partnered/partnered.tsx @@ -1,4 +1,4 @@ -import { AwsLogo, EpamLogo, GithubLogo, JetBrainsLogo } from '@/icons'; +import { AwsLogo, EpamLogo, GithubLogo, JetBrainsLogo } from '@/shared/icons'; import './partnered.scss'; diff --git a/src/features/base-layout/components/scroll-to-hash/index.ts b/src/app/layouts/base-layout/components/scroll-to-hash/index.ts similarity index 100% rename from src/features/base-layout/components/scroll-to-hash/index.ts rename to src/app/layouts/base-layout/components/scroll-to-hash/index.ts diff --git a/src/features/base-layout/components/scroll-to-hash/scroll-to-hash.test.tsx b/src/app/layouts/base-layout/components/scroll-to-hash/scroll-to-hash.test.tsx similarity index 100% rename from src/features/base-layout/components/scroll-to-hash/scroll-to-hash.test.tsx rename to src/app/layouts/base-layout/components/scroll-to-hash/scroll-to-hash.test.tsx diff --git a/src/features/base-layout/components/scroll-to-hash/scroll-to-hash.tsx b/src/app/layouts/base-layout/components/scroll-to-hash/scroll-to-hash.tsx similarity index 100% rename from src/features/base-layout/components/scroll-to-hash/scroll-to-hash.tsx rename to src/app/layouts/base-layout/components/scroll-to-hash/scroll-to-hash.tsx diff --git a/src/features/base-layout/index.ts b/src/app/layouts/base-layout/index.ts similarity index 100% rename from src/features/base-layout/index.ts rename to src/app/layouts/base-layout/index.ts diff --git a/src/app/routes.tsx b/src/app/routes.tsx index 695000e53..89282f488 100644 --- a/src/app/routes.tsx +++ b/src/app/routes.tsx @@ -1,7 +1,7 @@ import { RouteObject } from 'react-router-dom'; import { ROUTES } from '@/app/const'; import { config } from '@/config'; -import { courseLoader } from '@/features/course-main/courseLoader.ts'; +import { courseLoader } from '@/widgets/course-main/courseLoader.ts'; const coursesRoute: RouteObject = { path: ROUTES.COURSES, @@ -103,7 +103,7 @@ export const routes: RouteObject[] = config.isRollingScopesLanding { path: ROUTES.HOME, lazy: async () => { - const { BaseLayout } = await import('../features/base-layout/base-layout.tsx'); + const { BaseLayout } = await import('./layouts/base-layout/base-layout.tsx'); return { Component: BaseLayout }; }, @@ -125,7 +125,7 @@ export const routes: RouteObject[] = config.isRollingScopesLanding { path: ROUTES.HOME, lazy: async () => { - const { BaseLayout } = await import('../features/base-layout/base-layout.tsx'); + const { BaseLayout } = await import('./layouts/base-layout/base-layout.tsx'); return { Component: BaseLayout }; }, diff --git a/src/app/services/data/courses-path.data.ts b/src/app/services/data/courses-path.data.ts index b3d3d4385..49112808e 100644 --- a/src/app/services/data/courses-path.data.ts +++ b/src/app/services/data/courses-path.data.ts @@ -1,12 +1,12 @@ import { type CoursesPath } from './courses-data.types'; import { ROUTES } from '@/app/const'; import { buildUrl } from '@/app/services/platform'; -import AWSDeveloperIcon from '@/assets/icons/aws-developer.webp'; -import AWSFundamentalsIcon from '@/assets/icons/aws-fundamentals.webp'; -import HTMLIcon from '@/assets/icons/html.webp'; -import JSIcon from '@/assets/icons/javascript.webp'; -import NodeJSIcon from '@/assets/icons/nodejs.webp'; -import ReactAngIcon from '@/assets/icons/react-angular.svg'; +import AWSDeveloperIcon from '@/shared/assets/icons/aws-developer.webp'; +import AWSFundamentalsIcon from '@/shared/assets/icons/aws-fundamentals.webp'; +import HTMLIcon from '@/shared/assets/icons/html.webp'; +import JSIcon from '@/shared/assets/icons/javascript.webp'; +import NodeJSIcon from '@/shared/assets/icons/nodejs.webp'; +import ReactAngIcon from '@/shared/assets/icons/react-angular.svg'; export const coursesPath: CoursesPath[] = [ { diff --git a/src/app/services/data/courses.data.ts b/src/app/services/data/courses.data.ts index 5798cc171..b19ecd634 100644 --- a/src/app/services/data/courses.data.ts +++ b/src/app/services/data/courses.data.ts @@ -1,24 +1,24 @@ import { buildUrl } from '../platform'; import { ROUTES } from '@/app/const'; import { type Course } from '@/app/types'; -import angularSecondary from '@/assets/icons/angular-secondary.webp'; -import angular from '@/assets/icons/angular.svg'; -import awsSecondary from '@/assets/icons/aws-secondary.webp'; -import aws from '@/assets/icons/aws.svg'; -import angularSmall from '@/assets/icons/footer/angular.webp'; -import awsDevSmall from '@/assets/icons/footer/aws-dev.webp'; -import awsFundSmall from '@/assets/icons/footer/aws-fundamentals.webp'; -import htmlSmall from '@/assets/icons/footer/html.webp'; -import jsSmall from '@/assets/icons/footer/javascript.webp'; -import nodejsSmall from '@/assets/icons/footer/nodejs.webp'; -import reactSmall from '@/assets/icons/footer/react.webp'; -import javascript from '@/assets/icons/javascript.webp'; -import jsSecondary from '@/assets/icons/js-secondary.webp'; -import nodejs from '@/assets/icons/node.svg'; -import nodejsSecondary from '@/assets/icons/nodejs-secondary.webp'; -import reactSecondary from '@/assets/icons/react-secondary.webp'; -import react from '@/assets/icons/react.svg'; -import { COURSE_TITLES } from '@/data/courseTitles.data'; +import angularSecondary from '@/shared/assets/icons/angular-secondary.webp'; +import angular from '@/shared/assets/icons/angular.svg'; +import awsSecondary from '@/shared/assets/icons/aws-secondary.webp'; +import aws from '@/shared/assets/icons/aws.svg'; +import angularSmall from '@/shared/assets/icons/footer/angular.webp'; +import awsDevSmall from '@/shared/assets/icons/footer/aws-dev.webp'; +import awsFundSmall from '@/shared/assets/icons/footer/aws-fundamentals.webp'; +import htmlSmall from '@/shared/assets/icons/footer/html.webp'; +import jsSmall from '@/shared/assets/icons/footer/javascript.webp'; +import nodejsSmall from '@/shared/assets/icons/footer/nodejs.webp'; +import reactSmall from '@/shared/assets/icons/footer/react.webp'; +import javascript from '@/shared/assets/icons/javascript.webp'; +import jsSecondary from '@/shared/assets/icons/js-secondary.webp'; +import nodejs from '@/shared/assets/icons/node.svg'; +import nodejsSecondary from '@/shared/assets/icons/nodejs-secondary.webp'; +import reactSecondary from '@/shared/assets/icons/react-secondary.webp'; +import react from '@/shared/assets/icons/react.svg'; +import { COURSE_TITLES } from '@/shared/data/courseTitles.data'; export const courses: Course[] = [ { diff --git a/src/app/services/data/js-path.data.ts b/src/app/services/data/js-path.data.ts index ffe080824..90c448628 100644 --- a/src/app/services/data/js-path.data.ts +++ b/src/app/services/data/js-path.data.ts @@ -1,7 +1,7 @@ import { type JSPath } from './courses-data.types'; -import stage1 from '@/assets/stages/stage-1.webp'; -import stage2 from '@/assets/stages/stage-2.webp'; -import stage3 from '@/assets/stages/stage-3.webp'; +import stage1 from '@/shared/assets/stages/stage-1.webp'; +import stage2 from '@/shared/assets/stages/stage-2.webp'; +import stage3 from '@/shared/assets/stages/stage-3.webp'; export const jsPath: JSPath[] = [ { diff --git a/src/app/services/data/js-ru-path.data.ts b/src/app/services/data/js-ru-path.data.ts index 2239ea50d..a4cbefd01 100644 --- a/src/app/services/data/js-ru-path.data.ts +++ b/src/app/services/data/js-ru-path.data.ts @@ -1,7 +1,7 @@ import { type JSPath } from './courses-data.types'; -import stage1 from '@/assets/stages/stage-1.webp'; -import stage2 from '@/assets/stages/stage-2.webp'; -import stage3 from '@/assets/stages/stage-3.webp'; +import stage1 from '@/shared/assets/stages/stage-1.webp'; +import stage2 from '@/shared/assets/stages/stage-2.webp'; +import stage3 from '@/shared/assets/stages/stage-3.webp'; export const jsPathRu: JSPath[] = [ { diff --git a/src/styles/_constants.scss b/src/app/styles/_constants.scss similarity index 100% rename from src/styles/_constants.scss rename to src/app/styles/_constants.scss diff --git a/src/styles/_mixins.scss b/src/app/styles/_mixins.scss similarity index 100% rename from src/styles/_mixins.scss rename to src/app/styles/_mixins.scss diff --git a/src/styles/normalize.scss b/src/app/styles/_normalize.scss similarity index 100% rename from src/styles/normalize.scss rename to src/app/styles/_normalize.scss diff --git a/src/styles/_placeholders.scss b/src/app/styles/_placeholders.scss similarity index 100% rename from src/styles/_placeholders.scss rename to src/app/styles/_placeholders.scss diff --git a/src/styles/index.scss b/src/app/styles/index.scss similarity index 94% rename from src/styles/index.scss rename to src/app/styles/index.scss index bf506e0d1..ab1831493 100644 --- a/src/styles/index.scss +++ b/src/app/styles/index.scss @@ -1,5 +1,3 @@ -@import './normalize'; - html { scroll-behavior: smooth; } @@ -38,9 +36,7 @@ figure { display: flex; align-items: center; justify-content: center; - width: 100%; - text-align: left; } @@ -55,7 +51,7 @@ figure { width: 100%; max-width: 1440px; - padding: 80px 120px 40px 120px; + padding: 80px 120px 40px; } .column-2 { diff --git a/src/app/hooks/use-nearest-course/constants.ts b/src/entities/courses/constants.ts similarity index 100% rename from src/app/hooks/use-nearest-course/constants.ts rename to src/entities/courses/constants.ts diff --git a/src/app/hooks/use-nearest-course/utils/choose-nearest-course.ts b/src/entities/courses/helpers/choose-nearest-course.ts similarity index 100% rename from src/app/hooks/use-nearest-course/utils/choose-nearest-course.ts rename to src/entities/courses/helpers/choose-nearest-course.ts diff --git a/src/features/courses/courses/utils/compare-courses.ts b/src/entities/courses/helpers/compare-courses.ts similarity index 100% rename from src/features/courses/courses/utils/compare-courses.ts rename to src/entities/courses/helpers/compare-courses.ts diff --git a/src/app/hooks/use-nearest-course/utils/define-prev-next.ts b/src/entities/courses/helpers/define-prev-next.ts similarity index 100% rename from src/app/hooks/use-nearest-course/utils/define-prev-next.ts rename to src/entities/courses/helpers/define-prev-next.ts diff --git a/src/app/hooks/use-nearest-course/utils/fined-nearest-course.ts b/src/entities/courses/helpers/fined-nearest-course.ts similarity index 100% rename from src/app/hooks/use-nearest-course/utils/fined-nearest-course.ts rename to src/entities/courses/helpers/fined-nearest-course.ts diff --git a/src/features/courses/courses/utils/is-course.ts b/src/entities/courses/helpers/is-course.ts similarity index 100% rename from src/features/courses/courses/utils/is-course.ts rename to src/entities/courses/helpers/is-course.ts diff --git a/src/entities/courses/index.ts b/src/entities/courses/index.ts new file mode 100644 index 000000000..e84f8757a --- /dev/null +++ b/src/entities/courses/index.ts @@ -0,0 +1,4 @@ +export { CourseCard } from './ui/course-card/course-card'; +export { Main as CoursesMain } from './ui/main/main'; +export { General } from './ui/general/general'; +export { finedNearestCourse } from './helpers/fined-nearest-course'; diff --git a/src/app/hooks/use-nearest-course/types.ts b/src/entities/courses/types.ts similarity index 100% rename from src/app/hooks/use-nearest-course/types.ts rename to src/entities/courses/types.ts diff --git a/src/app/components/course-card/course-card.scss b/src/entities/courses/ui/course-card/course-card.scss similarity index 100% rename from src/app/components/course-card/course-card.scss rename to src/entities/courses/ui/course-card/course-card.scss diff --git a/src/app/components/course-card/course-card.test.tsx b/src/entities/courses/ui/course-card/course-card.test.tsx similarity index 95% rename from src/app/components/course-card/course-card.test.tsx rename to src/entities/courses/ui/course-card/course-card.test.tsx index 6c8ad0b66..9a84a85b9 100644 --- a/src/app/components/course-card/course-card.test.tsx +++ b/src/entities/courses/ui/course-card/course-card.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; import { CourseCard, type CourseCardProps } from './course-card'; -import { renderWithRouter } from '@/__tests__/utils'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('CourseCard', () => { const mockProps: CourseCardProps = { diff --git a/src/app/components/course-card/course-card.tsx b/src/entities/courses/ui/course-card/course-card.tsx similarity index 87% rename from src/app/components/course-card/course-card.tsx rename to src/entities/courses/ui/course-card/course-card.tsx index 6a090317e..510bf63ae 100644 --- a/src/app/components/course-card/course-card.tsx +++ b/src/entities/courses/ui/course-card/course-card.tsx @@ -1,10 +1,10 @@ /* eslint-disable @stylistic/jsx-one-expression-per-line */ -import { LinkCustom } from '@/app/components'; import { type Course } from '@/app/types'; -import micIcon from '@/assets/icons/mic.svg'; -import noteIcon from '@/assets/icons/note-icon.svg'; -import Image from '@/features/image'; -import { ArrowIcon } from '@/icons'; +import micIcon from '@/shared/assets/icons/mic.svg'; +import noteIcon from '@/shared/assets/icons/note-icon.svg'; +import { ArrowIcon } from '@/shared/icons'; +import Image from '@/shared/ui/image'; +import { LinkCustom } from '@/shared/ui/link-custom'; import './course-card.scss'; diff --git a/src/features/courses/general/general.scss b/src/entities/courses/ui/general/general.scss similarity index 100% rename from src/features/courses/general/general.scss rename to src/entities/courses/ui/general/general.scss diff --git a/src/features/courses/general/general.test.tsx b/src/entities/courses/ui/general/general.test.tsx similarity index 92% rename from src/features/courses/general/general.test.tsx rename to src/entities/courses/ui/general/general.test.tsx index 176d1e592..5c2390ee9 100644 --- a/src/features/courses/general/general.test.tsx +++ b/src/entities/courses/ui/general/general.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; import { General } from './general'; -import { renderWithRouter } from '@/__tests__/utils'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('General', () => { beforeEach(() => { diff --git a/src/features/courses/general/general.tsx b/src/entities/courses/ui/general/general.tsx similarity index 97% rename from src/features/courses/general/general.tsx rename to src/entities/courses/ui/general/general.tsx index 0226592d6..3719f2570 100644 --- a/src/features/courses/general/general.tsx +++ b/src/entities/courses/ui/general/general.tsx @@ -1,5 +1,5 @@ import { Link } from 'react-router-dom'; -import { Title } from '@/app/components'; +import { Title } from '@/shared/ui/title'; import './general.scss'; diff --git a/src/features/courses/main/main.scss b/src/entities/courses/ui/main/main.scss similarity index 100% rename from src/features/courses/main/main.scss rename to src/entities/courses/ui/main/main.scss diff --git a/src/features/courses/main/main.test.tsx b/src/entities/courses/ui/main/main.test.tsx similarity index 84% rename from src/features/courses/main/main.test.tsx rename to src/entities/courses/ui/main/main.test.tsx index 45b9783ff..724ddd128 100644 --- a/src/features/courses/main/main.test.tsx +++ b/src/entities/courses/ui/main/main.test.tsx @@ -1,8 +1,8 @@ import { screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; import { Main } from './main'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; -import { renderWithRouter } from '@/__tests__/utils'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('Main', () => { beforeEach(() => { diff --git a/src/features/courses/main/main.tsx b/src/entities/courses/ui/main/main.tsx similarity index 76% rename from src/features/courses/main/main.tsx rename to src/entities/courses/ui/main/main.tsx index a1959eada..31d69ddeb 100644 --- a/src/features/courses/main/main.tsx +++ b/src/entities/courses/ui/main/main.tsx @@ -1,6 +1,6 @@ -import { Title, TitleType } from '@/app/components'; -import mentors from '@/assets/mentor-with-his-students.webp'; -import Image from '@/features/image'; +import mentors from '@/shared/assets/mentor-with-his-students.webp'; +import Image from '@/shared/ui/image'; +import { Title, TitleType } from '@/shared/ui/title'; import './main.scss'; diff --git a/src/entities/events/index.ts b/src/entities/events/index.ts new file mode 100644 index 000000000..1f3a5093a --- /dev/null +++ b/src/entities/events/index.ts @@ -0,0 +1 @@ +export { EventCard, type EventCardProps } from './ui/event-card/event-card'; diff --git a/src/app/components/event-card/event-card.module.scss b/src/entities/events/ui/event-card/event-card.module.scss similarity index 100% rename from src/app/components/event-card/event-card.module.scss rename to src/entities/events/ui/event-card/event-card.module.scss diff --git a/src/app/components/event-card/event-card.test.tsx b/src/entities/events/ui/event-card/event-card.test.tsx similarity index 96% rename from src/app/components/event-card/event-card.test.tsx rename to src/entities/events/ui/event-card/event-card.test.tsx index 6a4c866c3..c040bd52b 100644 --- a/src/app/components/event-card/event-card.test.tsx +++ b/src/entities/events/ui/event-card/event-card.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; import { EventCard } from './event-card'; -import { renderWithRouter } from '@/__tests__/utils'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('EventCard', () => { const mockProps = { diff --git a/src/app/components/event-card/event-card.tsx b/src/entities/events/ui/event-card/event-card.tsx similarity index 97% rename from src/app/components/event-card/event-card.tsx rename to src/entities/events/ui/event-card/event-card.tsx index 1c9f65b1d..7df4459d2 100644 --- a/src/app/components/event-card/event-card.tsx +++ b/src/entities/events/ui/event-card/event-card.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames/bind'; -import { LinkCustom } from '@/app/components'; +import { LinkCustom } from '@/shared/ui/link-custom'; import styles from './event-card.module.scss'; diff --git a/src/features/about-video/index.ts b/src/features/about-video/index.ts deleted file mode 100644 index 9a895e299..000000000 --- a/src/features/about-video/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { AboutVideo } from './about-video'; diff --git a/src/features/about/components/index.ts b/src/features/about/components/index.ts deleted file mode 100644 index 396d6907c..000000000 --- a/src/features/about/components/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { InfoGrid } from './info-grid'; diff --git a/src/features/about/components/info-grid/index.ts b/src/features/about/components/info-grid/index.ts deleted file mode 100644 index 396d6907c..000000000 --- a/src/features/about/components/info-grid/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { InfoGrid } from './info-grid'; diff --git a/src/features/about/index.ts b/src/features/about/index.ts deleted file mode 100644 index 46296378d..000000000 --- a/src/features/about/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { About } from './about'; diff --git a/src/features/angular-topics/index.ts b/src/features/angular-topics/index.ts deleted file mode 100644 index 07a0b7a97..000000000 --- a/src/features/angular-topics/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { AngularTopics } from './angular-topics'; diff --git a/src/features/certification/index.tsx b/src/features/certification/index.tsx deleted file mode 100644 index 17ef40573..000000000 --- a/src/features/certification/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { Certification } from './certification'; diff --git a/src/features/communication/index.tsx b/src/features/communication/index.tsx deleted file mode 100644 index cc8a8798d..000000000 --- a/src/features/communication/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { Communication } from './communication'; diff --git a/src/features/course-main/utils/index.ts b/src/features/course-main/utils/index.ts deleted file mode 100644 index 9e15e9751..000000000 --- a/src/features/course-main/utils/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { getCourseStatus } from './get-course-status'; -export { hasDayInDate } from './has-day'; diff --git a/src/features/courses/courses/index.ts b/src/features/courses/courses/index.ts deleted file mode 100644 index 2006e5801..000000000 --- a/src/features/courses/courses/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Courses } from './courses'; diff --git a/src/features/courses/general/index.ts b/src/features/courses/general/index.ts deleted file mode 100644 index 7c24a8986..000000000 --- a/src/features/courses/general/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { General } from './general'; diff --git a/src/features/courses/index.ts b/src/features/courses/index.ts deleted file mode 100644 index afb4d8360..000000000 --- a/src/features/courses/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { Courses } from './courses'; -export { General } from './general'; -export { Main } from './main'; diff --git a/src/features/courses/main/index.ts b/src/features/courses/main/index.ts deleted file mode 100644 index 68710baa1..000000000 --- a/src/features/courses/main/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Main } from './main'; diff --git a/src/features/faq/index.tsx b/src/features/faq/index.tsx deleted file mode 100644 index d42318267..000000000 --- a/src/features/faq/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { Faq } from './faq'; diff --git a/src/features/home/about/index.ts b/src/features/home/about/index.ts deleted file mode 100644 index 46296378d..000000000 --- a/src/features/home/about/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { About } from './about'; diff --git a/src/features/home/community/index.ts b/src/features/home/community/index.ts deleted file mode 100644 index 61dd1a6a5..000000000 --- a/src/features/home/community/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Community } from './community'; diff --git a/src/features/home/contribute/index.ts b/src/features/home/contribute/index.ts deleted file mode 100644 index 4cf7ad265..000000000 --- a/src/features/home/contribute/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Contribute } from './contribute'; diff --git a/src/features/home/events/index.ts b/src/features/home/events/index.ts deleted file mode 100644 index 84a3fd5d4..000000000 --- a/src/features/home/events/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Events } from './events'; diff --git a/src/features/home/hero/index.ts b/src/features/home/hero/index.ts deleted file mode 100644 index 1e9ccae06..000000000 --- a/src/features/home/hero/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Hero } from './hero'; diff --git a/src/features/home/index.ts b/src/features/home/index.ts deleted file mode 100644 index af3c0dff1..000000000 --- a/src/features/home/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -export { About } from './about'; -export { Community } from './community'; -export { Contribute } from './contribute'; -export { Events } from './events'; -export { Hero } from './hero'; -export { Merch } from './merch'; -export { Numbers } from './numbers'; -export { Pictures } from './pictures'; -export { Speakers } from './speakers'; -export { Support } from './support'; diff --git a/src/features/home/merch/index.ts b/src/features/home/merch/index.ts deleted file mode 100644 index e383b3205..000000000 --- a/src/features/home/merch/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Merch } from './merch'; diff --git a/src/features/home/numbers/index.ts b/src/features/home/numbers/index.ts deleted file mode 100644 index ad006b54f..000000000 --- a/src/features/home/numbers/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Numbers } from './numbers'; diff --git a/src/features/home/pictures/index.ts b/src/features/home/pictures/index.ts deleted file mode 100644 index fcf9ac1ae..000000000 --- a/src/features/home/pictures/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Pictures } from './pictures'; diff --git a/src/features/home/speakers/index.ts b/src/features/home/speakers/index.ts deleted file mode 100644 index 7b934677b..000000000 --- a/src/features/home/speakers/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Speakers } from './speakers'; diff --git a/src/features/home/support/index.ts b/src/features/home/support/index.ts deleted file mode 100644 index 87c79ab06..000000000 --- a/src/features/home/support/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Support } from './support'; diff --git a/src/features/mentors-wanted/index.ts b/src/features/mentors-wanted/index.ts deleted file mode 100644 index 75dc4c27f..000000000 --- a/src/features/mentors-wanted/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { MentorsWanted } from './mentors-wanted'; diff --git a/src/features/not-found/index.ts b/src/features/not-found/index.ts deleted file mode 100644 index 4324bddd0..000000000 --- a/src/features/not-found/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { NotFound } from './not-found'; diff --git a/src/features/principles/index.ts b/src/features/principles/index.ts deleted file mode 100644 index e65bdfb9c..000000000 --- a/src/features/principles/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Principles } from './principles'; diff --git a/src/features/required/index.ts b/src/features/required/index.ts deleted file mode 100644 index 0202ae296..000000000 --- a/src/features/required/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Required } from './required'; diff --git a/src/features/school/about/index.ts b/src/features/school/about/index.ts deleted file mode 100644 index 46296378d..000000000 --- a/src/features/school/about/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { About } from './about'; diff --git a/src/features/school/alumni/constants.ts b/src/features/school/alumni/constants.ts deleted file mode 100644 index 404f27084..000000000 --- a/src/features/school/alumni/constants.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { AlumniProps } from './alumni'; -import aesoft from '@/assets/alumni/aesoft.svg'; -import andersen from '@/assets/alumni/andersen.svg'; -import coherent from '@/assets/alumni/coherent.svg'; -import dataart from '@/assets/alumni/dataart.svg'; -import dott from '@/assets/alumni/dott.svg'; -import elinext from '@/assets/alumni/elinext.svg'; -import epam from '@/assets/alumni/epam.svg'; -import godel from '@/assets/alumni/godel.svg'; -import itechart from '@/assets/alumni/itechart.svg'; -import miro from '@/assets/alumni/miro.svg'; -import nanosoft from '@/assets/alumni/nanosoft.svg'; -import oxagile from '@/assets/alumni/oxagile.svg'; -import pandadoc from '@/assets/alumni/pandadoc.svg'; -import qulix from '@/assets/alumni/qulix.svg'; -import satellite from '@/assets/alumni/satellite.svg'; -import sberbank from '@/assets/alumni/sberbank.svg'; -import toptal from '@/assets/alumni/toptal.svg'; -import visualfabriq from '@/assets/alumni/visualfabriq.svg'; - -export const alumni: AlumniProps[] = [ - { - id: 'epam', - image: epam, - }, - { - id: 'toptal', - image: toptal, - }, - { - id: 'oxagile', - image: oxagile, - }, - { - id: 'dott', - image: dott, - }, - { - id: 'andersen', - image: andersen, - }, - { - id: 'godel', - image: godel, - }, - { - id: 'satellite', - image: satellite, - }, - { - id: 'itechart', - image: itechart, - }, - { - id: 'pandadoc', - image: pandadoc, - }, - { - id: 'dataart', - image: dataart, - }, - { - id: 'coherent', - image: coherent, - }, - { - id: 'elinext', - image: elinext, - }, - { - id: 'miro', - image: miro, - }, - { - id: 'qulix', - image: qulix, - }, - { - id: 'visualfabriq', - image: visualfabriq, - }, - { - id: 'sberbank', - image: sberbank, - }, - { - id: 'nanosoft', - image: nanosoft, - }, - { - id: 'aesoft', - image: aesoft, - }, -]; diff --git a/src/features/school/alumni/index.ts b/src/features/school/alumni/index.ts deleted file mode 100644 index 5a0c9df3b..000000000 --- a/src/features/school/alumni/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Alumni } from './alumni'; diff --git a/src/features/school/courses/index.ts b/src/features/school/courses/index.ts deleted file mode 100644 index 2006e5801..000000000 --- a/src/features/school/courses/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Courses } from './courses'; diff --git a/src/features/school/index.ts b/src/features/school/index.ts deleted file mode 100644 index e22af58c0..000000000 --- a/src/features/school/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { About } from './about'; -export { Alumni } from './alumni'; -export { Courses } from './courses'; -export { Main } from './main'; -export { Mentoring } from './mentoring'; -export { Mentors } from './mentors'; -export { Requirements } from './requirements'; -export { StudyWithUs } from './study-with-us'; diff --git a/src/features/school/main/index.ts b/src/features/school/main/index.ts deleted file mode 100644 index 68710baa1..000000000 --- a/src/features/school/main/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Main } from './main'; diff --git a/src/features/school/mentoring/index.ts b/src/features/school/mentoring/index.ts deleted file mode 100644 index 5a1b88195..000000000 --- a/src/features/school/mentoring/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Mentoring } from './mentoring'; diff --git a/src/features/school/mentors/index.ts b/src/features/school/mentors/index.ts deleted file mode 100644 index 06a8abf87..000000000 --- a/src/features/school/mentors/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Mentors } from './mentors'; diff --git a/src/features/school/requirements/index.ts b/src/features/school/requirements/index.ts deleted file mode 100644 index f3b53801e..000000000 --- a/src/features/school/requirements/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Requirements } from './requirements'; diff --git a/src/features/school/study-with-us/index.ts b/src/features/school/study-with-us/index.ts deleted file mode 100644 index 8a580bf93..000000000 --- a/src/features/school/study-with-us/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { StudyWithUs } from './study-with-us'; diff --git a/src/features/study-path/components/stage-card/actions/index.ts b/src/features/study-path/components/stage-card/actions/index.ts deleted file mode 100644 index c87fdc560..000000000 --- a/src/features/study-path/components/stage-card/actions/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Actions } from './actions'; diff --git a/src/features/study-path/components/stages/index.ts b/src/features/study-path/components/stages/index.ts deleted file mode 100644 index dead0ab8a..000000000 --- a/src/features/study-path/components/stages/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Stages } from './stages'; diff --git a/src/features/study-path/index.ts b/src/features/study-path/index.ts deleted file mode 100644 index f7fea1059..000000000 --- a/src/features/study-path/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { StudyPath } from './study-path'; diff --git a/src/features/trainers/index.ts b/src/features/trainers/index.ts deleted file mode 100644 index f7669c9ba..000000000 --- a/src/features/trainers/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { Trainers } from './trainers'; diff --git a/src/features/training-program/index.ts b/src/features/training-program/index.ts deleted file mode 100644 index 284fdcf83..000000000 --- a/src/features/training-program/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { TrainingProgram } from './training-program'; diff --git a/src/icons/angular-icon.tsx b/src/icons/angular-icon.tsx deleted file mode 100644 index f6ce7b677..000000000 --- a/src/icons/angular-icon.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import angular from '@/assets/svg/angular-icon.svg'; -import Image from '@/features/image'; - -export const AngularIcon = () => { - return angular icon; -}; diff --git a/src/icons/aws.tsx b/src/icons/aws.tsx deleted file mode 100644 index 258590638..000000000 --- a/src/icons/aws.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import aws from '@/assets/svg/aws.svg'; -import Image from '@/features/image'; - -export const AwsLogo = () => { - return AWS icon; -}; diff --git a/src/icons/discord-logo.tsx b/src/icons/discord-logo.tsx deleted file mode 100644 index 6e1a73879..000000000 --- a/src/icons/discord-logo.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import discordLogo from '@/assets/svg/discord-logo.svg'; -import Image from '@/features/image/image'; - -export const DiscordLogo = () => { - return discord logo; -}; diff --git a/src/icons/email.tsx b/src/icons/email.tsx deleted file mode 100644 index 6c72cfa23..000000000 --- a/src/icons/email.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import email from '@/assets/svg/email.svg'; -import Image from '@/features/image'; - -export const EmailIcon = () => { - return email icon; -}; diff --git a/src/icons/epam.tsx b/src/icons/epam.tsx deleted file mode 100644 index 543b5f54e..000000000 --- a/src/icons/epam.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import epam from '@/assets/svg/epam.svg'; -import Image from '@/features/image'; - -export const EpamLogo = () => { - return epam; -}; diff --git a/src/icons/github.tsx b/src/icons/github.tsx deleted file mode 100644 index ed1796fa3..000000000 --- a/src/icons/github.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import github from '@/assets/svg/github.svg'; -import Image from '@/features/image'; - -export const GithubLogo = () => { - return  github icon; -}; diff --git a/src/icons/html-icon.tsx b/src/icons/html-icon.tsx deleted file mode 100644 index e39cff5b5..000000000 --- a/src/icons/html-icon.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import html from '@/assets/svg/html.svg'; -import Image from '@/features/image'; - -export const HtmlIcon = () => { - return html icon; -}; diff --git a/src/icons/javascript-icon.tsx b/src/icons/javascript-icon.tsx deleted file mode 100644 index 00744e29d..000000000 --- a/src/icons/javascript-icon.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import javascript from '@/assets/icons/js-secondary.webp'; -import Image from '@/features/image'; - -export const JavascriptIcon = () => { - return JavaScript icon; -}; diff --git a/src/icons/nodejs-icon.tsx b/src/icons/nodejs-icon.tsx deleted file mode 100644 index 62e4bf7ea..000000000 --- a/src/icons/nodejs-icon.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import nodeJS from '@/assets/svg/nodeJS.svg'; -import Image from '@/features/image'; - -export const NodeJsIcon = () => { - return nodeJS icon; -}; diff --git a/src/icons/react-icon.tsx b/src/icons/react-icon.tsx deleted file mode 100644 index cef1245f8..000000000 --- a/src/icons/react-icon.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import react from '@/assets/svg/react.svg'; -import Image from '@/features/image'; - -export const ReactIcon = () => { - return react icon; -}; diff --git a/src/main.tsx b/src/main.tsx index fbd25c249..dea5ec4a3 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -3,7 +3,7 @@ import ReactDOM from 'react-dom/client'; import App from './app/app'; import '@/app/services/dayjs'; -import '@/styles/index.scss'; +import '@/app/styles/index.scss'; ReactDOM.createRoot(document.getElementById('root')!).render( diff --git a/src/pages/angular.tsx b/src/pages/angular.tsx index 8aae28dff..b2d73f97d 100644 --- a/src/pages/angular.tsx +++ b/src/pages/angular.tsx @@ -1,15 +1,15 @@ -import { Breadcrumbs } from '@/app/components'; -import { About } from '@/features/about'; -import { AngularTopics } from '@/features/angular-topics'; -import { Certification } from '@/features/certification'; -import { Communication } from '@/features/communication'; -import { CourseMain } from '@/features/course-main'; -import { MentorsWanted } from '@/features/mentors-wanted'; -import { Required } from '@/features/required'; -import { StudyPath } from '@/features/study-path'; -import { Trainers } from '@/features/trainers'; -import { angular } from '@/features/trainers/angular.data'; -import { TrainingProgram } from '@/features/training-program'; +import { About } from '@/widgets/about'; +import { AngularTopics } from '@/widgets/angular-topics'; +import { Breadcrumbs } from '@/widgets/breadcrumbs'; +import { Certification } from '@/widgets/certification'; +import { Communication } from '@/widgets/communication'; +import { CourseMain } from '@/widgets/course-main'; +import { MentorsWanted } from '@/widgets/mentors-wanted'; +import { Required } from '@/widgets/required'; +import { StudyPath } from '@/widgets/study-path'; +import { Trainers } from '@/widgets/trainers'; +import { angular } from '@/widgets/trainers/angular.data'; +import { TrainingProgram } from '@/widgets/training-program'; const COURSE_NAME = 'angular'; diff --git a/src/pages/aws-developer.tsx b/src/pages/aws-developer.tsx index f7981ea50..2abde3173 100644 --- a/src/pages/aws-developer.tsx +++ b/src/pages/aws-developer.tsx @@ -1,13 +1,13 @@ -import { Breadcrumbs } from '@/app/components'; -import { About } from '@/features/about'; -import { Certification } from '@/features/certification'; -import { Communication } from '@/features/communication'; -import { CourseMain } from '@/features/course-main'; -import { Required } from '@/features/required'; -import { StudyPath } from '@/features/study-path'; -import { Trainers } from '@/features/trainers'; -import { awsDev } from '@/features/trainers/awsDev.data.ts'; -import { TrainingProgram } from '@/features/training-program'; +import { About } from '@/widgets/about'; +import { Breadcrumbs } from '@/widgets/breadcrumbs'; +import { Certification } from '@/widgets/certification'; +import { Communication } from '@/widgets/communication'; +import { CourseMain } from '@/widgets/course-main'; +import { Required } from '@/widgets/required'; +import { StudyPath } from '@/widgets/study-path'; +import { Trainers } from '@/widgets/trainers'; +import { awsDev } from '@/widgets/trainers/awsDev.data'; +import { TrainingProgram } from '@/widgets/training-program'; const COURSE_NAME = 'aws cloud dev'; diff --git a/src/pages/aws-fundamentals.tsx b/src/pages/aws-fundamentals.tsx index 85e6438f5..b594e7ba7 100644 --- a/src/pages/aws-fundamentals.tsx +++ b/src/pages/aws-fundamentals.tsx @@ -1,12 +1,12 @@ -import { Breadcrumbs } from '@/app/components'; -import { About } from '@/features/about'; -import { Certification } from '@/features/certification'; -import { Communication } from '@/features/communication'; -import { CourseMain } from '@/features/course-main'; -import { Required } from '@/features/required'; -import { Trainers } from '@/features/trainers'; -import { awsFundamentals } from '@/features/trainers/awsFundamentals.data.ts'; -import { TrainingProgram } from '@/features/training-program'; +import { About } from '@/widgets/about'; +import { Breadcrumbs } from '@/widgets/breadcrumbs'; +import { Certification } from '@/widgets/certification'; +import { Communication } from '@/widgets/communication'; +import { CourseMain } from '@/widgets/course-main'; +import { Required } from '@/widgets/required'; +import { Trainers } from '@/widgets/trainers'; +import { awsFundamentals } from '@/widgets/trainers/awsFundamentals.data'; +import { TrainingProgram } from '@/widgets/training-program'; const COURSE_NAME = 'aws fundamentals'; diff --git a/src/pages/courses.tsx b/src/pages/courses.tsx index ee48d29a9..2282a7b82 100644 --- a/src/pages/courses.tsx +++ b/src/pages/courses.tsx @@ -1,15 +1,16 @@ import { FC } from 'react'; -import { Breadcrumbs } from '@/app/components'; -import { useTitle } from '@/app/hooks'; -import { General, Main, Courses as RSCourses } from '@/features/courses'; -import { StudyPath } from '@/features/study-path'; +import { CoursesMain, General } from '@/entities/courses'; +import { useTitle } from '@/shared/hooks/use-title'; +import { Breadcrumbs } from '@/widgets/breadcrumbs'; +import { RSCourses } from '@/widgets/courses'; +import { StudyPath } from '@/widgets/study-path'; export const Courses: FC = () => { useTitle('Courses · The Rolling Scopes School'); return ( <> -
+ diff --git a/src/pages/home.tsx b/src/pages/home.tsx index 1b45b2d38..2b3caf8ef 100644 --- a/src/pages/home.tsx +++ b/src/pages/home.tsx @@ -1,19 +1,18 @@ import { FC } from 'react'; -import { Breadcrumbs, Places } from '@/app/components'; -import { useTitle } from '@/app/hooks/use-title/use-title'; import { config } from '@/config'; -import { - About, - Community, - Contribute, - Events, - Hero, - Merch, - Numbers, - Pictures, - Speakers, - Support, -} from '@/features/home'; +import { useTitle } from '@/shared/hooks/use-title'; +import { About } from '@/widgets/about-home'; +import { Breadcrumbs } from '@/widgets/breadcrumbs'; +import { Community } from '@/widgets/community'; +import { Contribute } from '@/widgets/contribute'; +import { Events } from '@/widgets/events'; +import { Hero } from '@/widgets/hero'; +import { Merch } from '@/widgets/merch'; +import { Numbers } from '@/widgets/numbers'; +import { Pictures } from '@/widgets/pictures'; +import { Places } from '@/widgets/places'; +import { Speakers } from '@/widgets/speakers'; +import { Support } from '@/widgets/support'; export const Home: FC = () => { useTitle(`Home · ${config.title}`); diff --git a/src/pages/index.ts b/src/pages/index.ts deleted file mode 100644 index c20e5354d..000000000 --- a/src/pages/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { Courses } from './courses'; -export { Home } from './home'; -export { Nodejs } from './nodejs'; diff --git a/src/pages/javascript-en.tsx b/src/pages/javascript-en.tsx index cd04851bb..018cf37ab 100644 --- a/src/pages/javascript-en.tsx +++ b/src/pages/javascript-en.tsx @@ -1,12 +1,12 @@ -import { Breadcrumbs } from '@/app/components'; -import { About } from '@/features/about'; -import { AboutVideo } from '@/features/about-video'; -import { Certification } from '@/features/certification'; -import { Communication } from '@/features/communication'; -import { CourseMain } from '@/features/course-main'; -import { Required } from '@/features/required'; -import { StudyPath } from '@/features/study-path'; -import { TrainingProgram } from '@/features/training-program'; +import { About } from '@/widgets/about'; +import { AboutVideo } from '@/widgets/about-video'; +import { Breadcrumbs } from '@/widgets/breadcrumbs'; +import { Certification } from '@/widgets/certification'; +import { Communication } from '@/widgets/communication'; +import { CourseMain } from '@/widgets/course-main'; +import { Required } from '@/widgets/required'; +import { StudyPath } from '@/widgets/study-path'; +import { TrainingProgram } from '@/widgets/training-program'; const COURSE_NAME = 'js / front-end en'; diff --git a/src/pages/javascript-preschool-ru.tsx b/src/pages/javascript-preschool-ru.tsx index d9bba4464..6c7e8f688 100644 --- a/src/pages/javascript-preschool-ru.tsx +++ b/src/pages/javascript-preschool-ru.tsx @@ -1,13 +1,13 @@ -import { Breadcrumbs } from '@/app/components'; -import { About } from '@/features/about'; -import { Certification } from '@/features/certification'; -import { Communication } from '@/features/communication'; -import { CourseMain } from '@/features/course-main'; -import { Faq } from '@/features/faq'; -import { Required } from '@/features/required'; -import { Trainers } from '@/features/trainers'; -import { preSchoolRu } from '@/features/trainers/preSchool.data.ts'; -import { TrainingProgram } from '@/features/training-program'; +import { About } from '@/widgets/about'; +import { Breadcrumbs } from '@/widgets/breadcrumbs'; +import { Certification } from '@/widgets/certification'; +import { Communication } from '@/widgets/communication'; +import { CourseMain } from '@/widgets/course-main'; +import { Faq } from '@/widgets/faq'; +import { Required } from '@/widgets/required'; +import { Trainers } from '@/widgets/trainers'; +import { preSchoolRu } from '@/widgets/trainers/preSchool.data'; +import { TrainingProgram } from '@/widgets/training-program'; const COURSE_NAME = 'js / front-end pre-school ru'; diff --git a/src/pages/javascript-ru.tsx b/src/pages/javascript-ru.tsx index 05fee0857..59f97f9da 100644 --- a/src/pages/javascript-ru.tsx +++ b/src/pages/javascript-ru.tsx @@ -1,12 +1,12 @@ -import { Breadcrumbs } from '@/app/components'; -import { About } from '@/features/about'; -import { AboutVideo } from '@/features/about-video'; -import { Certification } from '@/features/certification'; -import { Communication } from '@/features/communication'; -import { CourseMain } from '@/features/course-main'; -import { Required } from '@/features/required'; -import { StudyPath } from '@/features/study-path'; -import { TrainingProgram } from '@/features/training-program'; +import { About } from '@/widgets/about'; +import { AboutVideo } from '@/widgets/about-video'; +import { Breadcrumbs } from '@/widgets/breadcrumbs'; +import { Certification } from '@/widgets/certification'; +import { Communication } from '@/widgets/communication'; +import { CourseMain } from '@/widgets/course-main'; +import { Required } from '@/widgets/required'; +import { StudyPath } from '@/widgets/study-path'; +import { TrainingProgram } from '@/widgets/training-program'; const COURSE_NAME = 'js / front-end ru'; diff --git a/src/pages/nodejs.tsx b/src/pages/nodejs.tsx index e54118310..454ea9cc4 100644 --- a/src/pages/nodejs.tsx +++ b/src/pages/nodejs.tsx @@ -1,13 +1,13 @@ import { FC } from 'react'; -import { Breadcrumbs } from '@/app/components'; -import { About } from '@/features/about'; -import { Certification } from '@/features/certification'; -import { Communication } from '@/features/communication'; -import { CourseMain } from '@/features/course-main'; -import { Required } from '@/features/required'; -import { Trainers } from '@/features/trainers'; -import { nodejs } from '@/features/trainers/nodejs.data.ts'; -import { TrainingProgram } from '@/features/training-program'; +import { About } from '@/widgets/about'; +import { Breadcrumbs } from '@/widgets/breadcrumbs'; +import { Certification } from '@/widgets/certification'; +import { Communication } from '@/widgets/communication'; +import { CourseMain } from '@/widgets/course-main'; +import { Required } from '@/widgets/required'; +import { Trainers } from '@/widgets/trainers'; +import { nodejs } from '@/widgets/trainers/nodejs.data'; +import { TrainingProgram } from '@/widgets/training-program'; const COURSE_NAME = 'node.js'; diff --git a/src/pages/not-found.tsx b/src/pages/not-found.tsx index ae9a29535..8e230e0f4 100644 --- a/src/pages/not-found.tsx +++ b/src/pages/not-found.tsx @@ -1,3 +1,3 @@ -import { NotFound as NotFoundEl } from '@/features/not-found'; +import { NotFound as NotFoundEl } from '@/widgets/not-found'; export const NotFound = () => ; diff --git a/src/pages/react.tsx b/src/pages/react.tsx index 1aef593ec..6080b43bc 100644 --- a/src/pages/react.tsx +++ b/src/pages/react.tsx @@ -1,11 +1,11 @@ -import { Breadcrumbs } from '@/app/components'; -import { About } from '@/features/about'; -import { Certification } from '@/features/certification'; -import { Communication } from '@/features/communication'; -import { CourseMain } from '@/features/course-main'; -import { Trainers } from '@/features/trainers'; -import { reactEn } from '@/features/trainers/react-en.data.ts'; -import { TrainingProgram } from '@/features/training-program'; +import { About } from '@/widgets/about'; +import { Breadcrumbs } from '@/widgets/breadcrumbs'; +import { Certification } from '@/widgets/certification'; +import { Communication } from '@/widgets/communication'; +import { CourseMain } from '@/widgets/course-main'; +import { Trainers } from '@/widgets/trainers'; +import { reactEn } from '@/widgets/trainers/react-en.data'; +import { TrainingProgram } from '@/widgets/training-program'; const COURSE_NAME = 'react'; diff --git a/src/pages/school.tsx b/src/pages/school.tsx index 1d2cc9595..a3948c006 100644 --- a/src/pages/school.tsx +++ b/src/pages/school.tsx @@ -1,17 +1,15 @@ import { FC } from 'react'; -import { Breadcrumbs } from '@/app/components'; -import { useTitle } from '@/app/hooks'; -import { Principles } from '@/features/principles'; -import { - About, - Alumni, - Courses, - Main, - Mentoring, - Mentors, - Requirements, - StudyWithUs, -} from '@/features/school'; +import { useTitle } from '@/shared/hooks/use-title'; +import { About } from '@/widgets/about-school'; +import { Alumni } from '@/widgets/alumni'; +import { Breadcrumbs } from '@/widgets/breadcrumbs'; +import { Courses } from '@/widgets/courses-school'; +import { Main } from '@/widgets/main'; +import { Mentoring } from '@/widgets/mentoring'; +import { Mentors } from '@/widgets/mentors'; +import { Principles } from '@/widgets/principles'; +import { Requirements } from '@/widgets/requirements'; +import { StudyWithUs } from '@/widgets/study-with-us'; export const School: FC = () => { useTitle('The Rolling Scopes School'); diff --git a/src/__tests__/constants.ts b/src/shared/__tests__/constants.ts similarity index 89% rename from src/__tests__/constants.ts rename to src/shared/__tests__/constants.ts index 87ac49467..bac6a92eb 100644 --- a/src/__tests__/constants.ts +++ b/src/shared/__tests__/constants.ts @@ -1,5 +1,5 @@ -import nodejsImg1 from '@/assets/mentors/m-shylau.webp'; -import { Trainer } from '@/features/trainers/trainers.types.ts'; +import nodejsImg1 from '@/shared/assets/mentors/m-shylau.webp'; +import { Trainer } from '@/widgets/trainers/trainers.types'; export const MOCKED_IMAGE_PATH = 'mocked-image-path.webp'; const MOCKED_TRAINER = { diff --git a/src/__tests__/setup-tests.ts b/src/shared/__tests__/setup-tests.ts similarity index 100% rename from src/__tests__/setup-tests.ts rename to src/shared/__tests__/setup-tests.ts diff --git a/src/__tests__/utils/index.ts b/src/shared/__tests__/utils/index.ts similarity index 100% rename from src/__tests__/utils/index.ts rename to src/shared/__tests__/utils/index.ts diff --git a/src/__tests__/utils/render-with-router/index.ts b/src/shared/__tests__/utils/render-with-router/index.ts similarity index 100% rename from src/__tests__/utils/render-with-router/index.ts rename to src/shared/__tests__/utils/render-with-router/index.ts diff --git a/src/__tests__/utils/render-with-router/render-with-router.tsx b/src/shared/__tests__/utils/render-with-router/render-with-router.tsx similarity index 100% rename from src/__tests__/utils/render-with-router/render-with-router.tsx rename to src/shared/__tests__/utils/render-with-router/render-with-router.tsx diff --git a/src/__tests__/visualTesting/community.spec.ts b/src/shared/__tests__/visualTesting/community.spec.ts similarity index 100% rename from src/__tests__/visualTesting/community.spec.ts rename to src/shared/__tests__/visualTesting/community.spec.ts diff --git a/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Chrome-darwin.png b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Chrome-darwin.png new file mode 100644 index 000000000..652f352b0 Binary files /dev/null and b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Chrome-darwin.png differ diff --git a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Chrome-win32.png b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Chrome-win32.png similarity index 100% rename from src/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Chrome-win32.png rename to src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Chrome-win32.png diff --git a/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Safari-darwin.png b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Safari-darwin.png new file mode 100644 index 000000000..5ebc11e8e Binary files /dev/null and b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Safari-darwin.png differ diff --git a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Safari-win32.png b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Safari-win32.png similarity index 100% rename from src/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Safari-win32.png rename to src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-Mobile-Safari-win32.png diff --git a/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-chromium-darwin.png b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-chromium-darwin.png new file mode 100644 index 000000000..d3b21ae8c Binary files /dev/null and b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-chromium-darwin.png differ diff --git a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-chromium-win32.png b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-chromium-win32.png similarity index 100% rename from src/__tests__/visualTesting/community.spec.ts-snapshots/community-chromium-win32.png rename to src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-chromium-win32.png diff --git a/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-firefox-darwin.png b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-firefox-darwin.png new file mode 100644 index 000000000..7b48a5c72 Binary files /dev/null and b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-firefox-darwin.png differ diff --git a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-firefox-win32.png b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-firefox-win32.png similarity index 100% rename from src/__tests__/visualTesting/community.spec.ts-snapshots/community-firefox-win32.png rename to src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-firefox-win32.png diff --git a/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-webkit-darwin.png b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-webkit-darwin.png new file mode 100644 index 000000000..d041266e9 Binary files /dev/null and b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-webkit-darwin.png differ diff --git a/src/__tests__/visualTesting/community.spec.ts-snapshots/community-webkit-win32.png b/src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-webkit-win32.png similarity index 100% rename from src/__tests__/visualTesting/community.spec.ts-snapshots/community-webkit-win32.png rename to src/shared/__tests__/visualTesting/community.spec.ts-snapshots/community-webkit-win32.png diff --git a/src/__tests__/visualTesting/courses.spec.ts b/src/shared/__tests__/visualTesting/courses.spec.ts similarity index 100% rename from src/__tests__/visualTesting/courses.spec.ts rename to src/shared/__tests__/visualTesting/courses.spec.ts diff --git a/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Chrome-darwin.png b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Chrome-darwin.png new file mode 100644 index 000000000..fdaed6b3f Binary files /dev/null and b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Chrome-darwin.png differ diff --git a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Chrome-win32.png b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Chrome-win32.png similarity index 100% rename from src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Chrome-win32.png rename to src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Chrome-win32.png diff --git a/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Safari-darwin.png b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Safari-darwin.png new file mode 100644 index 000000000..c96920bcf Binary files /dev/null and b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Safari-darwin.png differ diff --git a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Safari-win32.png b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Safari-win32.png similarity index 100% rename from src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Safari-win32.png rename to src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-Mobile-Safari-win32.png diff --git a/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-chromium-darwin.png b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-chromium-darwin.png new file mode 100644 index 000000000..24c2aca30 Binary files /dev/null and b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-chromium-darwin.png differ diff --git a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-chromium-win32.png b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-chromium-win32.png similarity index 100% rename from src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-chromium-win32.png rename to src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-chromium-win32.png diff --git a/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-firefox-darwin.png b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-firefox-darwin.png new file mode 100644 index 000000000..935dde598 Binary files /dev/null and b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-firefox-darwin.png differ diff --git a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-firefox-win32.png b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-firefox-win32.png similarity index 100% rename from src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-firefox-win32.png rename to src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-firefox-win32.png diff --git a/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-webkit-darwin.png b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-webkit-darwin.png new file mode 100644 index 000000000..4bf7659c4 Binary files /dev/null and b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-webkit-darwin.png differ diff --git a/src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-webkit-win32.png b/src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-webkit-win32.png similarity index 100% rename from src/__tests__/visualTesting/courses.spec.ts-snapshots/courses-webkit-win32.png rename to src/shared/__tests__/visualTesting/courses.spec.ts-snapshots/courses-webkit-win32.png diff --git a/src/__tests__/visualTesting/main.spec.ts b/src/shared/__tests__/visualTesting/main.spec.ts similarity index 100% rename from src/__tests__/visualTesting/main.spec.ts rename to src/shared/__tests__/visualTesting/main.spec.ts diff --git a/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Chrome-darwin.png b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Chrome-darwin.png new file mode 100644 index 000000000..17bf7f652 Binary files /dev/null and b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Chrome-darwin.png differ diff --git a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Chrome-win32.png b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Chrome-win32.png similarity index 100% rename from src/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Chrome-win32.png rename to src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Chrome-win32.png diff --git a/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Safari-darwin.png b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Safari-darwin.png new file mode 100644 index 000000000..87b9bcd79 Binary files /dev/null and b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Safari-darwin.png differ diff --git a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Safari-win32.png b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Safari-win32.png similarity index 100% rename from src/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Safari-win32.png rename to src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-Mobile-Safari-win32.png diff --git a/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-chromium-darwin.png b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-chromium-darwin.png new file mode 100644 index 000000000..26ce9b13e Binary files /dev/null and b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-chromium-darwin.png differ diff --git a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-chromium-win32.png b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-chromium-win32.png similarity index 100% rename from src/__tests__/visualTesting/main.spec.ts-snapshots/main-chromium-win32.png rename to src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-chromium-win32.png diff --git a/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-firefox-darwin.png b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-firefox-darwin.png new file mode 100644 index 000000000..fd0293276 Binary files /dev/null and b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-firefox-darwin.png differ diff --git a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-firefox-win32.png b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-firefox-win32.png similarity index 100% rename from src/__tests__/visualTesting/main.spec.ts-snapshots/main-firefox-win32.png rename to src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-firefox-win32.png diff --git a/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-webkit-darwin.png b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-webkit-darwin.png new file mode 100644 index 000000000..c763a1bf2 Binary files /dev/null and b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-webkit-darwin.png differ diff --git a/src/__tests__/visualTesting/main.spec.ts-snapshots/main-webkit-win32.png b/src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-webkit-win32.png similarity index 100% rename from src/__tests__/visualTesting/main.spec.ts-snapshots/main-webkit-win32.png rename to src/shared/__tests__/visualTesting/main.spec.ts-snapshots/main-webkit-win32.png diff --git a/src/shared/__tests__/visualTesting/report/index.html b/src/shared/__tests__/visualTesting/report/index.html new file mode 100644 index 000000000..148e84daf --- /dev/null +++ b/src/shared/__tests__/visualTesting/report/index.html @@ -0,0 +1,68 @@ + + + + + + + + + Playwright Test Report + + + + +
+ + + \ No newline at end of file diff --git a/src/shared/__tests__/visualTesting/results/.last-run.json b/src/shared/__tests__/visualTesting/results/.last-run.json new file mode 100644 index 000000000..cbcc1fbac --- /dev/null +++ b/src/shared/__tests__/visualTesting/results/.last-run.json @@ -0,0 +1,4 @@ +{ + "status": "passed", + "failedTests": [] +} \ No newline at end of file diff --git a/src/assets/404.webp b/src/shared/assets/404.webp similarity index 100% rename from src/assets/404.webp rename to src/shared/assets/404.webp diff --git a/src/assets/about.webp b/src/shared/assets/about.webp similarity index 100% rename from src/assets/about.webp rename to src/shared/assets/about.webp diff --git a/src/assets/alumni/aesoft.svg b/src/shared/assets/alumni/aesoft.svg similarity index 100% rename from src/assets/alumni/aesoft.svg rename to src/shared/assets/alumni/aesoft.svg diff --git a/src/assets/alumni/andersen.svg b/src/shared/assets/alumni/andersen.svg similarity index 100% rename from src/assets/alumni/andersen.svg rename to src/shared/assets/alumni/andersen.svg diff --git a/src/assets/alumni/coherent.svg b/src/shared/assets/alumni/coherent.svg similarity index 100% rename from src/assets/alumni/coherent.svg rename to src/shared/assets/alumni/coherent.svg diff --git a/src/assets/alumni/dataart.svg b/src/shared/assets/alumni/dataart.svg similarity index 100% rename from src/assets/alumni/dataart.svg rename to src/shared/assets/alumni/dataart.svg diff --git a/src/assets/alumni/dott.svg b/src/shared/assets/alumni/dott.svg similarity index 100% rename from src/assets/alumni/dott.svg rename to src/shared/assets/alumni/dott.svg diff --git a/src/assets/alumni/elinext.svg b/src/shared/assets/alumni/elinext.svg similarity index 100% rename from src/assets/alumni/elinext.svg rename to src/shared/assets/alumni/elinext.svg diff --git a/src/assets/alumni/epam.svg b/src/shared/assets/alumni/epam.svg similarity index 100% rename from src/assets/alumni/epam.svg rename to src/shared/assets/alumni/epam.svg diff --git a/src/assets/alumni/godel.svg b/src/shared/assets/alumni/godel.svg similarity index 100% rename from src/assets/alumni/godel.svg rename to src/shared/assets/alumni/godel.svg diff --git a/src/assets/alumni/itechart.svg b/src/shared/assets/alumni/itechart.svg similarity index 100% rename from src/assets/alumni/itechart.svg rename to src/shared/assets/alumni/itechart.svg diff --git a/src/assets/alumni/miro.svg b/src/shared/assets/alumni/miro.svg similarity index 100% rename from src/assets/alumni/miro.svg rename to src/shared/assets/alumni/miro.svg diff --git a/src/assets/alumni/nanosoft.svg b/src/shared/assets/alumni/nanosoft.svg similarity index 100% rename from src/assets/alumni/nanosoft.svg rename to src/shared/assets/alumni/nanosoft.svg diff --git a/src/assets/alumni/oxagile.svg b/src/shared/assets/alumni/oxagile.svg similarity index 100% rename from src/assets/alumni/oxagile.svg rename to src/shared/assets/alumni/oxagile.svg diff --git a/src/assets/alumni/pandadoc.svg b/src/shared/assets/alumni/pandadoc.svg similarity index 100% rename from src/assets/alumni/pandadoc.svg rename to src/shared/assets/alumni/pandadoc.svg diff --git a/src/assets/alumni/qulix.svg b/src/shared/assets/alumni/qulix.svg similarity index 100% rename from src/assets/alumni/qulix.svg rename to src/shared/assets/alumni/qulix.svg diff --git a/src/assets/alumni/satellite.svg b/src/shared/assets/alumni/satellite.svg similarity index 100% rename from src/assets/alumni/satellite.svg rename to src/shared/assets/alumni/satellite.svg diff --git a/src/assets/alumni/sberbank.svg b/src/shared/assets/alumni/sberbank.svg similarity index 100% rename from src/assets/alumni/sberbank.svg rename to src/shared/assets/alumni/sberbank.svg diff --git a/src/assets/alumni/toptal.svg b/src/shared/assets/alumni/toptal.svg similarity index 100% rename from src/assets/alumni/toptal.svg rename to src/shared/assets/alumni/toptal.svg diff --git a/src/assets/alumni/visualfabriq.svg b/src/shared/assets/alumni/visualfabriq.svg similarity index 100% rename from src/assets/alumni/visualfabriq.svg rename to src/shared/assets/alumni/visualfabriq.svg diff --git a/src/assets/aws-cloud-pract-badge.webp b/src/shared/assets/aws-cloud-pract-badge.webp similarity index 100% rename from src/assets/aws-cloud-pract-badge.webp rename to src/shared/assets/aws-cloud-pract-badge.webp diff --git a/src/assets/contribute.webp b/src/shared/assets/contribute.webp similarity index 100% rename from src/assets/contribute.webp rename to src/shared/assets/contribute.webp diff --git a/src/assets/icons/angular-secondary.webp b/src/shared/assets/icons/angular-secondary.webp similarity index 100% rename from src/assets/icons/angular-secondary.webp rename to src/shared/assets/icons/angular-secondary.webp diff --git a/src/assets/icons/angular.svg b/src/shared/assets/icons/angular.svg similarity index 100% rename from src/assets/icons/angular.svg rename to src/shared/assets/icons/angular.svg diff --git a/src/assets/icons/award-icon.webp b/src/shared/assets/icons/award-icon.webp similarity index 100% rename from src/assets/icons/award-icon.webp rename to src/shared/assets/icons/award-icon.webp diff --git a/src/assets/icons/aws-developer.webp b/src/shared/assets/icons/aws-developer.webp similarity index 100% rename from src/assets/icons/aws-developer.webp rename to src/shared/assets/icons/aws-developer.webp diff --git a/src/assets/icons/aws-fundamentals.webp b/src/shared/assets/icons/aws-fundamentals.webp similarity index 100% rename from src/assets/icons/aws-fundamentals.webp rename to src/shared/assets/icons/aws-fundamentals.webp diff --git a/src/assets/icons/aws-secondary.webp b/src/shared/assets/icons/aws-secondary.webp similarity index 100% rename from src/assets/icons/aws-secondary.webp rename to src/shared/assets/icons/aws-secondary.webp diff --git a/src/assets/icons/aws.svg b/src/shared/assets/icons/aws.svg similarity index 100% rename from src/assets/icons/aws.svg rename to src/shared/assets/icons/aws.svg diff --git a/src/assets/icons/chat-icon.webp b/src/shared/assets/icons/chat-icon.webp similarity index 100% rename from src/assets/icons/chat-icon.webp rename to src/shared/assets/icons/chat-icon.webp diff --git a/src/assets/icons/facebook.svg b/src/shared/assets/icons/facebook.svg similarity index 100% rename from src/assets/icons/facebook.svg rename to src/shared/assets/icons/facebook.svg diff --git a/src/assets/icons/footer/angular.webp b/src/shared/assets/icons/footer/angular.webp similarity index 100% rename from src/assets/icons/footer/angular.webp rename to src/shared/assets/icons/footer/angular.webp diff --git a/src/assets/icons/footer/aws-dev.webp b/src/shared/assets/icons/footer/aws-dev.webp similarity index 100% rename from src/assets/icons/footer/aws-dev.webp rename to src/shared/assets/icons/footer/aws-dev.webp diff --git a/src/assets/icons/footer/aws-fundamentals.webp b/src/shared/assets/icons/footer/aws-fundamentals.webp similarity index 100% rename from src/assets/icons/footer/aws-fundamentals.webp rename to src/shared/assets/icons/footer/aws-fundamentals.webp diff --git a/src/assets/icons/footer/html.webp b/src/shared/assets/icons/footer/html.webp similarity index 100% rename from src/assets/icons/footer/html.webp rename to src/shared/assets/icons/footer/html.webp diff --git a/src/assets/icons/footer/javascript.webp b/src/shared/assets/icons/footer/javascript.webp similarity index 100% rename from src/assets/icons/footer/javascript.webp rename to src/shared/assets/icons/footer/javascript.webp diff --git a/src/assets/icons/footer/nodejs.webp b/src/shared/assets/icons/footer/nodejs.webp similarity index 100% rename from src/assets/icons/footer/nodejs.webp rename to src/shared/assets/icons/footer/nodejs.webp diff --git a/src/assets/icons/footer/react.webp b/src/shared/assets/icons/footer/react.webp similarity index 100% rename from src/assets/icons/footer/react.webp rename to src/shared/assets/icons/footer/react.webp diff --git a/src/assets/icons/gift.webp b/src/shared/assets/icons/gift.webp similarity index 100% rename from src/assets/icons/gift.webp rename to src/shared/assets/icons/gift.webp diff --git a/src/assets/icons/html.webp b/src/shared/assets/icons/html.webp similarity index 100% rename from src/assets/icons/html.webp rename to src/shared/assets/icons/html.webp diff --git a/src/assets/icons/instagram.svg b/src/shared/assets/icons/instagram.svg similarity index 100% rename from src/assets/icons/instagram.svg rename to src/shared/assets/icons/instagram.svg diff --git a/src/assets/icons/javascript.webp b/src/shared/assets/icons/javascript.webp similarity index 100% rename from src/assets/icons/javascript.webp rename to src/shared/assets/icons/javascript.webp diff --git a/src/assets/icons/js-secondary.webp b/src/shared/assets/icons/js-secondary.webp similarity index 100% rename from src/assets/icons/js-secondary.webp rename to src/shared/assets/icons/js-secondary.webp diff --git a/src/assets/icons/mic.svg b/src/shared/assets/icons/mic.svg similarity index 100% rename from src/assets/icons/mic.svg rename to src/shared/assets/icons/mic.svg diff --git a/src/assets/icons/node.svg b/src/shared/assets/icons/node.svg similarity index 100% rename from src/assets/icons/node.svg rename to src/shared/assets/icons/node.svg diff --git a/src/assets/icons/nodejs-secondary.webp b/src/shared/assets/icons/nodejs-secondary.webp similarity index 100% rename from src/assets/icons/nodejs-secondary.webp rename to src/shared/assets/icons/nodejs-secondary.webp diff --git a/src/assets/icons/nodejs.webp b/src/shared/assets/icons/nodejs.webp similarity index 100% rename from src/assets/icons/nodejs.webp rename to src/shared/assets/icons/nodejs.webp diff --git a/src/assets/icons/note-icon.svg b/src/shared/assets/icons/note-icon.svg similarity index 100% rename from src/assets/icons/note-icon.svg rename to src/shared/assets/icons/note-icon.svg diff --git a/src/assets/icons/note-icon.webp b/src/shared/assets/icons/note-icon.webp similarity index 100% rename from src/assets/icons/note-icon.webp rename to src/shared/assets/icons/note-icon.webp diff --git a/src/assets/icons/paper-icon.webp b/src/shared/assets/icons/paper-icon.webp similarity index 100% rename from src/assets/icons/paper-icon.webp rename to src/shared/assets/icons/paper-icon.webp diff --git a/src/assets/icons/person-icon.webp b/src/shared/assets/icons/person-icon.webp similarity index 100% rename from src/assets/icons/person-icon.webp rename to src/shared/assets/icons/person-icon.webp diff --git a/src/assets/icons/planet.webp b/src/shared/assets/icons/planet.webp similarity index 100% rename from src/assets/icons/planet.webp rename to src/shared/assets/icons/planet.webp diff --git a/src/assets/icons/react-angular.svg b/src/shared/assets/icons/react-angular.svg similarity index 100% rename from src/assets/icons/react-angular.svg rename to src/shared/assets/icons/react-angular.svg diff --git a/src/assets/icons/react-secondary.webp b/src/shared/assets/icons/react-secondary.webp similarity index 100% rename from src/assets/icons/react-secondary.webp rename to src/shared/assets/icons/react-secondary.webp diff --git a/src/assets/icons/react.svg b/src/shared/assets/icons/react.svg similarity index 100% rename from src/assets/icons/react.svg rename to src/shared/assets/icons/react.svg diff --git a/src/assets/map.webp b/src/shared/assets/map.webp similarity index 100% rename from src/assets/map.webp rename to src/shared/assets/map.webp diff --git a/src/assets/mentor-with-his-students.webp b/src/shared/assets/mentor-with-his-students.webp similarity index 100% rename from src/assets/mentor-with-his-students.webp rename to src/shared/assets/mentor-with-his-students.webp diff --git a/src/assets/mentors-wanted-poster.webp b/src/shared/assets/mentors-wanted-poster.webp similarity index 100% rename from src/assets/mentors-wanted-poster.webp rename to src/shared/assets/mentors-wanted-poster.webp diff --git a/src/assets/mentors-wanted.webp b/src/shared/assets/mentors-wanted.webp similarity index 100% rename from src/assets/mentors-wanted.webp rename to src/shared/assets/mentors-wanted.webp diff --git a/src/assets/mentors/a-auchynikau.webp b/src/shared/assets/mentors/a-auchynikau.webp similarity index 100% rename from src/assets/mentors/a-auchynikau.webp rename to src/shared/assets/mentors/a-auchynikau.webp diff --git a/src/assets/mentors/a-musikhina.webp b/src/shared/assets/mentors/a-musikhina.webp similarity index 100% rename from src/assets/mentors/a-musikhina.webp rename to src/shared/assets/mentors/a-musikhina.webp diff --git a/src/assets/mentors/a-parfianenkau.webp b/src/shared/assets/mentors/a-parfianenkau.webp similarity index 100% rename from src/assets/mentors/a-parfianenkau.webp rename to src/shared/assets/mentors/a-parfianenkau.webp diff --git a/src/assets/mentors/a-podlubnyj.webp b/src/shared/assets/mentors/a-podlubnyj.webp similarity index 100% rename from src/assets/mentors/a-podlubnyj.webp rename to src/shared/assets/mentors/a-podlubnyj.webp diff --git a/src/assets/mentors/a-sacca.webp b/src/shared/assets/mentors/a-sacca.webp similarity index 100% rename from src/assets/mentors/a-sacca.webp rename to src/shared/assets/mentors/a-sacca.webp diff --git a/src/assets/mentors/a-serhiyenia.webp b/src/shared/assets/mentors/a-serhiyenia.webp similarity index 100% rename from src/assets/mentors/a-serhiyenia.webp rename to src/shared/assets/mentors/a-serhiyenia.webp diff --git a/src/assets/mentors/a-vera.webp b/src/shared/assets/mentors/a-vera.webp similarity index 100% rename from src/assets/mentors/a-vera.webp rename to src/shared/assets/mentors/a-vera.webp diff --git a/src/assets/mentors/ac-akbarov.webp b/src/shared/assets/mentors/ac-akbarov.webp similarity index 100% rename from src/assets/mentors/ac-akbarov.webp rename to src/shared/assets/mentors/ac-akbarov.webp diff --git a/src/assets/mentors/ac-danilov.webp b/src/shared/assets/mentors/ac-danilov.webp similarity index 100% rename from src/assets/mentors/ac-danilov.webp rename to src/shared/assets/mentors/ac-danilov.webp diff --git a/src/assets/mentors/ac-konyakhin.webp b/src/shared/assets/mentors/ac-konyakhin.webp similarity index 100% rename from src/assets/mentors/ac-konyakhin.webp rename to src/shared/assets/mentors/ac-konyakhin.webp diff --git a/src/assets/mentors/ac-kustikov.webp b/src/shared/assets/mentors/ac-kustikov.webp similarity index 100% rename from src/assets/mentors/ac-kustikov.webp rename to src/shared/assets/mentors/ac-kustikov.webp diff --git a/src/assets/mentors/d-cebruk.webp b/src/shared/assets/mentors/d-cebruk.webp similarity index 100% rename from src/assets/mentors/d-cebruk.webp rename to src/shared/assets/mentors/d-cebruk.webp diff --git a/src/assets/mentors/d-kohut.webp b/src/shared/assets/mentors/d-kohut.webp similarity index 100% rename from src/assets/mentors/d-kohut.webp rename to src/shared/assets/mentors/d-kohut.webp diff --git a/src/assets/mentors/d-struneuski.webp b/src/shared/assets/mentors/d-struneuski.webp similarity index 100% rename from src/assets/mentors/d-struneuski.webp rename to src/shared/assets/mentors/d-struneuski.webp diff --git a/src/assets/mentors/d-yarmoshkin.png b/src/shared/assets/mentors/d-yarmoshkin.png similarity index 100% rename from src/assets/mentors/d-yarmoshkin.png rename to src/shared/assets/mentors/d-yarmoshkin.png diff --git a/src/assets/mentors/e-garipov.webp b/src/shared/assets/mentors/e-garipov.webp similarity index 100% rename from src/assets/mentors/e-garipov.webp rename to src/shared/assets/mentors/e-garipov.webp diff --git a/src/assets/mentors/i-krasiuk.webp b/src/shared/assets/mentors/i-krasiuk.webp similarity index 100% rename from src/assets/mentors/i-krasiuk.webp rename to src/shared/assets/mentors/i-krasiuk.webp diff --git a/src/assets/mentors/k-britsyn.webp b/src/shared/assets/mentors/k-britsyn.webp similarity index 100% rename from src/assets/mentors/k-britsyn.webp rename to src/shared/assets/mentors/k-britsyn.webp diff --git a/src/assets/mentors/m-malets.webp b/src/shared/assets/mentors/m-malets.webp similarity index 100% rename from src/assets/mentors/m-malets.webp rename to src/shared/assets/mentors/m-malets.webp diff --git a/src/assets/mentors/m-shylau.webp b/src/shared/assets/mentors/m-shylau.webp similarity index 100% rename from src/assets/mentors/m-shylau.webp rename to src/shared/assets/mentors/m-shylau.webp diff --git a/src/assets/mentors/n-loginova.webp b/src/shared/assets/mentors/n-loginova.webp similarity index 100% rename from src/assets/mentors/n-loginova.webp rename to src/shared/assets/mentors/n-loginova.webp diff --git a/src/assets/mentors/o-duleba.webp b/src/shared/assets/mentors/o-duleba.webp similarity index 100% rename from src/assets/mentors/o-duleba.webp rename to src/shared/assets/mentors/o-duleba.webp diff --git a/src/assets/mentors/p-razuvalov.webp b/src/shared/assets/mentors/p-razuvalov.webp similarity index 100% rename from src/assets/mentors/p-razuvalov.webp rename to src/shared/assets/mentors/p-razuvalov.webp diff --git a/src/assets/mentors/r-saltykov.webp b/src/shared/assets/mentors/r-saltykov.webp similarity index 100% rename from src/assets/mentors/r-saltykov.webp rename to src/shared/assets/mentors/r-saltykov.webp diff --git a/src/assets/mentors/s-castellanos.webp b/src/shared/assets/mentors/s-castellanos.webp similarity index 100% rename from src/assets/mentors/s-castellanos.webp rename to src/shared/assets/mentors/s-castellanos.webp diff --git a/src/assets/mentors/s-shalyapin.webp b/src/shared/assets/mentors/s-shalyapin.webp similarity index 100% rename from src/assets/mentors/s-shalyapin.webp rename to src/shared/assets/mentors/s-shalyapin.webp diff --git a/src/assets/mentors/v-antonau.webp b/src/shared/assets/mentors/v-antonau.webp similarity index 100% rename from src/assets/mentors/v-antonau.webp rename to src/shared/assets/mentors/v-antonau.webp diff --git a/src/assets/mentors/v-dluski.webp b/src/shared/assets/mentors/v-dluski.webp similarity index 100% rename from src/assets/mentors/v-dluski.webp rename to src/shared/assets/mentors/v-dluski.webp diff --git a/src/assets/mentors/v-kavaliou.webp b/src/shared/assets/mentors/v-kavaliou.webp similarity index 100% rename from src/assets/mentors/v-kavaliou.webp rename to src/shared/assets/mentors/v-kavaliou.webp diff --git a/src/assets/mentors/v-kovalev.webp b/src/shared/assets/mentors/v-kovalev.webp similarity index 100% rename from src/assets/mentors/v-kovalev.webp rename to src/shared/assets/mentors/v-kovalev.webp diff --git a/src/assets/merch.webp b/src/shared/assets/merch.webp similarity index 100% rename from src/assets/merch.webp rename to src/shared/assets/merch.webp diff --git a/src/assets/nodejs-audience.webp b/src/shared/assets/nodejs-audience.webp similarity index 100% rename from src/assets/nodejs-audience.webp rename to src/shared/assets/nodejs-audience.webp diff --git a/src/assets/nodejs-trainer.webp b/src/shared/assets/nodejs-trainer.webp similarity index 100% rename from src/assets/nodejs-trainer.webp rename to src/shared/assets/nodejs-trainer.webp diff --git a/src/assets/photo-1.webp b/src/shared/assets/photo-1.webp similarity index 100% rename from src/assets/photo-1.webp rename to src/shared/assets/photo-1.webp diff --git a/src/assets/photo-2.webp b/src/shared/assets/photo-2.webp similarity index 100% rename from src/assets/photo-2.webp rename to src/shared/assets/photo-2.webp diff --git a/src/assets/photo-3.webp b/src/shared/assets/photo-3.webp similarity index 100% rename from src/assets/photo-3.webp rename to src/shared/assets/photo-3.webp diff --git a/src/assets/photo-4.webp b/src/shared/assets/photo-4.webp similarity index 100% rename from src/assets/photo-4.webp rename to src/shared/assets/photo-4.webp diff --git a/src/assets/photo-5.webp b/src/shared/assets/photo-5.webp similarity index 100% rename from src/assets/photo-5.webp rename to src/shared/assets/photo-5.webp diff --git a/src/assets/photo-6.webp b/src/shared/assets/photo-6.webp similarity index 100% rename from src/assets/photo-6.webp rename to src/shared/assets/photo-6.webp diff --git a/src/assets/photo-7.webp b/src/shared/assets/photo-7.webp similarity index 100% rename from src/assets/photo-7.webp rename to src/shared/assets/photo-7.webp diff --git a/src/assets/photo-8.webp b/src/shared/assets/photo-8.webp similarity index 100% rename from src/assets/photo-8.webp rename to src/shared/assets/photo-8.webp diff --git a/src/assets/photo-9.webp b/src/shared/assets/photo-9.webp similarity index 100% rename from src/assets/photo-9.webp rename to src/shared/assets/photo-9.webp diff --git a/src/assets/rs-git.webp b/src/shared/assets/rs-git.webp similarity index 100% rename from src/assets/rs-git.webp rename to src/shared/assets/rs-git.webp diff --git a/src/assets/rs-school-svg.svg b/src/shared/assets/rs-school-svg.svg similarity index 100% rename from src/assets/rs-school-svg.svg rename to src/shared/assets/rs-school-svg.svg diff --git a/src/assets/rs-school.webp b/src/shared/assets/rs-school.webp similarity index 100% rename from src/assets/rs-school.webp rename to src/shared/assets/rs-school.webp diff --git a/src/assets/rs-slope-angular.webp b/src/shared/assets/rs-slope-angular.webp similarity index 100% rename from src/assets/rs-slope-angular.webp rename to src/shared/assets/rs-slope-angular.webp diff --git a/src/assets/rs-slope-aws-dev.webp b/src/shared/assets/rs-slope-aws-dev.webp similarity index 100% rename from src/assets/rs-slope-aws-dev.webp rename to src/shared/assets/rs-slope-aws-dev.webp diff --git a/src/assets/rs-slope-aws-fundamentals.webp b/src/shared/assets/rs-slope-aws-fundamentals.webp similarity index 100% rename from src/assets/rs-slope-aws-fundamentals.webp rename to src/shared/assets/rs-slope-aws-fundamentals.webp diff --git a/src/assets/rs-slope-js.webp b/src/shared/assets/rs-slope-js.webp similarity index 100% rename from src/assets/rs-slope-js.webp rename to src/shared/assets/rs-slope-js.webp diff --git a/src/assets/rs-slope-nodejs.webp b/src/shared/assets/rs-slope-nodejs.webp similarity index 100% rename from src/assets/rs-slope-nodejs.webp rename to src/shared/assets/rs-slope-nodejs.webp diff --git a/src/assets/rs-slope-react-en.webp b/src/shared/assets/rs-slope-react-en.webp similarity index 100% rename from src/assets/rs-slope-react-en.webp rename to src/shared/assets/rs-slope-react-en.webp diff --git a/src/assets/rs-slope-react-ru.webp b/src/shared/assets/rs-slope-react-ru.webp similarity index 100% rename from src/assets/rs-slope-react-ru.webp rename to src/shared/assets/rs-slope-react-ru.webp diff --git a/src/assets/speakers-wanted.webp b/src/shared/assets/speakers-wanted.webp similarity index 100% rename from src/assets/speakers-wanted.webp rename to src/shared/assets/speakers-wanted.webp diff --git a/src/assets/stages/stage-1.webp b/src/shared/assets/stages/stage-1.webp similarity index 100% rename from src/assets/stages/stage-1.webp rename to src/shared/assets/stages/stage-1.webp diff --git a/src/assets/stages/stage-2.webp b/src/shared/assets/stages/stage-2.webp similarity index 100% rename from src/assets/stages/stage-2.webp rename to src/shared/assets/stages/stage-2.webp diff --git a/src/assets/stages/stage-3.webp b/src/shared/assets/stages/stage-3.webp similarity index 100% rename from src/assets/stages/stage-3.webp rename to src/shared/assets/stages/stage-3.webp diff --git a/src/assets/support.webp b/src/shared/assets/support.webp similarity index 100% rename from src/assets/support.webp rename to src/shared/assets/support.webp diff --git a/src/assets/svg/RsBanner.svg b/src/shared/assets/svg/RsBanner.svg similarity index 100% rename from src/assets/svg/RsBanner.svg rename to src/shared/assets/svg/RsBanner.svg diff --git a/src/assets/svg/angular-icon.svg b/src/shared/assets/svg/angular-icon.svg similarity index 100% rename from src/assets/svg/angular-icon.svg rename to src/shared/assets/svg/angular-icon.svg diff --git a/src/assets/svg/arrow.svg b/src/shared/assets/svg/arrow.svg similarity index 100% rename from src/assets/svg/arrow.svg rename to src/shared/assets/svg/arrow.svg diff --git a/src/assets/svg/aws.svg b/src/shared/assets/svg/aws.svg similarity index 100% rename from src/assets/svg/aws.svg rename to src/shared/assets/svg/aws.svg diff --git a/src/assets/svg/discord-logo.svg b/src/shared/assets/svg/discord-logo.svg similarity index 100% rename from src/assets/svg/discord-logo.svg rename to src/shared/assets/svg/discord-logo.svg diff --git a/src/assets/svg/dropdown-arrow.svg b/src/shared/assets/svg/dropdown-arrow.svg similarity index 100% rename from src/assets/svg/dropdown-arrow.svg rename to src/shared/assets/svg/dropdown-arrow.svg diff --git a/src/assets/svg/email.svg b/src/shared/assets/svg/email.svg similarity index 100% rename from src/assets/svg/email.svg rename to src/shared/assets/svg/email.svg diff --git a/src/assets/svg/epam.svg b/src/shared/assets/svg/epam.svg similarity index 100% rename from src/assets/svg/epam.svg rename to src/shared/assets/svg/epam.svg diff --git a/src/assets/svg/facebook.svg b/src/shared/assets/svg/facebook.svg similarity index 100% rename from src/assets/svg/facebook.svg rename to src/shared/assets/svg/facebook.svg diff --git a/src/assets/svg/github.svg b/src/shared/assets/svg/github.svg similarity index 100% rename from src/assets/svg/github.svg rename to src/shared/assets/svg/github.svg diff --git a/src/assets/svg/html.svg b/src/shared/assets/svg/html.svg similarity index 100% rename from src/assets/svg/html.svg rename to src/shared/assets/svg/html.svg diff --git a/src/assets/svg/instagram.svg b/src/shared/assets/svg/instagram.svg similarity index 100% rename from src/assets/svg/instagram.svg rename to src/shared/assets/svg/instagram.svg diff --git a/src/assets/svg/jetbrains.svg b/src/shared/assets/svg/jetbrains.svg similarity index 100% rename from src/assets/svg/jetbrains.svg rename to src/shared/assets/svg/jetbrains.svg diff --git a/src/assets/svg/linkedIn.svg b/src/shared/assets/svg/linkedIn.svg similarity index 100% rename from src/assets/svg/linkedIn.svg rename to src/shared/assets/svg/linkedIn.svg diff --git a/src/assets/svg/nodeJS.svg b/src/shared/assets/svg/nodeJS.svg similarity index 100% rename from src/assets/svg/nodeJS.svg rename to src/shared/assets/svg/nodeJS.svg diff --git a/src/assets/svg/openSourcePhilosophyIcon.svg b/src/shared/assets/svg/openSourcePhilosophyIcon.svg similarity index 100% rename from src/assets/svg/openSourcePhilosophyIcon.svg rename to src/shared/assets/svg/openSourcePhilosophyIcon.svg diff --git a/src/assets/svg/openToEveryoneIcon.svg b/src/shared/assets/svg/openToEveryoneIcon.svg similarity index 100% rename from src/assets/svg/openToEveryoneIcon.svg rename to src/shared/assets/svg/openToEveryoneIcon.svg diff --git a/src/assets/svg/react.svg b/src/shared/assets/svg/react.svg similarity index 100% rename from src/assets/svg/react.svg rename to src/shared/assets/svg/react.svg diff --git a/src/assets/svg/rss-logo.svg b/src/shared/assets/svg/rss-logo.svg similarity index 100% rename from src/assets/svg/rss-logo.svg rename to src/shared/assets/svg/rss-logo.svg diff --git a/src/assets/svg/teachItForwardIcon.svg b/src/shared/assets/svg/teachItForwardIcon.svg similarity index 100% rename from src/assets/svg/teachItForwardIcon.svg rename to src/shared/assets/svg/teachItForwardIcon.svg diff --git a/src/assets/svg/telegram.svg b/src/shared/assets/svg/telegram.svg similarity index 100% rename from src/assets/svg/telegram.svg rename to src/shared/assets/svg/telegram.svg diff --git a/src/assets/svg/text-link.svg b/src/shared/assets/svg/text-link.svg similarity index 100% rename from src/assets/svg/text-link.svg rename to src/shared/assets/svg/text-link.svg diff --git a/src/assets/svg/youtube.svg b/src/shared/assets/svg/youtube.svg similarity index 100% rename from src/assets/svg/youtube.svg rename to src/shared/assets/svg/youtube.svg diff --git a/src/assets/welcome.webp b/src/shared/assets/welcome.webp similarity index 100% rename from src/assets/welcome.webp rename to src/shared/assets/welcome.webp diff --git a/src/data/communication.data.ts b/src/shared/data/communication.data.ts similarity index 100% rename from src/data/communication.data.ts rename to src/shared/data/communication.data.ts diff --git a/src/data/courseTitles.data.ts b/src/shared/data/courseTitles.data.ts similarity index 100% rename from src/data/courseTitles.data.ts rename to src/shared/data/courseTitles.data.ts diff --git a/src/utils/getActualDataList.ts b/src/shared/helpers/getActualDataList.ts similarity index 100% rename from src/utils/getActualDataList.ts rename to src/shared/helpers/getActualDataList.ts diff --git a/src/app/hooks/use-course-by-title/index.ts b/src/shared/hooks/use-course-by-title/index.ts similarity index 100% rename from src/app/hooks/use-course-by-title/index.ts rename to src/shared/hooks/use-course-by-title/index.ts diff --git a/src/app/hooks/use-course-by-title/use-course-by-title.test.tsx b/src/shared/hooks/use-course-by-title/use-course-by-title.test.tsx similarity index 100% rename from src/app/hooks/use-course-by-title/use-course-by-title.test.tsx rename to src/shared/hooks/use-course-by-title/use-course-by-title.test.tsx diff --git a/src/app/hooks/use-course-by-title/use-course-by-title.ts b/src/shared/hooks/use-course-by-title/use-course-by-title.ts similarity index 89% rename from src/app/hooks/use-course-by-title/use-course-by-title.ts rename to src/shared/hooks/use-course-by-title/use-course-by-title.ts index 1560f46d8..dfe89bc4a 100644 --- a/src/app/hooks/use-course-by-title/use-course-by-title.ts +++ b/src/shared/hooks/use-course-by-title/use-course-by-title.ts @@ -1,5 +1,6 @@ +import { selectCourse } from './utils/select-course'; import { useDataByName } from '../use-data-by-name'; -import { selectCourse } from '@/app/hooks/use-course-by-title/utils/select-course.ts'; + import { Course } from '@/app/types'; export const useCourseByTitle = (titleStartsWith: string) => { diff --git a/src/app/hooks/use-course-by-title/utils/is-course.ts b/src/shared/hooks/use-course-by-title/utils/is-course.ts similarity index 100% rename from src/app/hooks/use-course-by-title/utils/is-course.ts rename to src/shared/hooks/use-course-by-title/utils/is-course.ts diff --git a/src/app/hooks/use-course-by-title/utils/select-course.ts b/src/shared/hooks/use-course-by-title/utils/select-course.ts similarity index 86% rename from src/app/hooks/use-course-by-title/utils/select-course.ts rename to src/shared/hooks/use-course-by-title/utils/select-course.ts index 8d1463a50..eea7e9898 100644 --- a/src/app/hooks/use-course-by-title/utils/select-course.ts +++ b/src/shared/hooks/use-course-by-title/utils/select-course.ts @@ -1,4 +1,4 @@ -import isCourse from '@/app/hooks/use-course-by-title/utils/is-course.ts'; +import isCourse from './is-course'; import { Course } from '@/app/types'; export const selectCourse = (coursesData: Course[], titleStartsWith: string) => { diff --git a/src/app/hooks/use-data-by-name/index.ts b/src/shared/hooks/use-data-by-name/index.ts similarity index 100% rename from src/app/hooks/use-data-by-name/index.ts rename to src/shared/hooks/use-data-by-name/index.ts diff --git a/src/app/hooks/use-data-by-name/use-data-by-name.test.ts b/src/shared/hooks/use-data-by-name/use-data-by-name.test.ts similarity index 98% rename from src/app/hooks/use-data-by-name/use-data-by-name.test.ts rename to src/shared/hooks/use-data-by-name/use-data-by-name.test.ts index d62623b2b..e027f9b97 100644 --- a/src/app/hooks/use-data-by-name/use-data-by-name.test.ts +++ b/src/shared/hooks/use-data-by-name/use-data-by-name.test.ts @@ -1,10 +1,10 @@ import { renderHook, waitFor } from '@testing-library/react'; import { MockedFunction, describe, expect, it, vi } from 'vitest'; import { useDataByName } from './use-data-by-name'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; import { ROUTES } from '@/app/const'; import { fetchDataByName } from '@/app/services/api'; import { DataMap } from '@/app/services/data/courses-data.types'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; const courses: DataMap['courses'] = [ { diff --git a/src/app/hooks/use-data-by-name/use-data-by-name.ts b/src/shared/hooks/use-data-by-name/use-data-by-name.ts similarity index 100% rename from src/app/hooks/use-data-by-name/use-data-by-name.ts rename to src/shared/hooks/use-data-by-name/use-data-by-name.ts diff --git a/src/app/hooks/use-position-dropdown/index.ts b/src/shared/hooks/use-position-dropdown/index.ts similarity index 100% rename from src/app/hooks/use-position-dropdown/index.ts rename to src/shared/hooks/use-position-dropdown/index.ts diff --git a/src/app/hooks/use-position-dropdown/use-position-dropdown.ts b/src/shared/hooks/use-position-dropdown/use-position-dropdown.ts similarity index 100% rename from src/app/hooks/use-position-dropdown/use-position-dropdown.ts rename to src/shared/hooks/use-position-dropdown/use-position-dropdown.ts diff --git a/src/app/hooks/use-title/index.ts b/src/shared/hooks/use-title/index.ts similarity index 100% rename from src/app/hooks/use-title/index.ts rename to src/shared/hooks/use-title/index.ts diff --git a/src/app/hooks/use-title/use-title.test.tsx b/src/shared/hooks/use-title/use-title.test.tsx similarity index 100% rename from src/app/hooks/use-title/use-title.test.tsx rename to src/shared/hooks/use-title/use-title.test.tsx diff --git a/src/app/hooks/use-title/use-title.ts b/src/shared/hooks/use-title/use-title.ts similarity index 100% rename from src/app/hooks/use-title/use-title.ts rename to src/shared/hooks/use-title/use-title.ts diff --git a/src/app/hooks/use-window-size/index.ts b/src/shared/hooks/use-window-size/index.ts similarity index 100% rename from src/app/hooks/use-window-size/index.ts rename to src/shared/hooks/use-window-size/index.ts diff --git a/src/app/hooks/use-window-size/use-window-size.test.tsx b/src/shared/hooks/use-window-size/use-window-size.test.tsx similarity index 100% rename from src/app/hooks/use-window-size/use-window-size.test.tsx rename to src/shared/hooks/use-window-size/use-window-size.test.tsx diff --git a/src/app/hooks/use-window-size/use-window-size.ts b/src/shared/hooks/use-window-size/use-window-size.ts similarity index 100% rename from src/app/hooks/use-window-size/use-window-size.ts rename to src/shared/hooks/use-window-size/use-window-size.ts diff --git a/src/shared/icons/angular-icon.tsx b/src/shared/icons/angular-icon.tsx new file mode 100644 index 000000000..c1b6c07af --- /dev/null +++ b/src/shared/icons/angular-icon.tsx @@ -0,0 +1,6 @@ +import angular from '@/shared/assets/svg/angular-icon.svg'; +import Image from '@/shared/ui/image'; + +export const AngularIcon = () => { + return angular icon; +}; diff --git a/src/icons/arrow-icon.tsx b/src/shared/icons/arrow-icon.tsx similarity index 60% rename from src/icons/arrow-icon.tsx rename to src/shared/icons/arrow-icon.tsx index 697d875a2..99a35636c 100644 --- a/src/icons/arrow-icon.tsx +++ b/src/shared/icons/arrow-icon.tsx @@ -1,5 +1,5 @@ -import arrow from '@/assets/svg/arrow.svg'; -import Image from '@/features/image'; +import arrow from '@/shared/assets/svg/arrow.svg'; +import Image from '@/shared/ui/image'; export const ArrowIcon = ({ size = '24px' }: { size?: string }) => { return ; diff --git a/src/shared/icons/aws.tsx b/src/shared/icons/aws.tsx new file mode 100644 index 000000000..04142e652 --- /dev/null +++ b/src/shared/icons/aws.tsx @@ -0,0 +1,6 @@ +import aws from '@/shared/assets/svg/aws.svg'; +import Image from '@/shared/ui/image'; + +export const AwsLogo = () => { + return AWS icon; +}; diff --git a/src/shared/icons/discord-logo.tsx b/src/shared/icons/discord-logo.tsx new file mode 100644 index 000000000..0eeb0d638 --- /dev/null +++ b/src/shared/icons/discord-logo.tsx @@ -0,0 +1,6 @@ +import discordLogo from '@/shared/assets/svg/discord-logo.svg'; +import Image from '@/shared/ui/image'; + +export const DiscordLogo = () => { + return discord logo; +}; diff --git a/src/icons/dropdown-arrow.tsx b/src/shared/icons/dropdown-arrow.tsx similarity index 55% rename from src/icons/dropdown-arrow.tsx rename to src/shared/icons/dropdown-arrow.tsx index 843ee1cad..011e801f1 100644 --- a/src/icons/dropdown-arrow.tsx +++ b/src/shared/icons/dropdown-arrow.tsx @@ -1,5 +1,5 @@ -import arrow from '@/assets/svg/dropdown-arrow.svg'; -import Image from '@/features/image'; +import arrow from '@/shared/assets/svg/dropdown-arrow.svg'; +import Image from '@/shared/ui/image'; export const DropdownArrow = () => { return dropdown-arrow; diff --git a/src/shared/icons/email.tsx b/src/shared/icons/email.tsx new file mode 100644 index 000000000..677eed12f --- /dev/null +++ b/src/shared/icons/email.tsx @@ -0,0 +1,6 @@ +import email from '@/shared/assets/svg/email.svg'; +import Image from '@/shared/ui/image'; + +export const EmailIcon = () => { + return email icon; +}; diff --git a/src/shared/icons/epam.tsx b/src/shared/icons/epam.tsx new file mode 100644 index 000000000..7d5b6a2a3 --- /dev/null +++ b/src/shared/icons/epam.tsx @@ -0,0 +1,6 @@ +import epam from '@/shared/assets/svg/epam.svg'; +import Image from '@/shared/ui/image'; + +export const EpamLogo = () => { + return epam; +}; diff --git a/src/icons/facebook.tsx b/src/shared/icons/facebook.tsx similarity index 62% rename from src/icons/facebook.tsx rename to src/shared/icons/facebook.tsx index 4ecb2708e..9ecbb1e18 100644 --- a/src/icons/facebook.tsx +++ b/src/shared/icons/facebook.tsx @@ -1,5 +1,5 @@ -import facebook from '@/assets/svg/facebook.svg'; -import Image from '@/features/image'; +import facebook from '@/shared/assets/svg/facebook.svg'; +import Image from '@/shared/ui/image'; export const FacebookIcon = () => { return ( diff --git a/src/shared/icons/github.tsx b/src/shared/icons/github.tsx new file mode 100644 index 000000000..c71d2e68d --- /dev/null +++ b/src/shared/icons/github.tsx @@ -0,0 +1,6 @@ +import github from '@/shared/assets/svg/github.svg'; +import Image from '@/shared/ui/image'; + +export const GithubLogo = () => { + return  github icon; +}; diff --git a/src/shared/icons/html-icon.tsx b/src/shared/icons/html-icon.tsx new file mode 100644 index 000000000..727a765b9 --- /dev/null +++ b/src/shared/icons/html-icon.tsx @@ -0,0 +1,6 @@ +import html from '@/shared/assets/svg/html.svg'; +import Image from '@/shared/ui/image'; + +export const HtmlIcon = () => { + return html icon; +}; diff --git a/src/icons/index.tsx b/src/shared/icons/index.tsx similarity index 100% rename from src/icons/index.tsx rename to src/shared/icons/index.tsx diff --git a/src/icons/instagram.tsx b/src/shared/icons/instagram.tsx similarity index 62% rename from src/icons/instagram.tsx rename to src/shared/icons/instagram.tsx index 9e8322ead..254e75d18 100644 --- a/src/icons/instagram.tsx +++ b/src/shared/icons/instagram.tsx @@ -1,5 +1,5 @@ -import instagram from '@/assets/svg/instagram.svg'; -import Image from '@/features/image'; +import instagram from '@/shared/assets/svg/instagram.svg'; +import Image from '@/shared/ui/image'; export const InstagramIcon = () => { return ( diff --git a/src/shared/icons/javascript-icon.tsx b/src/shared/icons/javascript-icon.tsx new file mode 100644 index 000000000..6cdad69d2 --- /dev/null +++ b/src/shared/icons/javascript-icon.tsx @@ -0,0 +1,6 @@ +import javascript from '@/shared/assets/icons/js-secondary.webp'; +import Image from '@/shared/ui/image'; + +export const JavascriptIcon = () => { + return JavaScript icon; +}; diff --git a/src/icons/jetbrains.tsx b/src/shared/icons/jetbrains.tsx similarity index 50% rename from src/icons/jetbrains.tsx rename to src/shared/icons/jetbrains.tsx index 88df12e4c..1cad68f1a 100644 --- a/src/icons/jetbrains.tsx +++ b/src/shared/icons/jetbrains.tsx @@ -1,5 +1,5 @@ -import jetbrains from '@/assets/svg/jetbrains.svg'; -import Image from '@/features/image'; +import jetbrains from '@/shared/assets/svg/jetbrains.svg'; +import Image from '@/shared/ui/image'; export const JetBrainsLogo = () => { return jetbrains icon; diff --git a/src/icons/linkedIn.tsx b/src/shared/icons/linkedIn.tsx similarity index 62% rename from src/icons/linkedIn.tsx rename to src/shared/icons/linkedIn.tsx index 1b7880e78..d2b77af2c 100644 --- a/src/icons/linkedIn.tsx +++ b/src/shared/icons/linkedIn.tsx @@ -1,5 +1,5 @@ -import linkedIn from '@/assets/svg/linkedIn.svg'; -import Image from '@/features/image'; +import linkedIn from '@/shared/assets/svg/linkedIn.svg'; +import Image from '@/shared/ui/image'; export const LinkedInIcon = () => { return ( diff --git a/src/icons/logo.tsx b/src/shared/icons/logo.tsx similarity index 73% rename from src/icons/logo.tsx rename to src/shared/icons/logo.tsx index 88c50ebcb..11b146a9b 100644 --- a/src/icons/logo.tsx +++ b/src/shared/icons/logo.tsx @@ -1,6 +1,6 @@ import cn from 'classnames'; -import logo from '@/assets/svg/rss-logo.svg'; -import Image from '@/features/image'; +import logo from '@/shared/assets/svg/rss-logo.svg'; +import Image from '@/shared/ui/image'; interface LogoProps { type: 'header' | 'footer'; diff --git a/src/shared/icons/nodejs-icon.tsx b/src/shared/icons/nodejs-icon.tsx new file mode 100644 index 000000000..fffb6b974 --- /dev/null +++ b/src/shared/icons/nodejs-icon.tsx @@ -0,0 +1,6 @@ +import nodeJS from '@/shared/assets/svg/nodeJS.svg'; +import Image from '@/shared/ui/image'; + +export const NodeJsIcon = () => { + return nodeJS icon; +}; diff --git a/src/icons/open-source-philosophy-icon.tsx b/src/shared/icons/open-source-philosophy-icon.tsx similarity index 51% rename from src/icons/open-source-philosophy-icon.tsx rename to src/shared/icons/open-source-philosophy-icon.tsx index 3385e0766..371423ce0 100644 --- a/src/icons/open-source-philosophy-icon.tsx +++ b/src/shared/icons/open-source-philosophy-icon.tsx @@ -1,5 +1,5 @@ -import openSourcePhilosophyIcon from '@/assets/svg/openSourcePhilosophyIcon.svg'; -import Image from '@/features/image'; +import openSourcePhilosophyIcon from '@/shared/assets/svg/openSourcePhilosophyIcon.svg'; +import Image from '@/shared/ui/image'; export const OpenSourcePhilosophyIcon = () => { return Open Source Philosophy Icon; diff --git a/src/icons/open-to-everyone-icon.tsx b/src/shared/icons/open-to-everyone-icon.tsx similarity index 50% rename from src/icons/open-to-everyone-icon.tsx rename to src/shared/icons/open-to-everyone-icon.tsx index cfcc72653..4628c95f3 100644 --- a/src/icons/open-to-everyone-icon.tsx +++ b/src/shared/icons/open-to-everyone-icon.tsx @@ -1,5 +1,5 @@ -import openToEveryoneIcon from '@/assets/svg/openToEveryoneIcon.svg'; -import Image from '@/features/image'; +import openToEveryoneIcon from '@/shared/assets/svg/openToEveryoneIcon.svg'; +import Image from '@/shared/ui/image'; export const OpenToEveryoneIcon = () => { return Open To Everyone Icon; diff --git a/src/shared/icons/react-icon.tsx b/src/shared/icons/react-icon.tsx new file mode 100644 index 000000000..fd777bd69 --- /dev/null +++ b/src/shared/icons/react-icon.tsx @@ -0,0 +1,6 @@ +import react from '@/shared/assets/svg/react.svg'; +import Image from '@/shared/ui/image'; + +export const ReactIcon = () => { + return react icon; +}; diff --git a/src/icons/rs-banner.tsx b/src/shared/icons/rs-banner.tsx similarity index 54% rename from src/icons/rs-banner.tsx rename to src/shared/icons/rs-banner.tsx index 3bce7e0de..7ca533c0f 100644 --- a/src/icons/rs-banner.tsx +++ b/src/shared/icons/rs-banner.tsx @@ -1,5 +1,5 @@ -import banner from '@/assets/svg/RsBanner.svg'; -import Image from '@/features/image'; +import banner from '@/shared/assets/svg/RsBanner.svg'; +import Image from '@/shared/ui/image'; export const RsBanner = () => { return RsBanner Icon; diff --git a/src/icons/teach-It-forward-icon.tsx b/src/shared/icons/teach-It-forward-icon.tsx similarity index 50% rename from src/icons/teach-It-forward-icon.tsx rename to src/shared/icons/teach-It-forward-icon.tsx index 4c8388a3c..bbe1538fe 100644 --- a/src/icons/teach-It-forward-icon.tsx +++ b/src/shared/icons/teach-It-forward-icon.tsx @@ -1,5 +1,5 @@ -import teachItForwardIcon from '@/assets/svg/teachItForwardIcon.svg'; -import Image from '@/features/image'; +import teachItForwardIcon from '@/shared/assets/svg/teachItForwardIcon.svg'; +import Image from '@/shared/ui/image'; export const TeachItForwardIcon = () => { return Teach It Forward Icon; diff --git a/src/icons/telegram.tsx b/src/shared/icons/telegram.tsx similarity index 62% rename from src/icons/telegram.tsx rename to src/shared/icons/telegram.tsx index 7bd64108b..077693ab0 100644 --- a/src/icons/telegram.tsx +++ b/src/shared/icons/telegram.tsx @@ -1,5 +1,5 @@ -import telegram from '@/assets/svg/telegram.svg'; -import Image from '@/features/image'; +import telegram from '@/shared/assets/svg/telegram.svg'; +import Image from '@/shared/ui/image'; export const TelegramIcon = () => { return ( diff --git a/src/icons/text-link-icon.tsx b/src/shared/icons/text-link-icon.tsx similarity index 56% rename from src/icons/text-link-icon.tsx rename to src/shared/icons/text-link-icon.tsx index 08ac13398..e288cd1b8 100644 --- a/src/icons/text-link-icon.tsx +++ b/src/shared/icons/text-link-icon.tsx @@ -1,5 +1,5 @@ -import textLinkIcon from '@/assets/svg/text-link.svg'; -import Image from '@/features/image'; +import textLinkIcon from '@/shared/assets/svg/text-link.svg'; +import Image from '@/shared/ui/image'; export const TextLinkIcon = () => { return external link icon; diff --git a/src/icons/youtube.tsx b/src/shared/icons/youtube.tsx similarity index 62% rename from src/icons/youtube.tsx rename to src/shared/icons/youtube.tsx index 8d1f21af3..e2681c575 100644 --- a/src/icons/youtube.tsx +++ b/src/shared/icons/youtube.tsx @@ -1,5 +1,5 @@ -import youtube from '@/assets/svg/youtube.svg'; -import Image from '@/features/image'; +import youtube from '@/shared/assets/svg/youtube.svg'; +import Image from '@/shared/ui/image'; export const YouTubeIcon = () => { return ( diff --git a/src/app/components/actions/actions.scss b/src/shared/ui/actions/actions.scss similarity index 100% rename from src/app/components/actions/actions.scss rename to src/shared/ui/actions/actions.scss diff --git a/src/app/components/actions/actions.test.tsx b/src/shared/ui/actions/actions.test.tsx similarity index 100% rename from src/app/components/actions/actions.test.tsx rename to src/shared/ui/actions/actions.test.tsx diff --git a/src/app/components/actions/actions.tsx b/src/shared/ui/actions/actions.tsx similarity index 87% rename from src/app/components/actions/actions.tsx rename to src/shared/ui/actions/actions.tsx index f0da38bd2..7a1e2a74c 100644 --- a/src/app/components/actions/actions.tsx +++ b/src/shared/ui/actions/actions.tsx @@ -1,5 +1,6 @@ +// todo delete TextWithLink import { TextWithLink } from '../text-with-link'; -import { Description } from '@/features/required/required.types'; +import { Description } from '@/widgets/required/required.types'; import './actions.scss'; diff --git a/src/app/components/breadcrumbs/breadcrumbs.scss b/src/shared/ui/breadcrumbs/breadcrumbs.scss similarity index 94% rename from src/app/components/breadcrumbs/breadcrumbs.scss rename to src/shared/ui/breadcrumbs/breadcrumbs.scss index e414ead47..8b2049e22 100644 --- a/src/app/components/breadcrumbs/breadcrumbs.scss +++ b/src/shared/ui/breadcrumbs/breadcrumbs.scss @@ -8,7 +8,7 @@ padding: 24px 15px 10px; } - padding: 24px 120px 10px 120px; + padding: 24px 120px 10px; ul { display: flex; diff --git a/src/app/components/breadcrumbs/breadcrumbs.test.tsx b/src/shared/ui/breadcrumbs/breadcrumbs.test.tsx similarity index 91% rename from src/app/components/breadcrumbs/breadcrumbs.test.tsx rename to src/shared/ui/breadcrumbs/breadcrumbs.test.tsx index ae7263c87..bbdc6f190 100644 --- a/src/app/components/breadcrumbs/breadcrumbs.test.tsx +++ b/src/shared/ui/breadcrumbs/breadcrumbs.test.tsx @@ -1,8 +1,8 @@ import { screen } from '@testing-library/react'; import { Breadcrumbs } from './breadcrumbs'; -import { renderWithRouter } from '@/__tests__/utils'; -import { breadcrumbNameMap } from '@/app/components/breadcrumbs/constants.ts'; +import { breadcrumbNameMap } from './constants'; import { ROUTES } from '@/app/const'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('Breadcrumbs', () => { it('renders "Home"', async () => { diff --git a/src/app/components/breadcrumbs/breadcrumbs.tsx b/src/shared/ui/breadcrumbs/breadcrumbs.tsx similarity index 100% rename from src/app/components/breadcrumbs/breadcrumbs.tsx rename to src/shared/ui/breadcrumbs/breadcrumbs.tsx diff --git a/src/app/components/breadcrumbs/breadcrumbs.types.ts b/src/shared/ui/breadcrumbs/breadcrumbs.types.ts similarity index 100% rename from src/app/components/breadcrumbs/breadcrumbs.types.ts rename to src/shared/ui/breadcrumbs/breadcrumbs.types.ts diff --git a/src/app/components/breadcrumbs/constants.ts b/src/shared/ui/breadcrumbs/constants.ts similarity index 84% rename from src/app/components/breadcrumbs/constants.ts rename to src/shared/ui/breadcrumbs/constants.ts index f3c22ce6e..3104f33cf 100644 --- a/src/app/components/breadcrumbs/constants.ts +++ b/src/shared/ui/breadcrumbs/constants.ts @@ -1,4 +1,4 @@ -import { BreadcrumbNameMap } from '@/app/components/breadcrumbs/breadcrumbs.types.ts'; +import { BreadcrumbNameMap } from './breadcrumbs.types'; export const breadcrumbNameMap: BreadcrumbNameMap = { courses: 'Courses', diff --git a/src/app/components/date-lang/date-lang.module.scss b/src/shared/ui/date-lang/date-lang.module.scss similarity index 100% rename from src/app/components/date-lang/date-lang.module.scss rename to src/shared/ui/date-lang/date-lang.module.scss diff --git a/src/app/components/date-lang/date-lang.test.tsx b/src/shared/ui/date-lang/date-lang.test.tsx similarity index 95% rename from src/app/components/date-lang/date-lang.test.tsx rename to src/shared/ui/date-lang/date-lang.test.tsx index 76e6fb1f1..f51750683 100644 --- a/src/app/components/date-lang/date-lang.test.tsx +++ b/src/shared/ui/date-lang/date-lang.test.tsx @@ -1,7 +1,7 @@ import { render, screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; import { DateLang } from './date-lang'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; describe('DateLang', () => { it('renders the start date correctly', () => { diff --git a/src/app/components/date-lang/date-lang.tsx b/src/shared/ui/date-lang/date-lang.tsx similarity index 85% rename from src/app/components/date-lang/date-lang.tsx rename to src/shared/ui/date-lang/date-lang.tsx index 09158ef85..74a955ed3 100644 --- a/src/app/components/date-lang/date-lang.tsx +++ b/src/shared/ui/date-lang/date-lang.tsx @@ -1,7 +1,7 @@ /* eslint-disable @stylistic/jsx-one-expression-per-line */ -import micIcon from '@/assets/icons/mic.svg'; -import noteIcon from '@/assets/icons/note-icon.svg'; -import Image from '@/features/image'; +import micIcon from '@/shared/assets/icons/mic.svg'; +import noteIcon from '@/shared/assets/icons/note-icon.svg'; +import Image from '@/shared/ui/image'; import styles from './date-lang.module.scss'; diff --git a/src/app/components/date-lang/index.ts b/src/shared/ui/date-lang/index.ts similarity index 100% rename from src/app/components/date-lang/index.ts rename to src/shared/ui/date-lang/index.ts diff --git a/src/features/image/constants.ts b/src/shared/ui/image/constants.ts similarity index 100% rename from src/features/image/constants.ts rename to src/shared/ui/image/constants.ts diff --git a/src/features/image/image.tsx b/src/shared/ui/image/image.tsx similarity index 80% rename from src/features/image/image.tsx rename to src/shared/ui/image/image.tsx index 9f83e4e73..acfd4096b 100644 --- a/src/features/image/image.tsx +++ b/src/shared/ui/image/image.tsx @@ -1,15 +1,10 @@ /* eslint-disable @typescript-eslint/ban-ts-comment */ import { FC, useState } from 'react'; -import { IS_DEV } from '@/features/image/constants.ts'; -import { - DecodingAttr, - FetchPriorityAttr, - ImageProps, - LoadingAttr, -} from '@/features/image/types.ts'; -import convertToWebp from '@/features/image/utils/convertToWebp.ts'; -import generateSizes from '@/features/image/utils/generateSizes.ts'; -import generateSrcSet from '@/features/image/utils/generateSrcSet.ts'; +import { IS_DEV } from './constants'; +import { DecodingAttr, FetchPriorityAttr, ImageProps, LoadingAttr } from './types'; +import convertToWebp from './utils/convertToWebp'; +import generateSizes from './utils/generateSizes'; +import generateSrcSet from './utils/generateSrcSet'; const Image: FC = ({ alt, src = '', lazy = 'true', ...props }) => { const srcWebp = convertToWebp(src); diff --git a/src/features/image/index.ts b/src/shared/ui/image/index.ts similarity index 100% rename from src/features/image/index.ts rename to src/shared/ui/image/index.ts diff --git a/src/features/image/types.ts b/src/shared/ui/image/types.ts similarity index 100% rename from src/features/image/types.ts rename to src/shared/ui/image/types.ts diff --git a/src/features/image/utils/convertToWebp.ts b/src/shared/ui/image/utils/convertToWebp.ts similarity index 100% rename from src/features/image/utils/convertToWebp.ts rename to src/shared/ui/image/utils/convertToWebp.ts diff --git a/src/features/image/utils/generateSizes.ts b/src/shared/ui/image/utils/generateSizes.ts similarity index 79% rename from src/features/image/utils/generateSizes.ts rename to src/shared/ui/image/utils/generateSizes.ts index fe390215a..682596d7d 100644 --- a/src/features/image/utils/generateSizes.ts +++ b/src/shared/ui/image/utils/generateSizes.ts @@ -1,4 +1,4 @@ -import { DESKTOP_W, MOBILE_W, TABLET_W } from '@/features/image/constants.ts'; +import { DESKTOP_W, MOBILE_W, TABLET_W } from '../constants'; /** * Generates responsive sizes for Img element, based on the env breakpoints diff --git a/src/features/image/utils/generateSrcSet.ts b/src/shared/ui/image/utils/generateSrcSet.ts similarity index 86% rename from src/features/image/utils/generateSrcSet.ts rename to src/shared/ui/image/utils/generateSrcSet.ts index ad8c48ce1..6465385a5 100644 --- a/src/features/image/utils/generateSrcSet.ts +++ b/src/shared/ui/image/utils/generateSrcSet.ts @@ -1,4 +1,4 @@ -import { DESKTOP_W, MOBILE_W, TABLET_W } from '@/features/image/constants.ts'; +import { DESKTOP_W, MOBILE_W, TABLET_W } from '../constants'; /** * Generates the srcset for the given src image, based on the env breakpoints diff --git a/src/app/components/link-custom/index.ts b/src/shared/ui/link-custom/index.ts similarity index 100% rename from src/app/components/link-custom/index.ts rename to src/shared/ui/link-custom/index.ts diff --git a/src/app/components/link-custom/link-custom.module.scss b/src/shared/ui/link-custom/link-custom.module.scss similarity index 100% rename from src/app/components/link-custom/link-custom.module.scss rename to src/shared/ui/link-custom/link-custom.module.scss diff --git a/src/app/components/link-custom/link-custom.test.tsx b/src/shared/ui/link-custom/link-custom.test.tsx similarity index 95% rename from src/app/components/link-custom/link-custom.test.tsx rename to src/shared/ui/link-custom/link-custom.test.tsx index 3a57712c2..35f00b633 100644 --- a/src/app/components/link-custom/link-custom.test.tsx +++ b/src/shared/ui/link-custom/link-custom.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; import { LinkCustom } from './link-custom'; -import { renderWithRouter } from '@/__tests__/utils'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('LinkCustom', () => { const label = 'Click me'; diff --git a/src/app/components/link-custom/link-custom.tsx b/src/shared/ui/link-custom/link-custom.tsx similarity index 100% rename from src/app/components/link-custom/link-custom.tsx rename to src/shared/ui/link-custom/link-custom.tsx diff --git a/src/app/components/logo-wrapper/index.ts b/src/shared/ui/logo-wrapper/index.ts similarity index 100% rename from src/app/components/logo-wrapper/index.ts rename to src/shared/ui/logo-wrapper/index.ts diff --git a/src/app/components/logo-wrapper/logo-wrapper.scss b/src/shared/ui/logo-wrapper/logo-wrapper.scss similarity index 100% rename from src/app/components/logo-wrapper/logo-wrapper.scss rename to src/shared/ui/logo-wrapper/logo-wrapper.scss diff --git a/src/app/components/logo-wrapper/logo-wrapper.tsx b/src/shared/ui/logo-wrapper/logo-wrapper.tsx similarity index 87% rename from src/app/components/logo-wrapper/logo-wrapper.tsx rename to src/shared/ui/logo-wrapper/logo-wrapper.tsx index e9b142069..8811755d6 100644 --- a/src/app/components/logo-wrapper/logo-wrapper.tsx +++ b/src/shared/ui/logo-wrapper/logo-wrapper.tsx @@ -1,4 +1,4 @@ -import { Logo } from '../../../icons'; +import { Logo } from '../../icons'; import './logo-wrapper.scss'; diff --git a/src/app/components/paragraph/index.ts b/src/shared/ui/paragraph/index.ts similarity index 100% rename from src/app/components/paragraph/index.ts rename to src/shared/ui/paragraph/index.ts diff --git a/src/app/components/paragraph/paragraph.scss b/src/shared/ui/paragraph/paragraph.scss similarity index 100% rename from src/app/components/paragraph/paragraph.scss rename to src/shared/ui/paragraph/paragraph.scss diff --git a/src/app/components/paragraph/paragraph.test.tsx b/src/shared/ui/paragraph/paragraph.test.tsx similarity index 100% rename from src/app/components/paragraph/paragraph.test.tsx rename to src/shared/ui/paragraph/paragraph.test.tsx diff --git a/src/app/components/paragraph/paragraph.tsx b/src/shared/ui/paragraph/paragraph.tsx similarity index 100% rename from src/app/components/paragraph/paragraph.tsx rename to src/shared/ui/paragraph/paragraph.tsx diff --git a/src/app/components/section-label/index.ts b/src/shared/ui/section-label/index.ts similarity index 100% rename from src/app/components/section-label/index.ts rename to src/shared/ui/section-label/index.ts diff --git a/src/app/components/section-label/section-label.scss b/src/shared/ui/section-label/section-label.scss similarity index 100% rename from src/app/components/section-label/section-label.scss rename to src/shared/ui/section-label/section-label.scss diff --git a/src/app/components/section-label/section-label.test.tsx b/src/shared/ui/section-label/section-label.test.tsx similarity index 100% rename from src/app/components/section-label/section-label.test.tsx rename to src/shared/ui/section-label/section-label.test.tsx diff --git a/src/app/components/section-label/section-label.tsx b/src/shared/ui/section-label/section-label.tsx similarity index 100% rename from src/app/components/section-label/section-label.tsx rename to src/shared/ui/section-label/section-label.tsx diff --git a/src/app/components/social-media/index.ts b/src/shared/ui/social-media/index.ts similarity index 100% rename from src/app/components/social-media/index.ts rename to src/shared/ui/social-media/index.ts diff --git a/src/app/components/social-media/social-media.scss b/src/shared/ui/social-media/social-media.scss similarity index 100% rename from src/app/components/social-media/social-media.scss rename to src/shared/ui/social-media/social-media.scss diff --git a/src/app/components/social-media/social-media.test.tsx b/src/shared/ui/social-media/social-media.test.tsx similarity index 100% rename from src/app/components/social-media/social-media.test.tsx rename to src/shared/ui/social-media/social-media.test.tsx diff --git a/src/app/components/social-media/social-media.tsx b/src/shared/ui/social-media/social-media.tsx similarity index 100% rename from src/app/components/social-media/social-media.tsx rename to src/shared/ui/social-media/social-media.tsx diff --git a/src/app/components/subtitle/index.ts b/src/shared/ui/subtitle/index.ts similarity index 100% rename from src/app/components/subtitle/index.ts rename to src/shared/ui/subtitle/index.ts diff --git a/src/app/components/subtitle/subtitle.scss b/src/shared/ui/subtitle/subtitle.scss similarity index 100% rename from src/app/components/subtitle/subtitle.scss rename to src/shared/ui/subtitle/subtitle.scss diff --git a/src/app/components/subtitle/subtitle.test.tsx b/src/shared/ui/subtitle/subtitle.test.tsx similarity index 100% rename from src/app/components/subtitle/subtitle.test.tsx rename to src/shared/ui/subtitle/subtitle.test.tsx diff --git a/src/app/components/subtitle/subtitle.tsx b/src/shared/ui/subtitle/subtitle.tsx similarity index 100% rename from src/app/components/subtitle/subtitle.tsx rename to src/shared/ui/subtitle/subtitle.tsx diff --git a/src/app/components/text-with-link/index.ts b/src/shared/ui/text-with-link/index.ts similarity index 100% rename from src/app/components/text-with-link/index.ts rename to src/shared/ui/text-with-link/index.ts diff --git a/src/app/components/text-with-link/text-with-link.scss b/src/shared/ui/text-with-link/text-with-link.scss similarity index 100% rename from src/app/components/text-with-link/text-with-link.scss rename to src/shared/ui/text-with-link/text-with-link.scss diff --git a/src/app/components/text-with-link/text-with-link.tsx b/src/shared/ui/text-with-link/text-with-link.tsx similarity index 87% rename from src/app/components/text-with-link/text-with-link.tsx rename to src/shared/ui/text-with-link/text-with-link.tsx index 614e63ba9..b8cb752b5 100644 --- a/src/app/components/text-with-link/text-with-link.tsx +++ b/src/shared/ui/text-with-link/text-with-link.tsx @@ -1,6 +1,6 @@ import { Fragment } from 'react/jsx-runtime'; import { Link } from 'react-router-dom'; -import { LinkList } from '@/features/required/required.types'; +import { LinkList } from '@/widgets/required/required.types'; import './text-with-link.scss'; diff --git a/src/app/components/title/index.ts b/src/shared/ui/title/index.ts similarity index 100% rename from src/app/components/title/index.ts rename to src/shared/ui/title/index.ts diff --git a/src/app/components/title/title.scss b/src/shared/ui/title/title.scss similarity index 100% rename from src/app/components/title/title.scss rename to src/shared/ui/title/title.scss diff --git a/src/app/components/title/title.test.tsx b/src/shared/ui/title/title.test.tsx similarity index 100% rename from src/app/components/title/title.test.tsx rename to src/shared/ui/title/title.test.tsx diff --git a/src/app/components/title/title.tsx b/src/shared/ui/title/title.tsx similarity index 100% rename from src/app/components/title/title.tsx rename to src/shared/ui/title/title.tsx diff --git a/src/app/components/title/types.ts b/src/shared/ui/title/types.ts similarity index 100% rename from src/app/components/title/types.ts rename to src/shared/ui/title/types.ts diff --git a/src/utils/index.ts b/src/utils/index.ts deleted file mode 100644 index 1c230436a..000000000 --- a/src/utils/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { type ActualDataListProps, getActualDataList } from './getActualDataList'; - -export { type ActualDataListProps, getActualDataList }; diff --git a/src/features/home/about/about.test.tsx b/src/widgets/about-home/about.test.tsx similarity index 91% rename from src/features/home/about/about.test.tsx rename to src/widgets/about-home/about.test.tsx index fbe4fd33f..f253f4652 100644 --- a/src/features/home/about/about.test.tsx +++ b/src/widgets/about-home/about.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; -import { About } from './about'; -import { renderWithRouter } from '@/__tests__/utils'; +import { About } from './ui/about'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('About', () => { beforeEach(() => { diff --git a/src/widgets/about-home/index.ts b/src/widgets/about-home/index.ts new file mode 100644 index 000000000..34ee01e22 --- /dev/null +++ b/src/widgets/about-home/index.ts @@ -0,0 +1 @@ +export { About } from './ui/about'; diff --git a/src/features/home/about/about.scss b/src/widgets/about-home/ui/about.scss similarity index 100% rename from src/features/home/about/about.scss rename to src/widgets/about-home/ui/about.scss diff --git a/src/features/home/about/about.tsx b/src/widgets/about-home/ui/about.tsx similarity index 83% rename from src/features/home/about/about.tsx rename to src/widgets/about-home/ui/about.tsx index eae3b24dc..37bca8a25 100644 --- a/src/features/home/about/about.tsx +++ b/src/widgets/about-home/ui/about.tsx @@ -1,7 +1,8 @@ -import { Paragraph, Subtitle, Title } from '@/app/components'; - -import image from '@/assets/about.webp'; -import Image from '@/features/image'; +import image from '@/shared/assets/about.webp'; +import Image from '@/shared/ui/image'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title } from '@/shared/ui/title'; import './about.scss'; diff --git a/src/widgets/about-school/index.ts b/src/widgets/about-school/index.ts new file mode 100644 index 000000000..34ee01e22 --- /dev/null +++ b/src/widgets/about-school/index.ts @@ -0,0 +1 @@ +export { About } from './ui/about'; diff --git a/src/features/school/about/about.scss b/src/widgets/about-school/ui/about.scss similarity index 100% rename from src/features/school/about/about.scss rename to src/widgets/about-school/ui/about.scss diff --git a/src/features/school/about/about.tsx b/src/widgets/about-school/ui/about.tsx similarity index 85% rename from src/features/school/about/about.tsx rename to src/widgets/about-school/ui/about.tsx index 104d19fe0..bab123508 100644 --- a/src/features/school/about/about.tsx +++ b/src/widgets/about-school/ui/about.tsx @@ -1,4 +1,6 @@ -import { Paragraph, Subtitle, Title } from '@/app/components'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title } from '@/shared/ui/title'; import './about.scss'; diff --git a/src/features/about-video/about-video.test.tsx b/src/widgets/about-video/about-video.test.tsx similarity index 90% rename from src/features/about-video/about-video.test.tsx rename to src/widgets/about-video/about-video.test.tsx index dcb208b21..6a4bfd989 100644 --- a/src/features/about-video/about-video.test.tsx +++ b/src/widgets/about-video/about-video.test.tsx @@ -1,5 +1,5 @@ import { render, screen } from '@testing-library/react'; -import { AboutVideo } from './about-video'; +import { AboutVideo } from './ui/about-video'; describe('AboutVideo', () => { it('renders the title correctly', () => { diff --git a/src/widgets/about-video/index.ts b/src/widgets/about-video/index.ts new file mode 100644 index 000000000..b3991d44f --- /dev/null +++ b/src/widgets/about-video/index.ts @@ -0,0 +1 @@ +export { AboutVideo } from './ui/about-video'; diff --git a/src/features/about-video/about-video.scss b/src/widgets/about-video/ui/about-video.scss similarity index 100% rename from src/features/about-video/about-video.scss rename to src/widgets/about-video/ui/about-video.scss diff --git a/src/features/about-video/about-video.tsx b/src/widgets/about-video/ui/about-video.tsx similarity index 95% rename from src/features/about-video/about-video.tsx rename to src/widgets/about-video/ui/about-video.tsx index e4a3892af..e11ff2199 100644 --- a/src/features/about-video/about-video.tsx +++ b/src/widgets/about-video/ui/about-video.tsx @@ -1,4 +1,4 @@ -import { Title } from '@/app/components'; +import { Title } from '@/shared/ui/title'; import './about-video.scss'; diff --git a/src/features/about/about.data.ts b/src/widgets/about/about.data.ts similarity index 94% rename from src/features/about/about.data.ts rename to src/widgets/about/about.data.ts index 26bb7d005..3ad1db779 100644 --- a/src/features/about/about.data.ts +++ b/src/widgets/about/about.data.ts @@ -1,11 +1,11 @@ -import awardIcon from '@/assets/icons/award-icon.webp'; -import giftIcon from '@/assets/icons/gift.webp'; -import noteIcon from '@/assets/icons/note-icon.webp'; -import paperIcon from '@/assets/icons/paper-icon.webp'; -import personIcon from '@/assets/icons/person-icon.webp'; -import planetIcon from '@/assets/icons/planet.webp'; -import type { CourseNames } from '@/data/communication.data'; -import { DISCORD_LINKS } from '@/data/communication.data'; +import awardIcon from '@/shared/assets/icons/award-icon.webp'; +import giftIcon from '@/shared/assets/icons/gift.webp'; +import noteIcon from '@/shared/assets/icons/note-icon.webp'; +import paperIcon from '@/shared/assets/icons/paper-icon.webp'; +import personIcon from '@/shared/assets/icons/person-icon.webp'; +import planetIcon from '@/shared/assets/icons/planet.webp'; +import type { CourseNames } from '@/shared/data/communication.data'; +import { DISCORD_LINKS } from '@/shared/data/communication.data'; type AboutInfo = { id: number; diff --git a/src/features/about/about.test.tsx b/src/widgets/about/about.test.tsx similarity index 86% rename from src/features/about/about.test.tsx rename to src/widgets/about/about.test.tsx index 5b27443e6..a716c5b49 100644 --- a/src/features/about/about.test.tsx +++ b/src/widgets/about/about.test.tsx @@ -1,11 +1,11 @@ import { screen } from '@testing-library/react'; import { type Mock, beforeEach } from 'vitest'; -import { About } from './about'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; -import { renderWithRouter } from '@/__tests__/utils'; -import { useCourseByTitle } from '@/app/hooks'; +import { About } from './ui/about'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; +import { renderWithRouter } from '@/shared/__tests__/utils'; +import { useCourseByTitle } from '@/shared/hooks/use-course-by-title'; -vi.mock('@/app/hooks'); +vi.mock('@/shared/hooks/use-course-by-title'); describe('About', () => { describe('with "react" props', () => { diff --git a/src/widgets/about/index.ts b/src/widgets/about/index.ts new file mode 100644 index 000000000..34ee01e22 --- /dev/null +++ b/src/widgets/about/index.ts @@ -0,0 +1 @@ +export { About } from './ui/about'; diff --git a/src/features/about/about.scss b/src/widgets/about/ui/about.scss similarity index 100% rename from src/features/about/about.scss rename to src/widgets/about/ui/about.scss diff --git a/src/features/about/about.tsx b/src/widgets/about/ui/about.tsx similarity index 85% rename from src/features/about/about.tsx rename to src/widgets/about/ui/about.tsx index 5812f69eb..6c8cde3e0 100644 --- a/src/features/about/about.tsx +++ b/src/widgets/about/ui/about.tsx @@ -1,10 +1,13 @@ /* eslint-disable @stylistic/jsx-one-expression-per-line */ -import { contentMap } from './about.data'; -import { InfoGrid } from './components'; -import { LinkCustom, Paragraph, Title } from '@/app/components'; -import { useCourseByTitle } from '@/app/hooks'; +import { InfoGrid } from './info-grid/info-grid'; +import { contentMap } from '../about.data'; + import { type Course } from '@/app/types'; -import { ArrowIcon } from '@/icons'; +import { useCourseByTitle } from '@/shared/hooks/use-course-by-title'; +import { ArrowIcon } from '@/shared/icons'; +import { LinkCustom } from '@/shared/ui/link-custom'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { Title } from '@/shared/ui/title'; import './about.scss'; diff --git a/src/features/about/components/info-grid/info-grid.scss b/src/widgets/about/ui/info-grid/info-grid.scss similarity index 100% rename from src/features/about/components/info-grid/info-grid.scss rename to src/widgets/about/ui/info-grid/info-grid.scss diff --git a/src/features/about/components/info-grid/info-grid.test.tsx b/src/widgets/about/ui/info-grid/info-grid.test.tsx similarity index 94% rename from src/features/about/components/info-grid/info-grid.test.tsx rename to src/widgets/about/ui/info-grid/info-grid.test.tsx index 6521df5a2..a4da66fcb 100644 --- a/src/features/about/components/info-grid/info-grid.test.tsx +++ b/src/widgets/about/ui/info-grid/info-grid.test.tsx @@ -1,7 +1,7 @@ import { render, screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; import { InfoGrid } from './info-grid'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; describe('InfoGrid component', () => { const dummyData = [ diff --git a/src/features/about/components/info-grid/info-grid.tsx b/src/widgets/about/ui/info-grid/info-grid.tsx similarity index 94% rename from src/features/about/components/info-grid/info-grid.tsx rename to src/widgets/about/ui/info-grid/info-grid.tsx index ccac2129c..8eb113f92 100644 --- a/src/features/about/components/info-grid/info-grid.tsx +++ b/src/widgets/about/ui/info-grid/info-grid.tsx @@ -1,4 +1,4 @@ -import Image from '@/features/image'; +import Image from '@/shared/ui/image'; import './info-grid.scss'; diff --git a/src/features/school/alumni/alumni.test.tsx b/src/widgets/alumni/alumni.test.tsx similarity index 81% rename from src/features/school/alumni/alumni.test.tsx rename to src/widgets/alumni/alumni.test.tsx index c2257bcdf..49b312ddc 100644 --- a/src/features/school/alumni/alumni.test.tsx +++ b/src/widgets/alumni/alumni.test.tsx @@ -1,16 +1,15 @@ import { render, screen } from '@testing-library/react'; import { Mock, describe, expect, it, vi } from 'vitest'; -import { Alumni } from './alumni'; -import { useWindowSize } from '@/app/hooks'; +import { Alumni } from './ui/alumni'; +import { useWindowSize } from '@/shared/hooks/use-window-size'; -vi.mock('@/app/hooks', () => { - return { - useWindowSize: vi.fn().mockReturnValue({ - width: 2000, - height: 2000, - }), - }; -}); +vi.mock('@/shared/hooks/use-window-size', () => ({ + useWindowSize: vi.fn().mockReturnValue({ + width: 2000, + height: 2000, + }), +}), +); describe('Alumni', () => { it('renders the title correctly', () => { @@ -28,6 +27,7 @@ describe('Alumni', () => { }); it('renders six images for small screens', () => { + // vi.mockImplementation(() => ({ width: 800, height: 600 })); (useWindowSize as Mock).mockReturnValue({ width: 800, height: 600, diff --git a/src/widgets/alumni/constants.ts b/src/widgets/alumni/constants.ts new file mode 100644 index 000000000..7052ceac6 --- /dev/null +++ b/src/widgets/alumni/constants.ts @@ -0,0 +1,94 @@ +import { AlumniProps } from './ui/alumni'; +import aesoft from '@/shared/assets/alumni/aesoft.svg'; +import andersen from '@/shared/assets/alumni/andersen.svg'; +import coherent from '@/shared/assets/alumni/coherent.svg'; +import dataart from '@/shared/assets/alumni/dataart.svg'; +import dott from '@/shared/assets/alumni/dott.svg'; +import elinext from '@/shared/assets/alumni/elinext.svg'; +import epam from '@/shared/assets/alumni/epam.svg'; +import godel from '@/shared/assets/alumni/godel.svg'; +import itechart from '@/shared/assets/alumni/itechart.svg'; +import miro from '@/shared/assets/alumni/miro.svg'; +import nanosoft from '@/shared/assets/alumni/nanosoft.svg'; +import oxagile from '@/shared/assets/alumni/oxagile.svg'; +import pandadoc from '@/shared/assets/alumni/pandadoc.svg'; +import qulix from '@/shared/assets/alumni/qulix.svg'; +import satellite from '@/shared/assets/alumni/satellite.svg'; +import sberbank from '@/shared/assets/alumni/sberbank.svg'; +import toptal from '@/shared/assets/alumni/toptal.svg'; +import visualfabriq from '@/shared/assets/alumni/visualfabriq.svg'; + +export const alumni: AlumniProps[] = [ + { + id: 'epam', + image: epam, + }, + { + id: 'toptal', + image: toptal, + }, + { + id: 'oxagile', + image: oxagile, + }, + { + id: 'dott', + image: dott, + }, + { + id: 'andersen', + image: andersen, + }, + { + id: 'godel', + image: godel, + }, + { + id: 'satellite', + image: satellite, + }, + { + id: 'itechart', + image: itechart, + }, + { + id: 'pandadoc', + image: pandadoc, + }, + { + id: 'dataart', + image: dataart, + }, + { + id: 'coherent', + image: coherent, + }, + { + id: 'elinext', + image: elinext, + }, + { + id: 'miro', + image: miro, + }, + { + id: 'qulix', + image: qulix, + }, + { + id: 'visualfabriq', + image: visualfabriq, + }, + { + id: 'sberbank', + image: sberbank, + }, + { + id: 'nanosoft', + image: nanosoft, + }, + { + id: 'aesoft', + image: aesoft, + }, +]; diff --git a/src/widgets/alumni/index.ts b/src/widgets/alumni/index.ts new file mode 100644 index 000000000..5a6cd867a --- /dev/null +++ b/src/widgets/alumni/index.ts @@ -0,0 +1 @@ +export { Alumni } from './ui/alumni'; diff --git a/src/features/school/alumni/alumni.scss b/src/widgets/alumni/ui/alumni.scss similarity index 100% rename from src/features/school/alumni/alumni.scss rename to src/widgets/alumni/ui/alumni.scss diff --git a/src/features/school/alumni/alumni.tsx b/src/widgets/alumni/ui/alumni.tsx similarity index 80% rename from src/features/school/alumni/alumni.tsx rename to src/widgets/alumni/ui/alumni.tsx index 6bd9d8e49..6e6a8e044 100644 --- a/src/features/school/alumni/alumni.tsx +++ b/src/widgets/alumni/ui/alumni.tsx @@ -1,7 +1,9 @@ -import { alumni } from './constants'; -import { Paragraph, Title } from '@/app/components'; -import { useWindowSize } from '@/app/hooks'; -import Image from '@/features/image'; +import { alumni } from '../constants'; + +import { useWindowSize } from '@/shared/hooks/use-window-size'; +import Image from '@/shared/ui/image'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { Title } from '@/shared/ui/title'; import './alumni.scss'; diff --git a/src/widgets/angular-topics/index.ts b/src/widgets/angular-topics/index.ts new file mode 100644 index 000000000..b995276a1 --- /dev/null +++ b/src/widgets/angular-topics/index.ts @@ -0,0 +1 @@ +export { AngularTopics } from './ui/angular-topics'; diff --git a/src/features/angular-topics/angular-topics.module.scss b/src/widgets/angular-topics/ui/angular-topics.module.scss similarity index 100% rename from src/features/angular-topics/angular-topics.module.scss rename to src/widgets/angular-topics/ui/angular-topics.module.scss diff --git a/src/features/angular-topics/angular-topics.tsx b/src/widgets/angular-topics/ui/angular-topics.tsx similarity index 87% rename from src/features/angular-topics/angular-topics.tsx rename to src/widgets/angular-topics/ui/angular-topics.tsx index 13eee17cb..a8fbdf2a1 100644 --- a/src/features/angular-topics/angular-topics.tsx +++ b/src/widgets/angular-topics/ui/angular-topics.tsx @@ -1,5 +1,7 @@ import classNames from 'classnames/bind'; -import { Actions, Title } from '@/app/components'; + +import { Actions } from '@/shared/ui/actions/actions'; +import { Title } from '@/shared/ui/title'; import styles from './angular-topics.module.scss'; diff --git a/src/widgets/breadcrumbs/breadcrumbs.scss b/src/widgets/breadcrumbs/breadcrumbs.scss new file mode 100644 index 000000000..8b2049e22 --- /dev/null +++ b/src/widgets/breadcrumbs/breadcrumbs.scss @@ -0,0 +1,39 @@ +.breadcrumbs { + &.content { + @include media-laptop { + padding: 24px 40px 10px; + } + + @include media-tablet { + padding: 24px 15px 10px; + } + + padding: 24px 120px 10px; + + ul { + display: flex; + align-items: flex-start; + font-size: 14px; + list-style: none; + } + + & .separator { + padding: 0 8px; + } + + & .link { + @extend %transition-all; + + color: $color-gray-500; + + &.disabled { + color: $color-gray-600; + text-decoration: underline; + } + + &:hover { + color: $color-gray-600; + } + } + } +} diff --git a/src/widgets/breadcrumbs/breadcrumbs.test.tsx b/src/widgets/breadcrumbs/breadcrumbs.test.tsx new file mode 100644 index 000000000..544b2ae41 --- /dev/null +++ b/src/widgets/breadcrumbs/breadcrumbs.test.tsx @@ -0,0 +1,38 @@ +import { screen } from '@testing-library/react'; +import { Breadcrumbs, breadcrumbNameMap } from './'; +import { ROUTES } from '@/app/const'; +import { renderWithRouter } from '@/shared/__tests__/utils'; + +describe('Breadcrumbs', () => { + it('renders "Home"', async () => { + renderWithRouter(, { route: ROUTES.HOME }); + const homeLink = await screen.findByText(/Home/i); + + expect(homeLink).toBeInTheDocument(); + }); + + Object.entries(breadcrumbNameMap).forEach(([route, breadcrumb]) => { + it(`renders mapped Breadcrumb for /${route}`, () => { + renderWithRouter(, { route: `/${route}` }); + const breadcrumbLink = screen.getByText(breadcrumb); + + expect(breadcrumbLink).toBeInTheDocument(); + }); + }); + + test('renders un-mapped Breadcrumbs', () => { + renderWithRouter(, { route: '/unmapped-route' }); + const unmappedBreadcrumb = screen.getByText(/unmapped-route/i); + + expect(unmappedBreadcrumb).toBeInTheDocument(); + }); + + test('renders Breadcrumbs for nested route', () => { + renderWithRouter(, { route: `/${ROUTES.COURSES}/${ROUTES.NODE_JS}` }); + const parentBreadcrumb = screen.getByText(breadcrumbNameMap[ROUTES.COURSES]); + const childBreadcrumb = screen.getByText(breadcrumbNameMap[ROUTES.NODE_JS]); + + expect(parentBreadcrumb).toBeInTheDocument(); + expect(childBreadcrumb).toBeInTheDocument(); + }); +}); diff --git a/src/widgets/breadcrumbs/breadcrumbs.tsx b/src/widgets/breadcrumbs/breadcrumbs.tsx new file mode 100644 index 000000000..6120c5ad0 --- /dev/null +++ b/src/widgets/breadcrumbs/breadcrumbs.tsx @@ -0,0 +1,50 @@ +import { Link, useLocation } from 'react-router-dom'; +import { breadcrumbNameMap } from './constants'; +import { buildUrl } from '@/app/services/platform'; +import { RouteValues } from '@/app/types/route.types.ts'; + +import './breadcrumbs.scss'; + +export const Breadcrumbs = () => { + const location = useLocation(); + + const crumbs = location.pathname.split('/').filter(Boolean) as RouteValues[]; + + const transformedCrumbs = crumbs.map((crumb) => breadcrumbNameMap[crumb] || crumb); + + return ( + + ); +}; diff --git a/src/widgets/breadcrumbs/breadcrumbs.types.ts b/src/widgets/breadcrumbs/breadcrumbs.types.ts new file mode 100644 index 000000000..def8b6a0a --- /dev/null +++ b/src/widgets/breadcrumbs/breadcrumbs.types.ts @@ -0,0 +1,3 @@ +import { RouteValues } from '@/app/types/route.types.ts'; + +export type BreadcrumbNameMap = Record; diff --git a/src/widgets/breadcrumbs/constants.ts b/src/widgets/breadcrumbs/constants.ts new file mode 100644 index 000000000..3104f33cf --- /dev/null +++ b/src/widgets/breadcrumbs/constants.ts @@ -0,0 +1,14 @@ +import { BreadcrumbNameMap } from './breadcrumbs.types'; + +export const breadcrumbNameMap: BreadcrumbNameMap = { + courses: 'Courses', + nodejs: 'Node.js Course', + javascript: 'JavaScript Mentoring Program', + 'javascript-ru': 'JavaScript Mentoring Program RU', + 'javascript-preschool-ru': 'JavaScript Pre-school RU', + angular: 'Angular Course', + 'aws-cloud-developer': 'AWS Cloud Developer Course', + 'aws-fundamentals': 'AWS Fundamentals Course', + reactjs: 'React course', + community: 'Community', +} as const; diff --git a/src/widgets/breadcrumbs/index.ts b/src/widgets/breadcrumbs/index.ts new file mode 100644 index 000000000..f4691ed45 --- /dev/null +++ b/src/widgets/breadcrumbs/index.ts @@ -0,0 +1,2 @@ +export { Breadcrumbs } from './breadcrumbs'; +export { breadcrumbNameMap } from './constants'; diff --git a/src/widgets/certification/index.tsx b/src/widgets/certification/index.tsx new file mode 100644 index 000000000..3536ff69c --- /dev/null +++ b/src/widgets/certification/index.tsx @@ -0,0 +1 @@ +export { Certification } from './ui/certification'; diff --git a/src/features/certification/certification.module.scss b/src/widgets/certification/ui/certification.module.scss similarity index 100% rename from src/features/certification/certification.module.scss rename to src/widgets/certification/ui/certification.module.scss diff --git a/src/features/certification/certification.tsx b/src/widgets/certification/ui/certification.tsx similarity index 94% rename from src/features/certification/certification.tsx rename to src/widgets/certification/ui/certification.tsx index 059ec4916..c077538bc 100644 --- a/src/features/certification/certification.tsx +++ b/src/widgets/certification/ui/certification.tsx @@ -1,6 +1,7 @@ import classNames from 'classnames/bind'; -import { Paragraph, Title } from '@/app/components'; -import { CourseNames } from '@/data/communication.data'; +import { CourseNames } from '@/shared/data/communication.data'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { Title } from '@/shared/ui/title'; import styles from './certification.module.scss'; diff --git a/src/features/communication/communication.test.tsx b/src/widgets/communication/communication.test.tsx similarity index 92% rename from src/features/communication/communication.test.tsx rename to src/widgets/communication/communication.test.tsx index 88bd0787f..611d7c91a 100644 --- a/src/features/communication/communication.test.tsx +++ b/src/widgets/communication/communication.test.tsx @@ -1,6 +1,6 @@ import { screen } from '@testing-library/react'; -import { Communication } from './communication'; -import { renderWithRouter } from '@/__tests__/utils'; +import { Communication } from './ui/communication'; +import { renderWithRouter } from '@/shared/__tests__/utils'; const jsCourseName = 'js / front-end en'; const nodeCourseName = 'node.js'; diff --git a/src/widgets/communication/index.tsx b/src/widgets/communication/index.tsx new file mode 100644 index 000000000..4d549f5a9 --- /dev/null +++ b/src/widgets/communication/index.tsx @@ -0,0 +1 @@ +export { Communication } from './ui/communication'; diff --git a/src/features/communication/communication.scss b/src/widgets/communication/ui/communication.scss similarity index 100% rename from src/features/communication/communication.scss rename to src/widgets/communication/ui/communication.scss diff --git a/src/features/communication/communication.tsx b/src/widgets/communication/ui/communication.tsx similarity index 91% rename from src/features/communication/communication.tsx rename to src/widgets/communication/ui/communication.tsx index 4d36e3eed..09461a969 100644 --- a/src/features/communication/communication.tsx +++ b/src/widgets/communication/ui/communication.tsx @@ -1,13 +1,16 @@ /* eslint-disable @stylistic/jsx-one-expression-per-line */ -import { LinkCustom, Paragraph, Subtitle, Title } from '@/app/components'; import { CourseNames, DISCORD_LINKS, RS_DOCS_COMMUNICATION_LINK, RS_DOCS_TELEGRAM_CHATS_LINK, -} from '@/data/communication.data'; -import { TextLinkIcon } from '@/icons'; -import { DiscordLogo } from '@/icons/discord-logo'; +} from '@/shared/data/communication.data'; +import { TextLinkIcon } from '@/shared/icons'; +import { DiscordLogo } from '@/shared/icons/discord-logo'; +import { LinkCustom } from '@/shared/ui/link-custom'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title } from '@/shared/ui/title'; import './communication.scss'; diff --git a/src/features/home/community/community.test.tsx b/src/widgets/community/community.test.tsx similarity index 89% rename from src/features/home/community/community.test.tsx rename to src/widgets/community/community.test.tsx index 96d5f818b..0ed26eb42 100644 --- a/src/features/home/community/community.test.tsx +++ b/src/widgets/community/community.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; -import { Community } from './community'; -import { renderWithRouter } from '@/__tests__/utils'; +import { Community } from './ui/community'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('Community', () => { beforeEach(() => { diff --git a/src/widgets/community/index.ts b/src/widgets/community/index.ts new file mode 100644 index 000000000..84bf19dc7 --- /dev/null +++ b/src/widgets/community/index.ts @@ -0,0 +1 @@ +export { Community } from './ui/community'; diff --git a/src/features/home/community/community.scss b/src/widgets/community/ui/community.scss similarity index 100% rename from src/features/home/community/community.scss rename to src/widgets/community/ui/community.scss diff --git a/src/features/home/community/community.tsx b/src/widgets/community/ui/community.tsx similarity index 87% rename from src/features/home/community/community.tsx rename to src/widgets/community/ui/community.tsx index 7cd3f8242..05e0f3212 100644 --- a/src/features/home/community/community.tsx +++ b/src/widgets/community/ui/community.tsx @@ -1,8 +1,9 @@ -import { SocialMedia, type SocialMediaProps, Subtitle, Title, TitleType } from '@/app/components'; - -import image from '@/assets/welcome.webp'; -import Image from '@/features/image'; -import { FacebookIcon, InstagramIcon, LinkedInIcon, TelegramIcon, YouTubeIcon } from '@/icons'; +import image from '@/shared/assets/welcome.webp'; +import { FacebookIcon, InstagramIcon, LinkedInIcon, TelegramIcon, YouTubeIcon } from '@/shared/icons'; +import Image from '@/shared/ui/image'; +import { SocialMedia, SocialMediaProps } from '@/shared/ui/social-media'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title, TitleType } from '@/shared/ui/title'; import './community.scss'; diff --git a/src/features/home/contribute/contribute.test.tsx b/src/widgets/contribute/contribute.test.tsx similarity index 92% rename from src/features/home/contribute/contribute.test.tsx rename to src/widgets/contribute/contribute.test.tsx index 4b64b5426..e25cc6448 100644 --- a/src/features/home/contribute/contribute.test.tsx +++ b/src/widgets/contribute/contribute.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; -import { Contribute } from './contribute'; -import { renderWithRouter } from '@/__tests__/utils'; +import { Contribute } from './ui/contribute'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('Contribute', () => { beforeEach(() => { diff --git a/src/widgets/contribute/index.ts b/src/widgets/contribute/index.ts new file mode 100644 index 000000000..3f672c986 --- /dev/null +++ b/src/widgets/contribute/index.ts @@ -0,0 +1 @@ +export { Contribute } from './ui/contribute'; diff --git a/src/features/home/contribute/contribute.scss b/src/widgets/contribute/ui/contribute.scss similarity index 100% rename from src/features/home/contribute/contribute.scss rename to src/widgets/contribute/ui/contribute.scss diff --git a/src/features/home/contribute/contribute.tsx b/src/widgets/contribute/ui/contribute.tsx similarity index 86% rename from src/features/home/contribute/contribute.tsx rename to src/widgets/contribute/ui/contribute.tsx index dc250cb42..4ae343064 100644 --- a/src/features/home/contribute/contribute.tsx +++ b/src/widgets/contribute/ui/contribute.tsx @@ -1,7 +1,9 @@ -import { OptionItem, type OptionItemProps, Paragraph, Subtitle, Title } from '@/app/components'; - -import image from '@/assets/contribute.webp'; -import Image from '@/features/image'; +import image from '@/shared/assets/contribute.webp'; +import Image from '@/shared/ui/image'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title } from '@/shared/ui/title'; +import { OptionItem, OptionItemProps } from '@/widgets/option-item'; import './contribute.scss'; diff --git a/src/features/course-main/course-main.module.scss b/src/widgets/course-main/course-main.module.scss similarity index 100% rename from src/features/course-main/course-main.module.scss rename to src/widgets/course-main/course-main.module.scss diff --git a/src/features/course-main/course-main.test.tsx b/src/widgets/course-main/course-main.test.tsx similarity index 93% rename from src/features/course-main/course-main.test.tsx rename to src/widgets/course-main/course-main.test.tsx index 7b880e58c..602dbacae 100644 --- a/src/features/course-main/course-main.test.tsx +++ b/src/widgets/course-main/course-main.test.tsx @@ -1,11 +1,11 @@ import { screen } from '@testing-library/react'; import { CourseMain } from './course-main'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; -import { renderWithRouter } from '@/__tests__/utils'; import { dayJS } from '@/app/services/dayjs'; import { CourseStatus } from '@/app/types'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; +import { renderWithRouter } from '@/shared/__tests__/utils'; -vi.mock('@/app/hooks'); +vi.mock('@/app/hooks/use-course-by-title'); vi.mock('react-router-dom', async (importOriginal) => { const actual = await importOriginal(); diff --git a/src/features/course-main/course-main.tsx b/src/widgets/course-main/course-main.tsx similarity index 75% rename from src/features/course-main/course-main.tsx rename to src/widgets/course-main/course-main.tsx index 07868c802..a5ec2f32f 100644 --- a/src/features/course-main/course-main.tsx +++ b/src/widgets/course-main/course-main.tsx @@ -1,11 +1,15 @@ import { useLoaderData } from 'react-router-dom'; -import { getCourseStatus } from './utils'; -import { DateLang, LinkCustom, SectionLabel, Subtitle, Title } from '@/app/components'; -import { useTitle } from '@/app/hooks'; -import { selectCourse } from '@/app/hooks/use-course-by-title/utils/select-course.ts'; +import { getCourseStatus } from './utils/get-course-status'; import { Course } from '@/app/types'; -import Image from '@/features/image'; -import { ArrowIcon } from '@/icons'; +import { selectCourse } from '@/shared/hooks/use-course-by-title/utils/select-course'; +import { useTitle } from '@/shared/hooks/use-title'; +import { ArrowIcon } from '@/shared/icons'; +import { DateLang } from '@/shared/ui/date-lang'; +import Image from '@/shared/ui/image'; +import { LinkCustom } from '@/shared/ui/link-custom'; +import { SectionLabel } from '@/shared/ui/section-label'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title } from '@/shared/ui/title'; import styles from './course-main.module.scss'; diff --git a/src/features/course-main/courseLoader.ts b/src/widgets/course-main/courseLoader.ts similarity index 100% rename from src/features/course-main/courseLoader.ts rename to src/widgets/course-main/courseLoader.ts diff --git a/src/features/course-main/index.ts b/src/widgets/course-main/index.ts similarity index 100% rename from src/features/course-main/index.ts rename to src/widgets/course-main/index.ts diff --git a/src/features/course-main/utils/get-course-status.ts b/src/widgets/course-main/utils/get-course-status.ts similarity index 94% rename from src/features/course-main/utils/get-course-status.ts rename to src/widgets/course-main/utils/get-course-status.ts index 467414c9e..cf87df676 100644 --- a/src/features/course-main/utils/get-course-status.ts +++ b/src/widgets/course-main/utils/get-course-status.ts @@ -1,5 +1,5 @@ import dayjs from 'dayjs'; -import { hasDayInDate } from '.'; +import { hasDayInDate } from './has-day'; import { CourseStatus } from '@/app/types'; export function getCourseStatus(courseStartDate: string): CourseStatus { diff --git a/src/features/course-main/utils/has-day.ts b/src/widgets/course-main/utils/has-day.ts similarity index 100% rename from src/features/course-main/utils/has-day.ts rename to src/widgets/course-main/utils/has-day.ts diff --git a/src/features/school/courses/courses.test.tsx b/src/widgets/courses-school/courses.test.tsx similarity index 90% rename from src/features/school/courses/courses.test.tsx rename to src/widgets/courses-school/courses.test.tsx index 41e134b65..8399f707e 100644 --- a/src/features/school/courses/courses.test.tsx +++ b/src/widgets/courses-school/courses.test.tsx @@ -1,10 +1,11 @@ import { screen } from '@testing-library/react'; import { Mock, beforeEach, describe, expect, it, vi } from 'vitest'; -import { Courses } from './courses'; -import { renderWithRouter } from '@/__tests__/utils'; +import { Courses } from './ui/courses'; import { ROUTES } from '@/app/const'; -import { useWindowSize } from '@/app/hooks'; + import { buildUrl } from '@/app/services/platform'; +import { renderWithRouter } from '@/shared/__tests__/utils'; +import { useWindowSize } from '@/shared/hooks/use-window-size'; const mockedData = [ { @@ -44,13 +45,19 @@ const mockedData = [ }, ]; -vi.mock('@/app/hooks', () => { +vi.mock('@/app/hooks/use-data-by-name', () => { return { useDataByName: vi.fn().mockImplementation(() => ({ data: mockedData, error: null, loading: false, })), + + }; +}); + +vi.mock('@/shared/hooks/use-window-size', () => { + return { useWindowSize: vi.fn().mockReturnValue({ width: 1440, height: 900, diff --git a/src/widgets/courses-school/index.ts b/src/widgets/courses-school/index.ts new file mode 100644 index 000000000..8baffcdc2 --- /dev/null +++ b/src/widgets/courses-school/index.ts @@ -0,0 +1 @@ +export { Courses } from './ui/courses'; diff --git a/src/features/school/courses/lib/getCourseIcon.tsx b/src/widgets/courses-school/lib/getCourseIcon.tsx similarity index 100% rename from src/features/school/courses/lib/getCourseIcon.tsx rename to src/widgets/courses-school/lib/getCourseIcon.tsx diff --git a/src/features/school/courses/lib/icons.data.tsx b/src/widgets/courses-school/lib/icons.data.tsx similarity index 82% rename from src/features/school/courses/lib/icons.data.tsx rename to src/widgets/courses-school/lib/icons.data.tsx index 81e3f63de..43925b38a 100644 --- a/src/features/school/courses/lib/icons.data.tsx +++ b/src/widgets/courses-school/lib/icons.data.tsx @@ -1,5 +1,5 @@ -import { COURSE_TITLES } from '@/data/courseTitles.data'; -import { AngularIcon, AwsLogo, HtmlIcon, JavascriptIcon, NodeJsIcon, ReactIcon } from '@/icons'; +import { COURSE_TITLES } from '@/shared/data/courseTitles.data'; +import { AngularIcon, AwsLogo, HtmlIcon, JavascriptIcon, NodeJsIcon, ReactIcon } from '@/shared/icons'; export const icons = { [COURSE_TITLES.JS_PRESCHOOL_RU]: , diff --git a/src/features/school/courses/lib/selectCourses.ts b/src/widgets/courses-school/lib/selectCourses.ts similarity index 100% rename from src/features/school/courses/lib/selectCourses.ts rename to src/widgets/courses-school/lib/selectCourses.ts diff --git a/src/features/school/courses/ui/CourseCard.tsx b/src/widgets/courses-school/ui/CourseCard.tsx similarity index 90% rename from src/features/school/courses/ui/CourseCard.tsx rename to src/widgets/courses-school/ui/CourseCard.tsx index 65f1add27..aca550bba 100644 --- a/src/features/school/courses/ui/CourseCard.tsx +++ b/src/widgets/courses-school/ui/CourseCard.tsx @@ -1,6 +1,6 @@ -import { LinkCustom } from '@/app/components'; import { Course } from '@/app/types'; -import { ArrowIcon } from '@/icons'; +import { ArrowIcon } from '@/shared/icons'; +import { LinkCustom } from '@/shared/ui/link-custom'; type addFields = { buttonText: string; diff --git a/src/features/school/courses/courses.scss b/src/widgets/courses-school/ui/courses.scss similarity index 100% rename from src/features/school/courses/courses.scss rename to src/widgets/courses-school/ui/courses.scss diff --git a/src/features/school/courses/courses.tsx b/src/widgets/courses-school/ui/courses.tsx similarity index 79% rename from src/features/school/courses/courses.tsx rename to src/widgets/courses-school/ui/courses.tsx index 2cabe15b8..2eb9da4f8 100644 --- a/src/features/school/courses/courses.tsx +++ b/src/widgets/courses-school/ui/courses.tsx @@ -1,12 +1,13 @@ -import { getCourseIcon } from './lib/getCourseIcon'; -import { IconsTitle } from './lib/icons.data'; -import { selectCourses } from './lib/selectCourses'; -import { CourseCard } from './ui/CourseCard'; -import { LinkCustom } from '@/app/components'; +import { CourseCard } from './CourseCard'; +import { getCourseIcon } from '../lib/getCourseIcon'; +import { IconsTitle } from '../lib/icons.data'; +import { selectCourses } from '../lib/selectCourses'; import { ROUTES } from '@/app/const'; -import { useWindowSize } from '@/app/hooks'; + import { courses } from '@/app/services/data'; -import { ArrowIcon, RsBanner } from '@/icons'; +import { useWindowSize } from '@/shared/hooks/use-window-size'; +import { ArrowIcon, RsBanner } from '@/shared/icons'; +import { LinkCustom } from '@/shared/ui/link-custom'; import './courses.scss'; diff --git a/src/widgets/courses/index.ts b/src/widgets/courses/index.ts new file mode 100644 index 000000000..89575c4db --- /dev/null +++ b/src/widgets/courses/index.ts @@ -0,0 +1 @@ +export { Courses as RSCourses } from './ui/courses'; diff --git a/src/features/courses/courses/other-courses.test.tsx b/src/widgets/courses/other-courses.test.tsx similarity index 79% rename from src/features/courses/courses/other-courses.test.tsx rename to src/widgets/courses/other-courses.test.tsx index 36f217326..a40e73808 100644 --- a/src/features/courses/courses/other-courses.test.tsx +++ b/src/widgets/courses/other-courses.test.tsx @@ -1,23 +1,17 @@ import { screen } from '@testing-library/react'; import { Mock, describe, expect, it, vi } from 'vitest'; -import { Courses } from './courses'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; -import { renderWithRouter } from '@/__tests__/utils'; -import { useDataByName } from '@/app/hooks'; +import { Courses } from './ui/courses'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; +import { renderWithRouter } from '@/shared/__tests__/utils'; +import { useDataByName } from '@/shared/hooks/use-data-by-name'; -vi.mock('@/app/hooks', () => { +vi.mock('@/shared/hooks/use-data-by-name', () => { return { useDataByName: vi.fn(() => ({ data: undefined, loading: false, error: undefined, })), - useNearestCourse: vi.fn().mockImplementation(() => ({ - course: undefined, - loading: false, - error: undefined, - hasError: false, - })), }; }); diff --git a/src/features/courses/courses/courses.scss b/src/widgets/courses/ui/courses.scss similarity index 100% rename from src/features/courses/courses/courses.scss rename to src/widgets/courses/ui/courses.scss diff --git a/src/features/courses/courses/courses.tsx b/src/widgets/courses/ui/courses.tsx similarity index 77% rename from src/features/courses/courses/courses.tsx rename to src/widgets/courses/ui/courses.tsx index 5fe60e746..b899c9fcc 100644 --- a/src/features/courses/courses/courses.tsx +++ b/src/widgets/courses/ui/courses.tsx @@ -1,8 +1,8 @@ -import { compareNumbers } from './utils/compare-courses'; -import { isCourse } from './utils/is-course'; -import { CourseCard, Title, TitleType } from '@/app/components'; -import { useDataByName } from '@/app/hooks'; -import { finedNearestCourse } from '@/app/hooks/use-nearest-course'; +import { CourseCard, finedNearestCourse } from '@/entities/courses'; +import { compareNumbers } from '@/entities/courses/helpers/compare-courses'; +import { isCourse } from '@/entities/courses/helpers/is-course'; +import { useDataByName } from '@/shared/hooks/use-data-by-name'; +import { Title, TitleType } from '@/shared/ui/title'; import './courses.scss'; diff --git a/src/features/home/events/events.data.ts b/src/widgets/events/events.data.ts similarity index 96% rename from src/features/home/events/events.data.ts rename to src/widgets/events/events.data.ts index 4cd25c5fe..22002d794 100644 --- a/src/features/home/events/events.data.ts +++ b/src/widgets/events/events.data.ts @@ -1,4 +1,4 @@ -import { EventCardProps } from '@/app/components'; +import { EventCardProps } from '@/entities/events'; export const events: EventCardProps[] = [ { diff --git a/src/features/home/events/events.test.tsx b/src/widgets/events/events.test.tsx similarity index 94% rename from src/features/home/events/events.test.tsx rename to src/widgets/events/events.test.tsx index a17ef9899..5679c41f1 100644 --- a/src/features/home/events/events.test.tsx +++ b/src/widgets/events/events.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; -import { Events } from './events'; -import { renderWithRouter } from '@/__tests__/utils'; +import { Events } from './ui/events'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('Events', () => { it('renders the title "Meet us at events"', () => { diff --git a/src/widgets/events/index.ts b/src/widgets/events/index.ts new file mode 100644 index 000000000..05cf7e145 --- /dev/null +++ b/src/widgets/events/index.ts @@ -0,0 +1 @@ +export { Events } from './ui/events'; diff --git a/src/features/home/events/events.module.scss b/src/widgets/events/ui/events.module.scss similarity index 100% rename from src/features/home/events/events.module.scss rename to src/widgets/events/ui/events.module.scss diff --git a/src/features/home/events/events.tsx b/src/widgets/events/ui/events.tsx similarity index 77% rename from src/features/home/events/events.tsx rename to src/widgets/events/ui/events.tsx index 588742bd7..39b167142 100644 --- a/src/features/home/events/events.tsx +++ b/src/widgets/events/ui/events.tsx @@ -1,18 +1,15 @@ import cn from 'classnames'; import classNames from 'classnames/bind'; import dayjs from 'dayjs'; -import { events } from './events.data'; -import { - EventCard, - EventCardProps, - Paragraph, - SectionLabel, - Subtitle, - Title, -} from '@/app/components'; -import photo3 from '@/assets/photo-3.webp'; -import Image from '@/features/image'; -import { getActualDataList } from '@/utils'; +import { events } from '../events.data'; +import { EventCard, EventCardProps } from '@/entities/events'; +import photo3 from '@/shared/assets/photo-3.webp'; +import { getActualDataList } from '@/shared/helpers/getActualDataList'; +import Image from '@/shared/ui/image'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { SectionLabel } from '@/shared/ui/section-label'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title } from '@/shared/ui/title'; import styles from './events.module.scss'; diff --git a/src/features/faq/faq.data.ts b/src/widgets/faq/faq.data.ts similarity index 100% rename from src/features/faq/faq.data.ts rename to src/widgets/faq/faq.data.ts diff --git a/src/widgets/faq/index.tsx b/src/widgets/faq/index.tsx new file mode 100644 index 000000000..045b19ece --- /dev/null +++ b/src/widgets/faq/index.tsx @@ -0,0 +1 @@ +export { Faq } from './ui/faq'; diff --git a/src/features/faq/faq.module.scss b/src/widgets/faq/ui/faq.module.scss similarity index 100% rename from src/features/faq/faq.module.scss rename to src/widgets/faq/ui/faq.module.scss diff --git a/src/features/faq/faq.tsx b/src/widgets/faq/ui/faq.tsx similarity index 85% rename from src/features/faq/faq.tsx rename to src/widgets/faq/ui/faq.tsx index 3deb6871e..8139b268d 100644 --- a/src/features/faq/faq.tsx +++ b/src/widgets/faq/ui/faq.tsx @@ -1,7 +1,8 @@ /* eslint-disable @stylistic/jsx-one-expression-per-line */ import classNames from 'classnames/bind'; -import { faqData } from './faq.data'; -import { TextWithLink, Title } from '@/app/components'; +import { faqData } from '../faq.data'; +import { TextWithLink } from '@/shared/ui/text-with-link'; +import { Title } from '@/shared/ui/title'; import styles from './faq.module.scss'; diff --git a/src/features/home/hero/hero.test.tsx b/src/widgets/hero/hero.test.tsx similarity index 88% rename from src/features/home/hero/hero.test.tsx rename to src/widgets/hero/hero.test.tsx index 21fa5ed59..5f5b64129 100644 --- a/src/features/home/hero/hero.test.tsx +++ b/src/widgets/hero/hero.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; -import { Hero } from './hero'; -import { renderWithRouter } from '@/__tests__/utils'; +import { Hero } from './ui/hero'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('Hero', () => { it('renders the title correctly', () => { diff --git a/src/widgets/hero/index.ts b/src/widgets/hero/index.ts new file mode 100644 index 000000000..f07269924 --- /dev/null +++ b/src/widgets/hero/index.ts @@ -0,0 +1 @@ +export { Hero } from './ui/hero'; diff --git a/src/features/home/hero/hero.scss b/src/widgets/hero/ui/hero.scss similarity index 100% rename from src/features/home/hero/hero.scss rename to src/widgets/hero/ui/hero.scss diff --git a/src/features/home/hero/hero.tsx b/src/widgets/hero/ui/hero.tsx similarity index 100% rename from src/features/home/hero/hero.tsx rename to src/widgets/hero/ui/hero.tsx diff --git a/src/widgets/main/index.ts b/src/widgets/main/index.ts new file mode 100644 index 000000000..0574b925c --- /dev/null +++ b/src/widgets/main/index.ts @@ -0,0 +1 @@ +export { Main } from './ui/main'; diff --git a/src/features/school/main/main.test.tsx b/src/widgets/main/main.test.tsx similarity index 86% rename from src/features/school/main/main.test.tsx rename to src/widgets/main/main.test.tsx index ccf3449af..301d5018c 100644 --- a/src/features/school/main/main.test.tsx +++ b/src/widgets/main/main.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; -import { Main } from './main'; -import { renderWithRouter } from '@/__tests__/utils'; +import { Main } from './ui/main'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('Main', () => { beforeEach(() => { diff --git a/src/features/school/main/main.scss b/src/widgets/main/ui/main.scss similarity index 100% rename from src/features/school/main/main.scss rename to src/widgets/main/ui/main.scss diff --git a/src/features/school/main/main.tsx b/src/widgets/main/ui/main.tsx similarity index 83% rename from src/features/school/main/main.tsx rename to src/widgets/main/ui/main.tsx index b6c0c4496..cf6e493bc 100644 --- a/src/features/school/main/main.tsx +++ b/src/widgets/main/ui/main.tsx @@ -1,4 +1,5 @@ -import { Subtitle, Title, TitleType } from '@/app/components'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title, TitleType } from '@/shared/ui/title'; import './main.scss'; diff --git a/src/widgets/mentoring/index.ts b/src/widgets/mentoring/index.ts new file mode 100644 index 000000000..b613f7185 --- /dev/null +++ b/src/widgets/mentoring/index.ts @@ -0,0 +1 @@ +export { Mentoring } from './ui/mentoring'; diff --git a/src/features/school/mentoring/mentoring.test.tsx b/src/widgets/mentoring/mentoring.test.tsx similarity index 92% rename from src/features/school/mentoring/mentoring.test.tsx rename to src/widgets/mentoring/mentoring.test.tsx index f4ff091c8..ae21cb35b 100644 --- a/src/features/school/mentoring/mentoring.test.tsx +++ b/src/widgets/mentoring/mentoring.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; -import { Mentoring } from './mentoring'; -import { renderWithRouter } from '@/__tests__/utils'; +import { Mentoring } from './ui/mentoring'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('Mentoring', () => { beforeEach(() => { diff --git a/src/features/school/mentoring/mentoring.scss b/src/widgets/mentoring/ui/mentoring.scss similarity index 100% rename from src/features/school/mentoring/mentoring.scss rename to src/widgets/mentoring/ui/mentoring.scss diff --git a/src/features/school/mentoring/mentoring.tsx b/src/widgets/mentoring/ui/mentoring.tsx similarity index 100% rename from src/features/school/mentoring/mentoring.tsx rename to src/widgets/mentoring/ui/mentoring.tsx diff --git a/src/widgets/mentors-wanted/index.ts b/src/widgets/mentors-wanted/index.ts new file mode 100644 index 000000000..d6620dc63 --- /dev/null +++ b/src/widgets/mentors-wanted/index.ts @@ -0,0 +1 @@ +export { MentorsWanted } from './ui/mentors-wanted'; diff --git a/src/features/mentors-wanted/mentors-wanted.module.scss b/src/widgets/mentors-wanted/ui/mentors-wanted.module.scss similarity index 100% rename from src/features/mentors-wanted/mentors-wanted.module.scss rename to src/widgets/mentors-wanted/ui/mentors-wanted.module.scss diff --git a/src/features/mentors-wanted/mentors-wanted.tsx b/src/widgets/mentors-wanted/ui/mentors-wanted.tsx similarity index 85% rename from src/features/mentors-wanted/mentors-wanted.tsx rename to src/widgets/mentors-wanted/ui/mentors-wanted.tsx index aa63246fa..35faf39b1 100644 --- a/src/features/mentors-wanted/mentors-wanted.tsx +++ b/src/widgets/mentors-wanted/ui/mentors-wanted.tsx @@ -1,9 +1,10 @@ import classNames from 'classnames'; import classNamesBind from 'classnames/bind'; import { Link } from 'react-router-dom'; -import { Paragraph, Title } from '@/app/components'; -import mentorImg from '@/assets/mentors-wanted-poster.webp'; -import Image from '@/features/image'; +import mentorImg from '@/shared/assets/mentors-wanted-poster.webp'; +import Image from '@/shared/ui/image'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { Title } from '@/shared/ui/title'; import styles from './mentors-wanted.module.scss'; diff --git a/src/widgets/mentors/index.ts b/src/widgets/mentors/index.ts new file mode 100644 index 000000000..b4a4f9dc3 --- /dev/null +++ b/src/widgets/mentors/index.ts @@ -0,0 +1 @@ +export { Mentors } from './ui/mentors'; diff --git a/src/features/school/mentors/mentors.test.tsx b/src/widgets/mentors/mentors.test.tsx similarity index 87% rename from src/features/school/mentors/mentors.test.tsx rename to src/widgets/mentors/mentors.test.tsx index c953f8fe1..c85b6d2b2 100644 --- a/src/features/school/mentors/mentors.test.tsx +++ b/src/widgets/mentors/mentors.test.tsx @@ -1,8 +1,8 @@ import { screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; -import { Mentors } from './mentors'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; -import { renderWithRouter } from '@/__tests__/utils'; +import { Mentors } from './ui/mentors'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('Mentors', () => { beforeEach(() => { diff --git a/src/features/school/mentors/mentors.scss b/src/widgets/mentors/ui/mentors.scss similarity index 100% rename from src/features/school/mentors/mentors.scss rename to src/widgets/mentors/ui/mentors.scss diff --git a/src/features/school/mentors/mentors.tsx b/src/widgets/mentors/ui/mentors.tsx similarity index 78% rename from src/features/school/mentors/mentors.tsx rename to src/widgets/mentors/ui/mentors.tsx index 2741dc925..ca7ae33ef 100644 --- a/src/features/school/mentors/mentors.tsx +++ b/src/widgets/mentors/ui/mentors.tsx @@ -1,8 +1,10 @@ -import { LinkCustom, Subtitle, Title, TitleType } from '@/app/components'; import { LINKS } from '@/app/const'; -import mentorImg from '@/assets/mentors-wanted.webp'; -import Image from '@/features/image'; -import { ArrowIcon } from '@/icons'; +import mentorImg from '@/shared/assets/mentors-wanted.webp'; +import { ArrowIcon } from '@/shared/icons'; +import Image from '@/shared/ui/image'; +import { LinkCustom } from '@/shared/ui/link-custom'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title, TitleType } from '@/shared/ui/title'; import './mentors.scss'; diff --git a/src/widgets/merch/index.ts b/src/widgets/merch/index.ts new file mode 100644 index 000000000..e6c6ce945 --- /dev/null +++ b/src/widgets/merch/index.ts @@ -0,0 +1 @@ +export { Merch } from './ui/merch'; diff --git a/src/features/home/merch/merch.test.tsx b/src/widgets/merch/merch.test.tsx similarity index 92% rename from src/features/home/merch/merch.test.tsx rename to src/widgets/merch/merch.test.tsx index 1764bbb3b..721911fcd 100644 --- a/src/features/home/merch/merch.test.tsx +++ b/src/widgets/merch/merch.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; -import { Merch } from './merch'; -import { renderWithRouter } from '@/__tests__/utils'; +import { Merch } from './ui/merch'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('Merch', () => { beforeEach(() => { diff --git a/src/features/home/merch/merch.scss b/src/widgets/merch/ui/merch.scss similarity index 100% rename from src/features/home/merch/merch.scss rename to src/widgets/merch/ui/merch.scss diff --git a/src/features/home/merch/merch.tsx b/src/widgets/merch/ui/merch.tsx similarity index 71% rename from src/features/home/merch/merch.tsx rename to src/widgets/merch/ui/merch.tsx index ee9d4d941..8db834ffb 100644 --- a/src/features/home/merch/merch.tsx +++ b/src/widgets/merch/ui/merch.tsx @@ -1,9 +1,12 @@ -import { LinkCustom, Paragraph, SectionLabel, Subtitle, Title } from '@/app/components'; - import { LINKS } from '@/app/const'; -import image from '@/assets/merch.webp'; -import Image from '@/features/image'; -import { ArrowIcon } from '@/icons'; +import image from '@/shared/assets/merch.webp'; +import { ArrowIcon } from '@/shared/icons'; +import Image from '@/shared/ui/image'; +import { LinkCustom } from '@/shared/ui/link-custom'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { SectionLabel } from '@/shared/ui/section-label'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title } from '@/shared/ui/title'; import './merch.scss'; diff --git a/src/widgets/mobile-view/index.ts b/src/widgets/mobile-view/index.ts new file mode 100644 index 000000000..05640e796 --- /dev/null +++ b/src/widgets/mobile-view/index.ts @@ -0,0 +1 @@ +export { MobileView } from './ui/mobile-view'; diff --git a/src/app/components/mobile-view/mobile-view.scss b/src/widgets/mobile-view/ui/mobile-view.scss similarity index 100% rename from src/app/components/mobile-view/mobile-view.scss rename to src/widgets/mobile-view/ui/mobile-view.scss diff --git a/src/app/components/mobile-view/mobile-view.tsx b/src/widgets/mobile-view/ui/mobile-view.tsx similarity index 91% rename from src/app/components/mobile-view/mobile-view.tsx rename to src/widgets/mobile-view/ui/mobile-view.tsx index 813a320e1..46f49c7ff 100644 --- a/src/app/components/mobile-view/mobile-view.tsx +++ b/src/widgets/mobile-view/ui/mobile-view.tsx @@ -1,6 +1,8 @@ +// todo it not widget import { Link } from 'react-router-dom'; -import { LogoWrapper, SchoolMenu } from '@/app/components'; import { buildUrl } from '@/app/services/platform'; +import { LogoWrapper } from '@/shared/ui/logo-wrapper'; +import { SchoolMenu } from '@/widgets/school-menu'; import './mobile-view.scss'; diff --git a/src/widgets/not-found/index.ts b/src/widgets/not-found/index.ts new file mode 100644 index 000000000..4e3913d3b --- /dev/null +++ b/src/widgets/not-found/index.ts @@ -0,0 +1 @@ +export { NotFound } from './ui/not-found'; diff --git a/src/features/not-found/not-found.scss b/src/widgets/not-found/ui/not-found.scss similarity index 100% rename from src/features/not-found/not-found.scss rename to src/widgets/not-found/ui/not-found.scss diff --git a/src/features/not-found/not-found.tsx b/src/widgets/not-found/ui/not-found.tsx similarity index 64% rename from src/features/not-found/not-found.tsx rename to src/widgets/not-found/ui/not-found.tsx index 71cc8b643..539bd1bb7 100644 --- a/src/features/not-found/not-found.tsx +++ b/src/widgets/not-found/ui/not-found.tsx @@ -1,8 +1,9 @@ -import { LinkCustom, Paragraph } from '@/app/components'; -import { useTitle } from '@/app/hooks'; -import notFoundImg from '@/assets/404.webp'; -import Image from '@/features/image'; -import { ArrowIcon } from '@/icons'; +import notFoundImg from '@/shared/assets/404.webp'; +import { useTitle } from '@/shared/hooks/use-title'; +import { ArrowIcon } from '@/shared/icons'; +import Image from '@/shared/ui/image'; +import { LinkCustom } from '@/shared/ui/link-custom'; +import { Paragraph } from '@/shared/ui/paragraph'; import './not-found.scss'; diff --git a/src/widgets/numbers/index.ts b/src/widgets/numbers/index.ts new file mode 100644 index 000000000..a1f8c4cc0 --- /dev/null +++ b/src/widgets/numbers/index.ts @@ -0,0 +1 @@ +export { Numbers } from './ui/numbers'; diff --git a/src/features/home/numbers/numbers.test.tsx b/src/widgets/numbers/numbers.test.tsx similarity index 95% rename from src/features/home/numbers/numbers.test.tsx rename to src/widgets/numbers/numbers.test.tsx index 99bc37c4a..88c522331 100644 --- a/src/features/home/numbers/numbers.test.tsx +++ b/src/widgets/numbers/numbers.test.tsx @@ -1,6 +1,6 @@ import { render, screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; -import { Numbers } from './numbers'; +import { Numbers } from './ui/numbers'; describe('Numbers', () => { beforeEach(() => { diff --git a/src/features/home/numbers/numbers.scss b/src/widgets/numbers/ui/numbers.scss similarity index 100% rename from src/features/home/numbers/numbers.scss rename to src/widgets/numbers/ui/numbers.scss diff --git a/src/features/home/numbers/numbers.tsx b/src/widgets/numbers/ui/numbers.tsx similarity index 87% rename from src/features/home/numbers/numbers.tsx rename to src/widgets/numbers/ui/numbers.tsx index d14bdddc8..80210efcd 100644 --- a/src/features/home/numbers/numbers.tsx +++ b/src/widgets/numbers/ui/numbers.tsx @@ -1,7 +1,8 @@ -import { Paragraph, Subtitle, Title } from '@/app/components'; - -import image from '@/assets/map.webp'; -import Image from '@/features/image'; +import image from '@/shared/assets/map.webp'; +import Image from '@/shared/ui/image'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title } from '@/shared/ui/title'; import './numbers.scss'; diff --git a/src/widgets/option-item/index.ts b/src/widgets/option-item/index.ts new file mode 100644 index 000000000..81b2653e3 --- /dev/null +++ b/src/widgets/option-item/index.ts @@ -0,0 +1 @@ +export { OptionItem, type OptionItemProps } from './ui/option-item'; diff --git a/src/app/components/option-item/option-item.test.tsx b/src/widgets/option-item/option-item.test.tsx similarity index 91% rename from src/app/components/option-item/option-item.test.tsx rename to src/widgets/option-item/option-item.test.tsx index 701901d16..e0b69ec16 100644 --- a/src/app/components/option-item/option-item.test.tsx +++ b/src/widgets/option-item/option-item.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; -import { OptionItem } from './option-item'; -import { renderWithRouter } from '@/__tests__/utils'; +import { OptionItem } from './ui/option-item'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('OptionItem component', () => { it('renders title and description', () => { diff --git a/src/app/components/option-item/option-item.scss b/src/widgets/option-item/ui/option-item.scss similarity index 100% rename from src/app/components/option-item/option-item.scss rename to src/widgets/option-item/ui/option-item.scss diff --git a/src/app/components/option-item/option-item.tsx b/src/widgets/option-item/ui/option-item.tsx similarity index 84% rename from src/app/components/option-item/option-item.tsx rename to src/widgets/option-item/ui/option-item.tsx index 753321883..0176c0aaf 100644 --- a/src/app/components/option-item/option-item.tsx +++ b/src/widgets/option-item/ui/option-item.tsx @@ -1,5 +1,6 @@ -import { LinkCustom } from '@/app/components'; -import { ArrowIcon } from '@/icons'; +// todo it not widget +import { ArrowIcon } from '@/shared/icons'; +import { LinkCustom } from '@/shared/ui/link-custom'; import './option-item.scss'; diff --git a/src/widgets/pictures/index.ts b/src/widgets/pictures/index.ts new file mode 100644 index 000000000..03ab70f7e --- /dev/null +++ b/src/widgets/pictures/index.ts @@ -0,0 +1 @@ +export { Pictures } from './ui/pictures'; diff --git a/src/features/home/pictures/pictures.test.tsx b/src/widgets/pictures/pictures.test.tsx similarity index 95% rename from src/features/home/pictures/pictures.test.tsx rename to src/widgets/pictures/pictures.test.tsx index 3dd43b60b..a193c195b 100644 --- a/src/features/home/pictures/pictures.test.tsx +++ b/src/widgets/pictures/pictures.test.tsx @@ -1,6 +1,6 @@ import { render, screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; -import { Pictures } from './pictures'; +import { Pictures } from './ui/pictures'; describe('Pictures', () => { beforeEach(() => { diff --git a/src/features/home/pictures/pictures.scss b/src/widgets/pictures/ui/pictures.scss similarity index 100% rename from src/features/home/pictures/pictures.scss rename to src/widgets/pictures/ui/pictures.scss diff --git a/src/features/home/pictures/pictures.tsx b/src/widgets/pictures/ui/pictures.tsx similarity index 69% rename from src/features/home/pictures/pictures.tsx rename to src/widgets/pictures/ui/pictures.tsx index c41393e8a..974ba82af 100644 --- a/src/features/home/pictures/pictures.tsx +++ b/src/widgets/pictures/ui/pictures.tsx @@ -1,18 +1,19 @@ // requires a loader import { Carousel } from 'react-responsive-carousel'; -import { Paragraph, SocialMedia, SocialMediaProps, Title } from '@/app/components'; - -import photo1 from '@/assets/photo-1.webp'; -import photo2 from '@/assets/photo-2.webp'; -import photo3 from '@/assets/photo-3.webp'; -import photo4 from '@/assets/photo-4.webp'; -import photo5 from '@/assets/photo-5.webp'; -import photo6 from '@/assets/photo-6.webp'; -import photo7 from '@/assets/photo-7.webp'; -import photo8 from '@/assets/photo-8.webp'; -import photo9 from '@/assets/photo-9.webp'; -import Image from '@/features/image'; -import { FacebookIcon, InstagramIcon } from '@/icons'; +import photo1 from '@/shared/assets/photo-1.webp'; +import photo2 from '@/shared/assets/photo-2.webp'; +import photo3 from '@/shared/assets/photo-3.webp'; +import photo4 from '@/shared/assets/photo-4.webp'; +import photo5 from '@/shared/assets/photo-5.webp'; +import photo6 from '@/shared/assets/photo-6.webp'; +import photo7 from '@/shared/assets/photo-7.webp'; +import photo8 from '@/shared/assets/photo-8.webp'; +import photo9 from '@/shared/assets/photo-9.webp'; +import { FacebookIcon, InstagramIcon } from '@/shared/icons'; +import Image from '@/shared/ui/image'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { SocialMedia, SocialMediaProps } from '@/shared/ui/social-media'; +import { Title } from '@/shared/ui/title'; import 'react-responsive-carousel/lib/styles/carousel.min.css'; import './pictures.scss'; diff --git a/src/widgets/places/index.ts b/src/widgets/places/index.ts new file mode 100644 index 000000000..22f757a36 --- /dev/null +++ b/src/widgets/places/index.ts @@ -0,0 +1 @@ +export { Places } from './ui/places'; diff --git a/src/app/components/places/places.test.tsx b/src/widgets/places/places.test.tsx similarity index 95% rename from src/app/components/places/places.test.tsx rename to src/widgets/places/places.test.tsx index febf42a2a..96fa9fb71 100644 --- a/src/app/components/places/places.test.tsx +++ b/src/widgets/places/places.test.tsx @@ -1,6 +1,6 @@ import { render, screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; -import { Places } from './places'; +import { Places } from './ui/places'; describe('Places component', () => { const places = [ diff --git a/src/app/components/places/places.scss b/src/widgets/places/ui/places.scss similarity index 100% rename from src/app/components/places/places.scss rename to src/widgets/places/ui/places.scss diff --git a/src/app/components/places/places.tsx b/src/widgets/places/ui/places.tsx similarity index 100% rename from src/app/components/places/places.tsx rename to src/widgets/places/ui/places.tsx diff --git a/src/features/principles/constants.tsx b/src/widgets/principles/constants.tsx similarity index 88% rename from src/features/principles/constants.tsx rename to src/widgets/principles/constants.tsx index a360170f0..0a0f9be1c 100644 --- a/src/features/principles/constants.tsx +++ b/src/widgets/principles/constants.tsx @@ -1,5 +1,5 @@ -import { PrincipleCardProps } from '@/app/components'; -import { OpenSourcePhilosophyIcon, OpenToEveryoneIcon, TeachItForwardIcon } from '@/icons'; +import { PrincipleCardProps } from './ui/principle-card/principle-card'; +import { OpenSourcePhilosophyIcon, OpenToEveryoneIcon, TeachItForwardIcon } from '@/shared/icons'; export const cards: PrincipleCardProps[] = [ { diff --git a/src/widgets/principles/index.ts b/src/widgets/principles/index.ts new file mode 100644 index 000000000..24b4a7c05 --- /dev/null +++ b/src/widgets/principles/index.ts @@ -0,0 +1 @@ +export { Principles } from './ui/principle-card/principles'; diff --git a/src/features/principles/principles.test.tsx b/src/widgets/principles/principles.test.tsx similarity index 94% rename from src/features/principles/principles.test.tsx rename to src/widgets/principles/principles.test.tsx index fbd339d82..3599d7274 100644 --- a/src/features/principles/principles.test.tsx +++ b/src/widgets/principles/principles.test.tsx @@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; import { cards } from './constants'; -import { Principles } from './principles'; +import { Principles } from './ui/principle-card/principles'; describe('Principles', () => { beforeEach(() => { diff --git a/src/app/components/principle-card/principle-card.scss b/src/widgets/principles/ui/principle-card/principle-card.scss similarity index 100% rename from src/app/components/principle-card/principle-card.scss rename to src/widgets/principles/ui/principle-card/principle-card.scss diff --git a/src/app/components/principle-card/principle-card.test.tsx b/src/widgets/principles/ui/principle-card/principle-card.test.tsx similarity index 100% rename from src/app/components/principle-card/principle-card.test.tsx rename to src/widgets/principles/ui/principle-card/principle-card.test.tsx diff --git a/src/app/components/principle-card/principle-card.tsx b/src/widgets/principles/ui/principle-card/principle-card.tsx similarity index 100% rename from src/app/components/principle-card/principle-card.tsx rename to src/widgets/principles/ui/principle-card/principle-card.tsx diff --git a/src/features/principles/principles.scss b/src/widgets/principles/ui/principle-card/principles.scss similarity index 100% rename from src/features/principles/principles.scss rename to src/widgets/principles/ui/principle-card/principles.scss diff --git a/src/features/principles/principles.tsx b/src/widgets/principles/ui/principle-card/principles.tsx similarity index 79% rename from src/features/principles/principles.tsx rename to src/widgets/principles/ui/principle-card/principles.tsx index 41138b6aa..4b6cc7cfb 100644 --- a/src/features/principles/principles.tsx +++ b/src/widgets/principles/ui/principle-card/principles.tsx @@ -1,5 +1,6 @@ -import { cards } from './constants'; -import { PrincipleCard, Title, TitleType } from '@/app/components'; +import { PrincipleCard } from './principle-card'; +import { cards } from '../../constants'; +import { Title, TitleType } from '@/shared/ui/title'; import './principles.scss'; diff --git a/src/widgets/required/index.ts b/src/widgets/required/index.ts new file mode 100644 index 000000000..ea126bd05 --- /dev/null +++ b/src/widgets/required/index.ts @@ -0,0 +1 @@ +export { Required } from './ui/required'; diff --git a/src/features/required/required.data.ts b/src/widgets/required/required.data.ts similarity index 100% rename from src/features/required/required.data.ts rename to src/widgets/required/required.data.ts diff --git a/src/features/required/required.test.tsx b/src/widgets/required/required.test.tsx similarity index 98% rename from src/features/required/required.test.tsx rename to src/widgets/required/required.test.tsx index 7ed4efbcd..8924149b0 100644 --- a/src/features/required/required.test.tsx +++ b/src/widgets/required/required.test.tsx @@ -1,7 +1,7 @@ import { render, screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; -import { Required } from './required'; +import { Required } from './ui/required'; describe('Required', () => { it('renders the title and subtitle correctly', () => { diff --git a/src/features/required/required.types.ts b/src/widgets/required/required.types.ts similarity index 100% rename from src/features/required/required.types.ts rename to src/widgets/required/required.types.ts diff --git a/src/features/required/required.scss b/src/widgets/required/ui/required.scss similarity index 100% rename from src/features/required/required.scss rename to src/widgets/required/ui/required.scss diff --git a/src/features/required/required.tsx b/src/widgets/required/ui/required.tsx similarity index 85% rename from src/features/required/required.tsx rename to src/widgets/required/ui/required.tsx index c4662bc2e..67751fccf 100644 --- a/src/features/required/required.tsx +++ b/src/widgets/required/ui/required.tsx @@ -1,6 +1,9 @@ -import { courseDataMap } from './required.data'; -import type { CourseName } from './required.types'; -import { Actions, Subtitle, Title } from '@/app/components'; +import { courseDataMap } from '../required.data'; +import type { CourseName } from '../required.types'; + +import { Actions } from '@/shared/ui/actions/actions'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title } from '@/shared/ui/title'; import './required.scss'; diff --git a/src/widgets/requirements/index.ts b/src/widgets/requirements/index.ts new file mode 100644 index 000000000..43293ba85 --- /dev/null +++ b/src/widgets/requirements/index.ts @@ -0,0 +1 @@ +export { Requirements } from './ui/requirements'; diff --git a/src/features/school/requirements/requirements.test.tsx b/src/widgets/requirements/requirements.test.tsx similarity index 93% rename from src/features/school/requirements/requirements.test.tsx rename to src/widgets/requirements/requirements.test.tsx index b44bc9dc2..6699c9fa5 100644 --- a/src/features/school/requirements/requirements.test.tsx +++ b/src/widgets/requirements/requirements.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; -import { Requirements } from './requirements'; -import { renderWithRouter } from '@/__tests__/utils'; +import { Requirements } from './ui/requirements'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('Requirements', () => { beforeEach(() => { diff --git a/src/features/school/requirements/requirements.scss b/src/widgets/requirements/ui/requirements.scss similarity index 100% rename from src/features/school/requirements/requirements.scss rename to src/widgets/requirements/ui/requirements.scss diff --git a/src/features/school/requirements/requirements.tsx b/src/widgets/requirements/ui/requirements.tsx similarity index 93% rename from src/features/school/requirements/requirements.tsx rename to src/widgets/requirements/ui/requirements.tsx index f38c707f4..e8c4762fb 100644 --- a/src/features/school/requirements/requirements.tsx +++ b/src/widgets/requirements/ui/requirements.tsx @@ -1,6 +1,6 @@ -import { LinkCustom } from '@/app/components'; import { LINKS } from '@/app/const'; -import { ArrowIcon } from '@/icons'; +import { ArrowIcon } from '@/shared/icons'; +import { LinkCustom } from '@/shared/ui/link-custom'; import './requirements.scss'; diff --git a/src/widgets/school-menu/index.ts b/src/widgets/school-menu/index.ts new file mode 100644 index 000000000..d88ff088d --- /dev/null +++ b/src/widgets/school-menu/index.ts @@ -0,0 +1 @@ +export { SchoolMenu } from './ui/school-menu'; diff --git a/src/app/components/school-menu/school-menu.test.tsx b/src/widgets/school-menu/school-menu.test.tsx similarity index 93% rename from src/app/components/school-menu/school-menu.test.tsx rename to src/widgets/school-menu/school-menu.test.tsx index a06e1e874..83decddfd 100644 --- a/src/app/components/school-menu/school-menu.test.tsx +++ b/src/widgets/school-menu/school-menu.test.tsx @@ -1,8 +1,8 @@ import { screen } from '@testing-library/react'; import { vi } from 'vitest'; -import { SchoolMenu } from './school-menu'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; -import { renderWithRouter } from '@/__tests__/utils'; +import { SchoolMenu } from './ui/school-menu'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; +import { renderWithRouter } from '@/shared/__tests__/utils'; const testCourses = [ { @@ -37,7 +37,7 @@ const testCourses = [ }, ]; -vi.mock('@/app/hooks', () => { +vi.mock('@/shared/hooks/use-data-by-name', () => { return { useDataByName: vi.fn().mockImplementation(() => ({ data: testCourses })) }; }); diff --git a/src/app/components/school-menu/school-item.tsx b/src/widgets/school-menu/ui/school-item/school-item.tsx similarity index 92% rename from src/app/components/school-menu/school-item.tsx rename to src/widgets/school-menu/ui/school-item/school-item.tsx index 6bb1ae8cd..ee4da755c 100644 --- a/src/app/components/school-menu/school-item.tsx +++ b/src/widgets/school-menu/ui/school-item/school-item.tsx @@ -1,7 +1,7 @@ import { Link } from 'react-router-dom'; -import { type GenericItemProps } from './school-list'; +import { GenericItemProps } from '../school-list/school-list'; import { type Course } from '@/app/types'; -import Image from '@/features/image'; +import Image from '@/shared/ui/image'; interface SchoolItemProps { item: Course | GenericItemProps; diff --git a/src/app/components/school-menu/school-list.tsx b/src/widgets/school-menu/ui/school-list/school-list.tsx similarity index 91% rename from src/app/components/school-menu/school-list.tsx rename to src/widgets/school-menu/ui/school-list/school-list.tsx index f7de3a81d..8a5988d65 100644 --- a/src/app/components/school-menu/school-list.tsx +++ b/src/widgets/school-menu/ui/school-list/school-list.tsx @@ -1,4 +1,4 @@ -import { SchoolItem } from './school-item'; +import { SchoolItem } from '../school-item/school-item'; import { Course } from '@/app/types'; export interface GenericItemProps { diff --git a/src/app/components/school-menu/school-menu.scss b/src/widgets/school-menu/ui/school-menu.scss similarity index 100% rename from src/app/components/school-menu/school-menu.scss rename to src/widgets/school-menu/ui/school-menu.scss diff --git a/src/app/components/school-menu/school-menu.tsx b/src/widgets/school-menu/ui/school-menu.tsx similarity index 92% rename from src/app/components/school-menu/school-menu.tsx rename to src/widgets/school-menu/ui/school-menu.tsx index 2d6cba09e..e546ed004 100644 --- a/src/app/components/school-menu/school-menu.tsx +++ b/src/widgets/school-menu/ui/school-menu.tsx @@ -1,6 +1,7 @@ -import { GenericItemProps, SchoolList } from './school-list'; -import { useDataByName } from '@/app/hooks'; +import { GenericItemProps, SchoolList } from './school-list/school-list'; + import { type Course } from '@/app/types'; +import { useDataByName } from '@/shared/hooks/use-data-by-name'; import './school-menu.scss'; diff --git a/src/widgets/speakers/index.ts b/src/widgets/speakers/index.ts new file mode 100644 index 000000000..60b979e53 --- /dev/null +++ b/src/widgets/speakers/index.ts @@ -0,0 +1 @@ +export { Speakers } from './ui/speakers'; diff --git a/src/features/home/speakers/speakers.test.tsx b/src/widgets/speakers/speakers.test.tsx similarity index 96% rename from src/features/home/speakers/speakers.test.tsx rename to src/widgets/speakers/speakers.test.tsx index bd3423ca2..fbb9652e3 100644 --- a/src/features/home/speakers/speakers.test.tsx +++ b/src/widgets/speakers/speakers.test.tsx @@ -1,6 +1,6 @@ import { render, screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; -import { Speakers } from './speakers'; +import { Speakers } from './ui/speakers'; describe('Speakers', () => { beforeEach(() => { diff --git a/src/features/home/speakers/speakers.scss b/src/widgets/speakers/ui/speakers.scss similarity index 100% rename from src/features/home/speakers/speakers.scss rename to src/widgets/speakers/ui/speakers.scss diff --git a/src/features/home/speakers/speakers.tsx b/src/widgets/speakers/ui/speakers.tsx similarity index 78% rename from src/features/home/speakers/speakers.tsx rename to src/widgets/speakers/ui/speakers.tsx index d4aaea7f4..4392a976b 100644 --- a/src/features/home/speakers/speakers.tsx +++ b/src/widgets/speakers/ui/speakers.tsx @@ -1,8 +1,8 @@ -import { Subtitle, Title, TitleType } from '@/app/components'; - -import image from '@/assets/speakers-wanted.webp'; -import Image from '@/features/image'; -import { EmailIcon } from '@/icons'; +import image from '@/shared/assets/speakers-wanted.webp'; +import { EmailIcon } from '@/shared/icons'; +import Image from '@/shared/ui/image'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title, TitleType } from '@/shared/ui/title'; import './speakers.scss'; diff --git a/src/widgets/study-path/index.ts b/src/widgets/study-path/index.ts new file mode 100644 index 000000000..b9ed683ac --- /dev/null +++ b/src/widgets/study-path/index.ts @@ -0,0 +1 @@ +export { StudyPath } from './ui/study-path'; diff --git a/src/features/study-path/study-path.test.tsx b/src/widgets/study-path/study-path.test.tsx similarity index 89% rename from src/features/study-path/study-path.test.tsx rename to src/widgets/study-path/study-path.test.tsx index 14b1d5aef..828962e49 100644 --- a/src/features/study-path/study-path.test.tsx +++ b/src/widgets/study-path/study-path.test.tsx @@ -1,6 +1,6 @@ import { render, screen } from '@testing-library/react'; -import { StudyPath } from './study-path'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; +import { StudyPath } from './ui/study-path'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; const testStages = [ { @@ -19,7 +19,7 @@ const testStages = [ }, ]; -vi.mock('@/app/hooks', () => ({ useDataByName: vi.fn().mockImplementation(() => ({ data: testStages })) })); +vi.mock('@/shared/hooks/use-data-by-name', () => ({ useDataByName: vi.fn().mockImplementation(() => ({ data: testStages })) })); describe('StudyPath Component', () => { it('renders the title and paragraph text correctly for angularPath', () => { diff --git a/src/features/study-path/components/stage-card/actions/actions.scss b/src/widgets/study-path/ui/stage-card/actions/actions.scss similarity index 100% rename from src/features/study-path/components/stage-card/actions/actions.scss rename to src/widgets/study-path/ui/stage-card/actions/actions.scss diff --git a/src/features/study-path/components/stage-card/actions/actions.test.tsx b/src/widgets/study-path/ui/stage-card/actions/actions.test.tsx similarity index 100% rename from src/features/study-path/components/stage-card/actions/actions.test.tsx rename to src/widgets/study-path/ui/stage-card/actions/actions.test.tsx diff --git a/src/features/study-path/components/stage-card/actions/actions.tsx b/src/widgets/study-path/ui/stage-card/actions/actions.tsx similarity index 100% rename from src/features/study-path/components/stage-card/actions/actions.tsx rename to src/widgets/study-path/ui/stage-card/actions/actions.tsx diff --git a/src/app/components/actions/index.ts b/src/widgets/study-path/ui/stage-card/actions/index.ts similarity index 100% rename from src/app/components/actions/index.ts rename to src/widgets/study-path/ui/stage-card/actions/index.ts diff --git a/src/features/study-path/components/stage-card/image/image.scss b/src/widgets/study-path/ui/stage-card/image/image.scss similarity index 100% rename from src/features/study-path/components/stage-card/image/image.scss rename to src/widgets/study-path/ui/stage-card/image/image.scss diff --git a/src/features/study-path/components/stage-card/image/image.test.tsx b/src/widgets/study-path/ui/stage-card/image/image.test.tsx similarity index 91% rename from src/features/study-path/components/stage-card/image/image.test.tsx rename to src/widgets/study-path/ui/stage-card/image/image.test.tsx index 3fc861e8e..5f07575da 100644 --- a/src/features/study-path/components/stage-card/image/image.test.tsx +++ b/src/widgets/study-path/ui/stage-card/image/image.test.tsx @@ -1,6 +1,6 @@ import { render, screen } from '@testing-library/react'; import { Image } from './image'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; describe('Actions Component', () => { it('renders image correctly', () => { diff --git a/src/features/study-path/components/stage-card/image/image.tsx b/src/widgets/study-path/ui/stage-card/image/image.tsx similarity index 86% rename from src/features/study-path/components/stage-card/image/image.tsx rename to src/widgets/study-path/ui/stage-card/image/image.tsx index ff0297209..429507563 100644 --- a/src/features/study-path/components/stage-card/image/image.tsx +++ b/src/widgets/study-path/ui/stage-card/image/image.tsx @@ -1,4 +1,4 @@ -import LazyImage from '@/features/image'; +import LazyImage from '@/shared/ui/image'; import './image.scss'; diff --git a/src/features/study-path/components/stage-card/image/index.ts b/src/widgets/study-path/ui/stage-card/image/index.ts similarity index 100% rename from src/features/study-path/components/stage-card/image/index.ts rename to src/widgets/study-path/ui/stage-card/image/index.ts diff --git a/src/features/study-path/components/stage-card/index.ts b/src/widgets/study-path/ui/stage-card/index.ts similarity index 100% rename from src/features/study-path/components/stage-card/index.ts rename to src/widgets/study-path/ui/stage-card/index.ts diff --git a/src/features/study-path/components/stage-card/links/index.ts b/src/widgets/study-path/ui/stage-card/links/index.ts similarity index 100% rename from src/features/study-path/components/stage-card/links/index.ts rename to src/widgets/study-path/ui/stage-card/links/index.ts diff --git a/src/features/study-path/components/stage-card/links/links.scss b/src/widgets/study-path/ui/stage-card/links/links.scss similarity index 100% rename from src/features/study-path/components/stage-card/links/links.scss rename to src/widgets/study-path/ui/stage-card/links/links.scss diff --git a/src/features/study-path/components/stage-card/links/links.test.tsx b/src/widgets/study-path/ui/stage-card/links/links.test.tsx similarity index 100% rename from src/features/study-path/components/stage-card/links/links.test.tsx rename to src/widgets/study-path/ui/stage-card/links/links.test.tsx diff --git a/src/features/study-path/components/stage-card/links/links.tsx b/src/widgets/study-path/ui/stage-card/links/links.tsx similarity index 100% rename from src/features/study-path/components/stage-card/links/links.tsx rename to src/widgets/study-path/ui/stage-card/links/links.tsx diff --git a/src/features/study-path/components/stage-card/logo-icon/index.ts b/src/widgets/study-path/ui/stage-card/logo-icon/index.ts similarity index 100% rename from src/features/study-path/components/stage-card/logo-icon/index.ts rename to src/widgets/study-path/ui/stage-card/logo-icon/index.ts diff --git a/src/features/study-path/components/stage-card/logo-icon/logo-icon.scss b/src/widgets/study-path/ui/stage-card/logo-icon/logo-icon.scss similarity index 100% rename from src/features/study-path/components/stage-card/logo-icon/logo-icon.scss rename to src/widgets/study-path/ui/stage-card/logo-icon/logo-icon.scss diff --git a/src/features/study-path/components/stage-card/logo-icon/logo-icon.test.tsx b/src/widgets/study-path/ui/stage-card/logo-icon/logo-icon.test.tsx similarity index 88% rename from src/features/study-path/components/stage-card/logo-icon/logo-icon.test.tsx rename to src/widgets/study-path/ui/stage-card/logo-icon/logo-icon.test.tsx index 6d3348739..fc3a40ca2 100644 --- a/src/features/study-path/components/stage-card/logo-icon/logo-icon.test.tsx +++ b/src/widgets/study-path/ui/stage-card/logo-icon/logo-icon.test.tsx @@ -1,6 +1,6 @@ import { render, screen } from '@testing-library/react'; import { LogoIcon } from './logo-icon'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; describe('LogoIcon Component', () => { it('renders logo image with correct src and alt text', () => { diff --git a/src/features/study-path/components/stage-card/logo-icon/logo-icon.tsx b/src/widgets/study-path/ui/stage-card/logo-icon/logo-icon.tsx similarity index 86% rename from src/features/study-path/components/stage-card/logo-icon/logo-icon.tsx rename to src/widgets/study-path/ui/stage-card/logo-icon/logo-icon.tsx index 60bd382dd..d3ce7ce43 100644 --- a/src/features/study-path/components/stage-card/logo-icon/logo-icon.tsx +++ b/src/widgets/study-path/ui/stage-card/logo-icon/logo-icon.tsx @@ -1,4 +1,4 @@ -import Image from '@/features/image'; +import Image from '@/shared/ui/image'; import './logo-icon.scss'; diff --git a/src/features/study-path/components/stage-card/stage-card.scss b/src/widgets/study-path/ui/stage-card/stage-card.scss similarity index 100% rename from src/features/study-path/components/stage-card/stage-card.scss rename to src/widgets/study-path/ui/stage-card/stage-card.scss diff --git a/src/features/study-path/components/stage-card/stage-card.test.tsx b/src/widgets/study-path/ui/stage-card/stage-card.test.tsx similarity index 97% rename from src/features/study-path/components/stage-card/stage-card.test.tsx rename to src/widgets/study-path/ui/stage-card/stage-card.test.tsx index 0b5569f0d..f051437d1 100644 --- a/src/features/study-path/components/stage-card/stage-card.test.tsx +++ b/src/widgets/study-path/ui/stage-card/stage-card.test.tsx @@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react'; import { describe, expect, it } from 'vitest'; import { StageCard } from './stage-card'; import { type StageCardProps } from './stage-card.types'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; describe('StageCard component', () => { const props: StageCardProps = { diff --git a/src/features/study-path/components/stage-card/stage-card.tsx b/src/widgets/study-path/ui/stage-card/stage-card.tsx similarity index 100% rename from src/features/study-path/components/stage-card/stage-card.tsx rename to src/widgets/study-path/ui/stage-card/stage-card.tsx diff --git a/src/features/study-path/components/stage-card/stage-card.types.ts b/src/widgets/study-path/ui/stage-card/stage-card.types.ts similarity index 100% rename from src/features/study-path/components/stage-card/stage-card.types.ts rename to src/widgets/study-path/ui/stage-card/stage-card.types.ts diff --git a/src/features/study-path/components/stage-card/step/index.ts b/src/widgets/study-path/ui/stage-card/step/index.ts similarity index 100% rename from src/features/study-path/components/stage-card/step/index.ts rename to src/widgets/study-path/ui/stage-card/step/index.ts diff --git a/src/features/study-path/components/stage-card/step/step.scss b/src/widgets/study-path/ui/stage-card/step/step.scss similarity index 100% rename from src/features/study-path/components/stage-card/step/step.scss rename to src/widgets/study-path/ui/stage-card/step/step.scss diff --git a/src/features/study-path/components/stage-card/step/step.test.tsx b/src/widgets/study-path/ui/stage-card/step/step.test.tsx similarity index 100% rename from src/features/study-path/components/stage-card/step/step.test.tsx rename to src/widgets/study-path/ui/stage-card/step/step.test.tsx diff --git a/src/features/study-path/components/stage-card/step/step.tsx b/src/widgets/study-path/ui/stage-card/step/step.tsx similarity index 100% rename from src/features/study-path/components/stage-card/step/step.tsx rename to src/widgets/study-path/ui/stage-card/step/step.tsx diff --git a/src/features/study-path/components/stage-card/topics/index.ts b/src/widgets/study-path/ui/stage-card/topics/index.ts similarity index 100% rename from src/features/study-path/components/stage-card/topics/index.ts rename to src/widgets/study-path/ui/stage-card/topics/index.ts diff --git a/src/features/study-path/components/stage-card/topics/topics.scss b/src/widgets/study-path/ui/stage-card/topics/topics.scss similarity index 100% rename from src/features/study-path/components/stage-card/topics/topics.scss rename to src/widgets/study-path/ui/stage-card/topics/topics.scss diff --git a/src/features/study-path/components/stage-card/topics/topics.test.tsx b/src/widgets/study-path/ui/stage-card/topics/topics.test.tsx similarity index 100% rename from src/features/study-path/components/stage-card/topics/topics.test.tsx rename to src/widgets/study-path/ui/stage-card/topics/topics.test.tsx diff --git a/src/features/study-path/components/stage-card/topics/topics.tsx b/src/widgets/study-path/ui/stage-card/topics/topics.tsx similarity index 89% rename from src/features/study-path/components/stage-card/topics/topics.tsx rename to src/widgets/study-path/ui/stage-card/topics/topics.tsx index baab963ef..387cf3d9b 100644 --- a/src/features/study-path/components/stage-card/topics/topics.tsx +++ b/src/widgets/study-path/ui/stage-card/topics/topics.tsx @@ -1,5 +1,5 @@ import { useContext } from 'react'; -import { LangContext } from '@/features/study-path/study-path'; +import { LangContext } from '../../study-path'; import './topics.scss'; diff --git a/src/features/study-path/components/index.ts b/src/widgets/study-path/ui/stages/index.ts similarity index 100% rename from src/features/study-path/components/index.ts rename to src/widgets/study-path/ui/stages/index.ts diff --git a/src/features/study-path/components/stages/stages.scss b/src/widgets/study-path/ui/stages/stages.scss similarity index 100% rename from src/features/study-path/components/stages/stages.scss rename to src/widgets/study-path/ui/stages/stages.scss diff --git a/src/features/study-path/components/stages/stages.test.tsx b/src/widgets/study-path/ui/stages/stages.test.tsx similarity index 95% rename from src/features/study-path/components/stages/stages.test.tsx rename to src/widgets/study-path/ui/stages/stages.test.tsx index 554c78519..deadad743 100644 --- a/src/features/study-path/components/stages/stages.test.tsx +++ b/src/widgets/study-path/ui/stages/stages.test.tsx @@ -1,6 +1,6 @@ import { render, screen } from '@testing-library/react'; import { Stages, StagesProps } from './stages'; -import { MOCKED_IMAGE_PATH } from '@/__tests__/constants'; +import { MOCKED_IMAGE_PATH } from '@/shared/__tests__/constants'; describe('Stages Component', () => { const testStages: StagesProps['stages'] = [ diff --git a/src/features/study-path/components/stages/stages.tsx b/src/widgets/study-path/ui/stages/stages.tsx similarity index 100% rename from src/features/study-path/components/stages/stages.tsx rename to src/widgets/study-path/ui/stages/stages.tsx diff --git a/src/features/study-path/study-path.scss b/src/widgets/study-path/ui/study-path.scss similarity index 100% rename from src/features/study-path/study-path.scss rename to src/widgets/study-path/ui/study-path.scss diff --git a/src/features/study-path/study-path.tsx b/src/widgets/study-path/ui/study-path.tsx similarity index 93% rename from src/features/study-path/study-path.tsx rename to src/widgets/study-path/ui/study-path.tsx index 44c7ab690..0673e39cc 100644 --- a/src/features/study-path/study-path.tsx +++ b/src/widgets/study-path/ui/study-path.tsx @@ -1,8 +1,9 @@ import { createContext } from 'react'; -import { Stages } from './components'; -import { Paragraph, Title } from '@/app/components'; -import { useDataByName } from '@/app/hooks'; +import { Stages } from './stages'; import { type DataMap } from '@/app/services/data/courses-data.types'; +import { useDataByName } from '@/shared/hooks/use-data-by-name'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { Title } from '@/shared/ui/title'; import './study-path.scss'; diff --git a/src/features/school/study-with-us/constants.ts b/src/widgets/study-with-us/constants.ts similarity index 87% rename from src/features/school/study-with-us/constants.ts rename to src/widgets/study-with-us/constants.ts index e9c632dc2..3f4faab95 100644 --- a/src/features/school/study-with-us/constants.ts +++ b/src/widgets/study-with-us/constants.ts @@ -1,4 +1,4 @@ -import { OptionItemProps } from '@/app/components/option-item/option-item'; +import { OptionItemProps } from '@/widgets/option-item/ui/option-item'; export const studyOptions: OptionItemProps[] = [ { diff --git a/src/widgets/study-with-us/index.ts b/src/widgets/study-with-us/index.ts new file mode 100644 index 000000000..cad7f20c8 --- /dev/null +++ b/src/widgets/study-with-us/index.ts @@ -0,0 +1 @@ +export { StudyWithUs } from './ui/study-with-us'; diff --git a/src/features/school/study-with-us/study-with-us.test.tsx b/src/widgets/study-with-us/study-with-us.test.tsx similarity index 95% rename from src/features/school/study-with-us/study-with-us.test.tsx rename to src/widgets/study-with-us/study-with-us.test.tsx index 0a62af0b4..ec4b91a5c 100644 --- a/src/features/school/study-with-us/study-with-us.test.tsx +++ b/src/widgets/study-with-us/study-with-us.test.tsx @@ -1,7 +1,7 @@ import { render, screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; import { studyOptions } from './constants'; -import { StudyWithUs } from './study-with-us'; +import { StudyWithUs } from './ui/study-with-us'; describe('School Component', () => { beforeEach(() => { diff --git a/src/features/school/study-with-us/study-with-us.scss b/src/widgets/study-with-us/ui/study-with-us.scss similarity index 100% rename from src/features/school/study-with-us/study-with-us.scss rename to src/widgets/study-with-us/ui/study-with-us.scss diff --git a/src/features/school/study-with-us/study-with-us.tsx b/src/widgets/study-with-us/ui/study-with-us.tsx similarity index 70% rename from src/features/school/study-with-us/study-with-us.tsx rename to src/widgets/study-with-us/ui/study-with-us.tsx index b6516c60f..40ae661cf 100644 --- a/src/features/school/study-with-us/study-with-us.tsx +++ b/src/widgets/study-with-us/ui/study-with-us.tsx @@ -1,8 +1,11 @@ -import { studyOptions } from './constants'; -import { OptionItem, Paragraph, SectionLabel, Subtitle, Title } from '@/app/components'; - -import image from '@/assets/rs-school.webp'; -import Image from '@/features/image'; +import { studyOptions } from '../constants'; +import image from '@/shared/assets/rs-school.webp'; +import Image from '@/shared/ui/image'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { SectionLabel } from '@/shared/ui/section-label'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title } from '@/shared/ui/title'; +import { OptionItem } from '@/widgets/option-item'; import './study-with-us.scss'; diff --git a/src/widgets/support/index.ts b/src/widgets/support/index.ts new file mode 100644 index 000000000..b4b0d3e19 --- /dev/null +++ b/src/widgets/support/index.ts @@ -0,0 +1 @@ +export { Support } from './ui/support'; diff --git a/src/features/home/support/support.test.tsx b/src/widgets/support/support.test.tsx similarity index 92% rename from src/features/home/support/support.test.tsx rename to src/widgets/support/support.test.tsx index 030de2f2e..f5774d37d 100644 --- a/src/features/home/support/support.test.tsx +++ b/src/widgets/support/support.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { beforeEach, describe, expect, it } from 'vitest'; -import { Support } from './support'; -import { renderWithRouter } from '@/__tests__/utils'; +import { Support } from './ui/support'; +import { renderWithRouter } from '@/shared/__tests__/utils'; describe('Support', () => { beforeEach(() => { diff --git a/src/features/home/support/support.scss b/src/widgets/support/ui/support.scss similarity index 100% rename from src/features/home/support/support.scss rename to src/widgets/support/ui/support.scss diff --git a/src/features/home/support/support.tsx b/src/widgets/support/ui/support.tsx similarity index 73% rename from src/features/home/support/support.tsx rename to src/widgets/support/ui/support.tsx index bb7e8800a..d2f55b3ab 100644 --- a/src/features/home/support/support.tsx +++ b/src/widgets/support/ui/support.tsx @@ -1,9 +1,10 @@ -import { LinkCustom, Subtitle, Title, TitleType } from '@/app/components'; - import { LINKS } from '@/app/const'; -import image from '@/assets/support.webp'; -import Image from '@/features/image'; -import { ArrowIcon } from '@/icons'; +import image from '@/shared/assets/support.webp'; +import { ArrowIcon } from '@/shared/icons'; +import Image from '@/shared/ui/image'; +import { LinkCustom } from '@/shared/ui/link-custom'; +import { Subtitle } from '@/shared/ui/subtitle'; +import { Title, TitleType } from '@/shared/ui/title'; import './support.scss'; diff --git a/src/features/trainers/angular.data.ts b/src/widgets/trainers/angular.data.ts similarity index 90% rename from src/features/trainers/angular.data.ts rename to src/widgets/trainers/angular.data.ts index 63f46f2ac..bd4836255 100644 --- a/src/features/trainers/angular.data.ts +++ b/src/widgets/trainers/angular.data.ts @@ -1,11 +1,11 @@ import type { Trainer } from './trainers.types'; -import aSacca from '@/assets/mentors/a-sacca.webp'; -import aSerhiyenia from '@/assets/mentors/a-serhiyenia.webp'; -import dKohut from '@/assets/mentors/d-kohut.webp'; -import kBritsyn from '@/assets/mentors/k-britsyn.webp'; -import nLoginova from '@/assets/mentors/n-loginova.webp'; -import oDuleba from '@/assets/mentors/o-duleba.webp'; -import rSaltykov from '@/assets/mentors/r-saltykov.webp'; +import aSacca from '@/shared/assets/mentors/a-sacca.webp'; +import aSerhiyenia from '@/shared/assets/mentors/a-serhiyenia.webp'; +import dKohut from '@/shared/assets/mentors/d-kohut.webp'; +import kBritsyn from '@/shared/assets/mentors/k-britsyn.webp'; +import nLoginova from '@/shared/assets/mentors/n-loginova.webp'; +import oDuleba from '@/shared/assets/mentors/o-duleba.webp'; +import rSaltykov from '@/shared/assets/mentors/r-saltykov.webp'; export const angular: Trainer[] = [ { diff --git a/src/features/trainers/awsDev.data.ts b/src/widgets/trainers/awsDev.data.ts similarity index 89% rename from src/features/trainers/awsDev.data.ts rename to src/widgets/trainers/awsDev.data.ts index 6c9a58511..f39b833be 100644 --- a/src/features/trainers/awsDev.data.ts +++ b/src/widgets/trainers/awsDev.data.ts @@ -1,10 +1,10 @@ import type { Trainer } from './trainers.types'; -import awsImg3 from '@/assets/mentors/ac-akbarov.webp'; -import awsImg6 from '@/assets/mentors/ac-danilov.webp'; -import awsImg4 from '@/assets/mentors/ac-konyakhin.webp'; -import awsImg5 from '@/assets/mentors/ac-kustikov.webp'; -import awsImg2 from '@/assets/mentors/v-antonau.webp'; -import awsImg1 from '@/assets/mentors/v-kavaliou.webp'; +import awsImg3 from '@/shared/assets/mentors/ac-akbarov.webp'; +import awsImg6 from '@/shared/assets/mentors/ac-danilov.webp'; +import awsImg4 from '@/shared/assets/mentors/ac-konyakhin.webp'; +import awsImg5 from '@/shared/assets/mentors/ac-kustikov.webp'; +import awsImg2 from '@/shared/assets/mentors/v-antonau.webp'; +import awsImg1 from '@/shared/assets/mentors/v-kavaliou.webp'; export const awsDev: Trainer[] = [ { diff --git a/src/features/trainers/awsFundamentals.data.ts b/src/widgets/trainers/awsFundamentals.data.ts similarity index 90% rename from src/features/trainers/awsFundamentals.data.ts rename to src/widgets/trainers/awsFundamentals.data.ts index 48149907a..85e248763 100644 --- a/src/features/trainers/awsFundamentals.data.ts +++ b/src/widgets/trainers/awsFundamentals.data.ts @@ -1,6 +1,6 @@ import type { Trainer } from './trainers.types'; -import awsImg2 from '@/assets/mentors/v-antonau.webp'; -import awsImg1 from '@/assets/mentors/v-kavaliou.webp'; +import awsImg2 from '@/shared/assets/mentors/v-antonau.webp'; +import awsImg1 from '@/shared/assets/mentors/v-kavaliou.webp'; export const awsFundamentals: Trainer[] = [ { diff --git a/src/widgets/trainers/index.ts b/src/widgets/trainers/index.ts new file mode 100644 index 000000000..839e1950e --- /dev/null +++ b/src/widgets/trainers/index.ts @@ -0,0 +1 @@ +export { Trainers } from './ui/trainers'; diff --git a/src/features/trainers/nodejs.data.ts b/src/widgets/trainers/nodejs.data.ts similarity index 90% rename from src/features/trainers/nodejs.data.ts rename to src/widgets/trainers/nodejs.data.ts index bd3f28869..7dca633e1 100644 --- a/src/features/trainers/nodejs.data.ts +++ b/src/widgets/trainers/nodejs.data.ts @@ -1,7 +1,7 @@ import type { Trainer } from './trainers.types'; -import nodejsImg2 from '@/assets/mentors/a-auchynikau.webp'; -import nodejsImg1 from '@/assets/mentors/m-shylau.webp'; -import nodejsImg3 from '@/assets/mentors/v-antonau.webp'; +import nodejsImg2 from '@/shared/assets/mentors/a-auchynikau.webp'; +import nodejsImg1 from '@/shared/assets/mentors/m-shylau.webp'; +import nodejsImg3 from '@/shared/assets/mentors/v-antonau.webp'; export const nodejs: Trainer[] = [ { diff --git a/src/features/trainers/preSchool.data.ts b/src/widgets/trainers/preSchool.data.ts similarity index 95% rename from src/features/trainers/preSchool.data.ts rename to src/widgets/trainers/preSchool.data.ts index 50294091e..8b22b3299 100644 --- a/src/features/trainers/preSchool.data.ts +++ b/src/widgets/trainers/preSchool.data.ts @@ -1,6 +1,6 @@ import type { Trainer } from './trainers.types'; -import preSchoolImg2 from '@/assets/mentors/a-musikhina.webp'; -import preSchoolImg1 from '@/assets/mentors/v-kavaliou.webp'; +import preSchoolImg2 from '@/shared/assets/mentors/a-musikhina.webp'; +import preSchoolImg1 from '@/shared/assets/mentors/v-kavaliou.webp'; export const preSchoolRu: Trainer[] = [ { diff --git a/src/features/trainers/react-en.data.ts b/src/widgets/trainers/react-en.data.ts similarity index 86% rename from src/features/trainers/react-en.data.ts rename to src/widgets/trainers/react-en.data.ts index eb0c5540f..b5222c9d7 100644 --- a/src/features/trainers/react-en.data.ts +++ b/src/widgets/trainers/react-en.data.ts @@ -1,10 +1,10 @@ import type { Trainer } from './trainers.types'; -import artsiomParfianenkau from '@/assets/mentors/a-parfianenkau.webp'; -import andrejPodlubnyj from '@/assets/mentors/a-podlubnyj.webp'; -import dzmitryYarmoshkin from '@/assets/mentors/d-yarmoshkin.png'; -import iharKrasiuk from '@/assets/mentors/i-krasiuk.webp'; -import marharytaMalets from '@/assets/mentors/m-malets.webp'; -import valeryDluski from '@/assets/mentors/v-dluski.webp'; +import artsiomParfianenkau from '@/shared/assets/mentors/a-parfianenkau.webp'; +import andrejPodlubnyj from '@/shared/assets/mentors/a-podlubnyj.webp'; +import dzmitryYarmoshkin from '@/shared/assets/mentors/d-yarmoshkin.png'; +import iharKrasiuk from '@/shared/assets/mentors/i-krasiuk.webp'; +import marharytaMalets from '@/shared/assets/mentors/m-malets.webp'; +import valeryDluski from '@/shared/assets/mentors/v-dluski.webp'; export const reactEn: Trainer[] = [ { diff --git a/src/features/trainers/react-ru.data.ts b/src/widgets/trainers/react-ru.data.ts similarity index 90% rename from src/features/trainers/react-ru.data.ts rename to src/widgets/trainers/react-ru.data.ts index 0ee64a8c9..07057cdeb 100644 --- a/src/features/trainers/react-ru.data.ts +++ b/src/widgets/trainers/react-ru.data.ts @@ -1,8 +1,8 @@ import type { Trainer } from './trainers.types'; -import reactRuImg3 from '@/assets/mentors/d-cebruk.webp'; -import reactRuImg2 from '@/assets/mentors/p-razuvalov.webp'; -import reactRuImg4 from '@/assets/mentors/s-shalyapin.webp'; -import reactRuImg1 from '@/assets/mentors/v-kovalev.webp'; +import reactRuImg3 from '@/shared/assets/mentors/d-cebruk.webp'; +import reactRuImg2 from '@/shared/assets/mentors/p-razuvalov.webp'; +import reactRuImg4 from '@/shared/assets/mentors/s-shalyapin.webp'; +import reactRuImg1 from '@/shared/assets/mentors/v-kovalev.webp'; export const reactRu: Trainer[] = [ { diff --git a/src/features/trainers/trainers.test.tsx b/src/widgets/trainers/trainers.test.tsx similarity index 96% rename from src/features/trainers/trainers.test.tsx rename to src/widgets/trainers/trainers.test.tsx index 539a5f488..f87c40777 100644 --- a/src/features/trainers/trainers.test.tsx +++ b/src/widgets/trainers/trainers.test.tsx @@ -1,10 +1,11 @@ import { render, screen } from '@testing-library/react'; -import { Trainers } from './trainers'; + +import { Trainers } from './ui/trainers'; import { MOCKED_MULTIPLE_TRAINERS, MOCKED_ONE_TRAINER, MOCKED_SEVERAL_TRAINERS, -} from '@/__tests__/constants.ts'; +} from '@/shared/__tests__/constants'; describe('Trainer', () => { it('renders the title correctly when 1 trainer', () => { diff --git a/src/features/trainers/trainers.types.ts b/src/widgets/trainers/trainers.types.ts similarity index 100% rename from src/features/trainers/trainers.types.ts rename to src/widgets/trainers/trainers.types.ts diff --git a/src/features/trainers/trainer-card.tsx b/src/widgets/trainers/ui/trainers-card/trainer-card.tsx similarity index 76% rename from src/features/trainers/trainer-card.tsx rename to src/widgets/trainers/ui/trainers-card/trainer-card.tsx index 2e2550470..218365dda 100644 --- a/src/features/trainers/trainer-card.tsx +++ b/src/widgets/trainers/ui/trainers-card/trainer-card.tsx @@ -1,7 +1,7 @@ -import type { Trainer } from './trainers.types'; -import Image from '@/features/image'; +import { Trainer } from '../../trainers.types'; +import Image from '@/shared/ui/image'; -interface TrainerProps extends Trainer {} +interface TrainerProps extends Trainer { } export const TrainerCard = ({ name, bio, role, photo }: TrainerProps) => { return ( diff --git a/src/features/trainers/trainers.scss b/src/widgets/trainers/ui/trainers.scss similarity index 100% rename from src/features/trainers/trainers.scss rename to src/widgets/trainers/ui/trainers.scss diff --git a/src/features/trainers/trainers.tsx b/src/widgets/trainers/ui/trainers.tsx similarity index 87% rename from src/features/trainers/trainers.tsx rename to src/widgets/trainers/ui/trainers.tsx index 829663e09..8d2eba5dc 100644 --- a/src/features/trainers/trainers.tsx +++ b/src/widgets/trainers/ui/trainers.tsx @@ -1,6 +1,6 @@ -import { TrainerCard } from './trainer-card'; -import { Title } from '@/app/components'; -import { Trainer } from '@/features/trainers/trainers.types.ts'; +import { TrainerCard } from './trainers-card/trainer-card'; +import { Title } from '@/shared/ui/title'; +import { Trainer } from '@/widgets/trainers/trainers.types'; import './trainers.scss'; diff --git a/src/widgets/training-program/index.ts b/src/widgets/training-program/index.ts new file mode 100644 index 000000000..f9d69819b --- /dev/null +++ b/src/widgets/training-program/index.ts @@ -0,0 +1 @@ +export { TrainingProgram } from './ui/training-program'; diff --git a/src/features/training-program/training-program.data.tsx b/src/widgets/training-program/training-program.data.tsx similarity index 94% rename from src/features/training-program/training-program.data.tsx rename to src/widgets/training-program/training-program.data.tsx index 14f3abe6d..067b14f26 100644 --- a/src/features/training-program/training-program.data.tsx +++ b/src/widgets/training-program/training-program.data.tsx @@ -1,14 +1,16 @@ import { Link } from 'react-router-dom'; -import { Actions, Paragraph, Subtitle } from '@/app/components'; -import awsPractitionerBadge from '@/assets/aws-cloud-pract-badge.webp'; -import angularImg from '@/assets/rs-slope-angular.webp'; -import awsDevImg from '@/assets/rs-slope-aws-dev.webp'; -import awsFundamentalsImg from '@/assets/rs-slope-aws-fundamentals.webp'; -import jsImg from '@/assets/rs-slope-js.webp'; -import nodejsImg from '@/assets/rs-slope-nodejs.webp'; -import reactEnImg from '@/assets/rs-slope-react-en.webp'; -import reactRuImg from '@/assets/rs-slope-react-ru.webp'; +import awsPractitionerBadge from '@/shared/assets/aws-cloud-pract-badge.webp'; +import angularImg from '@/shared/assets/rs-slope-angular.webp'; +import awsDevImg from '@/shared/assets/rs-slope-aws-dev.webp'; +import awsFundamentalsImg from '@/shared/assets/rs-slope-aws-fundamentals.webp'; +import jsImg from '@/shared/assets/rs-slope-js.webp'; +import nodejsImg from '@/shared/assets/rs-slope-nodejs.webp'; +import reactEnImg from '@/shared/assets/rs-slope-react-en.webp'; +import reactRuImg from '@/shared/assets/rs-slope-react-ru.webp'; +import { Actions } from '@/shared/ui/actions/actions'; +import { Paragraph } from '@/shared/ui/paragraph'; +import { Subtitle } from '@/shared/ui/subtitle'; export type CourseNames = | 'aws cloud dev' diff --git a/src/features/training-program/training-program.test.tsx b/src/widgets/training-program/training-program.test.tsx similarity index 93% rename from src/features/training-program/training-program.test.tsx rename to src/widgets/training-program/training-program.test.tsx index a7aeda38f..2e35643c9 100644 --- a/src/features/training-program/training-program.test.tsx +++ b/src/widgets/training-program/training-program.test.tsx @@ -1,11 +1,11 @@ import { screen } from '@testing-library/react'; import { type Mock, beforeEach, vi } from 'vitest'; -import { TrainingProgram } from './training-program'; -import { renderWithRouter } from '@/__tests__/utils'; +import { TrainingProgram } from './ui/training-program'; import { ROUTES } from '@/app/const'; -import { useCourseByTitle } from '@/app/hooks'; +import { renderWithRouter } from '@/shared/__tests__/utils'; +import { useCourseByTitle } from '@/shared/hooks/use-course-by-title'; -vi.mock('@/app/hooks'); +vi.mock('@/shared/hooks/use-course-by-title'); describe('TrainingProgram', () => { describe('with "angular" props', () => { diff --git a/src/features/training-program/training-program.scss b/src/widgets/training-program/ui/training-program.scss similarity index 100% rename from src/features/training-program/training-program.scss rename to src/widgets/training-program/ui/training-program.scss diff --git a/src/features/training-program/training-program.tsx b/src/widgets/training-program/ui/training-program.tsx similarity index 82% rename from src/features/training-program/training-program.tsx rename to src/widgets/training-program/ui/training-program.tsx index 7f57c3eba..1b3cc7056 100644 --- a/src/features/training-program/training-program.tsx +++ b/src/widgets/training-program/ui/training-program.tsx @@ -1,10 +1,12 @@ import { cloneElement } from 'react'; -import { type CourseNames, contentMap } from './training-program.data'; -import { LinkCustom, Title } from '@/app/components'; -import { useCourseByTitle } from '@/app/hooks'; +import { type CourseNames, contentMap } from '../training-program.data'; + import type { Course } from '@/app/types'; -import Image from '@/features/image'; -import { ArrowIcon } from '@/icons'; +import { useCourseByTitle } from '@/shared/hooks/use-course-by-title'; +import { ArrowIcon } from '@/shared/icons'; +import Image from '@/shared/ui/image'; +import { LinkCustom } from '@/shared/ui/link-custom'; +import { Title } from '@/shared/ui/title'; import './training-program.scss'; diff --git a/tsconfig.json b/tsconfig.json index a220688e9..9da589def 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,10 +2,13 @@ "compilerOptions": { "target": "ES2020", "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": [ + "ES2020", + "DOM", + "DOM.Iterable" + ], "module": "ESNext", "skipLibCheck": true, - /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, @@ -13,27 +16,38 @@ "isolatedModules": true, "noEmit": true, "jsx": "react-jsx", - /* Linting */ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, - "types": ["node", "@testing-library/jest-dom", "vitest/globals"], + "types": [ + "node", + "@testing-library/jest-dom", + "vitest/globals" + ], "baseUrl": "./src", "paths": { - "@/*": ["*"] + "@/*": [ + "*" + ] } }, "include": [ "src", "src/**/*.ts", "src/**/*.tsx", - "src/__tests__/setup-tests.ts", - "src/__tests__/visualTesting/main.spec.ts", - "src/__tests__/visualTesting/navbar.spec.ts", - "src/__tests__/visualTesting/footer.spec.ts" + "src/shared/__tests__/setup-tests.ts", + "src/shared/__tests__/visualTesting/main.spec.ts", + "src/shared/__tests__/visualTesting/navbar.spec.ts", + "src/shared/__tests__/visualTesting/footer.spec.ts" ], - "exclude": ["node_modules"], - "references": [{ "path": "./tsconfig.node.json" }] -} + "exclude": [ + "node_modules" + ], + "references": [ + { + "path": "./tsconfig.node.json" + } + ] +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index d976c6bd7..647bd68ed 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -20,9 +20,10 @@ export default defineConfig({ preprocessorOptions: { scss: { additionalData: ` - @import "./src/styles/_constants.scss"; - @import "./src/styles/_mixins.scss"; - @import "./src/styles/_placeholders.scss"; + @import "./src/app/styles/_constants.scss"; + @import "./src/app/styles/_mixins.scss"; + @import "./src/app/styles/_placeholders.scss"; + @import "./src/app/styles/_normalize.scss"; `, }, }, diff --git a/vitest.config.ts b/vitest.config.ts index 5a0eaea29..a1dd8ccfa 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -13,7 +13,7 @@ export default defineConfig({ test: { environment: 'jsdom', globals: true, - setupFiles: ['src/__tests__/setup-tests.ts'], + setupFiles: ['src/shared/__tests__/setup-tests.ts'], exclude: [ '**/node_modules/**', '**/dist/**',