diff --git a/src/components/DesktopCard.tsx b/src/components/DesktopCard.tsx index 03f17f9..9fc19f3 100644 --- a/src/components/DesktopCard.tsx +++ b/src/components/DesktopCard.tsx @@ -41,59 +41,59 @@ export default function DesktopCard({ server }: IDesktopCardProps) { async function handleClickCreateSession() { setPosition("right"); - setModal(); + setModal(); } return ( -
+
- +
-
-
-

+

+
+

{server.name}

-

{server.location}

+

{server.location}

-
+
{server.sessions?.[0]?.status === "started" ? ( -
+
endSession()} - className='flex gap-[0.556vw] items-center' + className="flex gap-[0.556vw] items-center" > - + -

Идёт сеанс

- +

Идёт сеанс

+
) : ( -
- +
+ -

Создать сеанс

+

Создать сеанс

)} diff --git a/src/components/ModalContainer.tsx b/src/components/ModalContainer.tsx index aba4c89..c270e79 100644 --- a/src/components/ModalContainer.tsx +++ b/src/components/ModalContainer.tsx @@ -3,8 +3,8 @@ import { useEffect, useRef } from "react"; import useModalStore from "../stores/useModalStore"; import { AnimatePresence, motion } from "motion/react"; import CloseIcon from "./icons/CloseIcon"; -import Button from "./Button"; import { clsx as cn } from "clsx"; +import NewButton from "./NewButton"; function ModalContainer() { const { modal, setModal, position } = useModalStore(); @@ -70,15 +70,16 @@ function ModalContainer() { // }} > {modal} - +
diff --git a/src/components/ProjectSelector.tsx b/src/components/ProjectSelector.tsx new file mode 100644 index 0000000..d4747e1 --- /dev/null +++ b/src/components/ProjectSelector.tsx @@ -0,0 +1,5 @@ +function ProjectSelector() { + return
; +} + +export default ProjectSelector; diff --git a/src/components/TableSelector.tsx b/src/components/TableSelector.tsx new file mode 100644 index 0000000..698c228 --- /dev/null +++ b/src/components/TableSelector.tsx @@ -0,0 +1,50 @@ +import clsx from "clsx"; +import { IServer } from "../types/IServer"; +import LightningIcon from "./icons/LightningIcon"; + +interface TableSelectorProps { + tables: IServer[]; + selectedTable: IServer | null; + onSelect: (table: IServer) => void; +} + +function TableSelector({ + tables, + selectedTable, + onSelect, +}: TableSelectorProps) { + return ( +
+ {tables.map((table) => ( + + ))} +
+ ); +} + +export default TableSelector; diff --git a/src/components/icons/LightningIcon.tsx b/src/components/icons/LightningIcon.tsx new file mode 100644 index 0000000..3a68d40 --- /dev/null +++ b/src/components/icons/LightningIcon.tsx @@ -0,0 +1,12 @@ +function LightningIcon() { + return ( + + + + ); +} + +export default LightningIcon; diff --git a/src/components/modals/CreateSessionModal.tsx b/src/components/modals/CreateSessionModal.tsx index 747d8f0..5679973 100644 --- a/src/components/modals/CreateSessionModal.tsx +++ b/src/components/modals/CreateSessionModal.tsx @@ -10,18 +10,25 @@ import api from "../../utils/api.ts"; import { ISession } from "../../types/ISession.ts"; import { IClient } from "../../types/IClient.ts"; import useModalStore from "../../stores/useModalStore.ts"; +import TableSelector from "../TableSelector.tsx"; interface Props { servers: IServer[] | undefined; + targetServer: IServer | null; } -export default function CreateSessionModal({ servers }: Props) { +export default function CreateSessionModal({ + servers, + targetServer = null, +}: Props) { const { setModal } = useModalStore(); const [name, setName] = useState(""); const [phone, setPhone] = useState(""); const [email, setEmail] = useState(""); - const [selectedServer, setSelectedServer] = useState(); - const [selectedApp, setSelectedApp] = useState(); + const [selectedServer, setSelectedServer] = useState( + targetServer + ); + const [selectedApp, setSelectedApp] = useState(null); async function createClient() { console.log(name, phone, email); @@ -66,10 +73,33 @@ export default function CreateSessionModal({ servers }: Props) { return (
-
+
+

Новый сеанс

+
+
+
+ +
+

Укажите данные клиента

+
+ + + +
+
+
+

Выберите параметры сеанса

+
+
+ + {/*
@@ -169,7 +199,7 @@ export default function CreateSessionModal({ servers }: Props) { >

Запустить сеанс

-
+
*/} ); } diff --git a/src/types/IServer.ts b/src/types/IServer.ts index 77972b9..03b3b0f 100644 --- a/src/types/IServer.ts +++ b/src/types/IServer.ts @@ -9,4 +9,5 @@ export interface IServer { companyId: string; sessions?: ISession[]; apps?: IApp[]; + status: "online" | "offline"; }