diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 1ab4504c..c7da429b 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -734,7 +734,7 @@ model ProjectCollaboration { title String lokasi String purpose String @db.Text - benefit String @db.Text + benefit String? @db.Text ProjectCollaborationMaster_Industri ProjectCollaborationMaster_Industri? @relation(fields: [projectCollaborationMaster_IndustriId], references: [id]) projectCollaborationMaster_IndustriId Int? diff --git a/public/portofolio/logo/28044834-3da4-4e83-a6dc-e012e5f23c8f.png b/public/portofolio/logo/28044834-3da4-4e83-a6dc-e012e5f23c8f.png new file mode 100644 index 00000000..256b64ba Binary files /dev/null and b/public/portofolio/logo/28044834-3da4-4e83-a6dc-e012e5f23c8f.png differ diff --git a/public/profile/background/74cdf35e-6ad3-4e8b-8e2a-a3b69f2d15ca.jpeg b/public/profile/background/74cdf35e-6ad3-4e8b-8e2a-a3b69f2d15ca.jpeg new file mode 100644 index 00000000..eb24410a Binary files /dev/null and b/public/profile/background/74cdf35e-6ad3-4e8b-8e2a-a3b69f2d15ca.jpeg differ diff --git a/public/profile/background/ce400d88-284a-440f-9b24-e815f616bead.jpeg b/public/profile/background/ce400d88-284a-440f-9b24-e815f616bead.jpeg new file mode 100644 index 00000000..eb24410a Binary files /dev/null and b/public/profile/background/ce400d88-284a-440f-9b24-e815f616bead.jpeg differ diff --git a/public/profile/background/f864095a-60f0-49f2-a407-8af43664db93.jpeg b/public/profile/background/f864095a-60f0-49f2-a407-8af43664db93.jpeg new file mode 100644 index 00000000..b43c0679 Binary files /dev/null and b/public/profile/background/f864095a-60f0-49f2-a407-8af43664db93.jpeg differ diff --git a/public/profile/foto/556f1bcf-7c36-4f57-b840-838c5ceca4fb.jpeg b/public/profile/foto/556f1bcf-7c36-4f57-b840-838c5ceca4fb.jpeg new file mode 100644 index 00000000..5507091c Binary files /dev/null and b/public/profile/foto/556f1bcf-7c36-4f57-b840-838c5ceca4fb.jpeg differ diff --git a/public/profile/foto/b70e11f8-4f49-4f54-a2c6-b8752800fcba.jpeg b/public/profile/foto/b70e11f8-4f49-4f54-a2c6-b8752800fcba.jpeg new file mode 100644 index 00000000..12a8ae8b Binary files /dev/null and b/public/profile/foto/b70e11f8-4f49-4f54-a2c6-b8752800fcba.jpeg differ diff --git a/public/profile/foto/cdd53255-0937-41c4-a47e-bc60b8a873ce.jpeg b/public/profile/foto/cdd53255-0937-41c4-a47e-bc60b8a873ce.jpeg new file mode 100644 index 00000000..5507091c Binary files /dev/null and b/public/profile/foto/cdd53255-0937-41c4-a47e-bc60b8a873ce.jpeg differ diff --git a/src/app/dev/colab/detail/main_detail/[id]/layout.tsx b/src/app/dev/colab/detail/main_detail/[id]/layout.tsx index 433eb587..564a9e14 100644 --- a/src/app/dev/colab/detail/main_detail/[id]/layout.tsx +++ b/src/app/dev/colab/detail/main_detail/[id]/layout.tsx @@ -3,12 +3,17 @@ import React from "react"; export default async function Layout({ children, + params, }: { children: React.ReactNode; + params: { id: string }; }) { + const colabId = params.id; return ( <> - {children} + + {children} + ); } diff --git a/src/app/dev/colab/detail/main_detail/[id]/page.tsx b/src/app/dev/colab/detail/main_detail/[id]/page.tsx index 88b5c9b4..1ceafec1 100644 --- a/src/app/dev/colab/detail/main_detail/[id]/page.tsx +++ b/src/app/dev/colab/detail/main_detail/[id]/page.tsx @@ -1,13 +1,25 @@ import { Colab_MainDetail } from "@/app_modules/colab"; +import colab_funCekPartisipasiById from "@/app_modules/colab/fun/get/cek_partisipasi_by_user_id"; +import colab_getListPartisipanById from "@/app_modules/colab/fun/get/get_list_partisipan_by_id"; +import colab_getOneCollaborationById from "@/app_modules/colab/fun/get/get_one_by_id"; import { User_getUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page({ params }: { params: { id: string } }) { - let colabId = params.id - const userLoginId = await User_getUserId() + let colabId = params.id; + const userLoginId = await User_getUserId(); + const dataColab = await colab_getOneCollaborationById(colabId); + const listPartisipan = await colab_getListPartisipanById(colabId) + const cekPartisipan = await colab_funCekPartisipasiById(colabId) + return ( <> - + ); } diff --git a/src/app/dev/colab/detail/proyek/partisipasi/[id]/page.tsx b/src/app/dev/colab/detail/proyek/partisipasi/[id]/page.tsx index 323e5439..0a921039 100644 --- a/src/app/dev/colab/detail/proyek/partisipasi/[id]/page.tsx +++ b/src/app/dev/colab/detail/proyek/partisipasi/[id]/page.tsx @@ -1,9 +1,18 @@ import { Colab_DetailPartisipasiProyek } from "@/app_modules/colab"; +import colab_getListPartisipanById from "@/app_modules/colab/fun/get/get_list_partisipan_by_id"; +import colab_getOneCollaborationById from "@/app_modules/colab/fun/get/get_one_by_id"; + +export default async function Page({params}: {params: {id: string}}) { + const colabId = params.id + const dataColab = await colab_getOneCollaborationById(colabId) + const listPartisipan = await colab_getListPartisipanById(colabId) -export default async function Page() { return ( <> - + ); } diff --git a/src/app/dev/colab/detail/proyek/saya/[id]/layout.tsx b/src/app/dev/colab/detail/proyek/saya/[id]/layout.tsx new file mode 100644 index 00000000..1b84d85b --- /dev/null +++ b/src/app/dev/colab/detail/proyek/saya/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutColab_DetailProyekSaya } from "@/app_modules/colab"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/colab/detail/proyek/saya/[id]/page.tsx b/src/app/dev/colab/detail/proyek/saya/[id]/page.tsx new file mode 100644 index 00000000..874d13f4 --- /dev/null +++ b/src/app/dev/colab/detail/proyek/saya/[id]/page.tsx @@ -0,0 +1,20 @@ +import { Colab_DetailProyekSaya } from "@/app_modules/colab"; +import colab_getListPartisipanById from "@/app_modules/colab/fun/get/get_list_partisipan_by_id"; +import colab_getOneCollaborationById from "@/app_modules/colab/fun/get/get_one_by_id"; + +export default async function Page({ params }: { params: { id: string } }) { + const colabId = params.id + const dataColab = await colab_getOneCollaborationById(colabId) + const listPartisipan = await colab_getListPartisipanById(colabId); + + + return ( + <> + {/*
{JSON.stringify(listPartisipan, null,2)}
*/} + + + ); +} diff --git a/src/app/dev/colab/edit/[id]/page.tsx b/src/app/dev/colab/edit/[id]/page.tsx index 2295a415..40849fef 100644 --- a/src/app/dev/colab/edit/[id]/page.tsx +++ b/src/app/dev/colab/edit/[id]/page.tsx @@ -1,7 +1,21 @@ import { Colab_Edit } from "@/app_modules/colab"; +import colab_getOneCollaborationById from "@/app_modules/colab/fun/get/get_one_by_id"; +import colab_funGetMasterIndustri from "@/app_modules/colab/fun/master/fun_get_master_industri"; +import _ from "lodash"; -export default async function Page(){ - return<> - +export default async function Page({ params }: { params: { id: string } }) { + const colabId = params.id; + const dataColab = await colab_getOneCollaborationById(colabId); + const selectedData = _.omit(dataColab, [ + "ProjectCollaboration_Partisipasi", + "Author", + ]); +// console.log(selectedData); +const listIndustri = await colab_funGetMasterIndustri() + + return ( + <> + -} \ No newline at end of file + ); +} diff --git a/src/app/dev/colab/main/beranda/page.tsx b/src/app/dev/colab/main/beranda/page.tsx index 62cde404..379bc868 100644 --- a/src/app/dev/colab/main/beranda/page.tsx +++ b/src/app/dev/colab/main/beranda/page.tsx @@ -1,7 +1,14 @@ import { Colab_Beranda } from "@/app_modules/colab"; +import colab_getListAllProyek from "@/app_modules/colab/fun/get/get_list_all_proyek"; +import { User_getUserId } from "@/app_modules/fun_global/get_user_token"; export default async function Page() { - return<> - + const listData = await colab_getListAllProyek(); + const userLoginId = await User_getUserId(); + + return ( + <> + -} \ No newline at end of file + ); +} diff --git a/src/app/dev/colab/main/notifikasi/page.tsx b/src/app/dev/colab/main/notifikasi/page.tsx new file mode 100644 index 00000000..279095c7 --- /dev/null +++ b/src/app/dev/colab/main/notifikasi/page.tsx @@ -0,0 +1,9 @@ +import { Colab_NotifikasiView } from "@/app_modules/colab"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/colab/main/proyek/page.tsx b/src/app/dev/colab/main/proyek/page.tsx index 6675c0cd..62cd4ab4 100644 --- a/src/app/dev/colab/main/proyek/page.tsx +++ b/src/app/dev/colab/main/proyek/page.tsx @@ -1,10 +1,17 @@ import { Colab_Proyek } from "@/app_modules/colab"; - +import colab_getListPartisipasiByAuthorId from "@/app_modules/colab/fun/get/get_list_partisipasi_by_author_id"; +import colab_getListAllProyekByAuthorId from "@/app_modules/colab/fun/get/get_list_proyek_by_author_id"; export default async function Page() { + const listPartisipasiUser = (await colab_getListPartisipasiByAuthorId()).data; + const listProyekSaya = (await colab_getListAllProyekByAuthorId()).data; + return ( <> - + ); } diff --git a/src/app/dev/colab/main/status/page.tsx b/src/app/dev/colab/main/status/page.tsx index c16629e3..4b703e5d 100644 --- a/src/app/dev/colab/main/status/page.tsx +++ b/src/app/dev/colab/main/status/page.tsx @@ -1,9 +1,19 @@ import { Colab_Status } from "@/app_modules/colab"; +import colab_getListByStatusId from "@/app_modules/colab/fun/get/get_list_by_status_id"; export default async function Page() { + const listPublish = (await colab_getListByStatusId(1)).data; + const listReview = (await colab_getListByStatusId(2)).data; + const listReject = (await colab_getListByStatusId(3)).data; + + return ( <> - + ); } diff --git a/src/app/lib/router_hipmi/router_colab.ts b/src/app/lib/router_hipmi/router_colab.ts index f68374c0..a14582df 100644 --- a/src/app/lib/router_hipmi/router_colab.ts +++ b/src/app/lib/router_hipmi/router_colab.ts @@ -7,6 +7,7 @@ export const RouterColab = { status: "/dev/colab/main/status", proyek: "/dev/colab/main/proyek", grup_diskusi: "/dev/colab/main/grup", + notifikasi: "/dev/colab/main/notifikasi", // create create: "/dev/colab/create", @@ -17,7 +18,8 @@ export const RouterColab = { status_review: "/dev/colab/detail/status/review/", status_reject: "/dev/colab/detail/status/reject/", status_publish: "/dev/colab/detail/status/publish/", - partisipasi_proyek: "/dev/colab/detail/proyek/partisipasi/", + detail_partisipasi_proyek: "/dev/colab/detail/proyek/partisipasi/", + detail_proyek_saya: "/dev/colab/detail/proyek/saya/", detail_grup: "/dev/colab/detail/grup/", // proyek diff --git a/src/app_modules/colab/component/card_view/card_section_data.tsx b/src/app_modules/colab/component/card_view/card_section_data.tsx index 911d5ecc..dfe205bd 100644 --- a/src/app_modules/colab/component/card_view/card_section_data.tsx +++ b/src/app_modules/colab/component/card_view/card_section_data.tsx @@ -6,13 +6,16 @@ import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_gl import { Card, Center, Title, Stack, Grid, Text } from "@mantine/core"; import { useRouter } from "next/navigation"; import { useState } from "react"; +import { MODEL_COLLABORATION } from "../../model/interface"; export default function ComponentColab_CardSectionData({ colabId, path, + data, }: { colabId?: any; path?: any; + data?: MODEL_COLLABORATION; }) { const router = useRouter(); @@ -30,7 +33,7 @@ export default function ComponentColab_CardSectionData({ >
- Judul Proyek{" "} + {data?.title ? data.title : "Judul Proyek"}
@@ -44,7 +47,11 @@ export default function ComponentColab_CardSectionData({ : - Industri + + {data?.ProjectCollaborationMaster_Industri.name + ? data?.ProjectCollaborationMaster_Industri?.name + : "Industri"} + @@ -59,7 +66,7 @@ export default function ComponentColab_CardSectionData({ - Lokasi dari proyek{" "} + {data?.lokasi ? data?.lokasi : "Lokasi dari proyek"} @@ -69,10 +76,9 @@ export default function ComponentColab_CardSectionData({ Tujuan proyek - Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam - repudiandae nostrum temporibus velit possimus, voluptate inventore - recusandae hic ipsa praesentium deserunt, fuga asperiores - doloremque amet incidunt explicabo ea eius earum. + {data?.purpose + ? data?.purpose + : "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Maiores odio nihil in animi expedita, suscipit excepturi pariatur totam esse officiis enim cumque. Quidem, facere aliquam. Sunt laboriosam incidunt iste amet"} diff --git a/src/app_modules/colab/component/card_view/card_section_header_author_name.tsx b/src/app_modules/colab/component/card_view/card_section_header_author_name.tsx index 7e7b1e58..0110ccb6 100644 --- a/src/app_modules/colab/component/card_view/card_section_header_author_name.tsx +++ b/src/app_modules/colab/component/card_view/card_section_header_author_name.tsx @@ -1,32 +1,45 @@ "use client"; import ComponentGlobal_AuthorNameOnHeader from "@/app_modules/component_global/author_name_on_header"; -import { Avatar, Card, Divider, Grid, Stack, Text } from "@mantine/core"; +import { + ActionIcon, + Avatar, + Card, + Divider, + Grid, + Menu, + Stack, + Text, +} from "@mantine/core"; import ComponentColab_AuthorNameOnHeader from "../header_author_name"; import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog"; import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan"; import { useRouter } from "next/navigation"; +import { IconDots, IconEdit } from "@tabler/icons-react"; +import { RouterColab } from "@/app/lib/router_hipmi/router_colab"; +import { useDisclosure } from "@mantine/hooks"; +import { useState } from "react"; export default function ComponentColab_CardSectionHeaderAuthorName({ profileId, imagesId, authorName, - tglPublish, isPembatas, - jumlah_partisipan, + isAuthor, + colabId, }: { profileId?: string; imagesId?: string; authorName?: string; - tglPublish?: Date; isPembatas?: boolean; - jumlah_partisipan?: number; + isAuthor?: boolean; + colabId?: string; }) { const router = useRouter(); return ( <> - + - - - {jumlah_partisipan - ? jumlah_partisipan + " " + "partisipan" - : 0 + " " + "partisipan"} - - + {isPembatas ? : ""} @@ -74,3 +84,45 @@ export default function ComponentColab_CardSectionHeaderAuthorName({ ); } + +function ButtonAction({ + isAuthor, + colabId, +}: { + isAuthor: boolean; + colabId: string; +}) { + const router = useRouter(); + const [opened, setOpened] = useState(false); + return ( + <> + + + + + {isAuthor ? : ""} + + + + + } + onClick={() => { + router.push(RouterColab.edit + colabId); + }} + > + Edit + + + + + ); +} diff --git a/src/app_modules/colab/component/card_view/card_section_jumlah_partisipan.tsx b/src/app_modules/colab/component/card_view/card_section_jumlah_partisipan.tsx new file mode 100644 index 00000000..af073874 --- /dev/null +++ b/src/app_modules/colab/component/card_view/card_section_jumlah_partisipan.tsx @@ -0,0 +1,34 @@ +"use client"; + +import { Stack, Divider, Center, Text, Grid, Card } from "@mantine/core"; +import { IconUsersGroup } from "@tabler/icons-react"; + +export default function ComponentColab_JumlahPartisipan({ + jumlah, +}: { + jumlah?: any[]; +}) { + return ( + <> + + + +
+ + + + {jumlah?.length ? jumlah?.length : 0} + + + + + Partisipan + + + +
+
+
+ + ); +} diff --git a/src/app_modules/colab/component/card_view/jumlah_partisipan.tsx b/src/app_modules/colab/component/card_view/jumlah_partisipan.tsx deleted file mode 100644 index aea8f9a9..00000000 --- a/src/app_modules/colab/component/card_view/jumlah_partisipan.tsx +++ /dev/null @@ -1,28 +0,0 @@ -"use client"; - -import { Stack, Divider, Center, Text, Grid } from "@mantine/core"; -import { IconUsersGroup } from "@tabler/icons-react"; - -export default function ComponentColab_JumlahPartisipan() { - return ( - <> - - -
- - - - 12 - - - - - Partisipan - - - -
-
- - ); -} diff --git a/src/app_modules/colab/component/detail/detail_data.tsx b/src/app_modules/colab/component/detail/detail_data.tsx index d99f556e..ce8d7dab 100644 --- a/src/app_modules/colab/component/detail/detail_data.tsx +++ b/src/app_modules/colab/component/detail/detail_data.tsx @@ -1,15 +1,20 @@ -"use client" +"use client"; import { Stack, Box, Center, Title, Grid, Text } from "@mantine/core"; import ComponentColab_AuthorNameOnHeader from "../header_author_name"; +import { MODEL_COLLABORATION } from "../../model/interface"; -export default function ComponentColab_DetailData() { +export default function ComponentColab_DetailData({ + data, +}: { + data?: MODEL_COLLABORATION; +}) { return ( <> -
- Judul Proyek +
+ {data?.title ? data.title : "Judul Proyek"}
@@ -22,7 +27,11 @@ export default function ComponentColab_DetailData() { : - Industri + + {data?.ProjectCollaborationMaster_Industri.name + ? data.ProjectCollaborationMaster_Industri.name + : "Industri"} + @@ -37,7 +46,7 @@ export default function ComponentColab_DetailData() { - Lokasi dari proyek{" "} + {data?.lokasi ? data.lokasi : " Lokasi dari proyek"} @@ -46,22 +55,14 @@ export default function ComponentColab_DetailData() { Tujuan proyek - - Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam - repudiandae nostrum temporibus velit possimus, voluptate - inventore recusandae hic ipsa praesentium deserunt, fuga - asperiores doloremque amet incidunt explicabo ea eius earum. - + {data?.purpose ? data?.purpose : "-"} Keutungan - Lorem ipsum dolor sit amet consectetur adipisicing elit. Nam - repudiandae nostrum temporibus velit possimus, voluptate - inventore recusandae hic ipsa praesentium deserunt, fuga - asperiores doloremque amet incidunt explicabo ea eius earum. + {data?.benefit ? data?.benefit : "-"} @@ -69,4 +70,4 @@ export default function ComponentColab_DetailData() { ); -} \ No newline at end of file +} diff --git a/src/app_modules/colab/component/detail/list_partisipasi_user.tsx b/src/app_modules/colab/component/detail/list_partisipasi_user.tsx index 490df2ef..cab13f20 100644 --- a/src/app_modules/colab/component/detail/list_partisipasi_user.tsx +++ b/src/app_modules/colab/component/detail/list_partisipasi_user.tsx @@ -1,29 +1,113 @@ -"use client" +"use client"; -import { Paper, Center, Title, ScrollArea, Box, Stack } from "@mantine/core"; +import { + Paper, + Center, + Title, + ScrollArea, + Box, + Stack, + Text, + Divider, + Button, +} from "@mantine/core"; import ComponentColab_AuthorNameOnHeader from "../header_author_name"; +import { + MODEL_COLLABORATION_MASTER, + MODEL_COLLABORATION_PARTISIPASI, +} from "../../model/interface"; +import _ from "lodash"; +import { useState } from "react"; +import colab_funCreatePartisipan from "../../fun/create/fun_create_partisipan_by_user_id"; +import colab_getListPartisipanById from "../../fun/get/get_list_partisipan_by_id"; +import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil"; +import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal"; + +export default function ComponentColab_DetailListPartisipasiUser({ + listPartisipan, + userLoginId, + authorId, + colabId, + cekPartisipan, +}: { + listPartisipan?: MODEL_COLLABORATION_PARTISIPASI[]; + userLoginId?: string; + authorId?: string; + colabId?: string; + cekPartisipan?: boolean; +}) { + const [apply, setApply] = useState(false); + const [data, setData] = useState(listPartisipan); + + async function onJoin() { + await colab_funCreatePartisipan(colabId as any, userLoginId as any).then( + async (res) => { + if (res.status === 201) { + await colab_getListPartisipanById(colabId as any).then((val) => { + setApply(true); + setData(val as any); + ComponentGlobal_NotifikasiBerhasil(res.message); + }); + } else { + ComponentGlobal_NotifikasiGagal(res.message); + } + } + ); + } -export default function ComponentColab_DetailListPartisipasiUser() { return ( <> - -
- Partispasi User (12) -
{" "} - - - - {Array(10) - .fill(0) - .map((e, i) => ( - - - - ))} - - - -
+ {/*
{JSON.stringify(data, null, 2)}
*/} + + {userLoginId !== authorId ? ( +
+ +
+ ) : ( + "" + )} + + + +
+ Partispasi User ({data?.length}) +
{" "} + + + + {data?.length === 0 ? ( +
+ + Tidak ada partisipan + +
+ ) : ( + data?.map((e, i) => ( + + + + )) + )} +
+
+
+
+
+
); -} \ No newline at end of file +} diff --git a/src/app_modules/colab/component/is_empty_data.tsx b/src/app_modules/colab/component/is_empty_data.tsx new file mode 100644 index 00000000..fb3bfcab --- /dev/null +++ b/src/app_modules/colab/component/is_empty_data.tsx @@ -0,0 +1,13 @@ +"use client"; + +import { Center } from "@mantine/core"; + +export default function ComponentColab_IsEmptyData({ text }: { text: string }) { + return ( + <> +
+ {text} +
+ + ); +} diff --git a/src/app_modules/colab/create/index.tsx b/src/app_modules/colab/create/index.tsx index 57589bb3..150396fb 100644 --- a/src/app_modules/colab/create/index.tsx +++ b/src/app_modules/colab/create/index.tsx @@ -4,10 +4,15 @@ import { RouterColab } from "@/app/lib/router_hipmi/router_colab"; import { Button, Select, Stack, TextInput, Textarea } from "@mantine/core"; import { useRouter } from "next/navigation"; import { useState } from "react"; -import { MODEL_COLLABORATION_MASTER } from "../model/interface"; +import { + MODEL_COLLABORATION, + MODEL_COLLABORATION_MASTER, +} from "../model/interface"; import colab_funCreateProyek from "../fun/create/fun_create_proyek"; import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil"; import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal"; +import _ from "lodash"; +import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan"; export default function Colab_Create({ listIndustri, @@ -80,7 +85,6 @@ export default function Colab_Create({