diff --git a/src/pages/profile-create-project-page/ui/profile-create-project-page.tsx b/src/pages/profile-create-project-page/ui/profile-create-project-page.tsx
index 54ce74dc..cc9f2441 100644
--- a/src/pages/profile-create-project-page/ui/profile-create-project-page.tsx
+++ b/src/pages/profile-create-project-page/ui/profile-create-project-page.tsx
@@ -1,9 +1,14 @@
+import {
+ FormProject,
+ FormProjectSpecialists,
+} from '@/widgets';
import React from 'react';
export const ProfileCreateProject = () => {
return (
-
- Форма создания проекта
-
+ <>
+
+
+ >
);
};
diff --git a/src/services/AttributesService.ts b/src/services/AttributesService.ts
index d0d037c2..2cbf00cb 100644
--- a/src/services/AttributesService.ts
+++ b/src/services/AttributesService.ts
@@ -1,7 +1,5 @@
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
-// const BASE_DEV_URL = process.env.NEXT_PUBLIC_BASE_DEV_URL;
-// const BASE_TEST_URL = process.env.NEXT_PUBLIC_BASE_TEST_URL;
const BASE_URL = process.env.NEXT_PUBLIC_BASE_URL;
export const attributesApi = createApi({
@@ -12,17 +10,23 @@ export const attributesApi = createApi({
endpoints: (builder) => ({
getSkills: builder.query({
query: () => ({
- url: '/api/v1/skills/',
+ url: '/skills/',
method: 'GET',
}),
}),
getProfessions: builder.query({
query: () => ({
- url: '/api/v1/professions/',
+ url: '/professions/',
+ method: 'GET',
+ }),
+ }),
+ getDirections: builder.query({
+ query: () => ({
+ url: '/projects/directions/',
method: 'GET',
}),
}),
}),
});
-export const { useGetSkillsQuery, useGetProfessionsQuery } = attributesApi;
+export const { useGetSkillsQuery, useGetProfessionsQuery, useGetDirectionsQuery } = attributesApi;
diff --git a/src/widgets/form-project-details/ui/form-project.module.scss b/src/widgets/form-project-details/ui/form-project.module.scss
new file mode 100644
index 00000000..c5bfcd41
--- /dev/null
+++ b/src/widgets/form-project-details/ui/form-project.module.scss
@@ -0,0 +1,134 @@
+@import '@/shared/assets/fonts/fonts.css';
+@import '@/shared/style/variables';
+
+.container {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ row-gap: 20px;
+ width: 816px;
+ padding: 32px;
+ background-color: $--bg-primary;
+ border: 1px solid $--border-default;
+ border-radius: 12px;
+ margin-bottom: 35px;
+
+ @media screen and (max-width: 779px) {
+ gap: 13px;
+ max-width: 779px;
+ }
+}
+
+.input_extra > span {
+ font-weight: 700;
+}
+
+
+
+.input_list {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ font-weight: 700;
+
+ &_title {
+ margin: 0;
+ font-family: $--open-sans-font;
+ font-weight: 700;
+ font-size: 16px;
+ font-style: normal;
+ line-height: 150%;
+ }
+}
+.directions,
+.employment {
+ width: 100%;
+
+ &_list {
+ width: 100%;
+ padding: 0;
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 18px;
+ }
+
+ &_item {
+ list-style: none;
+ padding: 0;
+ }
+}
+
+.specialists {
+ width: 100%;
+ font-family: $--open-sans-font;
+ font-weight: 400;
+ display: flex;
+ flex-direction: column;
+ gap: 24px;
+
+ &_master_title {
+ font-weight: 700;
+ margin: 0;
+ font-size: 32px;
+ }
+ &_toggle {
+ display: flex;
+ gap: 16px;
+ align-items: center;
+ }
+
+ &_buttons {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ margin-bottom: 32px;
+ }
+}
+
+.dates {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+
+ &_inputs {
+ // margin: 0 0 16px 0;
+ display: flex;
+ gap: 8px;
+ }
+
+ &_input {
+ width: 100%;
+ }
+
+ &_text {
+ margin: 0 0 8px 0;
+ font-family: $--open-sans-font;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 24px; /* 150% */
+ letter-spacing: 0.25px;
+ }
+}
+
+.contacts {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+
+ &_selects {
+ display: grid;
+ gap: 8px;
+ grid-template-columns: 228px auto;
+ height: 70px;
+ }
+}
+
+.buttons {
+ display: flex;
+ gap: 16px;
+}
diff --git a/src/widgets/form-project-details/ui/form-project.tsx b/src/widgets/form-project-details/ui/form-project.tsx
new file mode 100644
index 00000000..a51152ad
--- /dev/null
+++ b/src/widgets/form-project-details/ui/form-project.tsx
@@ -0,0 +1,123 @@
+'use client';
+import React from 'react';
+import styles from './form-project.module.scss';
+import { CheckboxAndRadio, Form, Input, MainButton } from '@/shared/ui';
+import { TextEditor } from '@/shared/ui/text-editor/text-editor';
+import { CONTACTS, DEVELOPING, EMPLOYMENT } from '@/utils/constants';
+import { DatePickerRHF } from '@/shared/ui/date-picker-rhf/date-picker-rhf';
+import { useForm } from 'react-hook-form';
+import { SingleSelectInput } from '@/shared/ui/single-select-input/single-select-input';
+import { Plus } from 'lucide-react';
+
+export const FormProject = () => {
+ const { control } = useForm();
+ return (
+
+ );
+};
diff --git a/src/widgets/form-project-specialists/ui/form-project-specialists.module.scss b/src/widgets/form-project-specialists/ui/form-project-specialists.module.scss
new file mode 100644
index 00000000..13346d96
--- /dev/null
+++ b/src/widgets/form-project-specialists/ui/form-project-specialists.module.scss
@@ -0,0 +1,130 @@
+@import '@/shared/assets/fonts/fonts.css';
+@import '@/shared/style/variables';
+
+.container {
+ display: flex;
+ flex-direction: column;
+ align-items: flex-start;
+ width: 816px;
+ padding: 32px;
+ background-color: $--bg-primary;
+ border: 1px solid $--border-default;
+ border-radius: 12px;
+
+ @media screen and (max-width: 779px) {
+ gap: 13px;
+ max-width: 779px;
+ }
+}
+
+.input_extra > span {
+ font-weight: 700;
+}
+
+.input_list {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ font-weight: 700;
+
+ &_title {
+ margin: 0;
+ font-family: $--open-sans-font;
+ font-weight: 700;
+ font-size: 16px;
+ font-style: normal;
+ line-height: 150%;
+ }
+}
+.directions,
+.employment {
+ width: 100%;
+
+ &_list {
+ width: 100%;
+ padding: 0;
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 18px;
+ }
+
+ &_item {
+ list-style: none;
+ padding: 0;
+ }
+}
+
+.specialists {
+ width: 100%;
+ font-family: $--open-sans-font;
+ font-weight: 400;
+ display: flex;
+ flex-direction: column;
+ gap: 24px;
+
+ &_master_title {
+ margin: 0;
+ font-weight: 700;
+ font-size: 32px;
+ }
+ &_toggle {
+ display: flex;
+ gap: 16px;
+ align-items: center;
+ }
+
+ &_buttons {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+
+ margin-bottom: 32px;
+ }
+}
+
+.dates {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+
+ &_inputs {
+ // margin: 0 0 16px 0;
+ display: flex;
+ gap: 8px;
+ }
+
+ &_input {
+ width: 100%;
+ }
+
+ &_text {
+ margin: 0 0 8px 0;
+ font-family: $--open-sans-font;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: 24px; /* 150% */
+ letter-spacing: 0.25px;
+ }
+}
+
+.contacts {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+
+ &_selects {
+ display: grid;
+ gap: 8px;
+ grid-template-columns: 228px auto;
+ height: 70px;
+ }
+}
+
+.buttons {
+ display: flex;
+ gap: 16px;
+}
diff --git a/src/widgets/form-project-specialists/ui/form-project-specialists.tsx b/src/widgets/form-project-specialists/ui/form-project-specialists.tsx
new file mode 100644
index 00000000..9e49c92f
--- /dev/null
+++ b/src/widgets/form-project-specialists/ui/form-project-specialists.tsx
@@ -0,0 +1,82 @@
+'use client';
+import React, { useState } from 'react';
+import styles from './form-project-specialists.module.scss';
+import { Form, Toggler } from '@/shared/ui';
+import { SingleSelectInput } from '@/shared/ui/single-select-input/single-select-input';
+import { MultiSelectInput } from '@/shared/ui/multi-select-input/multi-select-input';
+import { LEVEL } from '@/utils/constants';
+import {
+ useGetProfessionsQuery,
+ useGetSkillsQuery,
+} from '@/services/AttributesService';
+
+export const FormProjectSpecialists = () => {
+ const [recruitmentIsOpen, setRecruitmentIsOpen] = useState(false);
+
+ const { data: skills } = useGetSkillsQuery([])
+ const { data: profession } = useGetProfessionsQuery([])
+
+ console.log(skills);
+ return (
+
+ );
+};
diff --git a/src/widgets/index.ts b/src/widgets/index.ts
index a7d58290..5663749f 100644
--- a/src/widgets/index.ts
+++ b/src/widgets/index.ts
@@ -1 +1,5 @@
export { ContactsList } from './contact-list/contact-list';
+export * from "./managa-project-settings/ui/manage-project-setting"
+export * from "./manage-specialists/ui/manage-specialists"
+export * from "./form-project-details/ui/form-project"
+export * from "./form-project-specialists/ui/form-project-specialists"
diff --git a/src/widgets/managa-project-settings/ui/manage-project-setting.tsx b/src/widgets/managa-project-settings/ui/manage-project-setting.tsx
index f2f4f993..b9d66cf4 100644
--- a/src/widgets/managa-project-settings/ui/manage-project-setting.tsx
+++ b/src/widgets/managa-project-settings/ui/manage-project-setting.tsx
@@ -93,7 +93,9 @@ export const ManageProjectsSetting = () => {
>
+ }
onClick={() => ({})}>
Добавить
diff --git a/src/widgets/manage-specialists/ui/manage-specialists.tsx b/src/widgets/manage-specialists/ui/manage-specialists.tsx
index a3e9a7b7..4fcc6cf6 100644
--- a/src/widgets/manage-specialists/ui/manage-specialists.tsx
+++ b/src/widgets/manage-specialists/ui/manage-specialists.tsx
@@ -1,15 +1,23 @@
'use client';
-import React, { useState } from 'react';
+import React, { useState } from 'react';
import styles from './manage-specialist.specialist.module.scss';
import { Form, Toggler } from '@/shared/ui';
import { SingleSelectInput } from '@/shared/ui/single-select-input/single-select-input';
import { FormCreateProjectCard } from '@/entities/form-create-project-card';
import { MultiSelectInput } from '@/shared/ui/multi-select-input/multi-select-input';
import { LEVEL } from '@/utils/constants';
-import { professions } from '@/shared/constants';
+import {
+ useGetProfessionsQuery,
+ useGetSkillsQuery,
+} from '@/services/AttributesService';
export const ManageSpecialists = () => {
- const [recruitmentIsOpen, setRecruitmentIsOpen] = useState(false)
+ const [recruitmentIsOpen, setRecruitmentIsOpen] = useState(false);
+
+ const { data: skills } = useGetSkillsQuery([])
+ const { data: profession } = useGetProfessionsQuery([])
+
+ console.log(skills);
return (
);
diff --git a/src/widgets/form-project-specialists/ui/form-project-specialists.tsx b/src/widgets/form-project-specialists/ui/form-project-specialists.tsx
index 9e49c92f..8f2a8f2c 100644
--- a/src/widgets/form-project-specialists/ui/form-project-specialists.tsx
+++ b/src/widgets/form-project-specialists/ui/form-project-specialists.tsx
@@ -9,6 +9,7 @@ import {
useGetProfessionsQuery,
useGetSkillsQuery,
} from '@/services/AttributesService';
+import { FormCreateProjectCard } from '@/entities/form-create-project-card';
export const FormProjectSpecialists = () => {
const [recruitmentIsOpen, setRecruitmentIsOpen] = useState(false);
@@ -16,9 +17,11 @@ export const FormProjectSpecialists = () => {
const { data: skills } = useGetSkillsQuery([])
const { data: profession } = useGetProfessionsQuery([])
- console.log(skills);
+ const onSubmit = (data) => {
+ console.table(data)
+ }
return (
-