diff --git a/src/app/consent/page.tsx b/src/app/consent/page.tsx
index c3b77e8..56fc255 100644
--- a/src/app/consent/page.tsx
+++ b/src/app/consent/page.tsx
@@ -1,6 +1,6 @@
-import PageContainer from "@/components/PageContainer/PageContainer";
-import PageItem from "@/components/PageBlock/PageItem";
-import Logo from "@/components/Logo/Logo";
+import PageContainer from "@/components/layout/PageContainer/PageContainer";
+import PageItem from "@/components/layout/PageBlock/PageItem";
+import Logo from "@/components/ui/Logo/Logo";
import ConsentForm from "@/app/consent/components/ConsentForm/ConsentForm";
diff --git a/src/app/create-id/page.tsx b/src/app/create-id/page.tsx
index bf92600..7779a88 100644
--- a/src/app/create-id/page.tsx
+++ b/src/app/create-id/page.tsx
@@ -1,7 +1,7 @@
-import LoginForm from "@/components/LoginForm/LoginForm";
-import Logo from "@/components/Logo/Logo";
-import PageItem from "@/components/PageBlock/PageItem";
-import PageContainer from "@/components/PageContainer/PageContainer";
+import LoginForm from "@/components/features/LoginForm/LoginForm";
+import Logo from "@/components/ui/Logo/Logo";
+import PageItem from "@/components/layout/PageBlock/PageItem";
+import PageContainer from "@/components/layout/PageContainer/PageContainer";
export default function CreateIdPage() {
return (
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index a78d5ba..8d4b3c7 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -6,11 +6,11 @@ import {
mantineHtmlProps,
MantineProvider,
} from "@mantine/core";
-import Header from "@/components/Header/Header";
+import Header from "@/components/layout/Header/Header";
import { theme } from "@/theme";
import "@/app/global.css";
import { Notifications } from "@mantine/notifications";
-import Footer from "@/components/Footer/Footer";
+import Footer from "@/components/layout/Footer/Footer";
import ReduxProvider from "@/providers/ReduxProvider";
export const metadata = {
diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx
index 4c43769..b66cfd1 100644
--- a/src/app/login/page.tsx
+++ b/src/app/login/page.tsx
@@ -1,7 +1,7 @@
-import LoginForm from "@/components/LoginForm/LoginForm";
-import Logo from "@/components/Logo/Logo";
-import PageItem from "@/components/PageBlock/PageItem";
-import PageContainer from "@/components/PageContainer/PageContainer";
+import LoginForm from "@/components/features/LoginForm/LoginForm";
+import PageItem from "@/components/layout/PageBlock/PageItem";
+import PageContainer from "@/components/layout/PageContainer/PageContainer";
+import Logo from "@/components/ui/Logo/Logo";
interface LoginPageProps {
searchParams: Promise<{ login_challenge?: string }>;
diff --git a/src/app/services/components/ServicesList/ServicesList.tsx b/src/app/services/components/ServicesList/ServicesList.tsx
index ef72e02..7661072 100644
--- a/src/app/services/components/ServicesList/ServicesList.tsx
+++ b/src/app/services/components/ServicesList/ServicesList.tsx
@@ -4,7 +4,7 @@ import { useMemo } from "react";
import { redirect } from "next/navigation";
import { Button, Stack, Title } from "@mantine/core";
import styles from "@/app/services/components/ServicesList/ServicesList.module.css";
-import TitleWithLines from "@/components/TitleWithLines/TitleWithLines";
+import TitleWithLines from "@/components/ui/TitleWithLines/TitleWithLines";
import SCOPES from "@/constants/scopes";
import { Scopes } from "@/enums/Scopes";
import { setTargetService } from "@/lib/store/features/targetService/targetServiceSlice";
diff --git a/src/app/services/page.tsx b/src/app/services/page.tsx
index fb31ded..7c998d6 100644
--- a/src/app/services/page.tsx
+++ b/src/app/services/page.tsx
@@ -1,6 +1,6 @@
-import Logo from "@/components/Logo/Logo";
-import PageItem from "@/components/PageBlock/PageItem";
-import PageContainer from "@/components/PageContainer/PageContainer";
+import Logo from "@/components/ui/Logo/Logo";
+import PageItem from "@/components/layout/PageBlock/PageItem";
+import PageContainer from "@/components/layout/PageContainer/PageContainer";
import ServicesList from "@/app/services/components/ServicesList/ServicesList";
export default function ServicesPage() {
diff --git a/src/app/verify-phone/page.tsx b/src/app/verify-phone/page.tsx
index bb85c6f..91ca710 100644
--- a/src/app/verify-phone/page.tsx
+++ b/src/app/verify-phone/page.tsx
@@ -1,7 +1,7 @@
-import Logo from "@/components/Logo/Logo";
-import PageItem from "@/components/PageBlock/PageItem";
-import PageContainer from "@/components/PageContainer/PageContainer";
import VerifyPhoneForm from "@/app/verify-phone/components/VerifyPhoneForm/VerifyPhoneForm";
+import PageItem from "@/components/layout/PageBlock/PageItem";
+import PageContainer from "@/components/layout/PageContainer/PageContainer";
+import Logo from "@/components/ui/Logo/Logo";
export default function CreateIdPage() {
return (
diff --git a/src/components/MotionWrapper/MotionWrapper.tsx b/src/components/MotionWrapper/MotionWrapper.tsx
deleted file mode 100644
index 2b4e1d2..0000000
--- a/src/components/MotionWrapper/MotionWrapper.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-'use client';
-
-import { motion, MotionProps } from 'framer-motion';
-import { ReactNode } from 'react';
-
-interface MotionWrapperProps extends MotionProps {
- children: ReactNode;
-}
-
-export function MotionWrapper({ children, ...props }: MotionWrapperProps) {
- return {children};
-}
\ No newline at end of file
diff --git a/src/components/LoginForm/LoginForm.tsx b/src/components/features/LoginForm/LoginForm.tsx
similarity index 98%
rename from src/components/LoginForm/LoginForm.tsx
rename to src/components/features/LoginForm/LoginForm.tsx
index 343f59d..f6d66a5 100644
--- a/src/components/LoginForm/LoginForm.tsx
+++ b/src/components/features/LoginForm/LoginForm.tsx
@@ -5,7 +5,7 @@ import { useRouter } from "next/navigation";
import { Button, Stack } from "@mantine/core";
import { useForm } from "@mantine/form";
import { Auth } from "@/client";
-import PhoneInput from "@/components/PhoneInput/PhoneInput";
+import PhoneInput from "@/components/ui/PhoneInput/PhoneInput";
import {
setLoginChallenge,
setPhoneNumber,
diff --git a/src/components/Footer/Footer.tsx b/src/components/layout/Footer/Footer.tsx
similarity index 100%
rename from src/components/Footer/Footer.tsx
rename to src/components/layout/Footer/Footer.tsx
diff --git a/src/components/Header/Header.tsx b/src/components/layout/Header/Header.tsx
similarity index 73%
rename from src/components/Header/Header.tsx
rename to src/components/layout/Header/Header.tsx
index aa1bc68..3386ce8 100644
--- a/src/components/Header/Header.tsx
+++ b/src/components/layout/Header/Header.tsx
@@ -1,5 +1,5 @@
import { Group } from "@mantine/core";
-import { ColorSchemeToggle } from "@/components/ColorSchemeToggle/ColorSchemeToggle";
+import { ColorSchemeToggle } from "@/components/ui/ColorSchemeToggle/ColorSchemeToggle";
const Header = () => {
return (
diff --git a/src/components/layout/MotionWrapper/MotionWrapper.tsx b/src/components/layout/MotionWrapper/MotionWrapper.tsx
new file mode 100644
index 0000000..c1da8d8
--- /dev/null
+++ b/src/components/layout/MotionWrapper/MotionWrapper.tsx
@@ -0,0 +1,12 @@
+"use client";
+
+import { ReactNode } from "react";
+import { motion, MotionProps } from "framer-motion";
+
+interface MotionWrapperProps extends MotionProps {
+ children: ReactNode;
+}
+
+export function MotionWrapper({ children, ...props }: MotionWrapperProps) {
+ return {children};
+}
diff --git a/src/components/PageBlock/PageItem.module.css b/src/components/layout/PageBlock/PageItem.module.css
similarity index 100%
rename from src/components/PageBlock/PageItem.module.css
rename to src/components/layout/PageBlock/PageItem.module.css
diff --git a/src/components/PageBlock/PageItem.tsx b/src/components/layout/PageBlock/PageItem.tsx
similarity index 93%
rename from src/components/PageBlock/PageItem.tsx
rename to src/components/layout/PageBlock/PageItem.tsx
index 6d2449a..d1ee17e 100644
--- a/src/components/PageBlock/PageItem.tsx
+++ b/src/components/layout/PageBlock/PageItem.tsx
@@ -1,6 +1,6 @@
import { CSSProperties, FC, ReactNode } from "react";
import classNames from "classnames";
-import { MotionWrapper } from "@/components/MotionWrapper/MotionWrapper";
+import { MotionWrapper } from "@/components/layout/MotionWrapper/MotionWrapper";
import styles from "./PageItem.module.css";
type Props = {
diff --git a/src/components/PageContainer/PageContainer.module.css b/src/components/layout/PageContainer/PageContainer.module.css
similarity index 100%
rename from src/components/PageContainer/PageContainer.module.css
rename to src/components/layout/PageContainer/PageContainer.module.css
diff --git a/src/components/PageContainer/PageContainer.tsx b/src/components/layout/PageContainer/PageContainer.tsx
similarity index 100%
rename from src/components/PageContainer/PageContainer.tsx
rename to src/components/layout/PageContainer/PageContainer.tsx
diff --git a/src/components/ColorSchemeToggle/ColorSchemeToggle.module.css b/src/components/ui/ColorSchemeToggle/ColorSchemeToggle.module.css
similarity index 100%
rename from src/components/ColorSchemeToggle/ColorSchemeToggle.module.css
rename to src/components/ui/ColorSchemeToggle/ColorSchemeToggle.module.css
diff --git a/src/components/ColorSchemeToggle/ColorSchemeToggle.tsx b/src/components/ui/ColorSchemeToggle/ColorSchemeToggle.tsx
similarity index 92%
rename from src/components/ColorSchemeToggle/ColorSchemeToggle.tsx
rename to src/components/ui/ColorSchemeToggle/ColorSchemeToggle.tsx
index 7783b82..1b5ba66 100644
--- a/src/components/ColorSchemeToggle/ColorSchemeToggle.tsx
+++ b/src/components/ui/ColorSchemeToggle/ColorSchemeToggle.tsx
@@ -7,7 +7,7 @@ import {
useComputedColorScheme,
useMantineColorScheme,
} from "@mantine/core";
-import style from "@/components/ColorSchemeToggle/ColorSchemeToggle.module.css";
+import style from "./ColorSchemeToggle.module.css";
export function ColorSchemeToggle() {
const { setColorScheme } = useMantineColorScheme();
diff --git a/src/components/Logo/Logo.tsx b/src/components/ui/Logo/Logo.tsx
similarity index 100%
rename from src/components/Logo/Logo.tsx
rename to src/components/ui/Logo/Logo.tsx
diff --git a/src/components/PhoneInput/PhoneInput.module.css b/src/components/ui/PhoneInput/PhoneInput.module.css
similarity index 100%
rename from src/components/PhoneInput/PhoneInput.module.css
rename to src/components/ui/PhoneInput/PhoneInput.module.css
diff --git a/src/components/PhoneInput/PhoneInput.tsx b/src/components/ui/PhoneInput/PhoneInput.tsx
similarity index 90%
rename from src/components/PhoneInput/PhoneInput.tsx
rename to src/components/ui/PhoneInput/PhoneInput.tsx
index affbfe8..38a6c31 100644
--- a/src/components/PhoneInput/PhoneInput.tsx
+++ b/src/components/ui/PhoneInput/PhoneInput.tsx
@@ -7,10 +7,10 @@ import {
type InputBaseProps,
type PolymorphicComponentProps,
} from "@mantine/core";
-import CountrySelect from "@/components/PhoneInput/components/CountrySelect";
-import { Country } from "@/components/PhoneInput/types";
-import getInitialDataFromValue from "@/components/PhoneInput/utils/getInitialDataFromValue";
-import getPhoneMask from "@/components/PhoneInput/utils/getPhoneMask";
+import CountrySelect from "@/components/ui/PhoneInput/components/CountrySelect";
+import { Country } from "@/components/ui/PhoneInput/types";
+import getInitialDataFromValue from "@/components/ui/PhoneInput/utils/getInitialDataFromValue";
+import getPhoneMask from "@/components/ui/PhoneInput/utils/getPhoneMask";
type AdditionalProps = {
onChange: (value: string | null) => void;
diff --git a/src/components/PhoneInput/components/CountrySelect.tsx b/src/components/ui/PhoneInput/components/CountrySelect.tsx
similarity index 94%
rename from src/components/PhoneInput/components/CountrySelect.tsx
rename to src/components/ui/PhoneInput/components/CountrySelect.tsx
index 137a544..f4893c8 100644
--- a/src/components/PhoneInput/components/CountrySelect.tsx
+++ b/src/components/ui/PhoneInput/components/CountrySelect.tsx
@@ -10,9 +10,10 @@ import {
Text,
useCombobox,
} from "@mantine/core";
-import style from "@/components/PhoneInput/PhoneInput.module.css";
-import { Country } from "@/components/PhoneInput/types";
-import countryOptionsDataMap from "@/components/PhoneInput/utils/countryOptionsDataMap";
+import style from "@/components/ui/PhoneInput/PhoneInput.module.css";
+import { Country } from "@/components/ui/PhoneInput/types";
+import countryOptionsDataMap from "@/components/ui/PhoneInput/utils/countryOptionsDataMap";
+
const countryOptionsData = Object.values(countryOptionsDataMap);
diff --git a/src/components/PhoneInput/types.ts b/src/components/ui/PhoneInput/types.ts
similarity index 100%
rename from src/components/PhoneInput/types.ts
rename to src/components/ui/PhoneInput/types.ts
diff --git a/src/components/PhoneInput/utils/countryOptionsDataMap.ts b/src/components/ui/PhoneInput/utils/countryOptionsDataMap.ts
similarity index 88%
rename from src/components/PhoneInput/utils/countryOptionsDataMap.ts
rename to src/components/ui/PhoneInput/utils/countryOptionsDataMap.ts
index a3630e6..313c72d 100644
--- a/src/components/PhoneInput/utils/countryOptionsDataMap.ts
+++ b/src/components/ui/PhoneInput/utils/countryOptionsDataMap.ts
@@ -1,9 +1,9 @@
import countries from "i18n-iso-countries";
import ru from "i18n-iso-countries/langs/ru.json";
import { type CountryCode, getCountries } from "libphonenumber-js";
-import getFlagEmoji from "@/components/PhoneInput/utils/getFlagEmoji";
+import getFlagEmoji from "@/components/ui/PhoneInput/utils/getFlagEmoji";
import { getCountryCallingCode } from "libphonenumber-js/max";
-import { Country } from "@/components/PhoneInput/types";
+import { Country } from "@/components/ui/PhoneInput/types";
countries.registerLocale(ru);
diff --git a/src/components/PhoneInput/utils/getFlagEmoji.ts b/src/components/ui/PhoneInput/utils/getFlagEmoji.ts
similarity index 100%
rename from src/components/PhoneInput/utils/getFlagEmoji.ts
rename to src/components/ui/PhoneInput/utils/getFlagEmoji.ts
diff --git a/src/components/PhoneInput/utils/getInitialDataFromValue.ts b/src/components/ui/PhoneInput/utils/getInitialDataFromValue.ts
similarity index 65%
rename from src/components/PhoneInput/utils/getInitialDataFromValue.ts
rename to src/components/ui/PhoneInput/utils/getInitialDataFromValue.ts
index 13f9f3e..a285d3b 100644
--- a/src/components/PhoneInput/utils/getInitialDataFromValue.ts
+++ b/src/components/ui/PhoneInput/utils/getInitialDataFromValue.ts
@@ -1,7 +1,7 @@
import { CountryCode } from "libphonenumber-js";
-import { Country } from "@/components/PhoneInput/types";
-import countryOptionsDataMap from "@/components/PhoneInput/utils/countryOptionsDataMap";
-import getPhoneMask from "@/components/PhoneInput/utils/getPhoneMask";
+import { Country } from "@/components/ui/PhoneInput/types";
+import countryOptionsDataMap from "@/components/ui/PhoneInput/utils/countryOptionsDataMap";
+import getPhoneMask from "@/components/ui/PhoneInput/utils/getPhoneMask";
type InitialDataFromValue = {
country: Country;
diff --git a/src/components/PhoneInput/utils/getPhoneMask.ts b/src/components/ui/PhoneInput/utils/getPhoneMask.ts
similarity index 100%
rename from src/components/PhoneInput/utils/getPhoneMask.ts
rename to src/components/ui/PhoneInput/utils/getPhoneMask.ts
diff --git a/src/components/TitleWithLines/TitleWithLines.tsx b/src/components/ui/TitleWithLines/TitleWithLines.tsx
similarity index 100%
rename from src/components/TitleWithLines/TitleWithLines.tsx
rename to src/components/ui/TitleWithLines/TitleWithLines.tsx