diff --git a/package.json b/package.json
index 64834c2b..9a4824a7 100644
--- a/package.json
+++ b/package.json
@@ -18,8 +18,18 @@
"@mantine/hooks": "^6.0.17",
"@mantine/next": "^6.0.17",
"@mantine/notifications": "^6.0.17",
+ "@mantine/tiptap": "^7.5.3",
"@prisma/client": "^5.0.0",
"@tabler/icons-react": "^2.38.0",
+ "@tiptap/extension-highlight": "^2.2.3",
+ "@tiptap/extension-link": "^2.2.3",
+ "@tiptap/extension-subscript": "^2.2.3",
+ "@tiptap/extension-superscript": "^2.2.3",
+ "@tiptap/extension-text-align": "^2.2.3",
+ "@tiptap/extension-underline": "^2.2.3",
+ "@tiptap/pm": "^2.2.3",
+ "@tiptap/react": "^2.2.3",
+ "@tiptap/starter-kit": "^2.2.3",
"@types/lodash": "^4.14.199",
"@types/node": "20.4.5",
"@types/react": "18.2.17",
@@ -42,6 +52,8 @@
"react": "18.2.0",
"react-countdown": "^2.3.5",
"react-dom": "18.2.0",
+ "react-fast-marquee": "^1.6.4",
+ "react-quill": "^2.0.0",
"react-responsive-carousel": "^3.2.23",
"react-simple-toasts": "^5.10.0",
"react-toastify": "^9.1.3",
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index ae572e78..cff18aa3 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -2,7 +2,8 @@
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
- provider = "prisma-client-js"
+ provider = "prisma-client-js"
+ engineType = "binary"
}
datasource db {
@@ -28,6 +29,9 @@ model User {
Donasi_Notif Donasi_Notif[]
Event Event[]
Event_Peserta Event_Peserta[]
+ Voting Voting[]
+ Voting_Kontributor Voting_Kontributor[]
+ Job Job[]
}
model MasterUserRole {
@@ -85,6 +89,7 @@ model Images {
Donasi_PencairanDana Donasi_PencairanDana[]
Donasi_Invoice Donasi_Invoice[]
Portofolio Portofolio[]
+ Job Job[]
}
model ImagesBackground {
@@ -138,6 +143,15 @@ model MasterBidangBisnis {
Portofolio Portofolio[]
}
+model MasterStatus {
+ id String @id @default(cuid())
+ name String
+ isActive Boolean @default(true)
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+ Job Job[]
+}
+
// -------------------- INVESTASI --------------------- //
// Table investasi / saham
model Investasi {
@@ -532,3 +546,82 @@ model Event_Peserta {
User User? @relation(fields: [userId], references: [id])
userId String?
}
+
+// ========================================= VOTING ========================================= //
+
+model Voting {
+ id String @id @default(cuid())
+ isActive Boolean @default(true)
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+
+ title String
+ deskripsi String
+ awalVote DateTime
+ akhirVote DateTime
+ catatan String?
+
+ Author User @relation(fields: [authorId], references: [id])
+ authorId String
+ Voting_Status Voting_Status? @relation(fields: [voting_StatusId], references: [id])
+ voting_StatusId String? @default("2")
+ Voting_DaftarNamaVote Voting_DaftarNamaVote[]
+ Voting_Kontributor Voting_Kontributor[]
+}
+
+model Voting_Status {
+ id String @id @default(cuid())
+ name String
+ isActive Boolean @default(true)
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+ Voting Voting[]
+}
+
+model Voting_DaftarNamaVote {
+ id String @id @default(cuid())
+ value String
+ jumlah Int @default(0)
+ isActive Boolean @default(true)
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+
+ Voting Voting? @relation(fields: [votingId], references: [id])
+ votingId String?
+ Voting_Kontributor Voting_Kontributor[]
+}
+
+model Voting_Kontributor {
+ id String @id @default(cuid())
+ isActive Boolean @default(true)
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+
+ Voting Voting? @relation(fields: [votingId], references: [id])
+ votingId String?
+ Author User? @relation(fields: [authorId], references: [id])
+ authorId String?
+ Voting_DaftarNamaVote Voting_DaftarNamaVote? @relation(fields: [voting_DaftarNamaVoteId], references: [id])
+ voting_DaftarNamaVoteId String?
+}
+
+// ========================================= JOB ========================================= //
+
+model Job {
+ id String @id @default(cuid())
+ isActive Boolean @default(true)
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+ isArsip Boolean @default(false)
+ catatan String?
+
+ title String
+ content String @db.Text
+ deskripsi String @db.Text
+ Images Images? @relation(fields: [imagesId], references: [id])
+ imagesId String?
+ Author User? @relation(fields: [authorId], references: [id])
+ authorId String?
+ MasterStatus MasterStatus? @relation(fields: [masterStatusId], references: [id])
+ masterStatusId String? @default("2")
+}
diff --git a/public/aset/Hipmi Business Map.png b/public/aset/Hipmi Business Map.png
new file mode 100644
index 00000000..9e61fee7
Binary files /dev/null and b/public/aset/Hipmi Business Map.png differ
diff --git a/public/aset/Hipmi Project Collaboration.png b/public/aset/Hipmi Project Collaboration.png
new file mode 100644
index 00000000..90c4f0f6
Binary files /dev/null and b/public/aset/Hipmi Project Collaboration.png differ
diff --git a/public/aset/global/no-file.png b/public/aset/global/no-file.png
new file mode 100644
index 00000000..da332135
Binary files /dev/null and b/public/aset/global/no-file.png differ
diff --git a/public/aset/job/logo.png b/public/aset/job/logo.png
new file mode 100644
index 00000000..e42c374b
Binary files /dev/null and b/public/aset/job/logo.png differ
diff --git a/public/aset/vote/logo.png b/public/aset/vote/logo.png
new file mode 100644
index 00000000..a5e7f056
Binary files /dev/null and b/public/aset/vote/logo.png differ
diff --git a/public/file/06714b9b-5ed3-44df-b512-36110c5b91dd.pdf b/public/file/06714b9b-5ed3-44df-b512-36110c5b91dd.pdf
deleted file mode 100644
index 92b2f709..00000000
Binary files a/public/file/06714b9b-5ed3-44df-b512-36110c5b91dd.pdf and /dev/null differ
diff --git a/public/file/3ece02cd-8472-42ee-9721-356041bcd655.pdf b/public/file/3ece02cd-8472-42ee-9721-356041bcd655.pdf
deleted file mode 100644
index 326da9f2..00000000
Binary files a/public/file/3ece02cd-8472-42ee-9721-356041bcd655.pdf and /dev/null differ
diff --git a/public/file/5ef5daeb-0ef7-47d4-847d-a201ff0bd818.pdf b/public/file/5ef5daeb-0ef7-47d4-847d-a201ff0bd818.pdf
deleted file mode 100644
index ab4bd256..00000000
Binary files a/public/file/5ef5daeb-0ef7-47d4-847d-a201ff0bd818.pdf and /dev/null differ
diff --git a/public/file/6e9274d3-5c39-47ee-bf7c-114189618dff.pdf b/public/file/6e9274d3-5c39-47ee-bf7c-114189618dff.pdf
deleted file mode 100644
index 24d01eeb..00000000
Binary files a/public/file/6e9274d3-5c39-47ee-bf7c-114189618dff.pdf and /dev/null differ
diff --git a/public/file/c8904500-c9fd-40e4-a500-7ccb9fb48eb5.pdf b/public/file/c8904500-c9fd-40e4-a500-7ccb9fb48eb5.pdf
deleted file mode 100644
index 92b2f709..00000000
Binary files a/public/file/c8904500-c9fd-40e4-a500-7ccb9fb48eb5.pdf and /dev/null differ
diff --git a/public/file/e1366e3c-26c3-4939-8503-0ac3e2e68f03.pdf b/public/file/e1366e3c-26c3-4939-8503-0ac3e2e68f03.pdf
deleted file mode 100644
index 92b2f709..00000000
Binary files a/public/file/e1366e3c-26c3-4939-8503-0ac3e2e68f03.pdf and /dev/null differ
diff --git a/public/job/35733aba-3d3c-4353-84c3-ea8fd9a9cc85.png b/public/job/35733aba-3d3c-4353-84c3-ea8fd9a9cc85.png
new file mode 100644
index 00000000..40c04cfd
Binary files /dev/null and b/public/job/35733aba-3d3c-4353-84c3-ea8fd9a9cc85.png differ
diff --git a/public/job/38d9e62f-8364-45d7-a683-0883e56618fe.png b/public/job/38d9e62f-8364-45d7-a683-0883e56618fe.png
new file mode 100644
index 00000000..40c04cfd
Binary files /dev/null and b/public/job/38d9e62f-8364-45d7-a683-0883e56618fe.png differ
diff --git a/public/job/497395d9-6986-4d77-9f4d-2272b95e1f6f.png b/public/job/497395d9-6986-4d77-9f4d-2272b95e1f6f.png
new file mode 100644
index 00000000..40c04cfd
Binary files /dev/null and b/public/job/497395d9-6986-4d77-9f4d-2272b95e1f6f.png differ
diff --git a/public/job/5232ae23-c04c-4140-a1d2-ed3cd1377d13.jpg b/public/job/5232ae23-c04c-4140-a1d2-ed3cd1377d13.jpg
new file mode 100644
index 00000000..4204a23e
Binary files /dev/null and b/public/job/5232ae23-c04c-4140-a1d2-ed3cd1377d13.jpg differ
diff --git a/public/job/6ac4c417-2362-4f40-b74e-67cd816f18e7.jpg b/public/job/6ac4c417-2362-4f40-b74e-67cd816f18e7.jpg
new file mode 100644
index 00000000..f1447727
Binary files /dev/null and b/public/job/6ac4c417-2362-4f40-b74e-67cd816f18e7.jpg differ
diff --git a/public/job/7d8ff008-d3a8-4039-8236-6ffee93f1a5f.jpg b/public/job/7d8ff008-d3a8-4039-8236-6ffee93f1a5f.jpg
new file mode 100644
index 00000000..88fc39a9
Binary files /dev/null and b/public/job/7d8ff008-d3a8-4039-8236-6ffee93f1a5f.jpg differ
diff --git a/public/job/cab9ad8e-afed-4b3c-953d-f84b67758dc9.png b/public/job/cab9ad8e-afed-4b3c-953d-f84b67758dc9.png
new file mode 100644
index 00000000..f1aa5b43
Binary files /dev/null and b/public/job/cab9ad8e-afed-4b3c-953d-f84b67758dc9.png differ
diff --git a/public/job/f319201f-6ae7-4af9-b8a0-fafb552bcf5d.jpg b/public/job/f319201f-6ae7-4af9-b8a0-fafb552bcf5d.jpg
new file mode 100644
index 00000000..bad7a539
Binary files /dev/null and b/public/job/f319201f-6ae7-4af9-b8a0-fafb552bcf5d.jpg differ
diff --git a/public/profile/background/540f0aa4-faf4-48b6-bec8-0661b0826d22.png b/public/profile/background/540f0aa4-faf4-48b6-bec8-0661b0826d22.png
new file mode 100644
index 00000000..d0c9754c
Binary files /dev/null and b/public/profile/background/540f0aa4-faf4-48b6-bec8-0661b0826d22.png differ
diff --git a/public/file/0bfd9239-0853-42d9-bb7f-681adbec25ae.pdf b/public/profile/background/a60d5d34-b231-4221-93d1-c6936724e212.png
similarity index 100%
rename from public/file/0bfd9239-0853-42d9-bb7f-681adbec25ae.pdf
rename to public/profile/background/a60d5d34-b231-4221-93d1-c6936724e212.png
diff --git a/public/profile/foto/92b9d5e1-7370-459f-abc5-bcd07bc3e41e.png b/public/profile/foto/92b9d5e1-7370-459f-abc5-bcd07bc3e41e.png
new file mode 100644
index 00000000..b4ef2a39
Binary files /dev/null and b/public/profile/foto/92b9d5e1-7370-459f-abc5-bcd07bc3e41e.png differ
diff --git a/public/profile/foto/ce6f7b64-5356-415e-b44f-03900401e72c.jpeg b/public/profile/foto/ce6f7b64-5356-415e-b44f-03900401e72c.jpeg
new file mode 100644
index 00000000..5beff2fd
Binary files /dev/null and b/public/profile/foto/ce6f7b64-5356-415e-b44f-03900401e72c.jpeg differ
diff --git a/src/app/admin/layout.tsx b/src/app/admin/layout.tsx
deleted file mode 100644
index a6abadfa..00000000
--- a/src/app/admin/layout.tsx
+++ /dev/null
@@ -1,6 +0,0 @@
-import { AdminMain_Layout } from "@/app_modules_admin/main";
-import React from "react";
-
-export default async function Layout({children}: {children: React.ReactNode}) {
- return {children}
-}
\ No newline at end of file
diff --git a/src/app/admin/main/page.tsx b/src/app/admin/main/page.tsx
deleted file mode 100644
index 87e54c35..00000000
--- a/src/app/admin/main/page.tsx
+++ /dev/null
@@ -1,5 +0,0 @@
-import { AdminMain_Dashboard } from "@/app_modules_admin/main";
-
-export default async function Page() {
- return
-}
\ No newline at end of file
diff --git a/src/app/api/job/gambar/[id]/route.ts b/src/app/api/job/gambar/[id]/route.ts
new file mode 100644
index 00000000..63757e43
--- /dev/null
+++ b/src/app/api/job/gambar/[id]/route.ts
@@ -0,0 +1,32 @@
+import prisma from "@/app/lib/prisma";
+import fs from "fs";
+import { NextRequest, NextResponse } from "next/server";
+
+export async function GET(
+ req: NextRequest,
+ { params }: { params: { id: string } }
+) {
+ const get = await prisma.images.findUnique({
+ where: {
+ id: params.id,
+ },
+ select: {
+ url: true,
+ },
+ });
+
+ if (!fs.existsSync(`./public/job/${get?.url}`)) {
+ const notFile = fs.readFileSync("./public/aset/global/no-file.png");
+ return new NextResponse(notFile, {
+ headers: {
+ "Content-Type": "image/png",
+ },
+ });
+ }
+ const file = fs.readFileSync(`./public/job/${get?.url}`);
+ return new NextResponse(file, {
+ headers: {
+ "Content-Type": "image/png",
+ },
+ });
+}
diff --git a/src/app/api/seeder/route.ts b/src/app/api/seeder/route.ts
index 2fa636a9..ee22733d 100644
--- a/src/app/api/seeder/route.ts
+++ b/src/app/api/seeder/route.ts
@@ -17,6 +17,8 @@ import donasi_namaBank from "../../../bin/seeder/donasi/master_bank.json";
import donasi_status_invoice from "../../../bin/seeder/donasi/master_status_invoice.json";
import event_status from "../../../bin/seeder/event/master_status.json";
import event_tipe_acara from "../../../bin/seeder/event/master_tipe_acara.json";
+import voting_status from "../../../bin/seeder/voting/master_status.json";
+import master_status from "../../../bin/seeder/master_status.json";
export async function GET(req: Request) {
const dev = new URL(req.url).searchParams.get("dev");
@@ -296,6 +298,36 @@ export async function GET(req: Request) {
});
}
+ for (let v of voting_status) {
+ await prisma.voting_Status.upsert({
+ where: {
+ id: v.id,
+ },
+ create: {
+ id: v.id,
+ name: v.name,
+ },
+ update: {
+ name: v.name,
+ },
+ });
+ }
+
+ for (let m of master_status) {
+ await prisma.masterStatus.upsert({
+ where: {
+ id: m.id,
+ },
+ create: {
+ id: m.id,
+ name: m.name,
+ },
+ update: {
+ name: m.name,
+ },
+ });
+ }
+
return NextResponse.json({ success: true });
}
diff --git a/src/app/dev/admin/job/child/arsip/page.tsx b/src/app/dev/admin/job/child/arsip/page.tsx
new file mode 100644
index 00000000..89341e1d
--- /dev/null
+++ b/src/app/dev/admin/job/child/arsip/page.tsx
@@ -0,0 +1,13 @@
+import AdminJob_TableArsip from "@/app_modules/admin/job/child/arsip";
+import { AdminJob_getListTableByStatusId } from "@/app_modules/admin/job/fun/get/get_list_table_by_status_id";
+
+
+export default async function Page() {
+ const dataJob = await AdminJob_getListTableByStatusId("0")
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/admin/job/child/table_publish/page.tsx b/src/app/dev/admin/job/child/table_publish/page.tsx
new file mode 100644
index 00000000..aac17371
--- /dev/null
+++ b/src/app/dev/admin/job/child/table_publish/page.tsx
@@ -0,0 +1,12 @@
+import { AdminJob_TablePublish } from "@/app_modules/admin/job";
+import { AdminJob_getListTableByStatusId } from "@/app_modules/admin/job/fun/get/get_list_table_by_status_id";
+
+export default async function Page() {
+ const listPublish = await AdminJob_getListTableByStatusId("1")
+ // console.log(listPublish)
+ return (
+ <>
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/src/app/dev/admin/job/child/table_reject/page.tsx b/src/app/dev/admin/job/child/table_reject/page.tsx
new file mode 100644
index 00000000..5c64b2e5
--- /dev/null
+++ b/src/app/dev/admin/job/child/table_reject/page.tsx
@@ -0,0 +1,13 @@
+import { AdminJob_TableReject } from "@/app_modules/admin/job";
+import { AdminJob_getListTableByStatusId } from "@/app_modules/admin/job/fun/get/get_list_table_by_status_id";
+
+
+export default async function Page() {
+ const listReject = await AdminJob_getListTableByStatusId("4");
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/admin/job/child/table_review/page.tsx b/src/app/dev/admin/job/child/table_review/page.tsx
new file mode 100644
index 00000000..75450adc
--- /dev/null
+++ b/src/app/dev/admin/job/child/table_review/page.tsx
@@ -0,0 +1,11 @@
+import { AdminJob_TableReview } from "@/app_modules/admin/job";
+import { AdminJob_getListTableByStatusId } from "@/app_modules/admin/job/fun/get/get_list_table_by_status_id";
+
+export default async function Page() {
+ const listReview = await AdminJob_getListTableByStatusId("2");
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/admin/job/main/page.tsx b/src/app/dev/admin/job/main/page.tsx
new file mode 100644
index 00000000..140eb795
--- /dev/null
+++ b/src/app/dev/admin/job/main/page.tsx
@@ -0,0 +1,23 @@
+import { AdminJob_Main } from "@/app_modules/admin/job";
+import { AdminJob_funCountStatusByStatusId } from "@/app_modules/admin/job/fun/count/fun_count_job_by_status_id";
+
+export default async function Page() {
+ const countPublish = await AdminJob_funCountStatusByStatusId("1")
+ const countReview = await AdminJob_funCountStatusByStatusId("2");
+ const countReject = await AdminJob_funCountStatusByStatusId("4");
+ const countArsip = await AdminJob_funCountStatusByStatusId("0")
+
+
+
+
+ return (
+ <>
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/src/app/dev/admin/vote/child/riwayat/page.tsx b/src/app/dev/admin/vote/child/riwayat/page.tsx
new file mode 100644
index 00000000..5e340dc1
--- /dev/null
+++ b/src/app/dev/admin/vote/child/riwayat/page.tsx
@@ -0,0 +1,12 @@
+import { AdminVote_Riwayat } from "@/app_modules/admin/vote";
+import { AdminVote_getListTableByStatusId } from "@/app_modules/admin/vote/fun/get/get_list_table_by_status_id";
+
+export default async function Page() {
+ const dataVote = await AdminVote_getListTableByStatusId("0");
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/admin/vote/child/table_publish/page.tsx b/src/app/dev/admin/vote/child/table_publish/page.tsx
new file mode 100644
index 00000000..05f09fd9
--- /dev/null
+++ b/src/app/dev/admin/vote/child/table_publish/page.tsx
@@ -0,0 +1,12 @@
+import { AdminVote_TablePublish } from "@/app_modules/admin/vote";
+import { AdminVote_getListTableByStatusId } from "@/app_modules/admin/vote/fun/get/get_list_table_by_status_id";
+
+export default async function Page() {
+ const dataVote = await AdminVote_getListTableByStatusId("1")
+
+ return (
+ <>
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/src/app/dev/admin/vote/child/table_reject/page.tsx b/src/app/dev/admin/vote/child/table_reject/page.tsx
new file mode 100644
index 00000000..2eb2d72b
--- /dev/null
+++ b/src/app/dev/admin/vote/child/table_reject/page.tsx
@@ -0,0 +1,11 @@
+import { AdminVote_TableReject } from "@/app_modules/admin/vote";
+import { AdminVote_getListTableByStatusId } from "@/app_modules/admin/vote/fun/get/get_list_table_by_status_id";
+
+export default async function Page() {
+ const dataVote = await AdminVote_getListTableByStatusId("4");
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/admin/vote/child/table_review/page.tsx b/src/app/dev/admin/vote/child/table_review/page.tsx
new file mode 100644
index 00000000..25ff7f2e
--- /dev/null
+++ b/src/app/dev/admin/vote/child/table_review/page.tsx
@@ -0,0 +1,13 @@
+import { AdminVote_TableReview } from "@/app_modules/admin/vote";
+import { AdminVote_getListTableByStatusId } from "@/app_modules/admin/vote/fun/get/get_list_table_by_status_id";
+
+
+export default async function Page() {
+ const listVote = await AdminVote_getListTableByStatusId("2")
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/admin/vote/main/page.tsx b/src/app/dev/admin/vote/main/page.tsx
new file mode 100644
index 00000000..6fefc7ff
--- /dev/null
+++ b/src/app/dev/admin/vote/main/page.tsx
@@ -0,0 +1,20 @@
+import { AdminVote_Main } from "@/app_modules/admin/vote";
+import AdminVote_funCountByStatusId from "@/app_modules/admin/vote/fun/count/fun_count_vote_by_status_id";
+
+export default async function Page() {
+ const countPublish = await AdminVote_funCountByStatusId("1");
+ const countReview = await AdminVote_funCountByStatusId("2");
+ const countDraft = await AdminVote_funCountByStatusId("0");
+ const countReject = await AdminVote_funCountByStatusId("4");
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/home/layout.tsx b/src/app/dev/home/layout.tsx
index 31c26585..e2cf3dee 100644
--- a/src/app/dev/home/layout.tsx
+++ b/src/app/dev/home/layout.tsx
@@ -1,10 +1,12 @@
import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
import { HomeLayout } from "@/app_modules/home";
import { User_getOneById } from "@/app_modules/home/fun/get/get_one_user_by_id";
+import { redirect } from "next/navigation";
export default async function Layout({ children }: { children: any }) {
const userId = await User_getUserId();
const dataUser = await User_getOneById(userId);
+
return (
<>
{children}
diff --git a/src/app/dev/home/page.tsx b/src/app/dev/home/page.tsx
index 94ddaadf..6238bb7f 100644
--- a/src/app/dev/home/page.tsx
+++ b/src/app/dev/home/page.tsx
@@ -2,19 +2,16 @@ import { HomeView } from "@/app_modules/home";
import { cookies } from "next/headers";
import { unsealData } from "iron-session";
import _ from "lodash";
-import { redirect } from "next/navigation";
-
-import yaml from "yaml";
-import fs from "fs";
-import { funGetUserProfile } from "@/app_modules/fun_global/get_user_profile";
import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
import { User_getOneById } from "@/app_modules/home/fun/get/get_one_user_by_id";
-const config = yaml.parse(fs.readFileSync("config.yaml").toString());
export default async function Page() {
+ const userId = await User_getUserId();
+ const dataUser = await User_getOneById(userId);
+
return (
<>
-
+
>
);
}
diff --git a/src/app/dev/job/create/layout.tsx b/src/app/dev/job/create/layout.tsx
new file mode 100644
index 00000000..e8e52d98
--- /dev/null
+++ b/src/app/dev/job/create/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutJob_Create } from "@/app_modules/job";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/job/create/page.tsx b/src/app/dev/job/create/page.tsx
new file mode 100644
index 00000000..94c001b8
--- /dev/null
+++ b/src/app/dev/job/create/page.tsx
@@ -0,0 +1,9 @@
+import { Job_Create } from "@/app_modules/job";
+
+export default async function Page() {
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/job/detail/arsip/[id]/layout.tsx b/src/app/dev/job/detail/arsip/[id]/layout.tsx
new file mode 100644
index 00000000..835b852d
--- /dev/null
+++ b/src/app/dev/job/detail/arsip/[id]/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutJob_DetailArsip } from "@/app_modules/job";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/job/detail/arsip/[id]/page.tsx b/src/app/dev/job/detail/arsip/[id]/page.tsx
new file mode 100644
index 00000000..e8fd9290
--- /dev/null
+++ b/src/app/dev/job/detail/arsip/[id]/page.tsx
@@ -0,0 +1,12 @@
+import { Job_DetailArsip } from "@/app_modules/job";
+import { Job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id";
+
+export default async function Page({params}:{params: {id: string}}) {
+ let jobId = params.id
+ const dataJob = await Job_getOneById(jobId)
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/job/detail/draft/[id]/layout.tsx b/src/app/dev/job/detail/draft/[id]/layout.tsx
new file mode 100644
index 00000000..27205e01
--- /dev/null
+++ b/src/app/dev/job/detail/draft/[id]/layout.tsx
@@ -0,0 +1,17 @@
+import { LayoutJob_DetailDraft } from "@/app_modules/job";
+import React from "react";
+
+export default async function Layout({
+ children,
+ params
+}: {
+ children: React.ReactNode;
+ params: {id: string}
+}) {
+ let jobId = params.id
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/job/detail/draft/[id]/page.tsx b/src/app/dev/job/detail/draft/[id]/page.tsx
new file mode 100644
index 00000000..eaff874d
--- /dev/null
+++ b/src/app/dev/job/detail/draft/[id]/page.tsx
@@ -0,0 +1,14 @@
+import Job_DetailDraft from "@/app_modules/job/detail/draft/view";
+import { Job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id";
+
+
+export default async function Page({params}: {params: {id: string}}) {
+ let jobId = params.id
+ const dataJob = await Job_getOneById(jobId)
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/job/detail/main/[id]/layout.tsx b/src/app/dev/job/detail/main/[id]/layout.tsx
new file mode 100644
index 00000000..4e757aed
--- /dev/null
+++ b/src/app/dev/job/detail/main/[id]/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutJob_MainDetail } from "@/app_modules/job";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/job/detail/main/[id]/page.tsx b/src/app/dev/job/detail/main/[id]/page.tsx
new file mode 100644
index 00000000..0daa0da6
--- /dev/null
+++ b/src/app/dev/job/detail/main/[id]/page.tsx
@@ -0,0 +1,13 @@
+import { Job_MainDetail } from "@/app_modules/job";
+import { Job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ const jobId = params.id;
+ const dataJob = await Job_getOneById(jobId)
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/job/detail/publish/[id]/layout.tsx b/src/app/dev/job/detail/publish/[id]/layout.tsx
new file mode 100644
index 00000000..204d05d8
--- /dev/null
+++ b/src/app/dev/job/detail/publish/[id]/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutJob_DetailPublish } from "@/app_modules/job";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/job/detail/publish/[id]/page.tsx b/src/app/dev/job/detail/publish/[id]/page.tsx
new file mode 100644
index 00000000..1558f947
--- /dev/null
+++ b/src/app/dev/job/detail/publish/[id]/page.tsx
@@ -0,0 +1,13 @@
+import { Job_DetailPublish } from "@/app_modules/job";
+import { Job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id";
+
+export default async function Page({params}: {params: {id: string}}) {
+ let jobId = params.id
+ const dataJob = await Job_getOneById(jobId)
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/job/detail/reject/[id]/layout.tsx b/src/app/dev/job/detail/reject/[id]/layout.tsx
new file mode 100644
index 00000000..f7ed9999
--- /dev/null
+++ b/src/app/dev/job/detail/reject/[id]/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutJob_DetailReject } from "@/app_modules/job";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/job/detail/reject/[id]/page.tsx b/src/app/dev/job/detail/reject/[id]/page.tsx
new file mode 100644
index 00000000..0645612e
--- /dev/null
+++ b/src/app/dev/job/detail/reject/[id]/page.tsx
@@ -0,0 +1,14 @@
+
+import Job_DetailReject from "@/app_modules/job/detail/reject/view";
+import { Job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id";
+
+export default async function Page({params}: {params: {id: string}}) {
+ let jobId = params.id
+ const dataJob = await Job_getOneById(jobId)
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/job/detail/review/[id]/layout.tsx b/src/app/dev/job/detail/review/[id]/layout.tsx
new file mode 100644
index 00000000..ad8216c2
--- /dev/null
+++ b/src/app/dev/job/detail/review/[id]/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutJob_DetailReview } from "@/app_modules/job";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/job/detail/review/[id]/page.tsx b/src/app/dev/job/detail/review/[id]/page.tsx
new file mode 100644
index 00000000..67463ad7
--- /dev/null
+++ b/src/app/dev/job/detail/review/[id]/page.tsx
@@ -0,0 +1,18 @@
+import Job_DetailReview from "@/app_modules/job/detail/review/view";
+import { Job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id";
+import React from "react";
+
+export default async function Page({
+ params,
+}: {
+ params: { id: React.ReactNode };
+}) {
+ let jobId = params.id;
+ const dataJob = await Job_getOneById(jobId)
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/job/edit/[id]/layout.tsx b/src/app/dev/job/edit/[id]/layout.tsx
new file mode 100644
index 00000000..f2024656
--- /dev/null
+++ b/src/app/dev/job/edit/[id]/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutJob_Edit } from "@/app_modules/job";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/job/edit/[id]/page.tsx b/src/app/dev/job/edit/[id]/page.tsx
new file mode 100644
index 00000000..76da710e
--- /dev/null
+++ b/src/app/dev/job/edit/[id]/page.tsx
@@ -0,0 +1,13 @@
+import { Job_Edit } from "@/app_modules/job";
+import { Job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ let jobId = params.id;
+ const dataJob = await Job_getOneById(jobId);
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/job/main/arsip/page.tsx b/src/app/dev/job/main/arsip/page.tsx
new file mode 100644
index 00000000..fcd2d063
--- /dev/null
+++ b/src/app/dev/job/main/arsip/page.tsx
@@ -0,0 +1,12 @@
+import { Job_Arsip } from "@/app_modules/job";
+import { Job_getListAllArsipById } from "@/app_modules/job/fun/get/get_list_all_arsip";
+
+export default async function Page() {
+ const dataJob = await Job_getListAllArsipById()
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/job/main/beranda/page.tsx b/src/app/dev/job/main/beranda/page.tsx
new file mode 100644
index 00000000..c16c9453
--- /dev/null
+++ b/src/app/dev/job/main/beranda/page.tsx
@@ -0,0 +1,12 @@
+import { Job_Beranda } from "@/app_modules/job";
+import { Job_getAllListPublish } from "@/app_modules/job/fun/get/get_list_all_publish";
+
+export default async function Page() {
+ const listJob = await Job_getAllListPublish();
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/job/main/layout.tsx b/src/app/dev/job/main/layout.tsx
new file mode 100644
index 00000000..337a18bc
--- /dev/null
+++ b/src/app/dev/job/main/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutJob_Main } from "@/app_modules/job";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/job/main/status/page.tsx b/src/app/dev/job/main/status/page.tsx
new file mode 100644
index 00000000..3ce708be
--- /dev/null
+++ b/src/app/dev/job/main/status/page.tsx
@@ -0,0 +1,22 @@
+import { Job_Status } from "@/app_modules/job";
+import { Job_getListStatusByStatusId } from "@/app_modules/job/fun/get/get_list_status_by_status_id";
+
+export default async function Page() {
+ const listPublish = await Job_getListStatusByStatusId("1");
+ const listReview = await Job_getListStatusByStatusId("2");
+ const listDraft = await Job_getListStatusByStatusId("3");
+ const listReject = await Job_getListStatusByStatusId("4");
+
+
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/job/non_user_view/[id]/layout.tsx b/src/app/dev/job/non_user_view/[id]/layout.tsx
new file mode 100644
index 00000000..74cd4a16
--- /dev/null
+++ b/src/app/dev/job/non_user_view/[id]/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutJob_NonUserView } from "@/app_modules/job";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/job/non_user_view/[id]/page.tsx b/src/app/dev/job/non_user_view/[id]/page.tsx
new file mode 100644
index 00000000..8953554d
--- /dev/null
+++ b/src/app/dev/job/non_user_view/[id]/page.tsx
@@ -0,0 +1,13 @@
+import { Job_NonUserView } from "@/app_modules/job";
+import { Job_getOneById } from "@/app_modules/job/fun/get/get_one_by_id";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ let jobId = params.id;
+ const dataJob = await Job_getOneById(jobId);
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/job/splash/page.tsx b/src/app/dev/job/splash/page.tsx
new file mode 100644
index 00000000..5286f7dc
--- /dev/null
+++ b/src/app/dev/job/splash/page.tsx
@@ -0,0 +1,9 @@
+import { Job_Splash } from "@/app_modules/job";
+
+export default async function Page() {
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/create/layout.tsx b/src/app/dev/vote/create/layout.tsx
new file mode 100644
index 00000000..3152ab64
--- /dev/null
+++ b/src/app/dev/vote/create/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutVote_Create } from "@/app_modules/vote";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/vote/create/page.tsx b/src/app/dev/vote/create/page.tsx
new file mode 100644
index 00000000..a1d28226
--- /dev/null
+++ b/src/app/dev/vote/create/page.tsx
@@ -0,0 +1,9 @@
+import { Vote_Create } from "@/app_modules/vote";
+
+export default async function Page() {
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/draft/[id]/layout.tsx b/src/app/dev/vote/detail/draft/[id]/layout.tsx
new file mode 100644
index 00000000..ba62a6ef
--- /dev/null
+++ b/src/app/dev/vote/detail/draft/[id]/layout.tsx
@@ -0,0 +1,19 @@
+import { LayoutVote_DetailDraft } from "@/app_modules/vote";
+import React from "react";
+
+export default function Layout({
+ children,
+ params,
+}: {
+ children: React.ReactNode;
+ params: { id: string };
+}) {
+ let voteId = params.id;
+ return (
+ <>
+
+ {children}
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/draft/[id]/page.tsx b/src/app/dev/vote/detail/draft/[id]/page.tsx
new file mode 100644
index 00000000..850cb121
--- /dev/null
+++ b/src/app/dev/vote/detail/draft/[id]/page.tsx
@@ -0,0 +1,13 @@
+import { Vote_DetailDraft } from "@/app_modules/vote";
+import { Vote_getOnebyId } from "@/app_modules/vote/fun/get/get_one_by_id";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ const voteId = params.id;
+ const dataVote = await Vote_getOnebyId(voteId);
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx b/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx
new file mode 100644
index 00000000..ca76dac8
--- /dev/null
+++ b/src/app/dev/vote/detail/kontribusi/[id]/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutVote_DetailKontribusi } from "@/app_modules/vote";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/kontribusi/[id]/page.tsx b/src/app/dev/vote/detail/kontribusi/[id]/page.tsx
new file mode 100644
index 00000000..75dd7eb3
--- /dev/null
+++ b/src/app/dev/vote/detail/kontribusi/[id]/page.tsx
@@ -0,0 +1,19 @@
+import { Vote_DetailKontribusi } from "@/app_modules/vote";
+import { Vote_getListKontributorById } from "@/app_modules/vote/fun/get/get_list_kontributor_by_id";
+import { Vote_getOnebyId } from "@/app_modules/vote/fun/get/get_one_by_id";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ let voteId = params.id;
+ const dataVote = await Vote_getOnebyId(voteId)
+ const listKontributor = await Vote_getListKontributorById(voteId)
+
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/main/[id]/layout.tsx b/src/app/dev/vote/detail/main/[id]/layout.tsx
new file mode 100644
index 00000000..6e978bef
--- /dev/null
+++ b/src/app/dev/vote/detail/main/[id]/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutVote_MainDetail } from "@/app_modules/vote";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/main/[id]/page.tsx b/src/app/dev/vote/detail/main/[id]/page.tsx
new file mode 100644
index 00000000..197f4b7e
--- /dev/null
+++ b/src/app/dev/vote/detail/main/[id]/page.tsx
@@ -0,0 +1,29 @@
+import prisma from "@/app/lib/prisma";
+import { Vote_MainDetail } from "@/app_modules/vote";
+import { Vote_getHasilVoteById } from "@/app_modules/vote/fun/get/get_list_hasil_by_id";
+import { Vote_cekKontributorById } from "@/app_modules/vote/fun/get/cek_kontributor_by_id";
+import { Vote_getOnebyId } from "@/app_modules/vote/fun/get/get_one_by_id";
+import { Vote_getOnePilihanVotingByUserId } from "@/app_modules/vote/fun/get/get_one_pilihan_voting_by_user_id";
+import { Vote_getListKontributorById } from "@/app_modules/vote/fun/get/get_list_kontributor_by_id";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ const voteId = params.id;
+ const dataVote = await Vote_getOnebyId(voteId);
+ const hasilVoting = await Vote_getHasilVoteById(voteId as any);
+ const isKontributor = await Vote_cekKontributorById(voteId);
+ const pilihanKontributor = await Vote_getOnePilihanVotingByUserId(voteId);
+ const listKontributor = await Vote_getListKontributorById(voteId);
+
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/publish/[id]/layout.tsx b/src/app/dev/vote/detail/publish/[id]/layout.tsx
new file mode 100644
index 00000000..6730430a
--- /dev/null
+++ b/src/app/dev/vote/detail/publish/[id]/layout.tsx
@@ -0,0 +1,10 @@
+import { LayoutVote_DetailPublish } from "@/app_modules/vote";
+import React from "react";
+
+export default function Layout({ children }: { children: React.ReactNode }) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/publish/[id]/page.tsx b/src/app/dev/vote/detail/publish/[id]/page.tsx
new file mode 100644
index 00000000..a0db9358
--- /dev/null
+++ b/src/app/dev/vote/detail/publish/[id]/page.tsx
@@ -0,0 +1,18 @@
+import { Vote_DetailPublish } from "@/app_modules/vote";
+import { Vote_getListKontributorById } from "@/app_modules/vote/fun/get/get_list_kontributor_by_id";
+import { Vote_getOnebyId } from "@/app_modules/vote/fun/get/get_one_by_id";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ let voteId = params.id;
+ const dataVote = await Vote_getOnebyId(voteId);
+ const listKontributor = await Vote_getListKontributorById(voteId);
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/reject/[id]/layout.tsx b/src/app/dev/vote/detail/reject/[id]/layout.tsx
new file mode 100644
index 00000000..469f132a
--- /dev/null
+++ b/src/app/dev/vote/detail/reject/[id]/layout.tsx
@@ -0,0 +1,8 @@
+import { LayoutVote_DetailReject } from "@/app_modules/vote";
+import React from "react";
+
+export default async function Layout({children}: {children: React.ReactNode}) {
+ return<>
+ {children}
+ >
+}
\ No newline at end of file
diff --git a/src/app/dev/vote/detail/reject/[id]/page.tsx b/src/app/dev/vote/detail/reject/[id]/page.tsx
new file mode 100644
index 00000000..3f4c1b5f
--- /dev/null
+++ b/src/app/dev/vote/detail/reject/[id]/page.tsx
@@ -0,0 +1,13 @@
+import { Vote_DetailReject } from "@/app_modules/vote";
+import { Vote_getOnebyId } from "@/app_modules/vote/fun/get/get_one_by_id";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ let voteId = params.id;
+ const dataVote = await Vote_getOnebyId(voteId);
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/review/[id]/layout.tsx b/src/app/dev/vote/detail/review/[id]/layout.tsx
new file mode 100644
index 00000000..b749c3df
--- /dev/null
+++ b/src/app/dev/vote/detail/review/[id]/layout.tsx
@@ -0,0 +1,10 @@
+import { LayoutVote_DetailReview } from "@/app_modules/vote";
+import React from "react";
+
+export default function Layout({ children }: { children: React.ReactNode }) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/review/[id]/page.tsx b/src/app/dev/vote/detail/review/[id]/page.tsx
new file mode 100644
index 00000000..a9dbd486
--- /dev/null
+++ b/src/app/dev/vote/detail/review/[id]/page.tsx
@@ -0,0 +1,13 @@
+import { Vote_DetailReview } from "@/app_modules/vote";
+import { Vote_getOnebyId } from "@/app_modules/vote/fun/get/get_one_by_id";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ let voteId = params.id;
+ const dataVote = await Vote_getOnebyId(voteId);
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/riwayat_saya/[id]/layout.tsx b/src/app/dev/vote/detail/riwayat_saya/[id]/layout.tsx
new file mode 100644
index 00000000..4d17c867
--- /dev/null
+++ b/src/app/dev/vote/detail/riwayat_saya/[id]/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutVote_DetailRiwayatSaya } from "@/app_modules/vote";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/riwayat_saya/[id]/page.tsx b/src/app/dev/vote/detail/riwayat_saya/[id]/page.tsx
new file mode 100644
index 00000000..f4542ad0
--- /dev/null
+++ b/src/app/dev/vote/detail/riwayat_saya/[id]/page.tsx
@@ -0,0 +1,19 @@
+import { Vote_DetailRiwayatSaya } from "@/app_modules/vote";
+import { Vote_getListKontributorById } from "@/app_modules/vote/fun/get/get_list_kontributor_by_id";
+import { Vote_getOnePublishbyId } from "@/app_modules/vote/fun/get/get_one_publish_by_id";
+
+export default async function Page({params}: {params: {id: string}}) {
+ let voteId = params.id;
+ const dataVote = await Vote_getOnePublishbyId(voteId);
+ const listKontributor = await Vote_getListKontributorById(voteId);
+
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx b/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx
new file mode 100644
index 00000000..4723aa9d
--- /dev/null
+++ b/src/app/dev/vote/detail/semua_riwayat/[id]/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutVote_DetailSemuaRiwayat } from "@/app_modules/vote";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/vote/detail/semua_riwayat/[id]/page.tsx b/src/app/dev/vote/detail/semua_riwayat/[id]/page.tsx
new file mode 100644
index 00000000..6d943acd
--- /dev/null
+++ b/src/app/dev/vote/detail/semua_riwayat/[id]/page.tsx
@@ -0,0 +1,19 @@
+import { Vote_DetailSemuaRiwayat } from "@/app_modules/vote";
+import { Vote_getListKontributorById } from "@/app_modules/vote/fun/get/get_list_kontributor_by_id";
+import { Vote_getOnePublishbyId } from "@/app_modules/vote/fun/get/get_one_publish_by_id";
+
+
+export default async function Page({params}: {params: {id: string}}) {
+ let voteId = params.id
+ const dataVote = await Vote_getOnePublishbyId(voteId)
+ const listKontributor = await Vote_getListKontributorById(voteId)
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/edit/[id]/layout.tsx b/src/app/dev/vote/edit/[id]/layout.tsx
new file mode 100644
index 00000000..c84da67c
--- /dev/null
+++ b/src/app/dev/vote/edit/[id]/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutVote_Edit } from "@/app_modules/vote";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/vote/edit/[id]/page.tsx b/src/app/dev/vote/edit/[id]/page.tsx
new file mode 100644
index 00000000..d43d25e6
--- /dev/null
+++ b/src/app/dev/vote/edit/[id]/page.tsx
@@ -0,0 +1,20 @@
+import { Vote_Edit } from "@/app_modules/vote";
+import { Vote_getListDaftarNamaById } from "@/app_modules/vote/fun/get/get_list_daftar_vote_by_id";
+import { Vote_getOnebyId } from "@/app_modules/vote/fun/get/get_one_by_id";
+import _ from "lodash";
+
+export default async function Page({ params }: { params: { id: string } }) {
+ let voteId = params.id;
+ const dataVote = await Vote_getOnebyId(voteId);
+ const data = _.omit(dataVote, ["Voting_DaftarNamaVote"]);
+ const listDaftarVote = await Vote_getListDaftarNamaById(voteId);
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/main/beranda/page.tsx b/src/app/dev/vote/main/beranda/page.tsx
new file mode 100644
index 00000000..25623b91
--- /dev/null
+++ b/src/app/dev/vote/main/beranda/page.tsx
@@ -0,0 +1,12 @@
+import { Vote_Beranda } from "@/app_modules/vote";
+import { Vote_getAllListPublish } from "@/app_modules/vote/fun/get/get_all_list_publish";
+
+export default async function Page() {
+ const dataVote = await Vote_getAllListPublish()
+
+ return (
+ <>
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/src/app/dev/vote/main/kontribusi/page.tsx b/src/app/dev/vote/main/kontribusi/page.tsx
new file mode 100644
index 00000000..fa11c1b2
--- /dev/null
+++ b/src/app/dev/vote/main/kontribusi/page.tsx
@@ -0,0 +1,12 @@
+import { Vote_Kontribusi } from "@/app_modules/vote";
+import { Vote_getAllListKontribusiByAuthorId } from "@/app_modules/vote/fun/get/get_list_kontribusi_by_author_id";
+
+
+export default async function Page() {
+ const dataKontribusi = await Vote_getAllListKontribusiByAuthorId()
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/main/layout.tsx b/src/app/dev/vote/main/layout.tsx
new file mode 100644
index 00000000..6c2e5673
--- /dev/null
+++ b/src/app/dev/vote/main/layout.tsx
@@ -0,0 +1,14 @@
+import { LayoutVote_Main } from "@/app_modules/vote";
+import React from "react";
+
+export default async function Layout({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ {children}
+ >
+ );
+}
diff --git a/src/app/dev/vote/main/riwayat/page.tsx b/src/app/dev/vote/main/riwayat/page.tsx
new file mode 100644
index 00000000..76593fd8
--- /dev/null
+++ b/src/app/dev/vote/main/riwayat/page.tsx
@@ -0,0 +1,17 @@
+import { Vote_Riwayat } from "@/app_modules/vote";
+import { Vote_getAllListRiwayat } from "@/app_modules/vote/fun/get/get_all_list_riwayat";
+import { Vote_getAllListRiwayatSaya } from "@/app_modules/vote/fun/get/get_all_list_riwayat_saya";
+
+export default async function Page() {
+ const listRiwayat = await Vote_getAllListRiwayat();
+ const listRiwayatSaya = await Vote_getAllListRiwayatSaya()
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/main/status/page.tsx b/src/app/dev/vote/main/status/page.tsx
new file mode 100644
index 00000000..8c612930
--- /dev/null
+++ b/src/app/dev/vote/main/status/page.tsx
@@ -0,0 +1,21 @@
+import { Vote_Status } from "@/app_modules/vote";
+import { Vote_getListByStatusId } from "@/app_modules/vote/fun/get/get_list_status_by_status_id";
+
+export default async function Page() {
+ const listPublish = await Vote_getListByStatusId("1");
+ const listReview = await Vote_getListByStatusId("2");
+ const listDraft = await Vote_getListByStatusId("3");
+ const listReject = await Vote_getListByStatusId("4");
+
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/dev/vote/splash/page.tsx b/src/app/dev/vote/splash/page.tsx
new file mode 100644
index 00000000..9d5976a3
--- /dev/null
+++ b/src/app/dev/vote/splash/page.tsx
@@ -0,0 +1,9 @@
+import { Vote_Splash } from "@/app_modules/vote";
+
+export default async function Page() {
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app/emotion.tsx b/src/app/emotion.tsx
index cb3adb61..1215b3ed 100644
--- a/src/app/emotion.tsx
+++ b/src/app/emotion.tsx
@@ -2,7 +2,7 @@
import AppNotif from "@/app_modules/notif";
// import './globals.css'
import { CacheProvider } from "@emotion/react";
-import { MantineProvider, useEmotionCache } from "@mantine/core";
+import { Image, MantineProvider, useEmotionCache } from "@mantine/core";
import { Notifications } from "@mantine/notifications";
import { useServerInsertedHTML } from "next/navigation";
import { ToastContainer, toast } from "react-toastify";
@@ -27,10 +27,13 @@ export default function RootStyleRegistry({
return (
+
+ HIPMI
+
-
+
{children}
{/*
*/}
diff --git a/src/app/lib/router_admin/router_admin_job.ts b/src/app/lib/router_admin/router_admin_job.ts
new file mode 100644
index 00000000..0062d6a2
--- /dev/null
+++ b/src/app/lib/router_admin/router_admin_job.ts
@@ -0,0 +1,7 @@
+export const RouterAdminJob = {
+ main: "/dev/admin/job/main",
+ table_publish: "/dev/admin/job/child/table_publish",
+ table_review: "/dev/admin/job/child/table_review",
+ table_reject: "/dev/admin/job/child/table_reject",
+ arsip: "/dev/admin/job/child/arsip",
+};
diff --git a/src/app/lib/router_admin/router_admin_vote.ts b/src/app/lib/router_admin/router_admin_vote.ts
new file mode 100644
index 00000000..7b90c33f
--- /dev/null
+++ b/src/app/lib/router_admin/router_admin_vote.ts
@@ -0,0 +1,8 @@
+export const RouterAdminVote = {
+ // main
+ main: "/dev/admin/vote/main",
+ table_publish: "/dev/admin/vote/child/table_publish",
+ table_review: "/dev/admin/vote/child/table_review",
+ table_reject: "/dev/admin/vote/child/table_reject",
+ riwayat: "/dev/admin/vote/child/riwayat",
+};
diff --git a/src/app/lib/router_hipmi/router_job.ts b/src/app/lib/router_hipmi/router_job.ts
new file mode 100644
index 00000000..9cbc9baf
--- /dev/null
+++ b/src/app/lib/router_hipmi/router_job.ts
@@ -0,0 +1,27 @@
+export const RouterJob = {
+ //api
+ api_gambar: "/api/job/gambar/",
+
+ //spalsh
+ spalsh: "/dev/job/splash",
+
+ // main
+ beranda: "/dev/job/main/beranda",
+ status: "/dev/job/main/status",
+ arsip: "/dev/job/main/arsip",
+
+ // create & edit
+ create: "/dev/job/create",
+ edit: "/dev/job/edit/",
+
+ // detail
+ main_detail: "/dev/job/detail/main/",
+ detail_publish: "/dev/job/detail/publish/",
+ detail_review: "/dev/job/detail/review/",
+ detail_draft: "/dev/job/detail/draft/",
+ detail_reject: "/dev/job/detail/reject/",
+ detail_arsip: "/dev/job/detail/arsip/",
+
+ // non user
+ non_user_view: "/dev/job/non_user_view/",
+};
diff --git a/src/app/lib/router_hipmi/router_vote.ts b/src/app/lib/router_hipmi/router_vote.ts
new file mode 100644
index 00000000..9b1e1635
--- /dev/null
+++ b/src/app/lib/router_hipmi/router_vote.ts
@@ -0,0 +1,24 @@
+export const RouterVote = {
+ // main
+ splash: "/dev/vote/splash",
+ beranda: "/dev/vote/main/beranda",
+ status: "/dev/vote/main/status",
+ kontribusi: "/dev/vote/main/kontribusi",
+ riwayat: "/dev/vote/main/riwayat",
+
+ // create
+ create: "/dev/vote/create",
+
+ //
+ edit: "/dev/vote/edit/",
+
+ //detail
+ main_detail: "/dev/vote/detail/main/",
+ detail_publish: "/dev/vote/detail/publish/",
+ detail_review: "/dev/vote/detail/review/",
+ detail_draft: "/dev/vote/detail/draft/",
+ detail_reject: "/dev/vote/detail/reject/",
+ detail_kontribusi: "/dev/vote/detail/kontribusi/",
+ detail_semua_riwayat: "/dev/vote/detail/semua_riwayat/",
+ detail_riwayat_saya: "/dev/vote/detail/riwayat_saya/",
+};
diff --git a/src/app/makuro/_server/makuro_view.tsx b/src/app/makuro/_server/makuro_view.tsx
index 7e222d27..4ff96721 100644
--- a/src/app/makuro/_server/makuro_view.tsx
+++ b/src/app/makuro/_server/makuro_view.tsx
@@ -1,13 +1,54 @@
-'use client'
+"use client";
-import { Button } from "@mantine/core";
+import { Box, Button, Stack, TextInput } from "@mantine/core";
import makuro_test from "./makuro_test";
+import { useState } from "react";
+import _, { forIn } from "lodash";
export default function ViewMakuro() {
+ const [listnya, setListnya] = useState([
+ {
+ name: "Voting",
+ value: "",
+ },
+ { name: "Voting", value: "" },
+ ]);
- return <>
+ return (
+ <>
+
+ {listnya.map((e, k) => (
+
+ {
+ const val = _.clone(listnya);
+ val[k].value = v.currentTarget.value;
+ setListnya([...val]);
+ }}
+ label={e.name}
+ />
+
+ ))}
makuro_test()}
- >Tekan Aja
+ onClick={() => {
+ // const cek = listnya[listnya.length - 1]
+ // console.log(cek.id + 1);
+
+ if (listnya.length > 4) return console.log("ga bisa lebih");
+ setListnya([...listnya, { name: "Voting", value: "" }]);
+ }}
+ >
+ {" "}
+ Tambah
+
+ {
+ console.log(JSON.stringify(listnya, null, 4));
+ }}
+ >
+ Hasilnya
+
+
>
-}
\ No newline at end of file
+ );
+}
diff --git a/src/app_modules/admin/event/child/tipe_acara.tsx b/src/app_modules/admin/event/child/tipe_acara.tsx
index f55ba6c4..78479e1d 100644
--- a/src/app_modules/admin/event/child/tipe_acara.tsx
+++ b/src/app_modules/admin/event/child/tipe_acara.tsx
@@ -7,6 +7,7 @@ import {
Divider,
Group,
List,
+ Modal,
Paper,
SimpleGrid,
Stack,
@@ -23,8 +24,11 @@ import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_gl
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 { AdminEvent_getListTipeAcara } from "../fun/get/get_list_tipe_acara";
-import { IconEditCircle } from "@tabler/icons-react";
+import { IconEditCircle, IconTrash } from "@tabler/icons-react";
import { AdminEvent_funEditTipeAcara } from "../fun/edit/fun_edit_tipe_acara";
+import { useDisclosure } from "@mantine/hooks";
+import { AdminEvent_funEditActivationTipeAcaraById } from "../fun/edit/fun_edit_activation_tipe_acara";
+import { number } from "echarts";
export default function AdminEvent_DetailTipeAcara({
listTipe,
@@ -46,8 +50,35 @@ function DetailTipeAcara({ listTipe }: { listTipe: MODEL_DEFAULT_MASTER[] }) {
const [name, setName] = useState("");
const [openEditor, setOpenEditor] = useState(false);
const [edit, setEdit] = useState(null);
+ const [opened, { open, close }] = useDisclosure(false);
+ const [hapusTipe, setHapusTipe] = useState({
+ id: "",
+ name: "",
+ });
+
return (
<>
+
+
+
+ Anda yakin akan menghapus{" "}
+
+ {hapusTipe.name}
+ {" "}
+ ?
+
+
+ close()}>Batal
+ onDelete(hapusTipe as any, close, setTipe)}
+ color="red"
+ >
+ Hapus
+
+
+
+
+
{e.name}
- {
- setOpenEditor(true);
- setEdit(e);
- }}
- >
-
-
+
+ {
+ setOpenEditor(true);
+ setEdit(e);
+ }}
+ >
+
+ {" "}
+ {
+ open();
+ setHapusTipe({
+ ...hapusTipe,
+ id: e.id,
+ name: e.name,
+ });
+ }}
+ >
+
+
+
@@ -175,3 +221,18 @@ async function onUpdate(id: any, edit: any, setTipe: any, setOpenEditor: any) {
}
});
}
+
+async function onDelete(data: MODEL_DEFAULT_MASTER, close: any, setTipe: any) {
+ await AdminEvent_funEditActivationTipeAcaraById(data.id as any).then(
+ async (res) => {
+ if (res.status === 200) {
+ const data = await AdminEvent_getListTipeAcara();
+ setTipe(data);
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ close();
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ }
+ );
+}
diff --git a/src/app_modules/admin/event/fun/edit/fun_edit_activation_tipe_acara.ts b/src/app_modules/admin/event/fun/edit/fun_edit_activation_tipe_acara.ts
new file mode 100644
index 00000000..86980a97
--- /dev/null
+++ b/src/app_modules/admin/event/fun/edit/fun_edit_activation_tipe_acara.ts
@@ -0,0 +1,22 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { revalidatePath } from "next/cache";
+
+export async function AdminEvent_funEditActivationTipeAcaraById(id: number) {
+ const updt = await prisma.eventMaster_TipeAcara.update({
+ where: {
+ id: id,
+ },
+ data: {
+ active: false,
+ },
+ });
+
+ if(!updt) return {status: 400, message: "Gagal Update"}
+ revalidatePath("/dev/admin/event/child/tipe_acara");
+ return {
+ status: 200,
+ message: "Update Berhasil"
+ }
+}
diff --git a/src/app_modules/admin/event/fun/get/get_list_tipe_acara.ts b/src/app_modules/admin/event/fun/get/get_list_tipe_acara.ts
index 8df30f90..9f2ead65 100644
--- a/src/app_modules/admin/event/fun/get/get_list_tipe_acara.ts
+++ b/src/app_modules/admin/event/fun/get/get_list_tipe_acara.ts
@@ -6,6 +6,9 @@ export async function AdminEvent_getListTipeAcara(){
const data = await prisma.eventMaster_TipeAcara.findMany({
orderBy:{
id: "asc"
+ },
+ where: {
+ active: true
}
})
return data
diff --git a/src/app_modules/admin/job/child/arsip/index.tsx b/src/app_modules/admin/job/child/arsip/index.tsx
new file mode 100644
index 00000000..af1cd6c1
--- /dev/null
+++ b/src/app_modules/admin/job/child/arsip/index.tsx
@@ -0,0 +1,200 @@
+"use client";
+
+import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import { AdminEvent_getListPesertaById } from "@/app_modules/admin/event/fun/get/get_list_peserta_by_id";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+import {
+ MODEL_EVENT,
+ MODEL_EVENT_PESERTA,
+} from "@/app_modules/event/model/interface";
+import { MODEL_JOB } from "@/app_modules/job/model/interface";
+import {
+ MODEL_VOTE_KONTRIBUTOR,
+ MODEL_VOTING,
+ MODEL_VOTING_DAFTAR_NAMA_VOTE,
+} from "@/app_modules/vote/model/interface";
+import {
+ Avatar,
+ Badge,
+ Box,
+ Button,
+ Card,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Modal,
+ Paper,
+ ScrollArea,
+ Spoiler,
+ Stack,
+ Table,
+ Text,
+ Title,
+} from "@mantine/core";
+import { useDisclosure } from "@mantine/hooks";
+import { IconEyeCheck, IconEyeShare } from "@tabler/icons-react";
+import _ from "lodash";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+
+export default function AdminJob_TableArsip({
+ dataVote,
+}: {
+ dataVote?: any;
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listArsip }: { listArsip: MODEL_JOB[] }) {
+ const router = useRouter();
+ const [opened, { open, close }] = useDisclosure(false);
+ const [data, setData] = useState(listArsip);
+ const [img, setImg] = useState("");
+
+ const TableRows = data?.map((e, i) => (
+
+
+
+ {e.title}
+
+
+
+
+ {e.imagesId ? (
+ }
+ onClick={() => {
+ setImg(e.imagesId);
+ open();
+ }}
+ >
+ Lihat
+
+ ) : (
+
+
+ Tidak ada poster
+
+
+ )}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ));
+
+ return (
+ <>
+
+ {/* */}
+
+
+
+
+ ARSIP
+
+
+
+
+
+
+
+ Judul
+
+
+ Poster
+
+
+ Syarat Ketentuan
+
+
+ Deskripsi
+
+
+
+ {TableRows}
+
+
+
+ {_.isEmpty(TableRows) ? (
+
+ Tidak Ada Data
+
+ ) : (
+ ""
+ )}
+
+
+ >
+ );
+}
+
+async function onList(
+ voteId: string,
+ setHasil: any,
+ setKontributor: any,
+ setLoading: any,
+ open: any
+) {
+ // await AdminVote_getHasilById(voteId).then((res) => {
+ // setHasil(res);
+ // setLoading(false);
+ // });
+
+ // await AdminVote_getListKontributorById(voteId).then((res) => {
+ // setKontributor(res);
+ // setLoading(false);
+ // });
+
+ open();
+}
diff --git a/src/app_modules/admin/job/child/table_publish/index.tsx b/src/app_modules/admin/job/child/table_publish/index.tsx
new file mode 100644
index 00000000..5ed128dd
--- /dev/null
+++ b/src/app_modules/admin/job/child/table_publish/index.tsx
@@ -0,0 +1,171 @@
+"use client";
+
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import { MODEL_JOB } from "@/app_modules/job/model/interface";
+import {
+ Avatar,
+ Badge,
+ Box,
+ Button,
+ Card,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Image,
+ Modal,
+ Paper,
+ ScrollArea,
+ Spoiler,
+ Stack,
+ Table,
+ Text,
+ Title,
+} from "@mantine/core";
+import { useDisclosure } from "@mantine/hooks";
+import { IconBan, IconEyeCheck, IconEyeShare } from "@tabler/icons-react";
+import _ from "lodash";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+
+export default function AdminJob_TablePublish({
+ dataVote,
+}: {
+ dataVote?: any;
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listReview }: { listReview: MODEL_JOB[] }) {
+ const router = useRouter();
+ const [opened, { open, close }] = useDisclosure(false);
+ const [data, setData] = useState(listReview);
+ const [img, setImg] = useState("");
+
+ const TableRows = data?.map((e, i) => (
+
+
+
+ {e.title}
+
+
+
+
+ {e.imagesId ? (
+ }
+ onClick={() => {
+ setImg(e.imagesId);
+ open();
+ }}
+ >
+ Lihat
+
+ ) : (
+
+
+ Tidak ada poster
+
+
+ )}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ));
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ PUBLISH
+
+
+
+
+
+
+
+ Judul
+
+
+ Poster
+
+
+ Syarat Ketentuan
+
+
+ Deskripsi
+
+
+
+ {TableRows}
+
+
+
+ {_.isEmpty(TableRows) ? (
+
+ Tidak Ada Data
+
+ ) : (
+ ""
+ )}
+
+
+ {/* {JSON.stringify(data, null, 2)} */}
+ >
+ );
+}
diff --git a/src/app_modules/admin/job/child/table_reject/index.tsx b/src/app_modules/admin/job/child/table_reject/index.tsx
new file mode 100644
index 00000000..2016b06f
--- /dev/null
+++ b/src/app_modules/admin/job/child/table_reject/index.tsx
@@ -0,0 +1,251 @@
+"use client";
+
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import { MODEL_JOB } from "@/app_modules/job/model/interface";
+import {
+ Avatar,
+ Badge,
+ Box,
+ Button,
+ Card,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Image,
+ Modal,
+ Paper,
+ ScrollArea,
+ Spoiler,
+ Stack,
+ Table,
+ Text,
+ Textarea,
+ Title,
+} from "@mantine/core";
+import { useDisclosure } from "@mantine/hooks";
+import { IconBan, IconEyeCheck, IconEyeShare } from "@tabler/icons-react";
+import _ from "lodash";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { AdminJob_funEditCatatanById } from "../../fun/edit/fun_edit_catatan_by_id";
+import { AdminJob_getListTableByStatusId } from "../../fun/get/get_list_table_by_status_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 AdminJob_TableReject({ dataVote }: { dataVote?: any }) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listReject }: { listReject: MODEL_JOB[] }) {
+ const [opened, { open, close }] = useDisclosure(false);
+ const [data, setData] = useState(listReject);
+ const [reject, setReject] = useState(false);
+ const [img, setImg] = useState("");
+ const [jobId, setJobId] = useState("");
+ const [catatan, setCatatan] = useState("");
+
+ const TableRows = data?.map((e, i) => (
+
+
+
+ {e.title}
+
+
+
+
+ {e.imagesId ? (
+ }
+ onClick={() => {
+ setImg(e.imagesId);
+ open();
+ }}
+ >
+ Lihat
+
+ ) : (
+
+
+ Tidak ada poster
+
+
+ )}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {e.catatan}
+
+
+
+ }
+ radius={"xl"}
+ onClick={() => {
+ setReject(true);
+ setJobId(e.id);
+ setCatatan(e.catatan);
+ }}
+ >
+ Reject
+
+
+
+ ));
+
+ return (
+ <>
+
+
+
+
+
+
+ {
+ setReject(false);
+ }}
+ withCloseButton={false}
+ size={"lg"}
+ centered
+ >
+
+
+
+
+
+
+
+ REJECT
+
+
+
+
+
+
+
+ Judul
+
+
+ Poster
+
+
+ Syarat Ketentuan
+
+
+ Deskripsi
+
+
+ Catatan
+
+
+ Aksi
+
+
+
+ {TableRows}
+
+
+
+ {_.isEmpty(TableRows) ? (
+
+ Tidak Ada Data
+
+ ) : (
+ ""
+ )}
+
+
+ {/* {JSON.stringify(data, null, 2)} */}
+ >
+ );
+}
+
+async function onReject(jobId: string, catatan: string, setData: any) {
+ await AdminJob_funEditCatatanById(jobId, catatan).then(async (res) => {
+ if (res.status === 200) {
+ await AdminJob_getListTableByStatusId("4").then((val) => {
+ setData(val);
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ });
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+}
diff --git a/src/app_modules/admin/job/child/table_review/index.tsx b/src/app_modules/admin/job/child/table_review/index.tsx
new file mode 100644
index 00000000..31e80a2e
--- /dev/null
+++ b/src/app_modules/admin/job/child/table_review/index.tsx
@@ -0,0 +1,263 @@
+"use client";
+
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import { MODEL_JOB } from "@/app_modules/job/model/interface";
+import {
+ Avatar,
+ Badge,
+ Box,
+ Button,
+ Card,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Image,
+ Modal,
+ Paper,
+ ScrollArea,
+ Spoiler,
+ Stack,
+ Table,
+ Text,
+ Textarea,
+ Title,
+} from "@mantine/core";
+import { useDisclosure } from "@mantine/hooks";
+import { IconBan, IconEyeCheck, IconEyeShare } from "@tabler/icons-react";
+import _ from "lodash";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { AdminJob_funEditStatusPublishById } from "../../fun/edit/fun_edit_status_publish_by_id";
+import { AdminJob_getListTableByStatusId } from "../../fun/get/get_list_table_by_status_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";
+import { AdminJob_funEditCatatanById } from "../../fun/edit/fun_edit_catatan_by_id";
+
+export default function AdminJob_TableReview({ dataVote }: { dataVote?: any }) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listReview }: { listReview: MODEL_JOB[] }) {
+ const router = useRouter();
+ const [opened, { open, close }] = useDisclosure(false);
+ const [data, setData] = useState(listReview);
+ const [reject, setReject] = useState(false);
+ const [img, setImg] = useState("");
+ const [jobId, setJobId] = useState("");
+ const [catatan, setCatatan] = useState("");
+
+ const TableRows = data?.map((e, i) => (
+
+
+
+ {e.title}
+
+
+
+
+ {e.imagesId ? (
+ }
+ onClick={() => {
+ setImg(e.imagesId);
+ open();
+ }}
+ >
+ Lihat
+
+ ) : (
+
+
+ Tidak ada poster
+
+
+ )}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+ radius={"xl"}
+ onClick={() => onPublish(e.id, setData)}
+ >
+ Publish
+
+ }
+ radius={"xl"}
+ onClick={() => {
+ setReject(true);
+ setJobId(e.id);
+ }}
+ >
+ Reject
+
+
+
+
+
+ ));
+
+ return (
+ <>
+
+
+
+
+
+
+ {
+ setReject(false);
+ }}
+ withCloseButton={false}
+ size={"lg"}
+ centered
+ >
+
+
+
+
+
+
+
+ REVIEW
+
+
+
+
+
+
+
+ Judul
+
+
+ Poster
+
+
+ Syarat Ketentuan
+
+
+ Deskripsi
+
+
+ Aksi
+
+
+
+ {TableRows}
+
+
+
+ {_.isEmpty(TableRows) ? (
+
+ Tidak Ada Data
+
+ ) : (
+ ""
+ )}
+
+
+ {/* {JSON.stringify(data, null, 2)} */}
+ >
+ );
+}
+
+async function onPublish(jobId: string, setData: any) {
+ await AdminJob_funEditStatusPublishById(jobId).then(async (res) => {
+ if (res.status === 200) {
+ await AdminJob_getListTableByStatusId("2").then((res) => {
+ setData(res);
+ ComponentGlobal_NotifikasiBerhasil("Berhasil Update");
+ });
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+}
+
+async function onReject(jobId: string, catatan: string, setData: any) {
+ await AdminJob_funEditCatatanById(jobId, catatan).then(async (res) => {
+ if (res.status === 200) {
+ await AdminJob_getListTableByStatusId("2").then((val) => {
+ setData(val);
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ });
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+}
diff --git a/src/app_modules/admin/job/fun/count/fun_count_job_by_status_id.ts b/src/app_modules/admin/job/fun/count/fun_count_job_by_status_id.ts
new file mode 100644
index 00000000..6f28bed0
--- /dev/null
+++ b/src/app_modules/admin/job/fun/count/fun_count_job_by_status_id.ts
@@ -0,0 +1,44 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function AdminJob_funCountStatusByStatusId(statusId: string) {
+ if (statusId === "0") {
+ const data = await prisma.job.count({
+ where: {
+ masterStatusId: "1",
+ isArsip: true,
+ },
+ });
+
+ return data;
+ }
+ if (statusId === "1") {
+ const data = await prisma.job.count({
+ where: {
+ masterStatusId: "1",
+ isArsip: false,
+ },
+ });
+
+ return data;
+ }
+ if (statusId === "2") {
+ const data = await prisma.job.count({
+ where: {
+ masterStatusId: "2",
+ },
+ });
+
+ return data;
+ }
+ if (statusId === "4") {
+ const data = await prisma.job.count({
+ where: {
+ masterStatusId: "4",
+ },
+ });
+
+ return data;
+ }
+}
diff --git a/src/app_modules/admin/job/fun/edit/fun_edit_catatan_by_id.ts b/src/app_modules/admin/job/fun/edit/fun_edit_catatan_by_id.ts
new file mode 100644
index 00000000..9efc1005
--- /dev/null
+++ b/src/app_modules/admin/job/fun/edit/fun_edit_catatan_by_id.ts
@@ -0,0 +1,23 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { revalidatePath } from "next/cache";
+
+export async function AdminJob_funEditCatatanById(
+ jobId: string,
+ catatan: string
+) {
+ const up = await prisma.job.update({
+ where: {
+ id: jobId,
+ },
+ data: {
+ masterStatusId: "4",
+ catatan: catatan,
+ },
+ });
+
+ if (!up) return { status: 400, message: "Gagal reject" };
+ revalidatePath("/dev/admin/job/child/table_review");
+ return { status: 200, message: "Berhasil reject" };
+}
diff --git a/src/app_modules/admin/job/fun/edit/fun_edit_status_publish_by_id.ts b/src/app_modules/admin/job/fun/edit/fun_edit_status_publish_by_id.ts
new file mode 100644
index 00000000..95c9f233
--- /dev/null
+++ b/src/app_modules/admin/job/fun/edit/fun_edit_status_publish_by_id.ts
@@ -0,0 +1,20 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { revalidatePath } from "next/cache";
+
+export async function AdminJob_funEditStatusPublishById(jobId: string) {
+ const updt = await prisma.job.update({
+ where: {
+ id: jobId,
+ },
+ data: {
+ masterStatusId: "1",
+ },
+ });
+
+
+ if(!updt) return {status: 400, message: "Update Gagal"}
+ revalidatePath("/dev/admin/job/child/table_review");
+ return {status: 200, message: "Berhasil Update"}
+}
diff --git a/src/app_modules/admin/job/fun/get/get_list_table_by_status_id.ts b/src/app_modules/admin/job/fun/get/get_list_table_by_status_id.ts
new file mode 100644
index 00000000..6a83b623
--- /dev/null
+++ b/src/app_modules/admin/job/fun/get/get_list_table_by_status_id.ts
@@ -0,0 +1,114 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function AdminJob_getListTableByStatusId(statusId: string) {
+ if (statusId === "0") {
+ const getData = await prisma.job.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ masterStatusId: "1",
+ isActive: true,
+ isArsip: true,
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ isArsip: true,
+ createdAt: true,
+ updatedAt: true,
+ content: true,
+ deskripsi: true,
+ catatan: true,
+ authorId: true,
+ Author: true,
+ imagesId: true,
+ },
+ });
+
+ return getData;
+ }
+ if (statusId === "1") {
+ const getData = await prisma.job.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ masterStatusId: "1",
+ isActive: true,
+ isArsip: false,
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ content: true,
+ deskripsi: true,
+ catatan: true,
+ authorId: true,
+ Author: true,
+ imagesId: true,
+ },
+ });
+
+ return getData;
+ }
+ if (statusId === "2") {
+ const getData = await prisma.job.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ masterStatusId: "2",
+ isActive: true,
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ content: true,
+ deskripsi: true,
+ catatan: true,
+ authorId: true,
+ Author: true,
+ imagesId: true,
+ },
+ });
+
+ return getData;
+ }
+
+ if (statusId === "4") {
+ const getData = await prisma.job.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ masterStatusId: "4",
+ isActive: true,
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ content: true,
+ deskripsi: true,
+ catatan: true,
+ authorId: true,
+ Author: true,
+ imagesId: true,
+ },
+ });
+
+ return getData;
+ }
+}
diff --git a/src/app_modules/admin/job/index.tsx b/src/app_modules/admin/job/index.tsx
new file mode 100644
index 00000000..1ad41655
--- /dev/null
+++ b/src/app_modules/admin/job/index.tsx
@@ -0,0 +1,6 @@
+import AdminJob_Main from "./main";
+import AdminJob_TablePublish from "./child/table_publish";
+import AdminJob_TableReview from "./child/table_review";
+import AdminJob_TableReject from "./child/table_reject";
+
+export { AdminJob_Main, AdminJob_TablePublish, AdminJob_TableReview, AdminJob_TableReject };
diff --git a/src/app_modules/admin/job/main/index.tsx b/src/app_modules/admin/job/main/index.tsx
new file mode 100644
index 00000000..59197fed
--- /dev/null
+++ b/src/app_modules/admin/job/main/index.tsx
@@ -0,0 +1,80 @@
+"use client";
+
+import { Group, Paper, SimpleGrid, Stack, Text, Title } from "@mantine/core";
+import ComponentAdminGlobal_HeaderTamplate from "../../component/header_tamplate";
+import { useRouter } from "next/navigation";
+
+export default function AdminJob_Main({
+ countPublish,
+ countReview,
+ countReject,
+ countArsip,
+}: {
+ countPublish: number;
+ countReview: number;
+ countReject: number;
+ countArsip: number
+}) {
+ const router = useRouter();
+
+ const listStatus = [
+ {
+ id: 1,
+ name: "Publish",
+ jumlah: countPublish,
+ color: "green",
+ },
+ {
+ id: 2,
+ name: "Review",
+ jumlah: countReview,
+ color: "orange",
+ },
+ {
+ id: 3,
+ name: "Reject",
+ jumlah: countReject,
+ color: "red",
+ },
+ {
+ id: 4,
+ name: "Arsip",
+ jumlah: countArsip,
+ color: "gray",
+ },
+ ];
+ return (
+ <>
+
+
+
+ {listStatus.map((e, i) => (
+
+
+
+ {e.name}
+ {e.jumlah ? e.jumlah : 0}
+
+
+
+ ))}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/admin/main_dashboard/main/layout.tsx b/src/app_modules/admin/layout.tsx
similarity index 81%
rename from src/app_modules/admin/main_dashboard/main/layout.tsx
rename to src/app_modules/admin/layout.tsx
index f173171e..cda67e17 100644
--- a/src/app_modules/admin/main_dashboard/main/layout.tsx
+++ b/src/app_modules/admin/layout.tsx
@@ -20,9 +20,9 @@ import {
useMantineTheme,
} from "@mantine/core";
import React, { useState } from "react";
-import ComponentGlobal_HeaderTamplate from "../../../component_global/header_tamplate";
+import ComponentGlobal_HeaderTamplate from "../component_global/header_tamplate";
import { useDisclosure } from "@mantine/hooks";
-import { IconLetterH, IconLogout } from "@tabler/icons-react";
+import { IconCircleDot, IconCircleDotFilled, IconHome, IconLetterH, IconLogout } from "@tabler/icons-react";
import {
RouterAdminAward,
RouterAdminDashboard,
@@ -33,11 +33,13 @@ import { useRouter } from "next/navigation";
import { RouterHome } from "@/app/lib/router_hipmi/router_home";
import { Logout } from "@/app_modules/auth";
import { useAtom } from "jotai";
-import { gs_admin_hotMenu, gs_admin_subMenu } from "../../global_state";
-import Admin_Logout from "../../component/logout";
+import { gs_admin_hotMenu, gs_admin_subMenu } from "./global_state";
+import Admin_Logout from "./component/logout";
import { RouterAdminEvent } from "@/app/lib/router_admin/router_admin_event";
import _ from "lodash";
import { listAdminPage } from "./list_page";
+import { RouterAdminVote } from "@/app/lib/router_admin/router_admin_vote";
+import { RouterAdminJob } from "@/app/lib/router_admin/router_admin_job";
export default function AdminLayout({
children,
@@ -48,24 +50,26 @@ export default function AdminLayout({
const [opened, setOpened] = useState(false);
const router = useRouter();
const [active, setActive] = useAtom(gs_admin_hotMenu);
- const [activeChild, setActiveChild] = useAtom(gs_admin_subMenu)
+ const [activeChild, setActiveChild] = useAtom(gs_admin_subMenu);
+
+
const navbarItems = listAdminPage.map((e, i) => (
-
+
{e.name}}
+ fw={active === e.id ? "bold" : "normal"}
+ icon={e.icon}
+ label={{e.name} }
onClick={() => {
- setActive(i);
+ setActive(e.id);
setActiveChild(null);
e.path === "" ? router.push(e.child[0].path) : router.push(e.path);
- e.path === "" ? setActiveChild(0) : ""
+ e.path === "" ? setActiveChild(e.child[0].id) : "";
}}
>
{_.isEmpty(e.child) ? (
@@ -73,18 +77,19 @@ export default function AdminLayout({
) : (
{e.child.map((v, ii) => (
-
+
{v.name}}
+ icon={activeChild === v.id ? : }
onClick={() => {
- setActive(i);
- setActiveChild(ii)
+ setActive(e.id);
+ setActiveChild(v.id);
router.push(v.path);
}}
/>
@@ -99,9 +104,10 @@ export default function AdminLayout({
return (
<>
,
+ child: [],
+ },
+ {
+ id: 2,
+ name: "Investasi",
+ path: RouterAdminInvestasi.main_investasi,
+ icon: ,
+
+ child: [],
+ },
+ {
+ id: 3,
+ name: "Donasi",
+ path: RouterAdminDonasi.main_donasi,
+ icon: ,
+ child: [],
+ },
+ {
+ id: 4,
+ name: "Event",
+ path: "",
+ icon: ,
+ child: [
+ {
+ id: 41,
+ name: "Dashboard",
+ path: RouterAdminEvent.main_event,
+ },
+ {
+ id: 42,
+ name: "Table Publish",
+ path: RouterAdminEvent.table_publish,
+ },
+ {
+ id: 43,
+ name: "Table Review",
+ path: RouterAdminEvent.table_review,
+ },
+ {
+ id: 44,
+ name: "Table Reject",
+ path: RouterAdminEvent.table_reject,
+ },
+ {
+ id: 45,
+ name: "Tipe Acara",
+ path: RouterAdminEvent.detail_tipe_acara,
+ },
+ {
+ id: 6,
+ name: "Riwayat",
+ path: RouterAdminEvent.detail_riwayat,
+ },
+ ],
+ },
+ {
+ id: 5,
+ name: "Voting",
+ path: "",
+ icon: ,
+ child: [
+ {
+ id: 51,
+ name: "Dashboard",
+ path: RouterAdminVote.main,
+ },
+ {
+ id: 52,
+ name: "Table Publish",
+ path: RouterAdminVote.table_publish,
+ },
+ {
+ id: 53,
+ name: "Table Review",
+ path: RouterAdminVote.table_review,
+ },
+ {
+ id: 54,
+ name: "Table Reject",
+ path: RouterAdminVote.table_reject,
+ },
+ {
+ id: 55,
+ name: "Riwayat",
+ path: RouterAdminVote.riwayat,
+ },
+ ],
+ },
+ {
+ id: 6,
+ name: "Job Vacancy",
+ path: "",
+ icon: ,
+ child: [
+ {
+ id: 61,
+ name: "Dashboard",
+ path: RouterAdminJob.main,
+ },
+ {
+ id: 62,
+ name: "Table Publish",
+ path: RouterAdminJob.table_publish,
+ },
+ {
+ id: 63,
+ name: "Table Review",
+ path: RouterAdminJob.table_review,
+ },
+ {
+ id: 64,
+ name: "Table Reject",
+ path: RouterAdminJob.table_reject,
+ },
+ {
+ id: 65,
+ name: "Arsip",
+ path: RouterAdminJob.arsip,
+ },
+ ],
+ },
+];
diff --git a/src/app_modules/admin/main_dashboard/index.tsx b/src/app_modules/admin/main_dashboard/index.tsx
index 01c5716f..31206a44 100644
--- a/src/app_modules/admin/main_dashboard/index.tsx
+++ b/src/app_modules/admin/main_dashboard/index.tsx
@@ -1,5 +1,5 @@
import AdminMain from "./main/view";
-import AdminLayout from "./main/layout";
+import AdminLayout from "../layout";
import SplashDashboardAdmin from "../splash/splash";
export { AdminMain, AdminLayout, SplashDashboardAdmin };
diff --git a/src/app_modules/admin/main_dashboard/main/list_page.ts b/src/app_modules/admin/main_dashboard/main/list_page.ts
deleted file mode 100644
index 63316732..00000000
--- a/src/app_modules/admin/main_dashboard/main/list_page.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import { RouterAdminEvent } from "@/app/lib/router_admin/router_admin_event";
-import {
- RouterAdminDashboard,
- RouterAdminDonasi,
- RouterAdminInvestasi,
-} from "@/app/lib/router_hipmi/router_admin";
-
-export const listAdminPage = [
- {
- id: 1,
- name: "Main Dashboard",
- path: RouterAdminDashboard.main_admin,
- child: [],
- },
- {
- id: 2,
- name: "Investasi",
- path: RouterAdminInvestasi.main_investasi,
- child: [],
- },
- {
- id: 3,
- name: "Donasi",
- path: RouterAdminDonasi.main_donasi,
- child: [],
- },
- {
- id: 4,
- name: "Event",
- path: "",
- child: [
- {
- id: 1,
- name: "Dashboard",
- path: RouterAdminEvent.main_event,
- },
- {
- id: 2,
- name: "Table Publish",
- path: RouterAdminEvent.table_publish,
- },
- {
- id: 3,
- name: "Table Review",
- path: RouterAdminEvent.table_review,
- },
- {
- id: 4,
- name: "Table Reject",
- path: RouterAdminEvent.table_reject,
- },
- {
- id: 5,
- name: "Tipe Acara",
- path: RouterAdminEvent.detail_tipe_acara,
- },
- {
- id: 6,
- name: "Riwayat",
- path: RouterAdminEvent.detail_riwayat,
- },
- ],
- },
-];
diff --git a/src/app_modules/admin/vote/child/riwayat/index.tsx b/src/app_modules/admin/vote/child/riwayat/index.tsx
new file mode 100644
index 00000000..59c464ea
--- /dev/null
+++ b/src/app_modules/admin/vote/child/riwayat/index.tsx
@@ -0,0 +1,201 @@
+"use client";
+
+import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import { AdminEvent_getListPesertaById } from "@/app_modules/admin/event/fun/get/get_list_peserta_by_id";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+import { MODEL_VOTING } from "@/app_modules/vote/model/interface";
+import {
+ Stack,
+ Center,
+ Spoiler,
+ Button,
+ Modal,
+ Paper,
+ Title,
+ Grid,
+ Avatar,
+ Group,
+ Divider,
+ Box,
+ Table,
+ Text,
+} from "@mantine/core";
+import { useDisclosure } from "@mantine/hooks";
+import { IconBan, IconEyeCheck } from "@tabler/icons-react";
+import { IconEyeShare } from "@tabler/icons-react";
+import _ from "lodash";
+import { useRouter } from "next/navigation";
+
+import { useState } from "react";
+import ComponentAdminVote_DetailHasil from "../../component/detail_hasil";
+import { AdminVote_getHasilById } from "../../fun/get/get_hasil_by_id";
+import { AdminVote_getListKontributorById } from "../../fun/get/get_list_kontributor_by_id";
+
+export default function AdminVote_Riwayat({
+ dataVote,
+}: {
+ dataVote: MODEL_VOTING[];
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listPublish }: { listPublish: MODEL_VOTING[] }) {
+ const router = useRouter();
+ const [opened, { open, close }] = useDisclosure(false);
+ const [data, setData] = useState(listPublish);
+ const [hasil, setHasil] = useState();
+ const [kontributor, setKontributor] = useState();
+ const [voteId, setVoteId] = useState("");
+ const [loading, setLoading] = useState(false);
+
+ const TableRows = data.map((e, i) => (
+
+
+
+ }
+ onClick={async () => {
+ setVoteId(e.id);
+ setLoading(true);
+ await new Promise((r) => setTimeout(r, 500));
+ onList(e.id, setHasil, setKontributor, setLoading, open);
+ }}
+ >
+ Hasil Voting
+
+
+
+
+ {e.title}
+
+
+
+
+ {e.deskripsi}
+
+
+
+
+
+ {e.Voting_DaftarNamaVote.map((v) => (
+
+ - {v.value}
+
+ ))}
+
+
+
+
+ {e.awalVote.toLocaleDateString("id-ID", { dateStyle: "long" })}
+
+
+
+
+ {e.akhirVote.toLocaleDateString("id-ID", { dateStyle: "long" })}
+
+
+
+ ));
+
+ return (
+ <>
+
+
+
+
+
+
+ RIWAYAT
+
+
+
+
+
+
+ Aksi
+
+
+ Judul
+
+
+ Deskripsi
+
+
+ Pilihan
+
+
+ Mulai Vote
+
+
+ Selesai Vote
+
+
+
+ {TableRows}
+
+
+ {_.isEmpty(TableRows) ? (
+
+ Tidak Ada Data
+
+ ) : (
+ ""
+ )}
+
+
+ >
+ );
+}
+
+async function onList(
+ voteId: string,
+ setHasil: any,
+ setKontributor: any,
+ setLoading: any,
+ open: any
+) {
+ await AdminVote_getHasilById(voteId).then((res) => {
+ setHasil(res);
+ setLoading(false);
+ });
+
+ await AdminVote_getListKontributorById(voteId).then((res) => {
+ setKontributor(res);
+ setLoading(false);
+ });
+
+ open();
+}
diff --git a/src/app_modules/admin/vote/child/table_publish/index.tsx b/src/app_modules/admin/vote/child/table_publish/index.tsx
new file mode 100644
index 00000000..821e074a
--- /dev/null
+++ b/src/app_modules/admin/vote/child/table_publish/index.tsx
@@ -0,0 +1,206 @@
+"use client";
+
+import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import { AdminEvent_getListPesertaById } from "@/app_modules/admin/event/fun/get/get_list_peserta_by_id";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+import {
+ MODEL_EVENT,
+ MODEL_EVENT_PESERTA,
+} from "@/app_modules/event/model/interface";
+import {
+ MODEL_VOTE_KONTRIBUTOR,
+ MODEL_VOTING,
+ MODEL_VOTING_DAFTAR_NAMA_VOTE,
+} from "@/app_modules/vote/model/interface";
+import {
+ Avatar,
+ Badge,
+ Box,
+ Button,
+ Card,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Modal,
+ Paper,
+ Spoiler,
+ Stack,
+ Table,
+ Text,
+ Title,
+} from "@mantine/core";
+import { useDisclosure } from "@mantine/hooks";
+import { IconEyeCheck, IconEyeShare } from "@tabler/icons-react";
+import _ from "lodash";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { AdminVote_getHasilById } from "../../fun/get/get_hasil_by_id";
+import { AdminVote_getListKontributorById } from "../../fun/get/get_list_kontributor_by_id";
+import ComponentAdminVote_DetailHasil from "../../component/detail_hasil";
+
+export default function AdminVote_TablePublish({
+ dataVote,
+}: {
+ dataVote: any;
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listPublish }: { listPublish: MODEL_VOTING[] }) {
+ const router = useRouter();
+ const [opened, { open, close }] = useDisclosure(false);
+ const [data, setData] = useState(listPublish);
+ const [hasil, setHasil] = useState();
+ const [kontributor, setKontributor] = useState();
+ const [voteId, setVoteId] = useState("");
+ const [loading, setLoading] = useState(false);
+
+ const TableRows = data.map((e, i) => (
+
+
+
+ }
+ onClick={async () => {
+ setVoteId(e.id);
+ setLoading(true);
+ await new Promise((r) => setTimeout(r, 500));
+ onList(e.id, setHasil, setKontributor, setLoading, open);
+ }}
+ >
+ Lihat Hasil
+
+
+
+
+ {e.title}
+
+
+
+
+ {e.deskripsi}
+
+
+
+
+
+ {e.Voting_DaftarNamaVote.map((v) => (
+
+ - {v.value}
+
+ ))}
+
+
+
+
+ {e.awalVote.toLocaleDateString("id-ID", { dateStyle: "long" })}
+
+
+
+
+ {e.akhirVote.toLocaleDateString("id-ID", { dateStyle: "long" })}
+
+
+
+ ));
+
+ return (
+ <>
+
+
+
+
+
+
+ PUBLISH
+
+
+
+
+
+
+ Aksi
+
+
+ Judul
+
+
+ Deskripsi
+
+
+ Pilihan
+
+
+ Mulai Vote
+
+
+ Selesai Vote
+
+
+
+ {TableRows}
+
+
+ {_.isEmpty(TableRows) ? (
+
+ Tidak Ada Data
+
+ ) : (
+ ""
+ )}
+
+
+ >
+ );
+}
+
+async function onList(
+ voteId: string,
+ setHasil: any,
+ setKontributor: any,
+ setLoading: any,
+ open: any
+) {
+ await AdminVote_getHasilById(voteId).then((res) => {
+ setHasil(res);
+ setLoading(false);
+ });
+
+ await AdminVote_getListKontributorById(voteId).then((res) => {
+ setKontributor(res);
+ setLoading(false);
+ });
+
+ open();
+}
diff --git a/src/app_modules/admin/vote/child/table_reject/index.tsx b/src/app_modules/admin/vote/child/table_reject/index.tsx
new file mode 100644
index 00000000..7f5f28d1
--- /dev/null
+++ b/src/app_modules/admin/vote/child/table_reject/index.tsx
@@ -0,0 +1,242 @@
+"use client";
+
+import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import { AdminEvent_getListPesertaById } from "@/app_modules/admin/event/fun/get/get_list_peserta_by_id";
+import { MODEL_VOTING } from "@/app_modules/vote/model/interface";
+import {
+ Avatar,
+ Box,
+ Button,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Modal,
+ Paper,
+ ScrollArea,
+ Spoiler,
+ Stack,
+ Table,
+ Text,
+ Textarea,
+ Title,
+} from "@mantine/core";
+import { useDisclosure } from "@mantine/hooks";
+import { IconBan, IconEyeShare } from "@tabler/icons-react";
+import _ from "lodash";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { AdminVote_funEditCatatanRejectById } from "../../fun/edit/fun_edit_catatan_reject_by_id";
+import { AdminVote_getListTableByStatusId } from "../../fun/get/get_list_table_by_status_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 AdminVote_TableReject({
+ dataVote,
+}: {
+ dataVote: MODEL_VOTING[];
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listData }: { listData: MODEL_VOTING[] }) {
+ const router = useRouter();
+ const [opened, { open, close }] = useDisclosure(false);
+ const [data, setData] = useState(listData);
+ const [votingId, setVotingId] = useState("");
+ const [catatan, setCatatan] = useState("");
+
+ const TableRows = data.map((e, i) => (
+
+
+
+ }
+ radius={"xl"}
+ onClick={() => {
+ open();
+ setVotingId(e.id);
+ setCatatan(e.catatan);
+ }}
+ >
+
+ Tambah
+ Catatan
+
+
+
+
+
+
+
+ {e.catatan}
+
+
+
+
+ {e.title}
+
+
+
+
+ {e.deskripsi}
+
+
+
+
+
+ {e.Voting_DaftarNamaVote.map((v) => (
+
+ - {v.value}
+
+ ))}
+
+
+
+
+ {e.awalVote.toLocaleDateString("id-ID", { dateStyle: "long" })}
+
+
+
+
+ {e.akhirVote.toLocaleDateString("id-ID", { dateStyle: "long" })}
+
+
+
+ ));
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+ REJECT
+
+
+
+
+
+
+
+
+ Aksi
+
+
+ Catatan
+
+
+
+ Judul
+
+
+ Deskripsi
+
+
+ Pilihan
+
+
+ Mulai Vote
+
+
+ Selesai Vote
+
+
+
+ {TableRows}
+
+
+
+
+ {_.isEmpty(TableRows) ? (
+
+ Tidak Ada Data
+
+ ) : (
+ ""
+ )}
+
+
+ >
+ );
+}
+
+async function onReject(
+ votingId: string,
+ catatan: string,
+ close: any,
+ setData: any
+) {
+ await AdminVote_funEditCatatanRejectById(votingId, catatan).then(
+ async (res) => {
+ if (res.status === 200) {
+ await AdminVote_getListTableByStatusId("4").then((val) => {
+ setData(val);
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ close();
+ });
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ }
+ );
+}
diff --git a/src/app_modules/admin/vote/child/table_review/index.tsx b/src/app_modules/admin/vote/child/table_review/index.tsx
new file mode 100644
index 00000000..58c146e7
--- /dev/null
+++ b/src/app_modules/admin/vote/child/table_review/index.tsx
@@ -0,0 +1,261 @@
+"use client";
+
+import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
+import ComponentAdminGlobal_HeaderTamplate from "@/app_modules/admin/component/header_tamplate";
+import { AdminEvent_getListPesertaById } from "@/app_modules/admin/event/fun/get/get_list_peserta_by_id";
+import { MODEL_VOTING } from "@/app_modules/vote/model/interface";
+import {
+ Avatar,
+ Box,
+ Button,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Modal,
+ Paper,
+ ScrollArea,
+ Spoiler,
+ Stack,
+ Table,
+ Text,
+ Textarea,
+ Title,
+} from "@mantine/core";
+import { useDisclosure } from "@mantine/hooks";
+import { IconBan } from "@tabler/icons-react";
+import { IconEyeShare } from "@tabler/icons-react";
+import _ from "lodash";
+import { useRouter } from "next/navigation";
+
+import { useState } from "react";
+import { AdminVote_funEditStatusPublishById } from "../../fun/edit/fun_edit_status_publish_by_id";
+import toast from "react-simple-toasts";
+import { AdminVote_getListTableByStatusId } from "../../fun/get/get_list_table_by_status_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";
+import { AdminEvent_funEditCatatanById } from "../../fun/edit/fun_edit_status_reject_by_id";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+
+export default function AdminVote_TableReview({
+ listVote,
+}: {
+ listVote: MODEL_VOTING[];
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function TableStatus({ listData }: { listData: MODEL_VOTING[] }) {
+ const router = useRouter();
+ const [opened, { open, close }] = useDisclosure(false);
+ const [data, setData] = useState(listData);
+ const [votingId, setVotingId] = useState("");
+ const [catatan, setCatatan] = useState("");
+
+ const TableRows = data.map((e, i) => (
+
+
+ {e.title}
+
+
+
+
+ {e.deskripsi}
+
+
+
+
+
+ {e.Voting_DaftarNamaVote.map((v) => (
+
+ - {v.value}
+
+ ))}
+
+
+
+
+ {e.awalVote.toLocaleDateString("id-ID", { dateStyle: "long" })}
+
+
+
+
+ {e.akhirVote.toLocaleDateString("id-ID", { dateStyle: "long" })}
+
+
+
+
+
+ }
+ radius={"xl"}
+ onClick={() => onPublish(e.id, setData, e.awalVote)}
+ >
+ Publish
+
+ }
+ radius={"xl"}
+ onClick={() => {
+ open();
+ setVotingId(e.id);
+ }}
+ >
+ Reject
+
+
+
+
+ ));
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+ REVIEW
+
+
+
+
+
+
+
+
+ Judul
+
+
+ Deskripsi
+
+
+ Pilihan
+
+
+ Mulai Vote
+
+
+ Selesai Vote
+
+
+
+ Aksi
+
+
+
+ {TableRows}
+
+
+
+
+ {_.isEmpty(TableRows) ? (
+
+ Tidak Ada Data
+
+ ) : (
+ ""
+ )}
+
+
+ >
+ );
+}
+
+async function onPublish(voteId: string, setData: any, awalVote: Date) {
+ const hariIni = new Date();
+ if (awalVote < hariIni)
+ return ComponentGlobal_NotifikasiPeringatan(
+ "Tanggal Mulai Votig Lewat, Edit Kembali",
+ 1500
+ );
+
+ await AdminVote_funEditStatusPublishById(voteId).then(async (res) => {
+ if (res.status === 200) {
+ await AdminVote_getListTableByStatusId("2").then((val) => {
+ setData(val);
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ });
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+}
+
+async function onReject(
+ voteId: string,
+ setData: any,
+ catatan: string,
+ close: any
+) {
+ const data = {
+ id: voteId,
+ catatan: catatan,
+ };
+ await AdminEvent_funEditCatatanById(data as any).then(async (res) => {
+ if (res.status === 200) {
+ await AdminVote_getListTableByStatusId("2").then((val) => {
+ setData(val);
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ close();
+ });
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+}
diff --git a/src/app_modules/admin/vote/component/detail_hasil.tsx b/src/app_modules/admin/vote/component/detail_hasil.tsx
new file mode 100644
index 00000000..9c127873
--- /dev/null
+++ b/src/app_modules/admin/vote/component/detail_hasil.tsx
@@ -0,0 +1,119 @@
+"use client"
+
+import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
+import { MODEL_VOTE_KONTRIBUTOR, MODEL_VOTING_DAFTAR_NAMA_VOTE } from "@/app_modules/vote/model/interface";
+import { Paper, Stack, Center, Title, Grid, Card, Avatar, Badge, Divider, Text } from "@mantine/core";
+import _ from "lodash";
+import router from "next/router";
+
+export default function ComponentAdminVote_DetailHasil({
+ hasil,
+ kontributor,
+}: {
+ hasil?: MODEL_VOTING_DAFTAR_NAMA_VOTE[];
+ kontributor?: MODEL_VOTE_KONTRIBUTOR[]
+}) {
+ return (
+ <>
+
+
+
+ Hasil
+
+
+
+ {hasil?.map((e: MODEL_VOTING_DAFTAR_NAMA_VOTE, i) => (
+
+
+
+ {e.jumlah}
+
+
+ {e.value}
+
+
+
+ ))}
+
+
+
+
+
+
+ Daftar Kontributor
+
+
+ {_.isEmpty(kontributor) ? (
+
+
+ - Tidak ada voting -
+
+
+ ) : (
+
+ {kontributor?.map((e, i) => (
+
+
+
+ router.push(
+ RouterProfile.katalog + e.Author.Profile.id
+ )
+ }
+ >
+
+
+
+
+
+ {e ? e.Author.Profile.name : "Nama author"}
+
+
+
+
+
+
+ 10
+ ? 8
+ : 10
+ }
+ >
+ {e.Voting_DaftarNamaVote.value}
+
+
+
+
+
+
+
+ ))}
+
+ )}
+
+
+
+
+ {/* {JSON.stringify(kontributor, null, 2)} */}
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/src/app_modules/admin/vote/fun/count/fun_count_vote_by_status_id.ts b/src/app_modules/admin/vote/fun/count/fun_count_vote_by_status_id.ts
new file mode 100644
index 00000000..02fb1b3f
--- /dev/null
+++ b/src/app_modules/admin/vote/fun/count/fun_count_vote_by_status_id.ts
@@ -0,0 +1,68 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+/**
+ *
+ * @param statusId 0: Riwayat , 1: Publish, 2:Review, 4:Reject
+ * @type string
+ * @returns jumlah dari voting per status
+ */
+export default async function AdminVote_funCountByStatusId(statusId: string) {
+ if (statusId === "0") {
+ const count = await prisma.voting.count({
+ where: {
+ voting_StatusId: "1",
+ isActive: true,
+ akhirVote: {
+ lte: new Date(),
+ },
+ },
+ });
+ return count;
+ }
+ if (statusId === "1") {
+ const count = await prisma.voting.count({
+ where: {
+ voting_StatusId: "1",
+ akhirVote: {
+ gte: new Date(),
+ },
+ },
+ });
+ return count;
+ }
+ if (statusId === "2") {
+ const count = await prisma.voting.count({
+ where: {
+ voting_StatusId: "2",
+ // akhirVote: {
+ // gte: new Date(),
+ // },
+ },
+ });
+ return count;
+ }
+
+ if (statusId === "4") {
+ const count = await prisma.voting.count({
+ where: {
+ voting_StatusId: "4",
+ isActive: true,
+
+ // akhirVote: {
+ // gte: new Date(),
+ // },
+ },
+ });
+ return count;
+ }
+
+
+ if (statusId === undefined || statusId === null) {
+ return {
+ status: 400,
+ message: "Parameter tidak sesuai",
+ };
+ }
+}
diff --git a/src/app_modules/admin/vote/fun/edit/fun_edit_catatan_reject_by_id.ts b/src/app_modules/admin/vote/fun/edit/fun_edit_catatan_reject_by_id.ts
new file mode 100644
index 00000000..ab52bf2f
--- /dev/null
+++ b/src/app_modules/admin/vote/fun/edit/fun_edit_catatan_reject_by_id.ts
@@ -0,0 +1,22 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { revalidatePath } from "next/cache";
+
+export async function AdminVote_funEditCatatanRejectById(
+ voteId: string,
+ catatan: string
+) {
+ const updt = await prisma.voting.update({
+ where: {
+ id: voteId,
+ },
+ data: {
+ catatan: catatan,
+ },
+ });
+
+ if (!updt) return { status: 400, message: "Gagal Update Catatan" };
+ revalidatePath("/dev/admin/vote/child/table_reject");
+ return { status: 200, message: "Berhasil Update Catatan" };
+}
diff --git a/src/app_modules/admin/vote/fun/edit/fun_edit_status_publish_by_id.ts b/src/app_modules/admin/vote/fun/edit/fun_edit_status_publish_by_id.ts
new file mode 100644
index 00000000..1614b610
--- /dev/null
+++ b/src/app_modules/admin/vote/fun/edit/fun_edit_status_publish_by_id.ts
@@ -0,0 +1,23 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { revalidatePath } from "next/cache";
+
+export async function AdminVote_funEditStatusPublishById(voteId: string) {
+
+ const updt = await prisma.voting.update({
+ where: {
+ id: voteId,
+ },
+ data: {
+ voting_StatusId: "1",
+ },
+ });
+
+ if (!updt) return { status: 400, message: "Update Gagal" };
+ revalidatePath("/dev/admin/vote/main");
+ return {
+ status: 200,
+ message: "Berhasil Update Status",
+ };
+}
diff --git a/src/app_modules/admin/vote/fun/edit/fun_edit_status_reject_by_id.ts b/src/app_modules/admin/vote/fun/edit/fun_edit_status_reject_by_id.ts
new file mode 100644
index 00000000..5cb8cd46
--- /dev/null
+++ b/src/app_modules/admin/vote/fun/edit/fun_edit_status_reject_by_id.ts
@@ -0,0 +1,26 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { MODEL_VOTING } from "@/app_modules/vote/model/interface";
+import { revalidatePath } from "next/cache";
+
+export async function AdminEvent_funEditCatatanById(
+ data: MODEL_VOTING,
+) {
+ const updt = await prisma.voting.update({
+ where: {
+ id: data.id,
+ },
+ data: {
+ voting_StatusId: "4",
+ catatan: data.catatan,
+ },
+ });
+
+ if (!updt) return { status: 400, message: "Update Gagal" };
+ revalidatePath("/dev/admin/event/main");
+ return {
+ status: 200,
+ message: "Berhasil Update Status",
+ };
+}
diff --git a/src/app_modules/admin/vote/fun/get/get_hasil_by_id.ts b/src/app_modules/admin/vote/fun/get/get_hasil_by_id.ts
new file mode 100644
index 00000000..c804e3fc
--- /dev/null
+++ b/src/app_modules/admin/vote/fun/get/get_hasil_by_id.ts
@@ -0,0 +1,14 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function AdminVote_getHasilById(voteId: string) {
+ const data = await prisma.voting_DaftarNamaVote.findMany({
+ where: {
+ votingId: voteId,
+ },
+ });
+
+ return data;
+
+}
diff --git a/src/app_modules/admin/vote/fun/get/get_list_kontributor_by_id.ts b/src/app_modules/admin/vote/fun/get/get_list_kontributor_by_id.ts
new file mode 100644
index 00000000..1ecd2731
--- /dev/null
+++ b/src/app_modules/admin/vote/fun/get/get_list_kontributor_by_id.ts
@@ -0,0 +1,21 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function AdminVote_getListKontributorById(voteId: string) {
+ const data = await prisma.voting_Kontributor.findMany({
+ where: {
+ votingId: voteId,
+ },
+ select: {
+ Voting_DaftarNamaVote: true,
+ Author: {
+ select: {
+ Profile: true,
+ },
+ },
+ },
+ });
+
+ return data;
+}
diff --git a/src/app_modules/admin/vote/fun/get/get_list_table_by_status_id.ts b/src/app_modules/admin/vote/fun/get/get_list_table_by_status_id.ts
new file mode 100644
index 00000000..412090f7
--- /dev/null
+++ b/src/app_modules/admin/vote/fun/get/get_list_table_by_status_id.ts
@@ -0,0 +1,117 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function AdminVote_getListTableByStatusId(statusId: string) {
+ if (statusId === "0") {
+ const getData = await prisma.voting.findMany({
+ where: {
+ voting_StatusId: "1",
+ isActive: true,
+ akhirVote: {
+ lte: new Date(),
+ },
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ deskripsi: true,
+ awalVote: true,
+ akhirVote: true,
+ catatan: true,
+ authorId: true,
+ Author: true,
+ voting_StatusId: true,
+ Voting_DaftarNamaVote: true,
+ },
+ });
+
+ return getData;
+ }
+
+ if (statusId === "1") {
+ const getData = await prisma.voting.findMany({
+ where: {
+ voting_StatusId: "1",
+ isActive: true,
+ akhirVote: {
+ gte: new Date(),
+ },
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ deskripsi: true,
+ awalVote: true,
+ akhirVote: true,
+ catatan: true,
+ authorId: true,
+ Author: true,
+ voting_StatusId: true,
+ Voting_DaftarNamaVote: true,
+ },
+ });
+
+ return getData;
+ }
+
+ if (statusId === "2") {
+ const getData = await prisma.voting.findMany({
+ where: {
+ voting_StatusId: "2",
+ isActive: true,
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ deskripsi: true,
+ awalVote: true,
+ akhirVote: true,
+ catatan: true,
+ authorId: true,
+ Author: true,
+ voting_StatusId: true,
+ Voting_DaftarNamaVote: true,
+ },
+ });
+
+ return getData;
+ }
+
+ if (statusId === "4") {
+ const getData = await prisma.voting.findMany({
+ where: {
+ voting_StatusId: "4",
+ isActive: true,
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ deskripsi: true,
+ awalVote: true,
+ akhirVote: true,
+ catatan: true,
+ authorId: true,
+ Author: true,
+ voting_StatusId: true,
+ Voting_DaftarNamaVote: true,
+ },
+ });
+
+ return getData;
+ }
+
+
+}
diff --git a/src/app_modules/admin/vote/index.ts b/src/app_modules/admin/vote/index.ts
new file mode 100644
index 00000000..03485606
--- /dev/null
+++ b/src/app_modules/admin/vote/index.ts
@@ -0,0 +1,13 @@
+import AdminVote_Main from "./main";
+import AdminVote_TablePublish from "./child/table_publish";
+import AdminVote_TableReview from "./child/table_review";
+import AdminVote_TableReject from "./child/table_reject";
+import AdminVote_Riwayat from "./child/riwayat";
+
+export {
+ AdminVote_Main,
+ AdminVote_TablePublish,
+ AdminVote_TableReview,
+ AdminVote_TableReject,
+ AdminVote_Riwayat,
+};
diff --git a/src/app_modules/admin/vote/main/index.tsx b/src/app_modules/admin/vote/main/index.tsx
new file mode 100644
index 00000000..5c5e7c3d
--- /dev/null
+++ b/src/app_modules/admin/vote/main/index.tsx
@@ -0,0 +1,86 @@
+"use client";
+
+import { Stack, SimpleGrid, Paper, Group, Title, Text } from "@mantine/core";
+import { useRouter } from "next/navigation";
+import ComponentAdminGlobal_HeaderTamplate from "../../component/header_tamplate";
+
+export default function AdminVote_Main({
+ countPublish,
+ countReview,
+ countDraft,
+ countReject,
+ countRiwayat,
+}: {
+ countPublish?: number;
+ countReview?: number;
+ countDraft?: number;
+ countReject?: number;
+ countRiwayat?: number;
+}) {
+ const router = useRouter();
+
+ const listStatus = [
+ {
+ id: 1,
+ name: "Publish",
+ jumlah: countPublish,
+ color: "green",
+ },
+ {
+ id: 2,
+ name: "Review",
+ jumlah: countReview,
+ color: "orange",
+ },
+ {
+ id: 3,
+ name: "Reject",
+ jumlah: countReject,
+ color: "red",
+ },
+ {
+ id: 4,
+ name: "Riwayat",
+ jumlah: countDraft,
+ path: "",
+ color: "gray",
+ },
+ ];
+
+ return (
+ <>
+
+
+
+
+ {listStatus.map((e, i) => (
+
+
+
+ {e.name}
+ {e.jumlah ? e.jumlah : 0}
+
+
+
+ ))}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/component_global/author_name_on_header.tsx b/src/app_modules/component_global/author_name_on_header.tsx
index 75d6594f..a6a42a24 100644
--- a/src/app_modules/component_global/author_name_on_header.tsx
+++ b/src/app_modules/component_global/author_name_on_header.tsx
@@ -3,15 +3,16 @@
import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
import { Stack, Grid, Avatar, Divider, Text } from "@mantine/core";
import { useRouter } from "next/navigation";
+import { ComponentGlobal_NotifikasiPeringatan } from "./notif_global/notifikasi_peringatan";
export default function ComponentGlobal_AuthorNameOnHeader({
profileId,
imagesId,
authorName,
}: {
- profileId: string;
- imagesId: string;
- authorName: string;
+ profileId?: string;
+ imagesId?: string;
+ authorName?: string;
}) {
const router = useRouter();
return (
@@ -21,7 +22,11 @@ export default function ComponentGlobal_AuthorNameOnHeader({
{
- router.push(RouterProfile.katalog + profileId);
+ if (profileId) {
+ router.push(RouterProfile.katalog + profileId);
+ } else {
+ ComponentGlobal_NotifikasiPeringatan("Id tidak ditemukan");
+ }
}}
>
- {authorName}
+ {authorName ? authorName : "Nama author"}
diff --git a/src/app_modules/component_global/maintenance_information.tsx b/src/app_modules/component_global/maintenance_information.tsx
new file mode 100644
index 00000000..6f549f02
--- /dev/null
+++ b/src/app_modules/component_global/maintenance_information.tsx
@@ -0,0 +1,24 @@
+"use client";
+
+import { Box, Group, Text } from "@mantine/core";
+import Marquee from "react-fast-marquee";
+
+export default function ComponentGlobal_MaintenanceInformation() {
+ return (
+ <>
+
+
+
+ {Array(5)
+ .fill(0)
+ .map((e, i) => (
+
+ Maintenance !
+
+ ))}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/component_global/notif_global/notifikasi_peringatan.tsx b/src/app_modules/component_global/notif_global/notifikasi_peringatan.tsx
index a0ecfb15..6c00859b 100644
--- a/src/app_modules/component_global/notif_global/notifikasi_peringatan.tsx
+++ b/src/app_modules/component_global/notif_global/notifikasi_peringatan.tsx
@@ -3,28 +3,46 @@ import { notifications } from "@mantine/notifications";
import { IconAlertTriangle } from "@tabler/icons-react";
/**
- *
+ *
* @param text | masukan text untuk peringatan
* @type string
* @returns notifikasi peringatan
*/
-export async function ComponentGlobal_NotifikasiPeringatan(text: string) {
+export async function ComponentGlobal_NotifikasiPeringatan(
+ text: string,
+ durasi?: number
+) {
return notifications.show({
message: (
{text}
),
- color: "yellow.3",
+ color: "yellow.1",
radius: "md",
- autoClose: 1000,
- icon: ,
+ autoClose: durasi ? durasi : 1000,
+ style: {
+ borderWidth: "0.5px",
+ borderStyle: "solid",
+ borderColor: "red"
+
+
+ },
+
+ icon: (
+
+
+
+ ),
withCloseButton: false,
styles: (theme) => ({
description: { color: theme.white },
root: {
- backgroundColor: theme.colors.yellow[7],
+ backgroundColor: theme.colors.orange[5],
},
}),
});
diff --git a/src/app_modules/event/component/detail/list_peserta.tsx b/src/app_modules/event/component/detail/list_peserta.tsx
index 4265dd54..6bf23b29 100644
--- a/src/app_modules/event/component/detail/list_peserta.tsx
+++ b/src/app_modules/event/component/detail/list_peserta.tsx
@@ -12,9 +12,10 @@ import {
Text,
} from "@mantine/core";
import _ from "lodash";
-import router from "next/router";
+
import peserta from "../../main/kontribusi/peserta";
import { MODEL_EVENT_PESERTA } from "../../model/interface";
+import { useRouter } from "next/navigation";
export default function ComponentEvent_ListPeserta({
listPeserta,
@@ -23,6 +24,7 @@ export default function ComponentEvent_ListPeserta({
listPeserta: MODEL_EVENT_PESERTA[];
total: number;
}) {
+ const router = useRouter()
return (
<>
diff --git a/src/app_modules/event/detail/publish/index.tsx b/src/app_modules/event/detail/publish/index.tsx
index 9e46ff89..006013de 100644
--- a/src/app_modules/event/detail/publish/index.tsx
+++ b/src/app_modules/event/detail/publish/index.tsx
@@ -5,10 +5,14 @@ import moment from "moment";
import ComponentEvent_DetailData from "../../component/detail/detail_data";
import { MODEL_EVENT } from "../../model/interface";
-export default function Event_DetailPublish({dataEvent}: {dataEvent: MODEL_EVENT}) {
+export default function Event_DetailPublish({
+ dataEvent,
+}: {
+ dataEvent: MODEL_EVENT;
+}) {
return (
<>
-
+
>
);
}
diff --git a/src/app_modules/event/fun/master/get_tipe_acara.ts b/src/app_modules/event/fun/master/get_tipe_acara.ts
index 8421ab5f..7b5f1683 100644
--- a/src/app_modules/event/fun/master/get_tipe_acara.ts
+++ b/src/app_modules/event/fun/master/get_tipe_acara.ts
@@ -3,6 +3,13 @@
import prisma from "@/app/lib/prisma"
export async function Event_getMasterTipeAcara(){
- const data = await prisma.eventMaster_TipeAcara.findMany()
+ const data = await prisma.eventMaster_TipeAcara.findMany({
+ orderBy: {
+ id: "asc"
+ },
+ where: {
+ active: true
+ }
+ })
return data
}
\ No newline at end of file
diff --git a/src/app_modules/event/splash/index.tsx b/src/app_modules/event/splash/index.tsx
index 5c5e49d0..5f8dd214 100644
--- a/src/app_modules/event/splash/index.tsx
+++ b/src/app_modules/event/splash/index.tsx
@@ -22,12 +22,9 @@ export default function Event_SplashScreen() {
return (
<>
-
- Welcome to
-
-
-
-
+
+
+
>
);
diff --git a/src/app_modules/home/layout.tsx b/src/app_modules/home/layout.tsx
index cf561605..0ad27c8c 100644
--- a/src/app_modules/home/layout.tsx
+++ b/src/app_modules/home/layout.tsx
@@ -59,20 +59,20 @@ export default function HomeLayout({
-
-
+
+ {/*
-
+ */}
HIPMI
-
+ {/*
-
+ */}
}
@@ -82,11 +82,11 @@ export default function HomeLayout({
{
- if (user.Profile === null) {
+ if (user?.Profile === null) {
ComponentGlobal_NotifikasiPeringatan("Lengkapi Profile");
} else {
// router.push(RouterProfile.katalog + `${user.Profile.id}`);
- router.push(RouterUserSearch.main)
+ router.push(RouterUserSearch.main);
}
}}
>
@@ -102,7 +102,7 @@ export default function HomeLayout({
{
- if (user.Profile === null) {
+ if (user?.Profile === null) {
router.push(RouterProfile.create + `${user.id}`);
} else {
router.push(RouterProfile.katalog + `${user.Profile.id}`);
@@ -111,7 +111,23 @@ export default function HomeLayout({
>
- {user.Profile === null ? : }
+ {user?.Profile === null ? (
+
+ ) : (
+
+ )}
Profile
@@ -122,7 +138,6 @@ export default function HomeLayout({
}
>
-
{children}
>
diff --git a/src/app_modules/home/view.tsx b/src/app_modules/home/view.tsx
index 52059b4c..ac100e7d 100644
--- a/src/app_modules/home/view.tsx
+++ b/src/app_modules/home/view.tsx
@@ -31,11 +31,12 @@ import { useRouter } from "next/navigation";
import { MODEL_PROFILE_OLD } from "./model/user_profile";
import AppNotif from "../notif";
import { RouterEvent } from "@/app/lib/router_hipmi/router_event";
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import { MODEL_USER } from "./model/interface";
+import { ComponentGlobal_NotifikasiPeringatan } from "../component_global/notif_global/notifikasi_peringatan";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
-// export const dynamic = "force-dynamic"
-// export const revalidate = 0
-
-export default function HomeView() {
+export default function HomeView({ dataUser }: { dataUser: MODEL_USER }) {
const router = useRouter();
// const [stateUser, setStateUser] = useState(user);
@@ -56,14 +57,15 @@ export default function HomeView() {
id: 3,
name: "Voting",
icon: ,
- link: "",
+ link: RouterVote.splash,
},
{
id: 4,
- name: "Project Collaboration",
- icon: ,
- link: "",
+ name: "Job Vacancy",
+ icon: ,
+ link: RouterJob.spalsh,
},
+
{
id: 5,
name: "Forums",
@@ -78,8 +80,8 @@ export default function HomeView() {
},
{
id: 7,
- name: "Job Vacancy",
- icon: ,
+ name: "Project Collaboration",
+ icon: ,
link: "",
},
{
@@ -93,7 +95,6 @@ export default function HomeView() {
return (
<>
-
@@ -101,14 +102,14 @@ export default function HomeView() {
{/* {JSON.stringify(stateUser, null, 2)} */}
-
{listHalaman.map((e, i) => (
{
- if (e.link === "") {
- toast("Cooming Soon !!");
+ if (dataUser.Profile === null) {
+ return ComponentGlobal_NotifikasiPeringatan(
+ "Lengkapi Data Profile"
+ );
} else {
- return router.push(e.link);
+ if (e.link === "") {
+ return ComponentGlobal_NotifikasiPeringatan(
+ "Cooming Soon !!"
+ );
+ } else {
+ return router.push(e.link);
+ }
}
}}
>
diff --git a/src/app_modules/job/component/card_preview.tsx b/src/app_modules/job/component/card_preview.tsx
new file mode 100644
index 00000000..0d719196
--- /dev/null
+++ b/src/app_modules/job/component/card_preview.tsx
@@ -0,0 +1,40 @@
+"use client";
+
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { Card, Center, Grid, Image, Text } from "@mantine/core";
+import { useRouter } from "next/navigation";
+
+export default function ComponentJob_CardPreview({ path }: { path: string }) {
+ const router = useRouter();
+ return (
+ <>
+ {
+ router.push(path);
+ }}
+ >
+
+
+
+
+
+
+
+ Judul Lowongan kerja
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/job/component/card_view_status.tsx b/src/app_modules/job/component/card_view_status.tsx
new file mode 100644
index 00000000..428062fc
--- /dev/null
+++ b/src/app_modules/job/component/card_view_status.tsx
@@ -0,0 +1,63 @@
+"use client";
+
+import { Stack, Card, Grid, Image, Text, Center } from "@mantine/core";
+import _ from "lodash";
+import ComponentJob_IsEmptyData from "./is_empty_data";
+import { useRouter } from "next/navigation";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+import { MODEL_JOB } from "../model/interface";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { IconChevronRight } from "@tabler/icons-react";
+
+export default function ComponentJob_CardViewStatus({
+ listData,
+ path,
+}: {
+ listData?: MODEL_JOB[];
+ path?: any;
+}) {
+ const router = useRouter();
+ if (_.isEmpty(listData))
+ return (
+ <>
+
+ >
+ );
+
+ return (
+ <>
+
+ {listData?.map((e, i) => (
+ {
+ if (path === undefined) {
+ return ComponentGlobal_NotifikasiPeringatan(
+ "Path tidak ditemukan"
+ );
+ } else {
+ router.push(path + e.id);
+ }
+ }}
+ >
+
+
+
+
+
+ {e.title}
+
+
+
+
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/job/component/detail/detail_data.tsx b/src/app_modules/job/component/detail/detail_data.tsx
new file mode 100644
index 00000000..dc9d9994
--- /dev/null
+++ b/src/app_modules/job/component/detail/detail_data.tsx
@@ -0,0 +1,94 @@
+"use client";
+
+import { Card, Stack, Skeleton, Image, Text, Center } from "@mantine/core";
+import { MODEL_JOB } from "../../model/interface";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+
+export default function ComponentJob_DetailData({
+ data,
+}: {
+ data?: MODEL_JOB;
+}) {
+ return (
+ <>
+ {/* {JSON.stringify(data, null, 2)} */}
+ {data ? (
+
+
+
+ {data.imagesId ? (
+
+
+
+ ) : (
+ ""
+ )}
+
+
+
+
+ {data.title}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ) : (
+
+
+
+
+
+
+ Judul Lowongan Kerja
+
+
+
+
+
+ Syarat & Ketentuan :
+
+
+ {Array(5)
+ .fill(0)
+ .map((e, i) => (
+
+ ))}
+
+
+
+
+
+ Deskripsi
+
+
+ {Array(5)
+ .fill(0)
+ .map((e, i) => (
+
+ ))}
+
+
+
+
+
+ )}
+ >
+ );
+}
diff --git a/src/app_modules/job/component/detail/noted_box.tsx b/src/app_modules/job/component/detail/noted_box.tsx
new file mode 100644
index 00000000..6f7c6184
--- /dev/null
+++ b/src/app_modules/job/component/detail/noted_box.tsx
@@ -0,0 +1,22 @@
+import { Center, Grid, Group, Paper, Text, Title } from "@mantine/core";
+
+export default function ComponentJob_NotedBox({
+ informasi,
+}: {
+ informasi: string;
+}) {
+ return (
+ <>
+
+
+
+
+ *{" "}
+
+ {informasi}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/job/component/header_tamplate.tsx b/src/app_modules/job/component/header_tamplate.tsx
new file mode 100644
index 00000000..ac438ff5
--- /dev/null
+++ b/src/app_modules/job/component/header_tamplate.tsx
@@ -0,0 +1,69 @@
+"use client";
+
+import { Header, Group, ActionIcon, Text, Title } from "@mantine/core";
+import { IconArrowLeft, IconChevronLeft } from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+
+export default function ComponentJob_HeaderTamplate({
+ hideBack,
+ changeIconBack,
+ route,
+ route2,
+ title,
+ icon,
+ bg,
+}: {
+ hideBack?: boolean;
+ changeIconBack?: any;
+ route?: any;
+ route2?: any;
+ title: string;
+ icon?: any;
+ bg?: any;
+}) {
+ const router = useRouter();
+ return (
+ <>
+
+
+ {hideBack ? (
+
+ ) : (
+ {
+ if (route === null || route === undefined) {
+ return router.back();
+ } else {
+ return router.push(route);
+ }
+ }}
+ >
+ {changeIconBack ? changeIconBack : }
+
+ )}
+ {title}
+ {(() => {
+ if (route2 === null || route2 === undefined) {
+ return ;
+ } else {
+ return (
+ router.push(route2)}
+ >
+ {icon}
+
+ );
+ }
+ })()}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/job/component/is_empty_data.tsx b/src/app_modules/job/component/is_empty_data.tsx
new file mode 100644
index 00000000..b0f1c300
--- /dev/null
+++ b/src/app_modules/job/component/is_empty_data.tsx
@@ -0,0 +1,13 @@
+"use client";
+
+import { Center } from "@mantine/core";
+
+export default function ComponentJob_IsEmptyData({ text }: { text: string }) {
+ return (
+ <>
+
+ {text}
+
+ >
+ );
+}
diff --git a/src/app_modules/job/create/TextEdit.tsx b/src/app_modules/job/create/TextEdit.tsx
new file mode 100644
index 00000000..c75551cd
--- /dev/null
+++ b/src/app_modules/job/create/TextEdit.tsx
@@ -0,0 +1,61 @@
+"use client";
+
+import { Center, Stack } from "@mantine/core";
+import { useShallowEffect } from "@mantine/hooks";
+import dynamic from "next/dynamic";
+import React, { useState } from "react";
+const ReactQuill = dynamic(
+ () => {
+ return import("react-quill");
+ },
+ { ssr: false }
+);
+import "react-quill/dist/quill.snow.css";
+
+export default function Demo() {
+ const [value, setValue] = useState("");
+ const [udah, setUdah] = useState(false);
+
+ // useShallowEffect(() => {
+ // if (window && window.document) setUdah(true);
+ // }, []);
+
+ // if (!udah) return <> >;
+ return (
+
+ Judul Lowongan Kerja
+
+ Syarat & Ketentuan :
+
+ Minimal pendidika SMA / Sederajat
+ Pasif berbahasa inggris
+ Dll,.
+
+
+ Deskripsi :
+ Jika berminat dapat menghubungi WA berikut
+ +6281 xxx xxx xx
+ Kirim CV anda melalui email berikut
+ @test-hipmi.com
+ Atau kunjungi website kami:
+ https://test-hipmi.wibudev.com/
+ `}
+ modules={{
+ toolbar: [
+ [{ header: [1, 2, 3, 4, 5, 6, false] }],
+ ["bold", "italic", "underline", "link"],
+ // [{ align: [] }],
+ [{ list: "ordered" }, { list: "bullet" }],
+
+ ["clean"],
+ ],
+ }}
+ theme="snow"
+ onChange={setValue}
+ />
+ {/* {value}
+
*/}
+
+ );
+}
diff --git a/src/app_modules/job/create/layout.tsx b/src/app_modules/job/create/layout.tsx
new file mode 100644
index 00000000..f68b5613
--- /dev/null
+++ b/src/app_modules/job/create/layout.tsx
@@ -0,0 +1,21 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentJob_HeaderTamplate from "../component/header_tamplate";
+
+export default function LayoutJob_Create({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/job/create/view.tsx b/src/app_modules/job/create/view.tsx
new file mode 100644
index 00000000..9db2c662
--- /dev/null
+++ b/src/app_modules/job/create/view.tsx
@@ -0,0 +1,271 @@
+"use client";
+
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import {
+ AspectRatio,
+ Box,
+ Button,
+ Center,
+ FileButton,
+ Flex,
+ Group,
+ Image,
+ Loader,
+ Paper,
+ Stack,
+ Text,
+ TextInput,
+ Textarea,
+} from "@mantine/core";
+import { IconCamera, IconUpload } from "@tabler/icons-react";
+import { useAtom } from "jotai";
+import _ from "lodash";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { gs_job_hot_menu, gs_job_status } from "../global_state";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+
+import "react-quill/dist/quill.snow.css";
+import dynamic from "next/dynamic";
+import { useShallowEffect, useToggle } from "@mantine/hooks";
+import { Job_funCreate } from "../fun/create/fun_create";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+import { MODEL_JOB } from "../model/interface";
+import toast from "react-simple-toasts";
+import ComponentJob_NotedBox from "../component/detail/noted_box";
+const ReactQuill = dynamic(
+ () => {
+ return import("react-quill");
+ },
+ { ssr: false }
+);
+
+export default function Job_Create() {
+ const [value, setValue] = useState({
+ title: "",
+ content: "",
+ deskripsi: "",
+ });
+ const [reload, setReload] = useState(false);
+ const [file, setFile] = useState(null);
+ const [images, setImages] = useState();
+
+ useShallowEffect(() => {
+ if (window && window.document) setReload(true);
+ }, []);
+
+ if (!reload)
+ return (
+ <>
+
+
+
+ >
+ );
+
+ return (
+ <>
+ {!reload ? (
+
+
+
+ ) : (
+
+
+ {images ? (
+
+ ) : (
+
+
+
+
+ Upload Gambar
+
+
+
+ )}
+
+ {
+ try {
+ const buffer = URL.createObjectURL(
+ new Blob([new Uint8Array(await files.arrayBuffer())])
+ );
+ if (files.size > 20000) {
+ ComponentGlobal_NotifikasiPeringatan(
+ "Maaf, Ukuran file terlalu besar, maximum 20Mb",
+ 3000
+ );
+ } else {
+ setImages(buffer);
+ setFile(files);
+ }
+ } catch (error) {
+ console.log(error);
+ }
+ }}
+ accept="image/png,image/jpeg"
+ >
+ {(props) => (
+
+
+
+ )}
+
+
+
+
+
+
+ {
+ setValue({
+ ...value,
+ title: val.currentTarget.value,
+ });
+ }}
+ />
+
+
+
+ Syarat & Ketentuan
+
+ {" "}
+ *
+
+
+ Syarat & Ketentuan :
+
+ Minimal pendidika SMA / Sederajat
+ Pasif berbahasa inggris
+ Dll,.
+
+
+ `}
+ modules={{
+ toolbar: [
+ [{ header: [1, 2, 3, 4, 5, 6, false] }],
+ ["bold", "italic", "underline", "link"],
+ // [{ align: [] }],
+ [{ list: "ordered" }, { list: "bullet" }],
+ ["clean"],
+ ],
+ }}
+ theme="snow"
+ onChange={(val) => {
+ setValue({
+ ...value,
+ content: val,
+ });
+ }}
+ />
+
+
+
+ Deskripsi
+
+ {" "}
+ *
+
+
+
+ Deskripsi :
+
+ Jika berminat dapat menghubungi WA berikut
+ +6281 xxx xxx xx
+ Kirim CV anda melalui email berikut
+ test-email@gmail.com
+ Atau kunjungi website kami:
+
+
+ https://test-hipmi.wibudev.com/
+
+
+ `}
+ modules={{
+ toolbar: [
+ [{ header: [1, 2, 3, 4, 5, 6, false] }],
+ ["bold", "italic", "underline", "link"],
+ // [{ align: [] }],
+ [{ list: "ordered" }, { list: "bullet" }],
+ ["clean"],
+ ],
+ }}
+ theme="snow"
+ onChange={(val) => {
+ setValue({
+ ...value,
+ deskripsi: val,
+ });
+ }}
+ />
+
+
+
+
+
+ )}
+ >
+ );
+}
+
+function ButtonAction({ value, file }: { value: MODEL_JOB; file: FormData }) {
+ const router = useRouter();
+ const [hotMenu, setHotMenu] = useAtom(gs_job_hot_menu);
+ const [status, setStatus] = useAtom(gs_job_status);
+ const [preview, setPreview] = useToggle();
+
+ async function onAction() {
+ const gambar = new FormData();
+ gambar.append("file", file as any);
+
+ // console.log(value)
+
+ await Job_funCreate(value as any, gambar).then((res) => {
+ if (res.status === 201) {
+ setHotMenu(2);
+ setStatus("Review");
+ router.replace(RouterJob.status);
+ ComponentGlobal_NotifikasiBerhasil("Tambah Lowongan Berhasil");
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+
+ return (
+ <>
+
+
+ {
+ onAction();
+ }}
+ >
+ Simpan
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/job/detail/arsip/layout.tsx b/src/app_modules/job/detail/arsip/layout.tsx
new file mode 100644
index 00000000..366ce359
--- /dev/null
+++ b/src/app_modules/job/detail/arsip/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentJob_HeaderTamplate from "../../component/header_tamplate";
+
+export default function LayoutJob_DetailArsip({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/job/detail/arsip/view.tsx b/src/app_modules/job/detail/arsip/view.tsx
new file mode 100644
index 00000000..788342d3
--- /dev/null
+++ b/src/app_modules/job/detail/arsip/view.tsx
@@ -0,0 +1,56 @@
+"use client";
+
+import { Button, Stack } from "@mantine/core";
+import ComponentJob_DetailData from "../../component/detail/detail_data";
+import { MODEL_JOB } from "../../model/interface";
+import { useRouter } from "next/navigation";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+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 { useAtom } from "jotai";
+import { Job_funEditArsipById } from "../../fun/edit/fun_edit_arsip_by_id";
+import { gs_job_status, gs_job_hot_menu } from "../../global_state";
+
+export default function Job_DetailArsip({ dataJob }: { dataJob: MODEL_JOB }) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function ButtonAction({ jobId }: { jobId: string }) {
+ const router = useRouter();
+ const [status, setStatus] = useAtom(gs_job_status);
+ const [hotMenu, setHotMenu] = useAtom(gs_job_hot_menu);
+
+ async function onAction() {
+ await Job_funEditArsipById(jobId, false).then((res) => {
+ if (res.status === 200) {
+ setStatus("Publish");
+ setHotMenu(1);
+ ComponentGlobal_NotifikasiBerhasil("Berhasil Diarsipkan");
+ router.replace(RouterJob.beranda);
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+ return (
+ <>
+ {
+ onAction();
+ }}
+ >
+ Publish Lagi
+
+ >
+ );
+}
diff --git a/src/app_modules/job/detail/draft/layout.tsx b/src/app_modules/job/detail/draft/layout.tsx
new file mode 100644
index 00000000..433a8424
--- /dev/null
+++ b/src/app_modules/job/detail/draft/layout.tsx
@@ -0,0 +1,31 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentJob_HeaderTamplate from "../../component/header_tamplate";
+import { IconEdit } from "@tabler/icons-react";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+
+export default function LayoutJob_DetailDraft({
+ children,
+ jobId,
+}: {
+ children: React.ReactNode;
+ jobId: string
+}) {
+ return (
+ <>
+ }
+ route2={RouterJob.edit + jobId}
+ />
+ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/job/detail/draft/view.tsx b/src/app_modules/job/detail/draft/view.tsx
new file mode 100644
index 00000000..a3afdae6
--- /dev/null
+++ b/src/app_modules/job/detail/draft/view.tsx
@@ -0,0 +1,114 @@
+"use client";
+
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import { Stack, Button, Group, Modal, Paper, Title } from "@mantine/core";
+import { useAtom } from "jotai";
+
+import ComponentJob_DetailData from "../../component/detail/detail_data";
+import { gs_job_status } from "../../global_state";
+import { useRouter } from "next/navigation";
+import { useDisclosure } from "@mantine/hooks";
+import { Job_funEditStatusByStatusId } from "../../fun/edit/fun_edit_status_by_status_id";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+import { Job_funDeleteById } from "../../fun/delete/fun_delete_by_id";
+import ComponentJob_NotedBox from "../../component/detail/noted_box";
+import { MODEL_JOB } from "../../model/interface";
+
+export default function Job_DetailDraft({ dataJob }: { dataJob: MODEL_JOB }) {
+ return (
+ <>
+
+ {dataJob.catatan ? (
+
+ ) : (
+ ""
+ )}
+
+
+
+ >
+ );
+}
+
+function ButtonAction({ jobId }: { jobId: string }) {
+ const router = useRouter();
+ const [status, setStatus] = useAtom(gs_job_status);
+ const [opened, { open, close }] = useDisclosure();
+
+ async function onAction() {
+ await Job_funEditStatusByStatusId(jobId, "2").then((res) => {
+ if (res.status === 200) {
+ setStatus("Review");
+ ComponentGlobal_NotifikasiBerhasil("Berhasil Diajukan");
+ router.push(RouterJob.status);
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+
+ async function onDelete() {
+ await Job_funDeleteById(jobId).then((res) => {
+ if (res.status === 200) {
+ setStatus("Draft");
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ router.push(RouterJob.status);
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+
+ return (
+ <>
+
+
+
+ Yakin ingin menghapus ini ?
+
+ {
+ close();
+ }}
+ >
+ Batal
+
+ {
+ onDelete();
+ }}
+ >
+ Hapus
+
+
+
+
+
+
+
+ {
+ onAction();
+ }}
+ >
+ Ajukan Review
+
+ {
+ open();
+ }}
+ >
+ Hapus
+
+
+ >
+ );
+}
diff --git a/src/app_modules/job/detail/main/layout.tsx b/src/app_modules/job/detail/main/layout.tsx
new file mode 100644
index 00000000..a2355995
--- /dev/null
+++ b/src/app_modules/job/detail/main/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentJob_HeaderTamplate from "../../component/header_tamplate";
+
+export default function LayoutJob_MainDetail({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/job/detail/main/view.tsx b/src/app_modules/job/detail/main/view.tsx
new file mode 100644
index 00000000..c588ac71
--- /dev/null
+++ b/src/app_modules/job/detail/main/view.tsx
@@ -0,0 +1,60 @@
+"use client";
+
+import { useRouter } from "next/navigation";
+import ComponentJob_DetailData from "../../component/detail/detail_data";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import { Stack, Button, Center } from "@mantine/core";
+import { useAtom } from "jotai";
+import { gs_job_status, gs_job_hot_menu } from "../../global_state";
+import Link from "next/link";
+import { IconBrandWhatsapp } from "@tabler/icons-react";
+import { MODEL_JOB } from "../../model/interface";
+
+export default function Job_MainDetail({ dataJob }: { dataJob: MODEL_JOB }) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function ButtonAction({ jobId }: { jobId: string }) {
+ const router = useRouter();
+
+ async function onAction() {
+ // router.push(RouterJob.arsip);
+ // setStatus("Publish");
+ // setHotMenu(3);
+ // ComponentGlobal_NotifikasiBerhasil("Berhasil Diarsipkan");
+ }
+
+ return (
+ <>
+
+ }
+ // onClick={() => {
+ // onAction();
+ // }}
+ >
+
+ Bagikan ke WhatsApp
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/job/detail/publish/layout.tsx b/src/app_modules/job/detail/publish/layout.tsx
new file mode 100644
index 00000000..775f9a77
--- /dev/null
+++ b/src/app_modules/job/detail/publish/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentJob_HeaderTamplate from "../../component/header_tamplate";
+
+export default function LayoutJob_DetailPublish({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/job/detail/publish/view.tsx b/src/app_modules/job/detail/publish/view.tsx
new file mode 100644
index 00000000..3d93b746
--- /dev/null
+++ b/src/app_modules/job/detail/publish/view.tsx
@@ -0,0 +1,57 @@
+"use client";
+
+import { useRouter } from "next/navigation";
+import ComponentJob_DetailData from "../../component/detail/detail_data";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import { Stack, Button } from "@mantine/core";
+import { useAtom } from "jotai";
+import { gs_job_hot_menu, gs_job_status } from "../../global_state";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+import { Job_funEditArsipById } from "../../fun/edit/fun_edit_arsip_by_id";
+import { MODEL_JOB } from "../../model/interface";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+
+export default function Job_DetailPublish({ dataJob }: { dataJob: MODEL_JOB }) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function ButtonAction({ jobId }: { jobId: string }) {
+ const router = useRouter();
+ const [status, setStatus] = useAtom(gs_job_status);
+ const [hotMenu, setHotMenu] = useAtom(gs_job_hot_menu);
+
+ async function onAction() {
+ await Job_funEditArsipById(jobId, true).then((res) => {
+ if (res.status === 200) {
+ setStatus("Publish");
+ setHotMenu(3);
+ ComponentGlobal_NotifikasiBerhasil("Berhasil Diarsipkan");
+ router.replace(RouterJob.arsip);
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+ return (
+ <>
+ {
+ onAction();
+ }}
+ >
+ Arsipkan
+
+ >
+ );
+}
diff --git a/src/app_modules/job/detail/reject/layout.tsx b/src/app_modules/job/detail/reject/layout.tsx
new file mode 100644
index 00000000..ce563baa
--- /dev/null
+++ b/src/app_modules/job/detail/reject/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentJob_HeaderTamplate from "../../component/header_tamplate";
+
+export default function LayoutJob_DetailReject({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/job/detail/reject/view.tsx b/src/app_modules/job/detail/reject/view.tsx
new file mode 100644
index 00000000..d45791a8
--- /dev/null
+++ b/src/app_modules/job/detail/reject/view.tsx
@@ -0,0 +1,110 @@
+"use client";
+
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import { Stack, Button, Group, Modal, Paper, Title } from "@mantine/core";
+import { useAtom } from "jotai";
+
+import ComponentJob_DetailData from "../../component/detail/detail_data";
+import { gs_job_status } from "../../global_state";
+import { useRouter } from "next/navigation";
+import { useDisclosure } from "@mantine/hooks";
+import ComponentJob_NotedBox from "../../component/detail/noted_box";
+import { MODEL_JOB } from "../../model/interface";
+import { Job_funEditStatusByStatusId } from "../../fun/edit/fun_edit_status_by_status_id";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+import { Job_funDeleteById } from "../../fun/delete/fun_delete_by_id";
+
+export default function Job_DetailReject({ dataJob }: { dataJob: MODEL_JOB }) {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
+
+function ButtonAction({ jobId }: { jobId: string }) {
+ const router = useRouter();
+ const [status, setStatus] = useAtom(gs_job_status);
+ const [opened, { open, close }] = useDisclosure();
+
+ async function onAction() {
+ await Job_funEditStatusByStatusId(jobId, "3").then((res) => {
+ if (res.status === 200) {
+ router.push(RouterJob.status);
+ setStatus("Draft");
+ ComponentGlobal_NotifikasiBerhasil("Masuk Draft");
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+
+ async function onDelete() {
+ await Job_funDeleteById(jobId).then((res) => {
+ if (res.status === 200) {
+ router.push(RouterJob.status);
+ setStatus("Reject");
+ ComponentGlobal_NotifikasiBerhasil("Berhasil Hapus Job");
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+
+ return (
+ <>
+
+
+
+ Yakin ingin menghapus ini ?
+
+ {
+ close();
+ }}
+ >
+ Batal
+
+ {
+ onDelete();
+ }}
+ >
+ Hapus
+
+
+
+
+
+
+
+ {
+ onAction();
+ }}
+ >
+ Edit Kembali
+
+ {
+ open();
+ }}
+ >
+ Hapus
+
+
+ >
+ );
+}
diff --git a/src/app_modules/job/detail/review/layout.tsx b/src/app_modules/job/detail/review/layout.tsx
new file mode 100644
index 00000000..61f74589
--- /dev/null
+++ b/src/app_modules/job/detail/review/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentJob_HeaderTamplate from "../../component/header_tamplate";
+
+export default function LayoutJob_DetailReview({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/job/detail/review/view.tsx b/src/app_modules/job/detail/review/view.tsx
new file mode 100644
index 00000000..6e6763ec
--- /dev/null
+++ b/src/app_modules/job/detail/review/view.tsx
@@ -0,0 +1,55 @@
+"use client";
+
+import { Button, Card, Image, Skeleton, Stack, Text } from "@mantine/core";
+import ComponentJob_DetailData from "../../component/detail/detail_data";
+import { useRouter } from "next/navigation";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { useAtom } from "jotai";
+import { gs_job_status } from "../../global_state";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import { MODEL_JOB } from "../../model/interface";
+import { Job_funEditStatusByStatusId } from "../../fun/edit/fun_edit_status_by_status_id";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+
+
+export default function Job_DetailReview({ dataJob }: { dataJob: MODEL_JOB }) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function ButtonAction({ jobId }: { jobId: string }) {
+ const router = useRouter();
+ const [status, setStatus] = useAtom(gs_job_status);
+
+ async function onAction() {
+ await Job_funEditStatusByStatusId(jobId, "3").then((res) => {
+ if (res.status === 200) {
+ setStatus("Draft");
+ ComponentGlobal_NotifikasiBerhasil("Berhasil Dibatalkan");
+ router.push(RouterJob.status);
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+ return (
+ <>
+ {
+ onAction();
+ }}
+ >
+ Batalkan Review
+
+ >
+ );
+}
diff --git a/src/app_modules/job/edit/layout.tsx b/src/app_modules/job/edit/layout.tsx
new file mode 100644
index 00000000..8d76e86d
--- /dev/null
+++ b/src/app_modules/job/edit/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentJob_HeaderTamplate from "../component/header_tamplate";
+
+export default function LayoutJob_Edit({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/job/edit/view.tsx b/src/app_modules/job/edit/view.tsx
new file mode 100644
index 00000000..6a2a8146
--- /dev/null
+++ b/src/app_modules/job/edit/view.tsx
@@ -0,0 +1,329 @@
+"use client";
+
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import {
+ Box,
+ Button,
+ Center,
+ FileButton,
+ Group,
+ Image,
+ Loader,
+ Modal,
+ Paper,
+ Stack,
+ Text,
+ TextInput,
+ Textarea,
+ Title,
+} from "@mantine/core";
+import { IconCamera, IconUpload, IconXboxX } from "@tabler/icons-react";
+import { useAtom } from "jotai";
+import _ from "lodash";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { gs_job_hot_menu, gs_job_status } from "../global_state";
+import { MODEL_JOB } from "../model/interface";
+import {
+ useDisclosure,
+ useShallowEffect,
+ useWindowScroll,
+} from "@mantine/hooks";
+
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+import { Job_EditById } from "../fun/edit/fun_edit_by_id";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+import dynamic from "next/dynamic";
+const ReactQuill = dynamic(
+ () => {
+ return import("react-quill");
+ },
+ { ssr: false }
+);
+
+export default function Job_Edit({ dataJob }: { dataJob: MODEL_JOB }) {
+ const [value, setValue] = useState(dataJob);
+
+ const [reload, setReload] = useState(false);
+ const [file, setFile] = useState(null);
+ const [images, setImages] = useState();
+ const [maxFile, setMaxFile] = useState(false);
+
+ useShallowEffect(() => {
+ if (window && window.document) setReload(true);
+ }, []);
+
+ if (!reload)
+ return (
+ <>
+
+
+
+ >
+ );
+
+ return (
+ <>
+ {!reload ? (
+
+
+
+ ) : (
+
+
+ {images ? (
+
+ ) : value.imagesId ? (
+
+ ) : (
+
+
+
+
+ Upload Gambar
+
+
+
+ )
+
+ //
+ // {value.imagesId ? (
+ //
+ // ) : (
+ //
+ // {maxFile ? (
+ //
+ //
+ //
+ //
+ // Maaf, Ukuran file terlalu besar, maximum 10mb
+ //
+ //
+ //
+ // ) : (
+ //
+ // {images ? (
+ //
+ // ) : (
+ //
+ //
+ //
+ //
+ // Upload Gambar
+ //
+ //
+ //
+ // )}
+ //
+ // )}
+ //
+ // )}
+ //
+ }
+
+ {
+ try {
+ const buffer = URL.createObjectURL(
+ new Blob([new Uint8Array(await files.arrayBuffer())])
+ );
+
+ if (files.size > 20000) {
+ // setMaxFile(true);
+ ComponentGlobal_NotifikasiPeringatan(
+ "File tidak lebih dari 20Mb",
+ 3000
+ );
+ } else {
+ // console.log(buffer, "ini buffer");
+ // console.log(files, " ini file");
+ // setMaxFile(false);
+ setImages(buffer);
+ setFile(files);
+ }
+ } catch (error) {
+ console.log(error);
+ }
+ }}
+ accept="image/png,image/jpeg"
+ >
+ {(props) => (
+
+
+
+ )}
+
+
+
+
+ {
+ setValue({
+ ...value,
+ title: val.currentTarget.value,
+ });
+ }}
+ />
+
+
+
+ Syarat & Ketentuan
+
+ {" "}
+ *
+
+
+ {
+ setValue({
+ ...value,
+ content: val,
+ });
+ }}
+ />
+
+
+
+ Deskripsi
+
+ {" "}
+ *
+
+
+ {
+ setValue({
+ ...value,
+ deskripsi: val,
+ });
+ }}
+ />
+
+
+
+
+
+ )}
+ >
+ );
+}
+
+function ButtonAction({ value, file }: { value: MODEL_JOB; file: FormData }) {
+ const router = useRouter();
+ const [hotMenu, setHotMenu] = useAtom(gs_job_hot_menu);
+ const [status, setStatus] = useAtom(gs_job_status);
+ const [opened, { open, close }] = useDisclosure(false);
+ const [scroll, scrollTo] = useWindowScroll();
+
+ async function onUpdate() {
+ const gambar = new FormData();
+ gambar.append("file", file as any);
+
+ await Job_EditById(value, gambar).then((res) => {
+ if (res.status === 200) {
+ setHotMenu(2);
+ setStatus("Draft");
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ router.back();
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+
+ return (
+ <>
+
+
+ Anda yakin menyimpan data ini ?
+
+ close()}>
+ Batal
+
+ onUpdate()}>
+ Simpan
+
+
+
+
+ {
+ open();
+ scrollTo({ y: 0 });
+ }}
+ >
+ Update
+
+ >
+ );
+}
diff --git a/src/app_modules/job/fun/create/fun_create.ts b/src/app_modules/job/fun/create/fun_create.ts
new file mode 100644
index 00000000..35b6cc36
--- /dev/null
+++ b/src/app_modules/job/fun/create/fun_create.ts
@@ -0,0 +1,67 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+import _ from "lodash";
+import { v4 } from "uuid";
+import fs from "fs";
+import { revalidatePath } from "next/cache";
+import { MODEL_JOB } from "../../model/interface";
+
+export async function Job_funCreate(req: MODEL_JOB, file: FormData) {
+ const authorId = await User_getUserId();
+
+ const dataImage: any = file.get("file");
+ if (dataImage !== "null") {
+ const fileName = dataImage.name;
+ const fileExtension = _.lowerCase(dataImage.name.split(".").pop());
+ const fRandomName = v4(fileName) + "." + fileExtension;
+
+ const upload = await prisma.images.create({
+ data: {
+ url: fRandomName,
+ label: "JOB",
+ },
+ select: {
+ id: true,
+ url: true,
+ },
+ });
+
+ if (!upload) return { status: 400, message: "Gagal upload gambar" };
+ const uploadFolder = Buffer.from(await dataImage.arrayBuffer());
+ fs.writeFileSync(`./public/job/${upload.url}`, uploadFolder);
+ const create = await prisma.job.create({
+ data: {
+ title: req.title,
+ content: req.content,
+ deskripsi: req.deskripsi,
+ authorId: authorId,
+ imagesId: upload.id,
+ },
+ });
+
+ if (!create) return { status: 400, message: "Gagal Disimpan" };
+ revalidatePath("/dev/job/main/status");
+ return {
+ status: 201,
+ message: "Berhasil Disimpan",
+ };
+ } else {
+ const create = await prisma.job.create({
+ data: {
+ title: req.title,
+ content: req.content,
+ deskripsi: req.deskripsi,
+ authorId: authorId,
+ },
+ });
+
+ if (!create) return { status: 400, message: "Gagal Disimpan" };
+ revalidatePath("/dev/job/main/status");
+ return {
+ status: 201,
+ message: "Berhasil Disimpan",
+ };
+ }
+}
diff --git a/src/app_modules/job/fun/delete/fun_delete_by_id.ts b/src/app_modules/job/fun/delete/fun_delete_by_id.ts
new file mode 100644
index 00000000..88136a8b
--- /dev/null
+++ b/src/app_modules/job/fun/delete/fun_delete_by_id.ts
@@ -0,0 +1,19 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { revalidatePath } from "next/cache";
+
+export async function Job_funDeleteById(jobId: string) {
+ const del = await prisma.job.update({
+ where: {
+ id: jobId,
+ },
+ data: {
+ isActive: false,
+ },
+ });
+
+ if (!del) return { status: 400, message: "Gagal hapus" };
+ revalidatePath("/dev/job/main/status");
+ return { status: 200, message: "Berhasil hapus" };
+}
diff --git a/src/app_modules/job/fun/edit/fun_edit_arsip_by_id.ts b/src/app_modules/job/fun/edit/fun_edit_arsip_by_id.ts
new file mode 100644
index 00000000..d8b637f7
--- /dev/null
+++ b/src/app_modules/job/fun/edit/fun_edit_arsip_by_id.ts
@@ -0,0 +1,21 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { revalidatePath } from "next/cache";
+
+export async function Job_funEditArsipById(jobId: string, aktifasi: boolean) {
+ const updt = await prisma.job.update({
+ where: {
+ id: jobId,
+ },
+ data: {
+ isArsip: aktifasi,
+ },
+ });
+ if (!updt) return { status: 400, message: "Gagal Arsip" };
+
+ revalidatePath("/dev/job/main/arsip");
+ revalidatePath("/dev/job/main/status");
+ revalidatePath("/dev/job/main/beranda");
+ return { status: 200, message: "Berhasil Arsip" };
+}
diff --git a/src/app_modules/job/fun/edit/fun_edit_by_id.ts b/src/app_modules/job/fun/edit/fun_edit_by_id.ts
new file mode 100644
index 00000000..9d341fd5
--- /dev/null
+++ b/src/app_modules/job/fun/edit/fun_edit_by_id.ts
@@ -0,0 +1,73 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import _ from "lodash";
+import { v4 } from "uuid";
+import fs from "fs";
+import { MODEL_JOB } from "../../model/interface";
+import { revalidatePath } from "next/cache";
+
+export async function Job_EditById(req: MODEL_JOB, file: FormData) {
+ // console.log(file);
+ // console.log(req);
+ // return { status: 200 };
+
+ const dataImage: any = file.get("file");
+ if (dataImage !== "null") {
+ const fileName = dataImage.name;
+ const fileExtension = _.lowerCase(dataImage.name.split(".").pop());
+ const fRandomName = v4(fileName) + "." + fileExtension;
+
+ const upload = await prisma.images.create({
+ data: {
+ url: fRandomName,
+ label: "JOB",
+ },
+ select: {
+ id: true,
+ url: true,
+ },
+ });
+
+ if (!upload) return { status: 400, message: "Gagal upload gambar" };
+ const uploadFolder = Buffer.from(await dataImage.arrayBuffer());
+ fs.writeFileSync(`./public/job/${upload.url}`, uploadFolder);
+
+ const updt = await prisma.job.update({
+ where: {
+ id: req.id,
+ },
+ data: {
+ title: req.title,
+ content: req.content,
+ deskripsi: req.deskripsi,
+ imagesId: upload.id,
+ },
+ });
+
+ if (!updt) return { status: 400, message: "Gagal Update" };
+ revalidatePath("/dev/job/detail/draft");
+ return {
+ status: 200,
+ message: "Berhasil Disimpan",
+ };
+ } else {
+ const updt = await prisma.job.update({
+ where: {
+ id: req.id,
+ },
+ data: {
+ title: req.title,
+ content: req.content,
+ deskripsi: req.deskripsi,
+ },
+ });
+
+ if (!updt) return { status: 400, message: "Gagal Update" };
+ revalidatePath("/dev/job/detail/draft");
+ return {
+ status: 200,
+ message: "Berhasil Disimpan",
+ };
+ }
+}
diff --git a/src/app_modules/job/fun/edit/fun_edit_status_by_status_id.ts b/src/app_modules/job/fun/edit/fun_edit_status_by_status_id.ts
new file mode 100644
index 00000000..5b94a262
--- /dev/null
+++ b/src/app_modules/job/fun/edit/fun_edit_status_by_status_id.ts
@@ -0,0 +1,22 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { revalidatePath } from "next/cache";
+
+export async function Job_funEditStatusByStatusId(
+ jobId: string,
+ statusId: string
+) {
+ const updt = await prisma.job.update({
+ where: {
+ id: jobId,
+ },
+ data: {
+ masterStatusId: statusId,
+ },
+ });
+
+ if (!updt) return { status: 400, message: "Gagal ganti status" };
+ revalidatePath("/dev/job/main/status");
+ return { status: 200, message: "Berhasil ganti status" };
+}
diff --git a/src/app_modules/job/fun/get/get_list_all_arsip.ts b/src/app_modules/job/fun/get/get_list_all_arsip.ts
new file mode 100644
index 00000000..d551be6f
--- /dev/null
+++ b/src/app_modules/job/fun/get/get_list_all_arsip.ts
@@ -0,0 +1,17 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+
+export async function Job_getListAllArsipById() {
+ const authorId = await User_getUserId();
+
+ const get = await prisma.job.findMany({
+ where: {
+ authorId: authorId,
+ isArsip: true,
+ },
+ });
+
+ return get;
+}
diff --git a/src/app_modules/job/fun/get/get_list_all_publish.ts b/src/app_modules/job/fun/get/get_list_all_publish.ts
new file mode 100644
index 00000000..6c4939ef
--- /dev/null
+++ b/src/app_modules/job/fun/get/get_list_all_publish.ts
@@ -0,0 +1,28 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+
+export async function Job_getAllListPublish() {
+ const data = await prisma.job.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ masterStatusId: "1",
+ isActive: true,
+ isArsip: false,
+ },
+ select: {
+ id: true,
+ title: true,
+ Author: {
+ select: {
+ Profile: true
+ }
+ }
+ }
+ });
+
+ return data;
+}
diff --git a/src/app_modules/job/fun/get/get_list_status_by_status_id.ts b/src/app_modules/job/fun/get/get_list_status_by_status_id.ts
new file mode 100644
index 00000000..8ba31e38
--- /dev/null
+++ b/src/app_modules/job/fun/get/get_list_status_by_status_id.ts
@@ -0,0 +1,68 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+
+export async function Job_getListStatusByStatusId(statusId: string) {
+ const authorId = await User_getUserId();
+ if (statusId === "1") {
+ const data = await prisma.job.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ masterStatusId: "1",
+ authorId: authorId,
+ isActive: true,
+ isArsip: false
+ },
+ });
+
+ return data;
+ }
+
+ if (statusId === "2") {
+ const data = await prisma.job.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ masterStatusId: "2",
+ authorId: authorId,
+ isActive: true,
+ },
+ });
+
+ return data;
+ }
+
+ if (statusId === "3") {
+ const data = await prisma.job.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ masterStatusId: "3",
+ authorId: authorId,
+ isActive: true,
+ },
+ });
+
+ return data;
+ }
+
+ if (statusId === "4") {
+ const data = await prisma.job.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ masterStatusId: "4",
+ authorId: authorId,
+ isActive: true,
+ },
+ });
+
+ return data;
+ }
+}
diff --git a/src/app_modules/job/fun/get/get_one_by_id.ts b/src/app_modules/job/fun/get/get_one_by_id.ts
new file mode 100644
index 00000000..af89939b
--- /dev/null
+++ b/src/app_modules/job/fun/get/get_one_by_id.ts
@@ -0,0 +1,13 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function Job_getOneById(jobId: any) {
+ const get = await prisma.job.findFirst({
+ where: {
+ id: jobId,
+ },
+ });
+
+ return get;
+}
diff --git a/src/app_modules/job/global_state/index.ts b/src/app_modules/job/global_state/index.ts
new file mode 100644
index 00000000..bd83c615
--- /dev/null
+++ b/src/app_modules/job/global_state/index.ts
@@ -0,0 +1,9 @@
+import { atomWithStorage } from "jotai/utils";
+
+/**
+ * @param 1: Beranda, 2: Status, 3: Arsip
+ * @returns halaman pada layout
+ */
+export const gs_job_hot_menu = atomWithStorage("gs_jobs_hot_menu", 1);
+
+export const gs_job_status = atomWithStorage("gs_job_status", "Publish");
diff --git a/src/app_modules/job/index.ts b/src/app_modules/job/index.ts
new file mode 100644
index 00000000..28daa1b5
--- /dev/null
+++ b/src/app_modules/job/index.ts
@@ -0,0 +1,49 @@
+import Job_Beranda from "./main/beranda";
+import LayoutJob_Main from "./main/layout";
+import Job_Splash from "./splash/view";
+import Job_Status from "./main/status/view";
+import Job_Arsip from "./main/arsip";
+import Job_Create from "./create/view";
+import LayoutJob_Create from "./create/layout";
+import Job_DetailPublish from "./detail/publish/view";
+import LayoutJob_DetailPublish from "./detail/publish/layout";
+import Job_Review from "./main/status/review";
+import LayoutJob_DetailReview from "./detail/review/layout";
+import Job_Draft from "./main/status/draft";
+import LayoutJob_DetailDraft from "./detail/draft/layout";
+import Job_Reject from "./main/status/reject";
+import LayoutJob_DetailReject from "./detail/reject/layout";
+import Job_MainDetail from "./detail/main/view";
+import LayoutJob_MainDetail from "./detail/main/layout";
+import Job_NonUserView from "./non_user_view/view";
+import LayoutJob_NonUserView from "./non_user_view/layout";
+import Job_DetailArsip from "./detail/arsip/view";
+import LayoutJob_DetailArsip from "./detail/arsip/layout";
+import Job_Edit from "./edit/view";
+import LayoutJob_Edit from "./edit/layout";
+
+export {
+ Job_Beranda,
+ LayoutJob_Main,
+ Job_Splash,
+ Job_Status,
+ Job_Arsip,
+ Job_Create,
+ LayoutJob_Create,
+ Job_DetailPublish,
+ LayoutJob_DetailPublish,
+ Job_Review,
+ LayoutJob_DetailReview,
+ Job_Draft,
+ LayoutJob_DetailDraft,
+ Job_Reject,
+ LayoutJob_DetailReject,
+ Job_MainDetail,
+ LayoutJob_MainDetail,
+ Job_NonUserView,
+ LayoutJob_NonUserView,
+ Job_DetailArsip,
+ LayoutJob_DetailArsip,
+ Job_Edit,
+ LayoutJob_Edit,
+};
diff --git a/src/app_modules/job/main/arsip.tsx b/src/app_modules/job/main/arsip.tsx
new file mode 100644
index 00000000..99593b7c
--- /dev/null
+++ b/src/app_modules/job/main/arsip.tsx
@@ -0,0 +1,16 @@
+"use client";
+
+import ComponentJob_CardViewStatus from "../component/card_view_status";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { MODEL_JOB } from "../model/interface";
+
+export default function Job_Arsip({ dataJob }: { dataJob: MODEL_JOB[] }) {
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app_modules/job/main/beranda.tsx b/src/app_modules/job/main/beranda.tsx
new file mode 100644
index 00000000..2b8c0c45
--- /dev/null
+++ b/src/app_modules/job/main/beranda.tsx
@@ -0,0 +1,78 @@
+"use client";
+
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import ComponentGlobal_AuthorNameOnHeader from "@/app_modules/component_global/author_name_on_header";
+import ComponentGlobal_HeaderTamplate from "@/app_modules/component_global/header_tamplate";
+import {
+ ActionIcon,
+ Affix,
+ Card,
+ Center,
+ Grid,
+ Image,
+ Stack,
+ Text,
+ Title,
+ rem,
+} from "@mantine/core";
+import { IconCirclePlus } from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import { MODEL_JOB } from "../model/interface";
+import ComponentJob_DetailData from "../component/detail/detail_data";
+import ComponentJob_CardViewStatus from "../component/card_view_status";
+import _ from "lodash";
+import ComponentJob_IsEmptyData from "../component/is_empty_data";
+
+export default function Job_Beranda({ listJob }: { listJob: MODEL_JOB[] }) {
+ const router = useRouter();
+ return (
+ <>
+
+ {
+ router.push(RouterJob.create);
+ }}
+ >
+
+
+
+
+ {_.isEmpty(listJob) ? (
+
+ ) : (
+
+ {listJob.map((e, i) => (
+
+
+
+
+ router.push(RouterJob.main_detail + e.id)}
+ mt={"lg"}
+ >
+
+
+
+
+ {e.title}
+
+
+
+
+
+
+ ))}
+
+ )}
+ >
+ );
+}
diff --git a/src/app_modules/job/main/layout.tsx b/src/app_modules/job/main/layout.tsx
new file mode 100644
index 00000000..173af79e
--- /dev/null
+++ b/src/app_modules/job/main/layout.tsx
@@ -0,0 +1,96 @@
+"use client";
+
+import {
+ ActionIcon,
+ AppShell,
+ Center,
+ Footer,
+ Grid,
+ Stack,
+ Text,
+} from "@mantine/core";
+import React, { useState } from "react";
+import ComponentJob_HeaderTamplate from "../component/header_tamplate";
+import { IconHistory, IconHome, IconReservedLine } from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { useAtom } from "jotai";
+import { gs_job_hot_menu } from "../global_state";
+import { RouterHome } from "@/app/lib/router_hipmi/router_home";
+
+export default function LayoutJob_Main({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ const router = useRouter();
+ const [hotMenu, setHotMenu] = useAtom(gs_job_hot_menu);
+
+ const listFooter = [
+ {
+ id: 1,
+ name: "Beranda",
+ path: RouterJob.beranda,
+ icon: ,
+ },
+
+ {
+ id: 2,
+ name: "Status",
+ path: RouterJob.status,
+ icon: ,
+ },
+ {
+ id: 3,
+ name: "Arsip",
+ path: RouterJob.arsip,
+ icon: ,
+ },
+ ];
+
+ return (
+ <>
+
+ }
+ footer={
+
+
+ {listFooter.map((e) => (
+ {
+ router.replace(e.path);
+ setHotMenu(e.id);
+ }}
+ >
+
+
+
+ {e.icon}
+
+
+ {e.name}
+
+
+
+
+ ))}
+
+
+ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/job/main/status/draft.tsx b/src/app_modules/job/main/status/draft.tsx
new file mode 100644
index 00000000..57fc9030
--- /dev/null
+++ b/src/app_modules/job/main/status/draft.tsx
@@ -0,0 +1,14 @@
+"use client";
+
+import { Stack, Card, Grid, Image, Text } from "@mantine/core";
+import ComponentJob_CardViewStatus from "../../component/card_view_status";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import ComponentJob_CardPreview from "../../component/card_preview";
+
+export default function Job_Draft({ listDraft }: { listDraft : any}) {
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app_modules/job/main/status/publish.tsx b/src/app_modules/job/main/status/publish.tsx
new file mode 100644
index 00000000..0bc80770
--- /dev/null
+++ b/src/app_modules/job/main/status/publish.tsx
@@ -0,0 +1,48 @@
+"use client";
+
+import ComponentGlobal_AuthorNameOnHeader from "@/app_modules/component_global/author_name_on_header";
+import { Stack, Card, Grid, Image, Text } from "@mantine/core";
+import ComponentJob_CardViewStatus from "../../component/card_view_status";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import ComponentJob_CardPreview from "../../component/card_preview";
+import { Job_getListStatusByStatusId } from "../../fun/get/get_list_status_by_status_id";
+
+export default function Job_Publish({ listPublish }: { listPublish : any}) {
+ return (
+ <>
+
+ {/*
+ {Array(2)
+ .fill(0)
+ .map((e, i) => (
+
+
+
+
+
+
+
+
+
+ Judul Lowongan Kerja
+
+
+ Lorem ipsum dolor sit amet consectetur, adipisicing
+ elit. Laboriosam est id neque iste voluptatem
+ consequuntur veritatis dolorem illo et, repellat
+ praesentium maiores amet omnis voluptas aliquid tenetur
+ nam sint obcaecati.
+
+
+
+
+
+
+ ))}
+ */}
+ >
+ );
+}
diff --git a/src/app_modules/job/main/status/reject.tsx b/src/app_modules/job/main/status/reject.tsx
new file mode 100644
index 00000000..a7959b86
--- /dev/null
+++ b/src/app_modules/job/main/status/reject.tsx
@@ -0,0 +1,14 @@
+"use client";
+
+import { Stack, Card, Grid, Image, Text } from "@mantine/core";
+import ComponentJob_CardViewStatus from "../../component/card_view_status";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { MODEL_JOB } from "../../model/interface";
+
+export default function Job_Reject({ listReject }: { listReject : MODEL_JOB[]}) {
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app_modules/job/main/status/review.tsx b/src/app_modules/job/main/status/review.tsx
new file mode 100644
index 00000000..833544f7
--- /dev/null
+++ b/src/app_modules/job/main/status/review.tsx
@@ -0,0 +1,17 @@
+"use client";
+
+import { Stack, Card, Grid, Image, Text } from "@mantine/core";
+import ComponentJob_CardViewStatus from "../../component/card_view_status";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+
+export default function Job_Review({ listReview }: { listReview : any[]}) {
+
+ return (
+ <>
+
+ >
+ );
+}
diff --git a/src/app_modules/job/main/status/view.tsx b/src/app_modules/job/main/status/view.tsx
new file mode 100644
index 00000000..72797ff7
--- /dev/null
+++ b/src/app_modules/job/main/status/view.tsx
@@ -0,0 +1,88 @@
+"use client";
+
+import { Stack, Tabs } from "@mantine/core";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import Job_Publish from "./publish";
+import Job_Review from "./review";
+import Job_Draft from "./draft";
+import Job_Reject from "./reject";
+import { useAtom } from "jotai";
+import { gs_job_status } from "../../global_state";
+
+export default function Job_Status({
+ listPublish,
+ listReview,
+ listDraft,
+ listReject,
+}: {
+ listPublish: any[];
+ listReview: any[];
+ listDraft: any[];
+ listReject: any[];
+}) {
+ const router = useRouter();
+ const [tabsStatus, setTabsStatus] = useAtom(gs_job_status);
+ const listTabs = [
+ {
+ id: 1,
+ path: ,
+ value: "Publish",
+ },
+ {
+ id: 2,
+ path: ,
+ value: "Review",
+ },
+ {
+ id: 3,
+ path: ,
+ value: "Draft",
+ },
+ {
+ id: 4,
+ path: ,
+ value: "Reject",
+ },
+ ];
+ return (
+ <>
+
+
+
+ {listTabs.map((e) => (
+
+ {e.value}
+
+ ))}
+
+ {listTabs.map((e) => (
+
+ {e.path}
+
+ ))}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/job/model/interface.ts b/src/app_modules/job/model/interface.ts
new file mode 100644
index 00000000..46548408
--- /dev/null
+++ b/src/app_modules/job/model/interface.ts
@@ -0,0 +1,20 @@
+import { MODEL_USER } from "@/app_modules/home/model/interface";
+import { MODEL_IMAGES, MODEL_NEW_DEFAULT_MASTER } from "@/app_modules/model_global/interface";
+
+export interface MODEL_JOB {
+ id: string;
+ title: string
+ content: string;
+ deskripsi: string
+ isActive: boolean;
+ isArsip: boolean;
+ createdAt: Date;
+ updateAt: Date;
+ catatan: string;
+ authorId: string;
+ Author: MODEL_USER;
+ Images: MODEL_IMAGES
+ imagesId: string
+ MasterStatus: MODEL_NEW_DEFAULT_MASTER
+ masterStatusId: string
+}
diff --git a/src/app_modules/job/non_user_view/layout.tsx b/src/app_modules/job/non_user_view/layout.tsx
new file mode 100644
index 00000000..4a15ca1e
--- /dev/null
+++ b/src/app_modules/job/non_user_view/layout.tsx
@@ -0,0 +1,26 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentJob_HeaderTamplate from "../component/header_tamplate";
+
+export default function LayoutJob_NonUserView({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+
+ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/job/non_user_view/view.tsx b/src/app_modules/job/non_user_view/view.tsx
new file mode 100644
index 00000000..6fede772
--- /dev/null
+++ b/src/app_modules/job/non_user_view/view.tsx
@@ -0,0 +1,53 @@
+"use client";
+
+import { Card, Center, Image, Stack, Text } from "@mantine/core";
+import ComponentJob_DetailData from "../component/detail/detail_data";
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { data } from "autoprefixer";
+import { MODEL_JOB } from "../model/interface";
+
+export default function Job_NonUserView({ data }: { data: MODEL_JOB }) {
+ return (
+ <>
+
+
+
+
+ {data.imagesId ? (
+
+
+
+ ) : (
+ ""
+ )}
+
+
+
+
+ {data.title}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/job/splash/view.tsx b/src/app_modules/job/splash/view.tsx
new file mode 100644
index 00000000..31c87d74
--- /dev/null
+++ b/src/app_modules/job/splash/view.tsx
@@ -0,0 +1,33 @@
+"use client";
+
+import { RouterJob } from "@/app/lib/router_hipmi/router_job";
+import { Center, Image, Paper, Stack, Text } from "@mantine/core";
+import { useShallowEffect } from "@mantine/hooks";
+import { useAtom } from "jotai";
+import { useRouter } from "next/navigation";
+import { gs_job_hot_menu, gs_job_status } from "../global_state";
+
+export default function Job_Splash() {
+ const router = useRouter();
+ const [hotMenu, setHotMenu] = useAtom(gs_job_hot_menu);
+ const [status, setStatus] = useAtom(gs_job_status);
+
+
+ useShallowEffect(() => {
+ setTimeout(() => {
+ setHotMenu(1);
+ setStatus("Publish")
+ router.replace(RouterJob.beranda);
+ }, 2000);
+ }, []);
+
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/katalog/main/view.tsx b/src/app_modules/katalog/main/view.tsx
index fd07a886..b2155b1c 100644
--- a/src/app_modules/katalog/main/view.tsx
+++ b/src/app_modules/katalog/main/view.tsx
@@ -42,7 +42,7 @@ export default function KatalogView({
userLoginId={userLoginId}
/>
- {profile.User.id === userLoginId ? : ""}
+ {profile?.User.id === userLoginId ? : ""}
>
diff --git a/src/app_modules/katalog/portofolio/list_view/view.tsx b/src/app_modules/katalog/portofolio/list_view/view.tsx
index c2b16149..907f3abf 100644
--- a/src/app_modules/katalog/portofolio/list_view/view.tsx
+++ b/src/app_modules/katalog/portofolio/list_view/view.tsx
@@ -48,7 +48,7 @@ export default function ListPortofolioView({
Portofolio
- {profile.User.id === userLoginId ? (
+ {profile?.User.id === userLoginId ? (
diff --git a/src/app_modules/katalog/profile/create/view.tsx b/src/app_modules/katalog/profile/create/view.tsx
index 7fe5116f..c3e0ef02 100644
--- a/src/app_modules/katalog/profile/create/view.tsx
+++ b/src/app_modules/katalog/profile/create/view.tsx
@@ -30,6 +30,7 @@ import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_gl
import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+import { RouterHome } from "@/app/lib/router_hipmi/router_home";
export default function CreateProfile({ userId }: { userId: any }) {
const router = useRouter();
@@ -233,7 +234,7 @@ async function onSubmit(
await funCreateNewProfile(body as any, gambarPP, gambarBG).then((res) => {
if (res.status === 201) {
ComponentGlobal_NotifikasiBerhasil("Berhasil Membuat Profile")
- router.push(RouterProfile.katalog + `${userId}`);
+ router.push(RouterHome.main_home);
} else {
ComponentGlobal_NotifikasiGagal(res.message);
}
diff --git a/src/app_modules/katalog/profile/main/view.tsx b/src/app_modules/katalog/profile/main/view.tsx
index ec735d8b..7d128d9f 100644
--- a/src/app_modules/katalog/profile/main/view.tsx
+++ b/src/app_modules/katalog/profile/main/view.tsx
@@ -62,14 +62,14 @@ export default function ProfileView({
alt=""
src={
RouterProfile.api_url_background +
- `${profile.ImagesBackground.url}`
+ `${profile?.ImagesBackground.url}`
}
/>
{/* Upload Background Profile */}
- {profile.User.id === userLoginId ? (
+ {profile?.User.id === userLoginId ? (
@@ -121,7 +121,7 @@ export default function ProfileView({
{/* Upload Foto Profile */}
- {profile.User.id === userLoginId ? (
+ {profile?.User.id === userLoginId ? (
+
- {profile.name}
+ {profile?.name}
- @{profile.User.username}
+ @{profile?.User?.username}
- {profile.User.id === userLoginId ? (
+ {profile?.User.id === userLoginId ? (
{
@@ -181,7 +181,7 @@ export default function ProfileView({
{" "}
- +{profile.User.nomor}
+ +{profile?.User.nomor}
@@ -193,7 +193,7 @@ export default function ProfileView({
{" "}
- {profile.email}
+ {profile?.email}
@@ -203,12 +203,12 @@ export default function ProfileView({
- {profile.alamat}
+ {profile?.alamat}
{(() => {
- if (profile.jenisKelamin === "Laki - laki") {
+ if (profile?.jenisKelamin === "Laki - laki") {
return (
<>
@@ -216,7 +216,7 @@ export default function ProfileView({
- {profile.jenisKelamin}
+ {profile?.jenisKelamin}
>
@@ -229,7 +229,7 @@ export default function ProfileView({
- {profile.jenisKelamin}
+ {profile?.jenisKelamin}
>
diff --git a/src/app_modules/model_global/interface.ts b/src/app_modules/model_global/interface.ts
index 88ad2d94..3d8d7f62 100644
--- a/src/app_modules/model_global/interface.ts
+++ b/src/app_modules/model_global/interface.ts
@@ -12,3 +12,12 @@ export interface MODEL_DEFAULT_MASTER {
name: string,
active: boolean,
}
+
+export interface MODEL_NEW_DEFAULT_MASTER {
+ id: string,
+ name: string,
+ active: boolean,
+ createdAt: Date;
+ updatedAt: Date;
+}
+
diff --git a/src/app_modules/user_search/fun/get/get_list_user.ts b/src/app_modules/user_search/fun/get/get_list_user.ts
index 5866194e..ecbb04b5 100644
--- a/src/app_modules/user_search/fun/get/get_list_user.ts
+++ b/src/app_modules/user_search/fun/get/get_list_user.ts
@@ -4,7 +4,6 @@ import prisma from "@/app/lib/prisma";
export async function UserSearch_getListUser() {
const data = await prisma.user.findMany({
-
select: {
id: true,
username: true,
diff --git a/src/app_modules/user_search/main/index.tsx b/src/app_modules/user_search/main/index.tsx
index 8b23b379..fdba4914 100644
--- a/src/app_modules/user_search/main/index.tsx
+++ b/src/app_modules/user_search/main/index.tsx
@@ -13,23 +13,34 @@ import {
Stack,
Text,
TextInput,
+ Title,
} from "@mantine/core";
import { IconChevronRight, IconSearch } from "@tabler/icons-react";
import { useState } from "react";
import { UserSearch_searchByName } from "../fun/search/fun_search_by_name";
import { useRouter } from "next/navigation";
+import ComponentGlobal_MaintenanceInformation from "@/app_modules/component_global/maintenance_information";
export default function UserSearch_MainView({
listUser,
}: {
listUser: MODEL_USER[];
}) {
- const router = useRouter()
+ const router = useRouter();
const [user, setUser] = useState(listUser);
async function onSearch(name: string) {
await UserSearch_searchByName(name).then((res) => setUser(res as any));
}
+
+ // return (
+ // <>
+ //
+ //
+ //
+ // >
+ // );
+
return (
<>
@@ -40,41 +51,60 @@ export default function UserSearch_MainView({
placeholder="Masukan nama pegguna"
onChange={(val) => onSearch(val.target.value)}
/>
- {user.map((e) => (
-
-
-
-
-
-
-
-
- {e.Profile.name}
-
-
- +{e.nomor}
-
+ {!user ? (
+ ""
+ ) : (
+
+ {user?.map((e) =>
+ e.Profile === null ? (
+ ""
+ ) : (
+
+
+
+
+
+
+
+
+
+
+ {e?.Profile?.name}
+
+
+ +{e?.nomor}
+
+
+
+
+
+
+ router.push(
+ RouterProfile.katalog + `${e?.Profile?.id}`
+ )
+ }
+ >
+
+
+
+
+
+
-
-
-
- router.push(RouterProfile.katalog + `${e.Profile.id}`)}
- >
-
-
-
-
-
-
-
- ))}
+ )
+ )}
+
+ )}
>
diff --git a/src/app_modules/vote/component/card_view_publish.tsx b/src/app_modules/vote/component/card_view_publish.tsx
new file mode 100644
index 00000000..308c9bac
--- /dev/null
+++ b/src/app_modules/vote/component/card_view_publish.tsx
@@ -0,0 +1,142 @@
+"use client";
+
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import ComponentGlobal_AuthorNameOnHeader from "@/app_modules/component_global/author_name_on_header";
+import {
+ Card,
+ Stack,
+ Grid,
+ Avatar,
+ Divider,
+ Badge,
+ Group,
+ Text,
+ Title,
+ Box,
+} from "@mantine/core";
+import moment from "moment";
+import { useRouter } from "next/navigation";
+import { MODEL_VOTING } from "../model/interface";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+
+export default function ComponentVote_CardViewPublish({
+ data,
+ path,
+ pilihanSaya,
+ authorName,
+ namaPilihan,
+}: {
+ data?: MODEL_VOTING;
+ path: string;
+ pilihanSaya?: boolean;
+ authorName?: boolean;
+ namaPilihan?: string;
+}) {
+ const router = useRouter();
+ return (
+ <>
+
+ {/* Header name */}
+ {authorName ? (
+
+
+
+ ) : (
+ ""
+ )}
+ {/* Isi deskripsi */}
+ {
+ if (data?.id === undefined) {
+ ComponentGlobal_NotifikasiPeringatan("Path tidak ditemukan");
+ } else {
+ router.push(path + data?.id);
+ }
+ }}
+ >
+
+ {data ? data.title : "Judul Voting"}
+
+
+
+ {data
+ ? data?.awalVote.toLocaleDateString(["id-ID"], {
+ dateStyle: "medium",
+ })
+ : "tgl awal voting"}
+
+ -
+
+ {data
+ ? data?.akhirVote.toLocaleDateString(["id-ID"], {
+ dateStyle: "medium",
+ })
+ : "tgl akhir voting"}
+
+
+
+ {data ? (
+
+
+ {data?.Voting_DaftarNamaVote.map((v) => (
+
+
+
+ {v.value}
+
+
+
+ {v.jumlah}
+
+
+
+ ))}
+
+
+ ) : (
+
+
+
+
+ Voting A
+
+ 2
+
+
+
+
+
+ Voting B
+
+ 3
+
+
+
+
+
+ )}
+
+ {pilihanSaya ? (
+
+
+ Pilihan anda:
+
+
+
+ {namaPilihan}
+
+
+
+ ) : (
+ ""
+ )}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/component/card_view_status.tsx b/src/app_modules/vote/component/card_view_status.tsx
new file mode 100644
index 00000000..e14eca35
--- /dev/null
+++ b/src/app_modules/vote/component/card_view_status.tsx
@@ -0,0 +1,68 @@
+"use client";
+
+import {
+ Card,
+ Stack,
+ Title,
+ Badge,
+ Group,
+ Radio,
+ Grid,
+ Center,
+ Text,
+} from "@mantine/core";
+import moment from "moment";
+import { useRouter } from "next/navigation";
+import { MODEL_VOTING } from "../model/interface";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+
+export default function ComponentVote_CardViewStatus({
+ path,
+ data,
+}: {
+ path?: string;
+ data?: MODEL_VOTING;
+}) {
+ const router = useRouter();
+ return (
+ <>
+ {
+ if (data?.id === undefined) {
+ ComponentGlobal_NotifikasiPeringatan("Path tidak ditemukan");
+ } else {
+ router.push((path as string) + data?.id);
+ }
+ }}
+ >
+ {/* Isi deskripsi */}
+
+
+
+ {data?.title}
+
+
+
+
+ {data?.awalVote.toLocaleDateString(["id-ID"], {
+ dateStyle: "medium",
+ })}
+
+ -
+
+ {data?.akhirVote.toLocaleDateString(["id-ID"], {
+ dateStyle: "medium",
+ })}
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/component/detail/detail_daftar_kontributor.tsx b/src/app_modules/vote/component/detail/detail_daftar_kontributor.tsx
new file mode 100644
index 00000000..989f1fbd
--- /dev/null
+++ b/src/app_modules/vote/component/detail/detail_daftar_kontributor.tsx
@@ -0,0 +1,92 @@
+"use client";
+import {
+ Card,
+ Stack,
+ Center,
+ Title,
+ Badge,
+ Group,
+ Radio,
+ Grid,
+ Text,
+ Avatar,
+ Divider,
+ Box,
+} from "@mantine/core";
+import moment from "moment";
+import { MODEL_VOTE_KONTRIBUTOR } from "../../model/interface";
+import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
+import _ from "lodash";
+import { useRouter } from "next/navigation";
+
+export default function ComponentVote_DaftarKontributorVoter({
+ listKontributor,
+}: {
+ listKontributor?: MODEL_VOTE_KONTRIBUTOR[];
+}) {
+ const router = useRouter()
+ return (
+ <>
+
+
+
+
+ Daftar Voting
+
+
+ {_.isEmpty(listKontributor) ? (
+
+ - Tidak ada voting -
+
+ ) : (
+
+ {listKontributor?.map((e, i) => (
+
+
+ router.push(RouterProfile.katalog + e.Author.Profile.id)}
+ >
+
+
+
+
+
+ {e ? e.Author.Profile.name : "Nama author"}
+
+
+
+
+
+ 10 ? 8 : 10
+ }
+ >
+ {e.Voting_DaftarNamaVote.value}
+
+
+
+
+
+
+ ))}
+
+ )}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/component/detail/detail_data_sebelum_publish.tsx b/src/app_modules/vote/component/detail/detail_data_sebelum_publish.tsx
new file mode 100644
index 00000000..6429526a
--- /dev/null
+++ b/src/app_modules/vote/component/detail/detail_data_sebelum_publish.tsx
@@ -0,0 +1,77 @@
+"use client";
+import {
+ Card,
+ Stack,
+ Center,
+ Title,
+ Badge,
+ Group,
+ Radio,
+ Grid,
+ Text,
+} from "@mantine/core";
+import moment from "moment";
+import { MODEL_VOTING } from "../../model/interface";
+import { IconCircle } from "@tabler/icons-react";
+import _ from "lodash";
+
+export default function ComponentVote_DetailDataSebelumPublish
+({
+ data,
+}: {
+ data?: MODEL_VOTING;
+}) {
+
+ return (
+ <>
+
+
+
+
+ {data?.title}
+
+ {data?.deskripsi}
+
+
+
+
+ Batas Voting
+
+
+
+
+
+ {data?.awalVote.toLocaleDateString(["id-ID"], {
+ dateStyle: "medium",
+ })}
+
+ -
+
+ {data?.akhirVote.toLocaleDateString(["id-ID"], {
+ dateStyle: "medium",
+ })}
+
+
+
+
+
+
+
+
+ Pilihan :
+
+
+ {data?.Voting_DaftarNamaVote.map((e) => (
+
+
+
+
+ {e.value}
+
+ ))}
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/component/detail/detail_data_setelah_publish.tsx b/src/app_modules/vote/component/detail/detail_data_setelah_publish.tsx
new file mode 100644
index 00000000..b9667c52
--- /dev/null
+++ b/src/app_modules/vote/component/detail/detail_data_setelah_publish.tsx
@@ -0,0 +1,74 @@
+"use client";
+import {
+ Card,
+ Stack,
+ Center,
+ Title,
+ Badge,
+ Group,
+ Radio,
+ Grid,
+ Text,
+} from "@mantine/core";
+import moment from "moment";
+import { MODEL_VOTING } from "../../model/interface";
+import { IconCircle } from "@tabler/icons-react";
+import _ from "lodash";
+import ComponentGlobal_AuthorNameOnHeader from "@/app_modules/component_global/author_name_on_header";
+
+export default function ComponentVote_DetailDataSetelahPublish({
+ data,
+ authorName,
+}: {
+ data?: MODEL_VOTING;
+ authorName?: boolean;
+}) {
+ return (
+ <>
+
+ {authorName ? (
+
+
+
+ ) : (
+ ""
+ )}
+
+
+
+ {data?.title}
+
+ {data?.deskripsi}
+
+
+
+
+ Batas Voting
+
+
+
+
+
+ {data?.awalVote.toLocaleDateString(["id-ID"], {
+ dateStyle: "medium",
+ })}
+
+ -
+
+ {data?.akhirVote.toLocaleDateString(["id-ID"], {
+ dateStyle: "medium",
+ })}
+
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/component/detail/detail_data_tanpa_vote.tsx b/src/app_modules/vote/component/detail/detail_data_tanpa_vote.tsx
new file mode 100644
index 00000000..9d942625
--- /dev/null
+++ b/src/app_modules/vote/component/detail/detail_data_tanpa_vote.tsx
@@ -0,0 +1,51 @@
+import { Badge, Card, Center, Group, Stack, Text, Title } from "@mantine/core";
+import moment from "moment";
+
+
+export default function ComponentVote_DetailDataTanpaVote() {
+ return (
+ <>
+
+
+
+
+ Judul voting
+
+
+ Deskripsi: Lorem, ipsum dolor sit amet consectetur adipisicing
+ elit. Mollitia possimus repellendus in, iste voluptatibus sit
+ laborum voluptates aliquam nisi? Earum quas ea quaerat veniam
+ porro, magni nulla consequuntur distinctio at.
+
+
+
+
+
+
+
+ Batas Voting
+
+
+
+
+
+ {new Date().toLocaleDateString(["id-ID"], {
+ dateStyle: "medium",
+ })}
+
+ -
+
+ {new Date(
+ moment(Date.now()).add(10, "days").calendar()
+ ).toLocaleDateString(["id-ID"], {
+ dateStyle: "medium",
+ })}
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/component/detail/detail_hasil_voting.tsx b/src/app_modules/vote/component/detail/detail_hasil_voting.tsx
new file mode 100644
index 00000000..74b4113b
--- /dev/null
+++ b/src/app_modules/vote/component/detail/detail_hasil_voting.tsx
@@ -0,0 +1,53 @@
+"use client";
+
+import {
+ Avatar,
+ Box,
+ Card,
+ Center,
+ Grid,
+ Group,
+ List,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import { MODEL_VOTING_DAFTAR_NAMA_VOTE } from "../../model/interface";
+
+export default function ComponentVote_HasilVoting({
+ data,
+}: {
+ data?: MODEL_VOTING_DAFTAR_NAMA_VOTE[];
+}) {
+ return (
+ <>
+
+
+
+
+ Hasil Voting
+
+
+
+ {data?.map((e) => (
+ = 4 ? 6 : 4}>
+
+
+ {e.jumlah}
+
+ {e.value}
+
+
+ ))}
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/component/header_tamplate.tsx b/src/app_modules/vote/component/header_tamplate.tsx
new file mode 100644
index 00000000..386c4007
--- /dev/null
+++ b/src/app_modules/vote/component/header_tamplate.tsx
@@ -0,0 +1,69 @@
+"use client";
+
+import { Header, Group, ActionIcon, Text, Title } from "@mantine/core";
+import { IconArrowLeft, IconChevronLeft } from "@tabler/icons-react";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+
+export default function ComponentVote_HeaderTamplate({
+ hideBack,
+ changeIconBack,
+ route,
+ route2,
+ title,
+ icon,
+ bg,
+}: {
+ hideBack?: boolean;
+ changeIconBack?: any;
+ route?: any;
+ route2?: any;
+ title: string;
+ icon?: any;
+ bg?: any;
+}) {
+ const router = useRouter();
+ return (
+ <>
+
+
+ {hideBack ? (
+
+ ) : (
+ {
+ if (route === null || route === undefined) {
+ return router.back();
+ } else {
+ return router.push(route);
+ }
+ }}
+ >
+ {changeIconBack ? changeIconBack : }
+
+ )}
+ {title}
+ {(() => {
+ if (route2 === null || route2 === undefined) {
+ return ;
+ } else {
+ return (
+ router.push(route2)}
+ >
+ {icon}
+
+ );
+ }
+ })()}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/component/is_empty_data.tsx b/src/app_modules/vote/component/is_empty_data.tsx
new file mode 100644
index 00000000..053a90d1
--- /dev/null
+++ b/src/app_modules/vote/component/is_empty_data.tsx
@@ -0,0 +1,13 @@
+"use client";
+
+import { Center } from "@mantine/core";
+
+export default function ComponentVote_IsEmptyData({ text }: { text: string }) {
+ return (
+ <>
+
+ {text}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/create/index.tsx b/src/app_modules/vote/create/index.tsx
new file mode 100644
index 00000000..ed23e60b
--- /dev/null
+++ b/src/app_modules/vote/create/index.tsx
@@ -0,0 +1,228 @@
+"use client";
+
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import {
+ Box,
+ Button,
+ Center,
+ Grid,
+ Group,
+ Stack,
+ Text,
+ TextInput,
+ Textarea,
+ Title,
+} from "@mantine/core";
+import { DatePickerInput } from "@mantine/dates";
+import { useCounter } from "@mantine/hooks";
+import { IconHome, IconMinus, IconPlus } from "@tabler/icons-react";
+import { useAtom } from "jotai";
+import moment from "moment";
+import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { gs_vote_hotMenu, gs_vote_status } from "../global_state";
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import _ from "lodash";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+import { data } from "autoprefixer";
+import { Vote_funCreate } from "../fun/create/create_vote";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+import { MODEL_VOTING } from "../model/interface";
+
+export default function Vote_Create() {
+ const router = useRouter();
+ const [hotMenu, setHotMenu] = useAtom(gs_vote_hotMenu);
+ const [tabsStatus, setTabsStatus] = useAtom(gs_vote_status);
+
+ const [data, setData] = useState({
+ title: "",
+ deskripsi: "",
+ awalVote: Date,
+ akhirVote: Date,
+ });
+
+ // const [range, setRange] = useState({
+ // });
+
+ const [listVote, setListVote] = useState([
+ {
+ name: "Nama Voting",
+ value: "",
+ },
+ {
+ name: "Nama Voting",
+ value: "",
+ },
+ ]);
+
+ return (
+ <>
+
+
+ {
+ setData({
+ ...data,
+ title: val.target.value,
+ });
+ }}
+ />
+
+
+
+
+
+ Daftar Voting
+
+
+
+
+
+ {listVote.map((e, index) => (
+
+ {
+ const val = _.clone(listVote);
+ val[index].value = v.currentTarget.value;
+ setListVote([...val]);
+ }}
+ />
+
+ ))}
+
+
+
+ {listVote.length >= 4 ? (
+ ""
+ ) : (
+ }
+ variant="outline"
+ onClick={() => {
+ // if (listVote.length >= 4)
+ // return ComponentGlobal_NotifikasiPeringatan(
+ // "Daftar Voting Maksimal 4"
+ // );
+ setListVote([
+ ...listVote,
+ { name: "Nama Voting", value: "" },
+ ]);
+ }}
+ >
+ Tambah List
+
+ )}
+
+ {listVote.length <= 2 ? (
+ ""
+ ) : (
+ }
+ variant="outline"
+ onClick={() => {
+ if (listVote.length <= 2)
+ return ComponentGlobal_NotifikasiPeringatan(
+ "Daftar Voting Minimal 2"
+ );
+ setListVote([...listVote.slice(0, -1)]);
+ }}
+ >
+ Kurangi List
+
+ )}
+
+
+
+
+ {
+ onSave(router, setHotMenu, setTabsStatus, data as any, listVote);
+ }}
+ >
+ Simpan
+
+
+ >
+ );
+}
+
+async function onSave(
+ router: AppRouterInstance,
+ setHotMenu: any,
+ setTabsStatus: any,
+ data: MODEL_VOTING,
+ listVote: any[]
+) {
+ if (_.values(data).includes(""))
+ return ComponentGlobal_NotifikasiPeringatan("Lengkapi Data");
+
+ const cekAwalVote = moment(data.awalVote).format();
+ if (cekAwalVote === "Invalid date")
+ return ComponentGlobal_NotifikasiPeringatan("Lengkapi Tanggal");
+
+ const cekAkhirVote = moment(data.akhirVote).format();
+ if (cekAkhirVote === "Invalid date")
+ return ComponentGlobal_NotifikasiPeringatan("Lengkapi Tanggal");
+
+ if (_.values(listVote.map((e) => e.value)).includes(""))
+ return ComponentGlobal_NotifikasiPeringatan("Isi Semua Nama Voting");
+
+ await Vote_funCreate(data, listVote).then((res) => {
+ if (res.status === 201) {
+ setHotMenu(1);
+ setTabsStatus("Review");
+ router.replace(RouterVote.status);
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+}
diff --git a/src/app_modules/vote/create/layout.tsx b/src/app_modules/vote/create/layout.tsx
new file mode 100644
index 00000000..89058911
--- /dev/null
+++ b/src/app_modules/vote/create/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentVote_HeaderTamplate from "../component/header_tamplate";
+
+export default function LayoutVote_Create({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/draft/index.tsx b/src/app_modules/vote/detail/draft/index.tsx
new file mode 100644
index 00000000..fd952104
--- /dev/null
+++ b/src/app_modules/vote/detail/draft/index.tsx
@@ -0,0 +1,118 @@
+"use client";
+
+import { Button, Group, Modal, SimpleGrid, Stack, Title } from "@mantine/core";
+import ComponentVote_DetailDataSebelumPublish from "../../component/detail/detail_data_sebelum_publish";
+import { useRouter } from "next/navigation";
+import { useAtom } from "jotai";
+import { gs_vote_status } from "../../global_state";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import { useDisclosure } from "@mantine/hooks";
+import { MODEL_VOTING } from "../../model/interface";
+import { Vote_funEditStatusByStatusId } from "../../fun/edit/fun_edit_status_by_id";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+import { Vote_funDeleteById } from "../../fun/delete/fun_delete_by_id";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+
+export default function Vote_DetailDraft({
+ dataVote,
+}: {
+ dataVote: MODEL_VOTING;
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function ButtonAction({
+ voteId,
+ awalVote,
+}: {
+ voteId: string;
+ awalVote: Date;
+}) {
+ const router = useRouter();
+ const [tabsStatus, setTabsStatus] = useAtom(gs_vote_status);
+ const [opened, { open, close }] = useDisclosure(false);
+
+ async function onUpdate() {
+ const hariIni = new Date();
+ if (awalVote < hariIni) return ComponentGlobal_NotifikasiPeringatan("Tanggal Voting Lewat");
+
+ await Vote_funEditStatusByStatusId(voteId, "2").then((res) => {
+ if (res.status === 200) {
+ setTabsStatus("Review");
+ ComponentGlobal_NotifikasiBerhasil("Berhasil Ajukan Review", 2000);
+ router.back();
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+
+ async function onDelete() {
+ await Vote_funDeleteById(voteId).then((res) => {
+ if (res.status === 200) {
+ setTabsStatus("Draft");
+ ComponentGlobal_NotifikasiBerhasil("Berhasil Hapus Vote", 2000);
+ router.back();
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+
+ return (
+ <>
+
+ {
+ onUpdate();
+ }}
+ >
+ Ajukan Review
+
+ {
+ open();
+ }}
+ >
+ Hapus
+
+
+
+
+
+ Yakin menghapus vote ini ?
+
+ {
+ close();
+ }}
+ >
+ Kembali
+
+ {
+ onDelete();
+ }}
+ color="red"
+ >
+ Hapus
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/draft/layout.tsx b/src/app_modules/vote/detail/draft/layout.tsx
new file mode 100644
index 00000000..59cc24c6
--- /dev/null
+++ b/src/app_modules/vote/detail/draft/layout.tsx
@@ -0,0 +1,31 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentVote_HeaderTamplate from "../../component/header_tamplate";
+import { IconEdit } from "@tabler/icons-react";
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+
+export default function LayoutVote_DetailDraft({
+ children,
+ voteId
+}: {
+ children: React.ReactNode;
+ voteId: string
+}) {
+ return (
+ <>
+ }
+ route2={RouterVote.edit + voteId}
+ />
+ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/kontribusi/index.tsx b/src/app_modules/vote/detail/kontribusi/index.tsx
new file mode 100644
index 00000000..16854181
--- /dev/null
+++ b/src/app_modules/vote/detail/kontribusi/index.tsx
@@ -0,0 +1,43 @@
+"use client";
+
+import {
+ Badge,
+ Card,
+ Center,
+ Grid,
+ Group,
+ Radio,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import moment from "moment";
+import ComponentVote_HasilVoting from "../../component/detail/detail_hasil_voting";
+import ComponentVote_DaftarKontributorVoter from "../../component/detail/detail_daftar_kontributor";
+import { MODEL_VOTING } from "../../model/interface";
+import ComponentVote_DetailDataSetelahPublish from "../../component/detail/detail_data_setelah_publish";
+
+export default function Vote_DetailKontribusi({
+ dataVote,
+ listKontributor,
+}: {
+ dataVote: MODEL_VOTING;
+ listKontributor: any
+}) {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
+
+
diff --git a/src/app_modules/vote/detail/kontribusi/layout.tsx b/src/app_modules/vote/detail/kontribusi/layout.tsx
new file mode 100644
index 00000000..f1485bc4
--- /dev/null
+++ b/src/app_modules/vote/detail/kontribusi/layout.tsx
@@ -0,0 +1,21 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentVote_HeaderTamplate from "../../component/header_tamplate";
+
+export default function LayoutVote_DetailKontribusi({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/main/index.tsx b/src/app_modules/vote/detail/main/index.tsx
new file mode 100644
index 00000000..76832920
--- /dev/null
+++ b/src/app_modules/vote/detail/main/index.tsx
@@ -0,0 +1,315 @@
+"use client";
+
+import {
+ Card,
+ Stack,
+ Center,
+ Title,
+ Badge,
+ Group,
+ Radio,
+ Grid,
+ Text,
+ Box,
+ Button,
+ Avatar,
+ Divider,
+} from "@mantine/core";
+import moment from "moment";
+import ComponentVote_HasilVoting from "../../component/detail/detail_hasil_voting";
+import ComponentVote_DaftarKontributorVoter from "../../component/detail/detail_daftar_kontributor";
+import {
+ MODEL_VOTE_KONTRIBUTOR,
+ MODEL_VOTING,
+ MODEL_VOTING_DAFTAR_NAMA_VOTE,
+} from "../../model/interface";
+import { useState } from "react";
+import ComponentGlobal_AuthorNameOnHeader from "@/app_modules/component_global/author_name_on_header";
+import _ from "lodash";
+import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan";
+import { Vote_funCreatePilihanVotingById } from "../../fun/create/create_pilihan_voting";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import { Vote_funCreateHasil } from "../../fun/create/create_hasil";
+import { Vote_getOnebyId } from "../../fun/get/get_one_by_id";
+import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
+
+export default function Vote_MainDetail({
+ dataVote,
+ hasilVoting,
+ isKontributor,
+ pilihanKontributor,
+ listKontributor,
+}: {
+ dataVote: MODEL_VOTING;
+ hasilVoting: any;
+ isKontributor: boolean;
+ pilihanKontributor: string;
+ listKontributor: any[];
+}) {
+ const [data, setData] = useState(dataVote);
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
+
+function TampilanDataVoting({
+ dataVote,
+ setData,
+ isKontributor,
+ pilihanKontributor,
+}: {
+ dataVote?: MODEL_VOTING;
+ setData: any;
+ isKontributor: boolean;
+ pilihanKontributor: any;
+}) {
+ const [votingNameId, setVotingNameId] = useState("");
+ return (
+ <>
+
+
+
+
+
+
+
+ {dataVote?.title}
+
+ {dataVote?.deskripsi}
+
+
+
+
+ Batas Voting
+
+
+
+
+
+ {dataVote?.awalVote.toLocaleDateString(["id-ID"], {
+ dateStyle: "medium",
+ })}
+
+ -
+
+ {dataVote?.akhirVote.toLocaleDateString(["id-ID"], {
+ dateStyle: "medium",
+ })}
+
+
+
+
+
+
+
+ {/* Voting View */}
+
+ {isKontributor ? (
+
+
+ Pilihan anda:
+
+
+ {pilihanKontributor.Voting_DaftarNamaVote.value}
+
+
+ ) : (
+
+ {
+ setVotingNameId(val);
+ }}
+ label={
+
+ Pilihan :
+
+ }
+ >
+
+ {dataVote?.Voting_DaftarNamaVote.map((v) => (
+
+
+
+ ))}
+
+
+
+ {_.isEmpty(votingNameId) ? (
+
+ Vote
+
+ ) : (
+
+ onVote(votingNameId, dataVote?.id as any, setData)
+ }
+ >
+ Vote
+
+ )}
+
+
+ )}
+
+
+ >
+ );
+}
+
+async function onVote(pilihanVotingId: string, voteId: string, setData: any) {
+ await Vote_funCreateHasil(pilihanVotingId, voteId).then(async (res) => {
+ if (res.status === 201) {
+ await Vote_getOnebyId(voteId).then((val) => {
+ setData(val);
+ ComponentGlobal_NotifikasiBerhasil(res.message);
+ });
+ } else {
+ ComponentGlobal_NotifikasiPeringatan(res.message);
+ }
+ });
+}
+
+function TampilanHasil({
+ data,
+ hasil,
+}: {
+ data: MODEL_VOTING_DAFTAR_NAMA_VOTE[];
+ hasil: any;
+}) {
+ return (
+ <>
+
+
+
+
+ Hasil Voting
+
+
+ {/* {JSON.stringify(data, null,2)} */}
+
+
+ {data.map((e) => (
+ = 4 ? 6 : 4}>
+
+
+
+ {e.jumlah}
+ {/* {hasil.filter((i: any) => i.idDaftarNama == "clsijw6ur0002x5loqsq6g4id")} */}
+
+
+ {e.value}
+
+
+ ))}
+
+
+
+
+ >
+ );
+}
+
+function TampilanListKontributor({
+ lisKontributor,
+}: {
+ lisKontributor: MODEL_VOTE_KONTRIBUTOR[];
+}) {
+ return (
+ <>
+
+
+
+
+ Daftar Voting
+
+ {lisKontributor.map((e, i) => (
+
+
+
+
+
+
+
+
+ {e ? e.Author.Profile.name : "Nama author"}
+
+
+
+
+
+ {e.Voting_DaftarNamaVote.value}
+
+
+
+
+
+ ))}
+ {/* {lisKontributor.map((e) => (
+
+
+
+
+
+ {e ? e.Author.Profile.name : "Nama author"}
+
+
+
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit. Harum minus libero, ullam ipsum quasi labore iure doloremque sunt et mollitia dolorem laborum quisquam, dolores quis deserunt id. Ipsa, minus temporibus.
+
+
+
+
+ ))} */}
+
+
+
+ {/* {JSON.stringify(lisKontributor, null, 2)} */}
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/main/layout.tsx b/src/app_modules/vote/detail/main/layout.tsx
new file mode 100644
index 00000000..543062a9
--- /dev/null
+++ b/src/app_modules/vote/detail/main/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentVote_HeaderTamplate from "../../component/header_tamplate";
+
+export default function LayoutVote_MainDetail({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/publish/index.tsx b/src/app_modules/vote/detail/publish/index.tsx
new file mode 100644
index 00000000..de2b416a
--- /dev/null
+++ b/src/app_modules/vote/detail/publish/index.tsx
@@ -0,0 +1,81 @@
+"use client";
+
+import {
+ Badge,
+ Card,
+ Center,
+ Grid,
+ Group,
+ Radio,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import ComponentVote_DetailDataSebelumPublish from "../../component/detail/detail_data_sebelum_publish";
+import ComponentVote_DaftarKontributorVoter from "../../component/detail/detail_daftar_kontributor";
+import ComponentVote_HasilVoting from "../../component/detail/detail_hasil_voting";
+import moment from "moment";
+import { MODEL_VOTE_KONTRIBUTOR, MODEL_VOTING } from "../../model/interface";
+import ComponentVote_DetailDataSetelahPublish from "../../component/detail/detail_data_setelah_publish";
+
+export default function Vote_DetailPublish({
+ dataVote,
+ listKontributor,
+}: {
+ dataVote: MODEL_VOTING;
+ listKontributor: MODEL_VOTE_KONTRIBUTOR;
+}) {
+ return (
+ <>
+
+ {/* */}
+
+
+
+
+ >
+ );
+}
+
+function TampilanDataVoting({ data }: { data: MODEL_VOTING }) {
+ return (
+ <>
+
+
+
+
+ {data.title}
+
+ {data.deskripsi}
+
+
+
+
+
+
+ Batas Voting
+
+
+
+
+
+ {data.awalVote.toLocaleDateString(["id-ID"], {
+ dateStyle: "long",
+ })}
+
+ -
+
+ {data.akhirVote.toLocaleDateString(["id-ID"], {
+ dateStyle: "long",
+ })}
+
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/publish/layout.tsx b/src/app_modules/vote/detail/publish/layout.tsx
new file mode 100644
index 00000000..0ce32506
--- /dev/null
+++ b/src/app_modules/vote/detail/publish/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentVote_HeaderTamplate from "../../component/header_tamplate";
+
+export default function LayoutVote_DetailPublish({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/reject/index.tsx b/src/app_modules/vote/detail/reject/index.tsx
new file mode 100644
index 00000000..43a8faa8
--- /dev/null
+++ b/src/app_modules/vote/detail/reject/index.tsx
@@ -0,0 +1,116 @@
+"use client";
+
+import {
+ Button,
+ Group,
+ Modal,
+ SimpleGrid,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import ComponentVote_DetailDataSebelumPublish from "../../component/detail/detail_data_sebelum_publish";
+import { useRouter } from "next/navigation";
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import { useAtom } from "jotai";
+import { gs_vote_status } from "../../global_state";
+import { useDisclosure } from "@mantine/hooks";
+import { MODEL_VOTING } from "../../model/interface";
+import { Vote_funDeleteById } from "../../fun/delete/fun_delete_by_id";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+import { Vote_funEditStatusByStatusId } from "../../fun/edit/fun_edit_status_by_id";
+
+export default function Vote_DetailReject({
+ dataVote,
+}: {
+ dataVote: MODEL_VOTING;
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function ButtonAction({ voteId }: { voteId: string }) {
+ const router = useRouter();
+ const [tabsStatus, setTabsStatus] = useAtom(gs_vote_status);
+ const [opened, { open, close }] = useDisclosure(false);
+
+ async function onUpdate() {
+ await Vote_funEditStatusByStatusId(voteId, "3").then((res) => {
+ if (res.status === 200) {
+ setTabsStatus("Draft");
+ ComponentGlobal_NotifikasiBerhasil("Berhasil Masuk Draft", 2000);
+ router.back();
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+
+ async function onDelete() {
+ await Vote_funDeleteById(voteId).then((res) => {
+ if (res.status === 200) {
+ setTabsStatus("Draft");
+ ComponentGlobal_NotifikasiBerhasil("Berhasil Hapus Vote", 2000);
+ router.back();
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+
+ return (
+ <>
+
+ {
+ onUpdate();
+ }}
+ >
+ Edit Kembali
+ {" "}
+ {
+ open();
+ }}
+ >
+ Hapus
+
+
+
+
+
+ Yakin menghapus vote ini ?
+
+ {
+ close();
+ }}
+ >
+ Kembali
+
+ {
+ onDelete();
+ }}
+ color="red"
+ >
+ Hapus
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/reject/layout.tsx b/src/app_modules/vote/detail/reject/layout.tsx
new file mode 100644
index 00000000..29ff87f7
--- /dev/null
+++ b/src/app_modules/vote/detail/reject/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentVote_HeaderTamplate from "../../component/header_tamplate";
+
+export default function LayoutVote_DetailReject({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/review/index.tsx b/src/app_modules/vote/detail/review/index.tsx
new file mode 100644
index 00000000..f13b446f
--- /dev/null
+++ b/src/app_modules/vote/detail/review/index.tsx
@@ -0,0 +1,69 @@
+"use client";
+
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import {
+ Badge,
+ Button,
+ Card,
+ Center,
+ Grid,
+ Group,
+ Radio,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import { useAtom } from "jotai";
+import moment from "moment";
+import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
+import { useRouter } from "next/navigation";
+import { gs_vote_status } from "../../global_state";
+import ComponentVote_DetailDataSebelumPublish from "../../component/detail/detail_data_sebelum_publish";
+import { Vote_funEditStatusByStatusId } from "../../fun/edit/fun_edit_status_by_id";
+import { MODEL_VOTING } from "../../model/interface";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+
+export default function Vote_DetailReview({
+ dataVote,
+}: {
+ dataVote: MODEL_VOTING;
+}) {
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
+
+function ButtonAction({ voteId }: { voteId: string }) {
+ const router = useRouter();
+ const [tabsStatus, setTabsStatus] = useAtom(gs_vote_status);
+
+ async function onUpdate() {
+ await Vote_funEditStatusByStatusId(voteId, "3").then((res) => {
+ if (res.status === 200) {
+ setTabsStatus("Draft");
+ ComponentGlobal_NotifikasiBerhasil("Berhasil Batalkan Review", 2000);
+ router.back();
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+ return (
+ <>
+ {
+ onUpdate();
+ }}
+ >
+ Batalkan Review
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/review/layout.tsx b/src/app_modules/vote/detail/review/layout.tsx
new file mode 100644
index 00000000..7e506590
--- /dev/null
+++ b/src/app_modules/vote/detail/review/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentVote_HeaderTamplate from "../../component/header_tamplate";
+
+export default function LayoutVote_DetailReview({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/riwayat_saya/layout.tsx b/src/app_modules/vote/detail/riwayat_saya/layout.tsx
new file mode 100644
index 00000000..83609c4d
--- /dev/null
+++ b/src/app_modules/vote/detail/riwayat_saya/layout.tsx
@@ -0,0 +1,21 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentVote_HeaderTamplate from "../../component/header_tamplate";
+
+export default function LayoutVote_DetailRiwayatSaya({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/riwayat_saya/page.tsx b/src/app_modules/vote/detail/riwayat_saya/page.tsx
new file mode 100644
index 00000000..2f1bbb48
--- /dev/null
+++ b/src/app_modules/vote/detail/riwayat_saya/page.tsx
@@ -0,0 +1,30 @@
+"use client";
+
+import { Stack } from "@mantine/core";
+import ComponentVote_DaftarKontributorVoter from "../../component/detail/detail_daftar_kontributor";
+import ComponentVote_DetailDataSetelahPublish from "../../component/detail/detail_data_setelah_publish";
+import ComponentVote_HasilVoting from "../../component/detail/detail_hasil_voting";
+import { MODEL_VOTING } from "../../model/interface";
+
+export default function Vote_DetailRiwayatSaya({
+ dataVote,
+ listKontributor,
+}: {
+ dataVote: MODEL_VOTING;
+ listKontributor: any[];
+}) {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/semua_riwayat/layout.tsx b/src/app_modules/vote/detail/semua_riwayat/layout.tsx
new file mode 100644
index 00000000..759fb5a6
--- /dev/null
+++ b/src/app_modules/vote/detail/semua_riwayat/layout.tsx
@@ -0,0 +1,21 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentVote_HeaderTamplate from "../../component/header_tamplate";
+
+export default function LayoutVote_DetailSemuaRiwayat({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/detail/semua_riwayat/page.tsx b/src/app_modules/vote/detail/semua_riwayat/page.tsx
new file mode 100644
index 00000000..ed83c15b
--- /dev/null
+++ b/src/app_modules/vote/detail/semua_riwayat/page.tsx
@@ -0,0 +1,29 @@
+"use client";
+
+import { Stack } from "@mantine/core";
+import ComponentVote_DetailDataTanpaVote from "../../component/detail/detail_data_tanpa_vote";
+import ComponentVote_HasilVoting from "../../component/detail/detail_hasil_voting";
+import ComponentVote_DaftarKontributorVoter from "../../component/detail/detail_daftar_kontributor";
+import ComponentVote_DetailDataSetelahPublish from "../../component/detail/detail_data_setelah_publish";
+import { MODEL_VOTE_KONTRIBUTOR, MODEL_VOTING } from "../../model/interface";
+
+export default function Vote_DetailSemuaRiwayat({
+ dataVote,
+ listKontributor,
+}: {
+ dataVote: MODEL_VOTING;
+ listKontributor:MODEL_VOTE_KONTRIBUTOR[]
+}) {
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/edit/index.tsx b/src/app_modules/vote/edit/index.tsx
new file mode 100644
index 00000000..4369a632
--- /dev/null
+++ b/src/app_modules/vote/edit/index.tsx
@@ -0,0 +1,162 @@
+"use client";
+
+import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil";
+import {
+ Box,
+ Button,
+ Center,
+ Grid,
+ Group,
+ Stack,
+ Text,
+ TextInput,
+ Textarea,
+ Title,
+} from "@mantine/core";
+import { DatePickerInput } from "@mantine/dates";
+import { useCounter } from "@mantine/hooks";
+import { IconHome, IconPlus } from "@tabler/icons-react";
+import { useAtom } from "jotai";
+import moment from "moment";
+import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { gs_vote_hotMenu, gs_vote_status } from "../global_state";
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import {
+ MODEL_VOTING,
+ MODEL_VOTING_DAFTAR_NAMA_VOTE,
+} from "../model/interface";
+import _ from "lodash";
+import { Vote_funEditById } from "../fun/edit/fun_edit_by_id";
+import { ComponentGlobal_NotifikasiGagal } from "@/app_modules/component_global/notif_global/notifikasi_gagal";
+
+export default function Vote_Edit({
+ dataVote,
+ listDaftarVote,
+}: {
+ dataVote: MODEL_VOTING;
+ listDaftarVote: MODEL_VOTING_DAFTAR_NAMA_VOTE[];
+}) {
+ const [data, setData] = useState(dataVote);
+ const [listVoting, setListVoting] = useState(listDaftarVote);
+
+ return (
+ <>
+
+ {
+ setData({
+ ...data,
+ title: val.target.value,
+ });
+ }}
+ />
+
+ >
+ );
+}
+
+function ButtonAction({
+ data,
+ listVoting,
+}: {
+ data: MODEL_VOTING;
+ listVoting: MODEL_VOTING_DAFTAR_NAMA_VOTE[];
+}) {
+ const router = useRouter();
+ const [hotMenu, setHotMenu] = useAtom(gs_vote_hotMenu);
+ const [tabsStatus, setTabsStatus] = useAtom(gs_vote_status);
+
+ async function onUpdate() {
+ await Vote_funEditById(data, listVoting).then((res) => {
+ if (res.status === 200) {
+ ComponentGlobal_NotifikasiBerhasil("Berhasil Update");
+ // setHotMenu(1);
+ // setTabsStatus("Draft");
+ router.back();
+ } else {
+ ComponentGlobal_NotifikasiGagal(res.message);
+ }
+ });
+ }
+
+ return (
+ <>
+ onUpdate()}>
+ Update
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/edit/layout.tsx b/src/app_modules/vote/edit/layout.tsx
new file mode 100644
index 00000000..6dc6905f
--- /dev/null
+++ b/src/app_modules/vote/edit/layout.tsx
@@ -0,0 +1,19 @@
+"use client";
+
+import { AppShell } from "@mantine/core";
+import React from "react";
+import ComponentVote_HeaderTamplate from "../component/header_tamplate";
+
+export default function LayoutVote_Edit({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ return (
+ <>
+ }>
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/fun/create/create_hasil.ts b/src/app_modules/vote/fun/create/create_hasil.ts
new file mode 100644
index 00000000..aae5f4cc
--- /dev/null
+++ b/src/app_modules/vote/fun/create/create_hasil.ts
@@ -0,0 +1,46 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+import { revalidatePath } from "next/cache";
+
+export async function Vote_funCreateHasil(
+ pilihanVotingId: string,
+ votingId: string
+) {
+ const authorId = await User_getUserId();
+
+ const get = await prisma.voting_DaftarNamaVote.findFirst({
+ where: {
+ id: pilihanVotingId,
+ },
+ select: {
+ jumlah: true,
+ },
+ });
+
+ if (!get) return { status: 400, message: "Gagal Voting" };
+
+ const updt = await prisma.voting_DaftarNamaVote.update({
+ where: {
+ id: pilihanVotingId,
+ },
+ data: {
+ jumlah: get.jumlah + 1,
+ },
+ });
+ if (!updt) return { status: 400, message: "Gagal Update" };
+
+ const create = await prisma.voting_Kontributor.create({
+ data: {
+ voting_DaftarNamaVoteId: pilihanVotingId,
+ votingId: votingId,
+ authorId: authorId,
+ },
+ });
+ if (!create) return { status: 400, message: "Gagal Menjadi Kontributor" };
+
+
+ revalidatePath("/dev/vote/detail/main/");
+ return { status: 201, message: "Berhasil Voting" };
+}
diff --git a/src/app_modules/vote/fun/create/create_pilihan_voting.ts b/src/app_modules/vote/fun/create/create_pilihan_voting.ts
new file mode 100644
index 00000000..56d3c01a
--- /dev/null
+++ b/src/app_modules/vote/fun/create/create_pilihan_voting.ts
@@ -0,0 +1,24 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+import { revalidatePath } from "next/cache";
+
+export async function Vote_funCreatePilihanVotingById(
+ namaVotingId: string,
+ votingId: string
+) {
+ const authorId = await User_getUserId();
+
+ const create = await prisma.voting_Kontributor.create({
+ data: {
+ voting_DaftarNamaVoteId: namaVotingId,
+ votingId: votingId,
+ authorId: authorId,
+ },
+ });
+
+ if(!create) return {status: 400, message: "Gagal Voting"}
+ revalidatePath("/dev/vote/detail/main/");
+ return {status: 201, message: "Berhasil Voting"}
+}
diff --git a/src/app_modules/vote/fun/create/create_vote.ts b/src/app_modules/vote/fun/create/create_vote.ts
new file mode 100644
index 00000000..e653a2d6
--- /dev/null
+++ b/src/app_modules/vote/fun/create/create_vote.ts
@@ -0,0 +1,41 @@
+"use server";
+
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+import { MODEL_VOTING } from "../../model/interface";
+import prisma from "@/app/lib/prisma";
+import { revalidatePath } from "next/cache";
+
+export async function Vote_funCreate(req: MODEL_VOTING, listVote: any[]) {
+ const authorId = await User_getUserId();
+
+ const create = await prisma.voting.create({
+ data: {
+ title: req.title,
+ deskripsi: req.deskripsi,
+ awalVote: req.awalVote,
+ akhirVote: req.akhirVote,
+ authorId: authorId,
+ },
+ });
+
+ if (!create) return { status: 400, message: "Gagal Membuat Vote" };
+
+ for (let v of listVote) {
+ const val = v.value;
+
+ const namaVote = await prisma.voting_DaftarNamaVote.create({
+ data: {
+ value: val,
+ votingId: create.id,
+ },
+ });
+
+ if (!namaVote) return { status: 400, message: "Gagal Membuat List" };
+ }
+ revalidatePath("/dev/vote/main/status");
+
+ return {
+ status: 201,
+ message: "Berhasil Membuat Vote",
+ };
+}
diff --git a/src/app_modules/vote/fun/delete/fun_delete_by_id.ts b/src/app_modules/vote/fun/delete/fun_delete_by_id.ts
new file mode 100644
index 00000000..990613c5
--- /dev/null
+++ b/src/app_modules/vote/fun/delete/fun_delete_by_id.ts
@@ -0,0 +1,26 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { revalidatePath } from "next/cache";
+
+/**
+ * @param voteId
+ * @returns isActive berubah menjadi false
+ */
+export async function Vote_funDeleteById(voteId: string) {
+ const del = await prisma.voting.update({
+ where: {
+ id: voteId,
+ },
+ data: {
+ isActive: false,
+ },
+ });
+
+ if (!del) return { status: 400, message: "Gagal Hapus Data" };
+ revalidatePath("/dev/vote/main/status");
+ return {
+ status: 200,
+ message: "Hapus Berhasil",
+ };
+}
diff --git a/src/app_modules/vote/fun/edit/fun_edit_by_id.ts b/src/app_modules/vote/fun/edit/fun_edit_by_id.ts
new file mode 100644
index 00000000..4a1d686a
--- /dev/null
+++ b/src/app_modules/vote/fun/edit/fun_edit_by_id.ts
@@ -0,0 +1,48 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import {
+ MODEL_VOTING,
+ MODEL_VOTING_DAFTAR_NAMA_VOTE,
+} from "../../model/interface";
+import { revalidatePath } from "next/cache";
+
+export async function Vote_funEditById(
+ data: MODEL_VOTING,
+ listVoting: MODEL_VOTING_DAFTAR_NAMA_VOTE[]
+) {
+ // console.log(listVoting)
+ const updtVoting = await prisma.voting.update({
+ where: {
+ id: data.id,
+ },
+ data: {
+ title: data.title,
+ deskripsi: data.deskripsi,
+ awalVote: data.awalVote,
+ akhirVote: data.akhirVote,
+ },
+ });
+
+ if (!updtVoting) return { status: 400, message: "Gagal Update" };
+
+ for (let e of listVoting) {
+ const updtListVoting = await prisma.voting_DaftarNamaVote.updateMany({
+ where: {
+ id: e.id,
+ },
+ data: {
+ value: e.value,
+ },
+ });
+
+ if (!updtListVoting)
+ return { status: 400, message: "Gagal Update Daftar Vote" };
+ }
+
+ revalidatePath("/dev/vote/detail/draft");
+ return {
+ status: 200,
+ message: "Berhasil Update",
+ };
+}
diff --git a/src/app_modules/vote/fun/edit/fun_edit_status_by_id.ts b/src/app_modules/vote/fun/edit/fun_edit_status_by_id.ts
new file mode 100644
index 00000000..af53f490
--- /dev/null
+++ b/src/app_modules/vote/fun/edit/fun_edit_status_by_id.ts
@@ -0,0 +1,26 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+import { revalidatePath } from "next/cache";
+
+export async function Vote_funEditStatusByStatusId(
+ voteId: string,
+ statusId: string
+) {
+ const updt = await prisma.voting.update({
+ where: {
+ id: voteId,
+ },
+ data: {
+ voting_StatusId: statusId,
+ },
+ });
+
+ if (!updt) return { status: 400, message: "Gagal Update" };
+ revalidatePath("/dev/vote/main/status");
+ return {
+ status: 200,
+ message: "Update Berhasil",
+ };
+}
diff --git a/src/app_modules/vote/fun/get/cek_kontributor_by_id.ts b/src/app_modules/vote/fun/get/cek_kontributor_by_id.ts
new file mode 100644
index 00000000..53b4e57f
--- /dev/null
+++ b/src/app_modules/vote/fun/get/cek_kontributor_by_id.ts
@@ -0,0 +1,21 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+
+export async function Vote_cekKontributorById(votingId: string) {
+ const UserId = await User_getUserId()
+
+ const cek = await prisma.voting_Kontributor.count({
+ where: {
+ authorId: UserId,
+ votingId: votingId,
+ },
+ });
+
+ if (cek > 0) {
+ return true;
+ } else {
+ return false;
+ }
+}
diff --git a/src/app_modules/vote/fun/get/get_all_list_publish.ts b/src/app_modules/vote/fun/get/get_all_list_publish.ts
new file mode 100644
index 00000000..bb1f5a6e
--- /dev/null
+++ b/src/app_modules/vote/fun/get/get_all_list_publish.ts
@@ -0,0 +1,47 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+
+export async function Vote_getAllListPublish() {
+ const data = await prisma.voting.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ voting_StatusId: "1",
+ isActive: true,
+ akhirVote: {
+ gte: new Date(),
+ },
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ deskripsi: true,
+ awalVote: true,
+ akhirVote: true,
+ catatan: true,
+ authorId: true,
+ voting_StatusId: true,
+ Voting_DaftarNamaVote: {
+ orderBy: {
+ createdAt: "asc",
+ },
+ },
+ Author: {
+ select: {
+ id: true,
+ username: true,
+ nomor: true,
+ Profile: true,
+ },
+ },
+ },
+ });
+
+ return data;
+}
diff --git a/src/app_modules/vote/fun/get/get_all_list_riwayat.ts b/src/app_modules/vote/fun/get/get_all_list_riwayat.ts
new file mode 100644
index 00000000..b92fa6f5
--- /dev/null
+++ b/src/app_modules/vote/fun/get/get_all_list_riwayat.ts
@@ -0,0 +1,46 @@
+"use server"
+
+import prisma from "@/app/lib/prisma"
+
+export async function Vote_getAllListRiwayat() {
+ const data = await prisma.voting.findMany({
+ orderBy: {
+ createdAt: "asc",
+ },
+ where: {
+ voting_StatusId: "1",
+ isActive: true,
+ akhirVote: {
+ lte: new Date(),
+ },
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ deskripsi: true,
+ awalVote: true,
+ akhirVote: true,
+ catatan: true,
+ authorId: true,
+ voting_StatusId: true,
+ Voting_DaftarNamaVote: {
+ orderBy: {
+ createdAt: "asc",
+ },
+ },
+ Author: {
+ select: {
+ id: true,
+ username: true,
+ nomor: true,
+ Profile: true,
+ },
+ },
+ },
+ });
+
+ return data
+}
\ No newline at end of file
diff --git a/src/app_modules/vote/fun/get/get_all_list_riwayat_saya.ts b/src/app_modules/vote/fun/get/get_all_list_riwayat_saya.ts
new file mode 100644
index 00000000..2d24a87a
--- /dev/null
+++ b/src/app_modules/vote/fun/get/get_all_list_riwayat_saya.ts
@@ -0,0 +1,49 @@
+"use server";
+
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+import prisma from "@/app/lib/prisma";
+
+export async function Vote_getAllListRiwayatSaya() {
+ const authorId = await User_getUserId();
+ const data = await prisma.voting.findMany({
+ orderBy: {
+ createdAt: "asc",
+ },
+ where: {
+ voting_StatusId: "1",
+ authorId: authorId,
+ isActive: true,
+ akhirVote: {
+ lte: new Date(),
+ },
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ deskripsi: true,
+ awalVote: true,
+ akhirVote: true,
+ catatan: true,
+ authorId: true,
+ voting_StatusId: true,
+ Voting_DaftarNamaVote: {
+ orderBy: {
+ createdAt: "asc",
+ },
+ },
+ Author: {
+ select: {
+ id: true,
+ username: true,
+ nomor: true,
+ Profile: true,
+ },
+ },
+ },
+ });
+
+ return data;
+}
diff --git a/src/app_modules/vote/fun/get/get_list_daftar_vote_by_id.ts b/src/app_modules/vote/fun/get/get_list_daftar_vote_by_id.ts
new file mode 100644
index 00000000..e09d4b8a
--- /dev/null
+++ b/src/app_modules/vote/fun/get/get_list_daftar_vote_by_id.ts
@@ -0,0 +1,13 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function Vote_getListDaftarNamaById(voteId: string) {
+ const data = await prisma.voting_DaftarNamaVote.findMany({
+ where: {
+ votingId: voteId,
+ },
+ });
+
+ return data;
+}
diff --git a/src/app_modules/vote/fun/get/get_list_hasil_by_id.ts b/src/app_modules/vote/fun/get/get_list_hasil_by_id.ts
new file mode 100644
index 00000000..bdc856e3
--- /dev/null
+++ b/src/app_modules/vote/fun/get/get_list_hasil_by_id.ts
@@ -0,0 +1,42 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { MODEL_VOTING_DAFTAR_NAMA_VOTE } from "../../model/interface";
+import _ from "lodash";
+
+export async function Vote_getHasilVoteById(
+ daftarPilihanVoting: MODEL_VOTING_DAFTAR_NAMA_VOTE[]
+) {
+ // console.log(daftarPilihanVoting)
+
+ // for (let e of daftarPilihanVoting) {
+ // const get = await prisma.voting_Kontributor.count({
+ // where: {
+ // voting_DaftarNamaVoteId: e.id,
+ // },
+ // });
+
+ // console.log(get);
+ // return get
+ // }
+
+ const data = await prisma.voting_Kontributor.findMany({
+ where: {
+ votingId: "clsijw6uf0001x5logh7msuh1",
+ },
+ });
+
+ const hitung = _.map(
+ _.groupBy(data, "voting_DaftarNamaVoteId"),
+ (v: any) => ({
+ jumlah: v.length,
+ idDaftarNama: v[0].voting_DaftarNamaVoteId,
+ })
+ );
+
+// const filter = hitung.filter(
+// (i: any) => i.idDaftarNama == "clsijw6ur0002x5loqsq6g4id"
+// );
+
+ return hitung
+}
diff --git a/src/app_modules/vote/fun/get/get_list_kontribusi_by_author_id.ts b/src/app_modules/vote/fun/get/get_list_kontribusi_by_author_id.ts
new file mode 100644
index 00000000..6c9a5738
--- /dev/null
+++ b/src/app_modules/vote/fun/get/get_list_kontribusi_by_author_id.ts
@@ -0,0 +1,41 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+
+export async function Vote_getAllListKontribusiByAuthorId() {
+ const authorId = await User_getUserId();
+ const data = await prisma.voting_Kontributor.findMany({
+ orderBy: {
+ createdAt: "asc",
+ },
+ where: {
+ authorId: authorId,
+ },
+ select: {
+ id: true,
+ Voting: {
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ awalVote: true,
+ akhirVote: true,
+ Voting_DaftarNamaVote: {
+ orderBy: {
+ createdAt: "asc",
+ },
+ },
+ Author: {
+ select: {
+ Profile: true,
+ },
+ },
+ },
+ },
+ Voting_DaftarNamaVote: true,
+ Author: true,
+ },
+ });
+ return data;
+}
diff --git a/src/app_modules/vote/fun/get/get_list_kontributor_by_id.ts b/src/app_modules/vote/fun/get/get_list_kontributor_by_id.ts
new file mode 100644
index 00000000..7fcd1f3c
--- /dev/null
+++ b/src/app_modules/vote/fun/get/get_list_kontributor_by_id.ts
@@ -0,0 +1,26 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function Vote_getListKontributorById(votingId: string) {
+ const data = await prisma.voting_Kontributor.findMany({
+ where: {
+ votingId: votingId,
+ },
+ select: {
+ id: true,
+ Author: {
+ select: {
+ Profile: true,
+ },
+ },
+ Voting_DaftarNamaVote: {
+ select: {
+ value: true,
+ },
+ },
+ },
+ });
+
+ return data;
+}
diff --git a/src/app_modules/vote/fun/get/get_list_status_by_status_id.ts b/src/app_modules/vote/fun/get/get_list_status_by_status_id.ts
new file mode 100644
index 00000000..f38ac9b9
--- /dev/null
+++ b/src/app_modules/vote/fun/get/get_list_status_by_status_id.ts
@@ -0,0 +1,89 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+
+export async function Vote_getListByStatusId(statusId: string) {
+ const authorId = await User_getUserId();
+
+ if (statusId === "1") {
+ const data = await prisma.voting.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ voting_StatusId: "1",
+ authorId: authorId,
+ isActive: true,
+ akhirVote: {
+ gte: new Date(),
+ },
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ deskripsi: true,
+ awalVote: true,
+ akhirVote: true,
+ catatan: true,
+ authorId: true,
+ voting_StatusId: true,
+ Voting_DaftarNamaVote: {
+ orderBy: {
+ createdAt: "asc",
+ },
+ },
+ },
+ });
+
+ return data;
+ }
+
+ if (statusId === "2") {
+ const data = await prisma.voting.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ voting_StatusId: "2",
+ authorId: authorId,
+ isActive: true,
+ },
+ });
+
+ return data;
+ }
+
+ if (statusId === "3") {
+ const data = await prisma.voting.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ voting_StatusId: "3",
+ authorId: authorId,
+ isActive: true,
+ },
+ });
+
+ return data;
+ }
+
+ if (statusId === "4") {
+ const data = await prisma.voting.findMany({
+ orderBy: {
+ updatedAt: "desc",
+ },
+ where: {
+ voting_StatusId: "4",
+ authorId: authorId,
+ isActive: true,
+ },
+ });
+
+ return data;
+ }
+}
diff --git a/src/app_modules/vote/fun/get/get_one_by_id.ts b/src/app_modules/vote/fun/get/get_one_by_id.ts
new file mode 100644
index 00000000..7ba3106b
--- /dev/null
+++ b/src/app_modules/vote/fun/get/get_one_by_id.ts
@@ -0,0 +1,37 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function Vote_getOnebyId(voteId: string) {
+ const data = await prisma.voting.findFirst({
+ where: {
+ id: voteId,
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ deskripsi: true,
+ awalVote: true,
+ akhirVote: true,
+ catatan: true,
+ authorId: true,
+ voting_StatusId: true,
+ Voting_DaftarNamaVote: {
+ orderBy: {
+ createdAt: "asc"
+ }
+ },
+ Author: {
+ select: {
+ Profile: true
+ }
+ }
+
+ },
+ });
+
+ return data;
+}
diff --git a/src/app_modules/vote/fun/get/get_one_pilihan_voting_by_user_id.ts b/src/app_modules/vote/fun/get/get_one_pilihan_voting_by_user_id.ts
new file mode 100644
index 00000000..f1b67d95
--- /dev/null
+++ b/src/app_modules/vote/fun/get/get_one_pilihan_voting_by_user_id.ts
@@ -0,0 +1,23 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+import { User_getUserId } from "@/app_modules/fun_global/get_user_token";
+
+export async function Vote_getOnePilihanVotingByUserId(votingId: string) {
+ const userId = await User_getUserId();
+ const get = await prisma.voting_Kontributor.findFirst({
+ where: {
+ authorId: userId,
+ votingId: votingId,
+ },
+ select: {
+ Voting_DaftarNamaVote: {
+ select: {
+ value: true,
+ },
+ },
+ },
+ });
+
+ return get;
+}
diff --git a/src/app_modules/vote/fun/get/get_one_publish_by_id.ts b/src/app_modules/vote/fun/get/get_one_publish_by_id.ts
new file mode 100644
index 00000000..73295884
--- /dev/null
+++ b/src/app_modules/vote/fun/get/get_one_publish_by_id.ts
@@ -0,0 +1,36 @@
+"use server";
+
+import prisma from "@/app/lib/prisma";
+
+export async function Vote_getOnePublishbyId(voteId: string) {
+ const data = await prisma.voting.findFirst({
+ where: {
+ id: voteId,
+ },
+ select: {
+ id: true,
+ title: true,
+ isActive: true,
+ createdAt: true,
+ updatedAt: true,
+ deskripsi: true,
+ awalVote: true,
+ akhirVote: true,
+ catatan: true,
+ authorId: true,
+ voting_StatusId: true,
+ Voting_DaftarNamaVote: {
+ orderBy: {
+ createdAt: "asc",
+ },
+ },
+ Author: {
+ select: {
+ Profile: true,
+ },
+ },
+ },
+ });
+
+ return data;
+}
diff --git a/src/app_modules/vote/global_state/index.ts b/src/app_modules/vote/global_state/index.ts
new file mode 100644
index 00000000..29fe5ac5
--- /dev/null
+++ b/src/app_modules/vote/global_state/index.ts
@@ -0,0 +1,13 @@
+import { atomWithStorage } from "jotai/utils";
+
+export const gs_vote_hotMenu = atomWithStorage("gs_vote_hotMenu", 0);
+
+export const gs_vote_status = atomWithStorage(
+ "gs_vote_status",
+ "Publish"
+);
+
+export const gs_vote_riwayat = atomWithStorage(
+ "gs_vote_riwayat",
+ "Semua"
+);
diff --git a/src/app_modules/vote/index.tsx b/src/app_modules/vote/index.tsx
new file mode 100644
index 00000000..dd913f3c
--- /dev/null
+++ b/src/app_modules/vote/index.tsx
@@ -0,0 +1,55 @@
+import LayoutVote_Main from "./main/layout";
+import Vote_Beranda from "./main/beranda";
+import Vote_Status from "./main/status";
+import Vote_Kontribusi from "./main/kontribusi";
+import Vote_Riwayat from "./main/riwayat";
+import Vote_Splash from "./splash";
+import Vote_Create from "./create";
+import LayoutVote_Create from "./create/layout";
+import Vote_DetailPublish from "./detail/publish";
+import Vote_DetailReview from "./detail/review";
+import Vote_DetailDraft from "./detail/draft";
+import Vote_DetailReject from "./detail/reject";
+import LayoutVote_DetailPublish from "./detail/publish/layout";
+import LayoutVote_DetailReview from "./detail/review/layout";
+import LayoutVote_DetailDraft from "./detail/draft/layout";
+import LayoutVote_DetailReject from "./detail/reject/layout";
+import Vote_Edit from "./edit";
+import LayoutVote_Edit from "./edit/layout";
+import Vote_MainDetail from "./detail/main";
+import LayoutVote_MainDetail from "./detail/main/layout";
+import Vote_DetailKontribusi from "./detail/kontribusi";
+import LayoutVote_DetailKontribusi from "./detail/kontribusi/layout";
+import Vote_DetailSemuaRiwayat from "./detail/semua_riwayat/page";
+import LayoutVote_DetailSemuaRiwayat from "./detail/semua_riwayat/layout";
+import Vote_DetailRiwayatSaya from "./detail/riwayat_saya/page";
+import LayoutVote_DetailRiwayatSaya from "./detail/riwayat_saya/layout";
+
+export {
+ LayoutVote_Main,
+ Vote_Beranda,
+ Vote_Status,
+ Vote_Kontribusi,
+ Vote_Riwayat,
+ Vote_Splash,
+ Vote_Create,
+ LayoutVote_Create,
+ Vote_DetailPublish,
+ Vote_DetailReview,
+ Vote_DetailDraft,
+ Vote_DetailReject,
+ LayoutVote_DetailPublish,
+ LayoutVote_DetailReview,
+ LayoutVote_DetailDraft,
+ LayoutVote_DetailReject,
+ Vote_Edit,
+ LayoutVote_Edit,
+ Vote_MainDetail,
+ LayoutVote_MainDetail,
+ Vote_DetailKontribusi,
+ LayoutVote_DetailKontribusi,
+ Vote_DetailSemuaRiwayat,
+ LayoutVote_DetailSemuaRiwayat,
+ Vote_DetailRiwayatSaya,
+ LayoutVote_DetailRiwayatSaya,
+};
diff --git a/src/app_modules/vote/main/beranda.tsx b/src/app_modules/vote/main/beranda.tsx
new file mode 100644
index 00000000..3946ca05
--- /dev/null
+++ b/src/app_modules/vote/main/beranda.tsx
@@ -0,0 +1,71 @@
+"use client";
+
+import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog";
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import {
+ ActionIcon,
+ Affix,
+ Avatar,
+ Badge,
+ Box,
+ Card,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Radio,
+ Stack,
+ Text,
+ Title,
+ rem,
+} from "@mantine/core";
+import { IconCirclePlus } from "@tabler/icons-react";
+import moment from "moment";
+import { useRouter } from "next/navigation";
+import ComponentVote_CardViewPublish from "../component/card_view_publish";
+import { MODEL_VOTING } from "../model/interface";
+import ComponentGlobal_AuthorNameOnHeader from "@/app_modules/component_global/author_name_on_header";
+import _ from "lodash";
+import ComponentVote_IsEmptyData from "../component/is_empty_data";
+
+export default function Vote_Beranda({
+ dataVote,
+}: {
+ dataVote: MODEL_VOTING[];
+}) {
+ const router = useRouter();
+
+ return (
+ <>
+
+ {
+ router.push(RouterVote.create);
+ }}
+ >
+
+
+
+
+ {_.isEmpty(dataVote) ? (
+
+ ) : (
+
+ {dataVote.map((e, i) => (
+
+
+
+ ))}
+
+ )}
+ >
+ );
+}
diff --git a/src/app_modules/vote/main/kontribusi.tsx b/src/app_modules/vote/main/kontribusi.tsx
new file mode 100644
index 00000000..44d9850f
--- /dev/null
+++ b/src/app_modules/vote/main/kontribusi.tsx
@@ -0,0 +1,53 @@
+"use client";
+
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import {
+ Avatar,
+ Badge,
+ Box,
+ Card,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Radio,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import moment from "moment";
+import { useRouter } from "next/navigation";
+import ComponentVote_CardViewPublish from "../component/card_view_publish";
+import { MODEL_VOTE_KONTRIBUTOR } from "../model/interface";
+import _ from "lodash";
+import ComponentVote_IsEmptyData from "../component/is_empty_data";
+
+export default function Vote_Kontribusi({
+ dataKontribusi,
+}: {
+ dataKontribusi: MODEL_VOTE_KONTRIBUTOR[];
+}) {
+ const router = useRouter();
+ return (
+ <>
+ {_.isEmpty(dataKontribusi) ? (
+
+ ) : (
+
+ {dataKontribusi.map((e, i) => (
+
+
+
+ ))}
+
+ )}
+ {/* {JSON.stringify(dataKontribusi, null, 2)} */}
+ >
+ );
+}
diff --git a/src/app_modules/vote/main/layout.tsx b/src/app_modules/vote/main/layout.tsx
new file mode 100644
index 00000000..bd8c9461
--- /dev/null
+++ b/src/app_modules/vote/main/layout.tsx
@@ -0,0 +1,107 @@
+"use client";
+
+import {
+ ActionIcon,
+ AppShell,
+ Center,
+ Footer,
+ Grid,
+ Stack,
+ Text,
+} from "@mantine/core";
+import React, { useState } from "react";
+import ComponentVote_HeaderTamplate from "../component/header_tamplate";
+import { useRouter } from "next/navigation";
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import {
+ IconClick,
+ IconHistory,
+ IconHome,
+ IconReservedLine,
+} from "@tabler/icons-react";
+import { gs_vote_hotMenu } from "../global_state";
+import { useAtom } from "jotai";
+import { RouterHome } from "@/app/lib/router_hipmi/router_home";
+
+export default function LayoutVote_Main({
+ children,
+}: {
+ children: React.ReactNode;
+}) {
+ const router = useRouter();
+ const [hotMenu, setHotMenu] = useAtom(gs_vote_hotMenu);
+
+ const listFooter = [
+ {
+ id: 1,
+ name: "Beranda",
+ path: RouterVote.beranda,
+ icon: ,
+ },
+
+ {
+ id: 2,
+ name: "Status",
+ path: RouterVote.status,
+ icon: ,
+ },
+ {
+ id: 3,
+ name: "Kontribusi",
+ path: RouterVote.kontribusi,
+ icon: ,
+ },
+ {
+ id: 4,
+ name: "Riwayat",
+ path: RouterVote.riwayat,
+ icon: ,
+ },
+ ];
+
+ return (
+ <>
+
+ }
+ footer={
+
+
+ {listFooter.map((e, i) => (
+ {
+ router.replace(e.path);
+ setHotMenu(i);
+ }}
+ >
+
+
+
+ {e.icon}
+
+
+ {e.name}
+
+
+
+
+ ))}
+
+
+ }
+ >
+ {children}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/main/riwayat/index.tsx b/src/app_modules/vote/main/riwayat/index.tsx
new file mode 100644
index 00000000..0efbb358
--- /dev/null
+++ b/src/app_modules/vote/main/riwayat/index.tsx
@@ -0,0 +1,66 @@
+"use client";
+
+import { Stack, Tabs } from "@mantine/core";
+import { useState } from "react";
+import Vote_SemuaRiwayat from "./semua";
+import Vote_RiwayatSaya from "./saya";
+import { useAtom } from "jotai";
+import { gs_vote_riwayat } from "../../global_state";
+import { MODEL_VOTING } from "../../model/interface";
+
+export default function Vote_Riwayat({
+ listRiwayat,
+ listRiwayatSaya,
+}: {
+ listRiwayat: MODEL_VOTING[];
+ listRiwayatSaya: MODEL_VOTING[]
+}) {
+ const [tabsRiwayat, setTabsRiwayat] = useAtom(gs_vote_riwayat);
+ const listTabs = [
+ {
+ id: 1,
+ path: ,
+ value: "Semua",
+ label: "Semua Riwayat",
+ },
+ {
+ id: 2,
+ path: ,
+ value: "Saya",
+ label: "Riwayat Saya",
+ },
+ ];
+
+ return (
+ <>
+
+
+
+ {listTabs.map((e, i) => (
+
+ {e.label}
+
+ ))}
+
+ {listTabs.map((e) => (
+
+ {e.path}
+
+ ))}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/main/riwayat/saya.tsx b/src/app_modules/vote/main/riwayat/saya.tsx
new file mode 100644
index 00000000..6f9e46d1
--- /dev/null
+++ b/src/app_modules/vote/main/riwayat/saya.tsx
@@ -0,0 +1,50 @@
+"use client";
+
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import {
+ Stack,
+ Card,
+ Grid,
+ Avatar,
+ Divider,
+ Title,
+ Badge,
+ Group,
+ Radio,
+ Center,
+ Text,
+ Box,
+} from "@mantine/core";
+import moment from "moment";
+import { useRouter } from "next/navigation";
+import ComponentVote_CardViewPublish from "../../component/card_view_publish";
+import { MODEL_VOTING } from "../../model/interface";
+import _ from "lodash";
+import ComponentVote_IsEmptyData from "../../component/is_empty_data";
+
+export default function Vote_RiwayatSaya({
+ listRiwayatSaya,
+}: {
+ listRiwayatSaya: MODEL_VOTING[];
+}) {
+ const router = useRouter();
+ return (
+ <>
+ {_.isEmpty(listRiwayatSaya) ? (
+
+ ) : (
+
+ {listRiwayatSaya.map((e, i) => (
+
+
+
+ ))}
+
+ )}
+ >
+ );
+}
diff --git a/src/app_modules/vote/main/riwayat/semua.tsx b/src/app_modules/vote/main/riwayat/semua.tsx
new file mode 100644
index 00000000..537980e2
--- /dev/null
+++ b/src/app_modules/vote/main/riwayat/semua.tsx
@@ -0,0 +1,50 @@
+"use client";
+
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import {
+ Stack,
+ Card,
+ Grid,
+ Avatar,
+ Divider,
+ Title,
+ Badge,
+ Group,
+ Radio,
+ Center,
+ Text,
+ Box,
+} from "@mantine/core";
+import moment from "moment";
+import { useRouter } from "next/navigation";
+import ComponentVote_CardViewPublish from "../../component/card_view_publish";
+import { MODEL_VOTING } from "../../model/interface";
+import _ from "lodash";
+import ComponentVote_IsEmptyData from "../../component/is_empty_data";
+
+export default function Vote_SemuaRiwayat({
+ listRiwayat,
+}: {
+ listRiwayat: MODEL_VOTING[];
+}) {
+ const router = useRouter();
+ return (
+ <>
+ {_.isEmpty(listRiwayat) ? (
+
+ ) : (
+
+ {listRiwayat.map((e, i) => (
+
+
+
+ ))}
+
+ )}
+ >
+ );
+}
diff --git a/src/app_modules/vote/main/status/draft.tsx b/src/app_modules/vote/main/status/draft.tsx
new file mode 100644
index 00000000..4fabf1ce
--- /dev/null
+++ b/src/app_modules/vote/main/status/draft.tsx
@@ -0,0 +1,32 @@
+"use client";
+
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import ComponentVote_CardViewStatus from "../../component/card_view_status";
+import { MODEL_VOTING } from "../../model/interface";
+import _ from "lodash";
+import { Box, Center, Stack, Text } from "@mantine/core";
+import ComponentVote_IsEmptyData from "../../component/is_empty_data";
+
+export default function Vote_StatusDraft({
+ listDraft,
+}: {
+ listDraft: MODEL_VOTING[];
+}) {
+ if (_.isEmpty(listDraft))
+ return ;
+
+ return (
+ <>
+
+ {listDraft.map((e) => (
+
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/main/status/index.tsx b/src/app_modules/vote/main/status/index.tsx
new file mode 100644
index 00000000..55a160a1
--- /dev/null
+++ b/src/app_modules/vote/main/status/index.tsx
@@ -0,0 +1,81 @@
+"use client";
+
+import { Stack, Tabs } from "@mantine/core";
+import { useAtom } from "jotai";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { gs_vote_status } from "../../global_state";
+import Vote_StatusPublish from "./publish";
+import Vote_StatusReview from "./review";
+import Vote_StatusDraft from "./draft";
+import Vote_StatusReject from "./reject";
+
+export default function Vote_Status({
+ listPublish,
+ listReview,
+ listDraft,
+ listReject,
+}: {
+ listPublish: any[];
+ listReview: any[];
+ listDraft: any[];
+ listReject: any[];
+}) {
+ const router = useRouter();
+ const [tabsStatus, setTabsStatus] = useAtom(gs_vote_status);
+ const listTabs = [
+ {
+ id: 1,
+ path: ,
+ value: "Publish",
+ },
+ {
+ id: 2,
+ path: ,
+ value: "Review",
+ },
+ {
+ id: 3,
+ path: ,
+ value: "Draft",
+ },
+ {
+ id: 4,
+ path: ,
+ value: "Reject",
+ },
+ ];
+
+ return (
+ <>
+
+
+
+ {listTabs.map((e) => (
+
+ {e.value}
+
+ ))}
+
+ {listTabs.map((e) => (
+
+ {e.path}
+
+ ))}
+
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/main/status/publish.tsx b/src/app_modules/vote/main/status/publish.tsx
new file mode 100644
index 00000000..65656d45
--- /dev/null
+++ b/src/app_modules/vote/main/status/publish.tsx
@@ -0,0 +1,54 @@
+"use client";
+
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import {
+ Avatar,
+ Badge,
+ Box,
+ Card,
+ Center,
+ Divider,
+ Grid,
+ Group,
+ Radio,
+ Skeleton,
+ Stack,
+ Text,
+ Title,
+} from "@mantine/core";
+import moment from "moment";
+import { useRouter } from "next/navigation";
+import { MODEL_VOTING } from "../../model/interface";
+import ComponentVote_IsEmptyData from "../../component/is_empty_data";
+import _ from "lodash";
+import ComponentVote_CardViewPublish from "../../component/card_view_publish";
+
+export default function Vote_StatusPublish({
+ listPublish,
+}: {
+ listPublish: MODEL_VOTING[];
+}) {
+ const router = useRouter();
+
+ if (_.isEmpty(listPublish))
+ return (
+ <>
+
+ >
+ );
+
+ return (
+ <>
+
+ {listPublish.map((e) => (
+
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/main/status/reject.tsx b/src/app_modules/vote/main/status/reject.tsx
new file mode 100644
index 00000000..b970a6f4
--- /dev/null
+++ b/src/app_modules/vote/main/status/reject.tsx
@@ -0,0 +1,32 @@
+"use client";
+
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import ComponentVote_CardViewStatus from "../../component/card_view_status";
+import { MODEL_VOTING } from "../../model/interface";
+import { Box, Stack } from "@mantine/core";
+import ComponentVote_IsEmptyData from "../../component/is_empty_data";
+import _ from "lodash";
+
+export default function Vote_StatusReject({
+ listReject,
+}: {
+ listReject: MODEL_VOTING[];
+}) {
+ if (_.isEmpty(listReject))
+ return ;
+
+ return (
+ <>
+
+ {listReject.map((e) => (
+
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/main/status/review.tsx b/src/app_modules/vote/main/status/review.tsx
new file mode 100644
index 00000000..9886247c
--- /dev/null
+++ b/src/app_modules/vote/main/status/review.tsx
@@ -0,0 +1,33 @@
+"use client";
+
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import ComponentVote_CardViewStatus from "../../component/card_view_status";
+import { MODEL_VOTING } from "../../model/interface";
+import { Box, Center, Stack, Text } from "@mantine/core";
+import _ from "lodash";
+import ComponentVote_IsEmptyData from "../../component/is_empty_data";
+
+export default function Vote_StatusReview({
+ listReview,
+}: {
+ listReview: MODEL_VOTING[];
+}) {
+ if (_.isEmpty(listReview))
+ return ;
+
+
+ return (
+ <>
+
+ {listReview.map((e) => (
+
+
+
+ ))}
+
+ >
+ );
+}
diff --git a/src/app_modules/vote/model/interface.ts b/src/app_modules/vote/model/interface.ts
new file mode 100644
index 00000000..3de4348a
--- /dev/null
+++ b/src/app_modules/vote/model/interface.ts
@@ -0,0 +1,38 @@
+import { MODEL_USER } from "@/app_modules/home/model/interface";
+
+export interface MODEL_VOTING {
+ id: string;
+ title: string;
+ deskripsi: string;
+ awalVote: Date;
+ akhirVote: Date;
+ isActive: boolean;
+ createdAt: Date;
+ updateAt: Date;
+ catatan: string;
+ authorId: string;
+ Author: MODEL_USER;
+ Voting_DaftarNamaVote: MODEL_VOTING_DAFTAR_NAMA_VOTE[];
+}
+
+export interface MODEL_VOTING_DAFTAR_NAMA_VOTE {
+ id: string;
+ value: string;
+ jumlah: number;
+ isActive: boolean;
+ createdAt: Date;
+ updatedAt: Date;
+ votingId: string;
+}
+
+export interface MODEL_VOTE_KONTRIBUTOR {
+ id: string;
+ isActive: boolean;
+ createdAt: Date;
+ updatedAt: Date;
+ Author: MODEL_USER;
+ votingId: string;
+ Voting: MODEL_VOTING;
+ Voting_DaftarNamaVote: MODEL_VOTING_DAFTAR_NAMA_VOTE;
+ voting_DaftarNamaVoteId: string;
+}
diff --git a/src/app_modules/vote/splash/index.tsx b/src/app_modules/vote/splash/index.tsx
new file mode 100644
index 00000000..68c5d28e
--- /dev/null
+++ b/src/app_modules/vote/splash/index.tsx
@@ -0,0 +1,37 @@
+"use client";
+
+import { RouterVote } from "@/app/lib/router_hipmi/router_vote";
+import { Center, Image, Paper, Stack, Text } from "@mantine/core";
+import { useShallowEffect } from "@mantine/hooks";
+import { useAtom } from "jotai";
+import { useRouter } from "next/navigation";
+import {
+ gs_vote_hotMenu,
+ gs_vote_riwayat,
+ gs_vote_status,
+} from "../global_state";
+
+export default function Vote_Splash() {
+ const router = useRouter();
+ const [hotMenu, setHotMenu] = useAtom(gs_vote_hotMenu);
+ const [tabsStatus, setTabsStatus] = useAtom(gs_vote_status);
+ const [tabsRiwayat, setTabsRiwayat] = useAtom(gs_vote_riwayat);
+ useShallowEffect(() => {
+ setTimeout(() => {
+ setHotMenu(0);
+ setTabsStatus("Publish");
+ setTabsRiwayat("Semua");
+ router.replace(RouterVote.beranda);
+ }, 2000);
+ }, []);
+
+ return (
+ <>
+
+
+
+
+
+ >
+ );
+}
diff --git a/src/app_modules_admin/READ_ADMIN.md b/src/app_modules_admin/READ_ADMIN.md
deleted file mode 100644
index c31073a5..00000000
--- a/src/app_modules_admin/READ_ADMIN.md
+++ /dev/null
@@ -1 +0,0 @@
-# Admin here
\ No newline at end of file
diff --git a/src/app_modules_admin/main/index.ts b/src/app_modules_admin/main/index.ts
deleted file mode 100644
index 23bb16c0..00000000
--- a/src/app_modules_admin/main/index.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import AdminMain_Dashboard from "./main";
-import AdminMain_Layout from "./layout";
-
-export { AdminMain_Dashboard, AdminMain_Layout };
diff --git a/src/app_modules_admin/main/layout.tsx b/src/app_modules_admin/main/layout.tsx
deleted file mode 100644
index 688aceb1..00000000
--- a/src/app_modules_admin/main/layout.tsx
+++ /dev/null
@@ -1,178 +0,0 @@
-"use client";
-
-import {
- AppShell,
- Navbar,
- MediaQuery,
- Aside,
- Footer,
- Header,
- Burger,
- Text,
- useMantineTheme,
- Box,
- NavLink,
- Divider,
- Group,
- Title,
- ActionIcon,
-} from "@mantine/core";
-import { IconLogout } from "@tabler/icons-react";
-import _ from "lodash";
-import { useRouter } from "next/navigation";
-import React, { useState } from "react";
-import toast from "react-simple-toasts";
-
-export default function AdminMain_Layout({
- children,
-}: {
- children: React.ReactNode;
-}) {
- const router = useRouter();
- const theme = useMantineTheme();
- const [opened, setOpened] = useState(false);
- const [active, setActive] = useState(0);
-
- const listAdminPage = [
- {
- id: 1,
- name: "Dashboard",
- // route: RouterAdminDashboard.main_admin,
- child: [
-
- ],
- },
- {
- id: 2,
- name: "Investasi",
- // route: RouterAdminInvestasi.main_investasi,
- child: [
- {
- id: 1,
- name: "Child Investasi",
- },
- ],
- },
- {
- id: 3,
- name: "Donasi",
- // route: RouterAdminDonasi.main_donasi,
- child: [
- {
- id: 1,
- name: "Child Don 1",
- },
- {
- id: 1,
- name: "Child DOn 2",
- },
- ],
- },
- {
- id: 4,
- name: "Event",
- // route: RouterAdminEvent.main_event,
- child: [
- {
- id: 1,
- name: "Child Event",
- },
- ],
- },
- ];
-
- return (
- <>
-
-
- {listAdminPage.map((e, i) => (
-
- {
- setActive(i);
- // router.push(e.route);
- toast(e.name);
- }}
- >
- {_.isEmpty(e.child) ? (
- ""
- ) : (
-
- {e.child.map((v, ii) => (
-
-
-
- ))}
-
- )}
-
-
- ))}
-
-
- }
- header={
-
- {/* Mobile View */}
-
-
- setOpened((o) => !o)}
- size="sm"
- color={theme.colors.gray[6]}
- mr="xl"
- />
- Dashboard Admin
- router.push(RouterHome.main_home)}
- >
- {/* */}
-
-
-
-
-
- {/* Web View */}
-
-
- Dashboard Admin
- HIPMI
- {/*
- {listAdminPage.map((e) => (
- router.push(e.route)}>
- {e.name}
-
- ))}
- */}
- {/* */}
-
-
-
-
- }
- >
- {children}
-
- >
- );
-}
diff --git a/src/app_modules_admin/main/main/index.tsx b/src/app_modules_admin/main/main/index.tsx
deleted file mode 100644
index 14a5fcdc..00000000
--- a/src/app_modules_admin/main/main/index.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-"use client"
-
-export default function AdminMain_Dashboard(){
- return <>
- ini main
-
- >
-}
\ No newline at end of file
diff --git a/src/bin/seeder/master_status.json b/src/bin/seeder/master_status.json
new file mode 100644
index 00000000..b42a57b4
--- /dev/null
+++ b/src/bin/seeder/master_status.json
@@ -0,0 +1,18 @@
+[
+ {
+ "id": "1",
+ "name": "Publish"
+ },
+ {
+ "id": "2",
+ "name": "Review"
+ },
+ {
+ "id": "3",
+ "name": "Draft"
+ },
+ {
+ "id": "4",
+ "name": "Reject"
+ }
+]
diff --git a/src/bin/seeder/voting/master_status.json b/src/bin/seeder/voting/master_status.json
new file mode 100644
index 00000000..b42a57b4
--- /dev/null
+++ b/src/bin/seeder/voting/master_status.json
@@ -0,0 +1,18 @@
+[
+ {
+ "id": "1",
+ "name": "Publish"
+ },
+ {
+ "id": "2",
+ "name": "Review"
+ },
+ {
+ "id": "3",
+ "name": "Draft"
+ },
+ {
+ "id": "4",
+ "name": "Reject"
+ }
+]
diff --git a/tsconfig.json b/tsconfig.json
index 474fa58c..fc526c95 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -23,6 +23,6 @@
"@/*": ["./src/*"]
}
},
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "src/app_modules/investasi/proses_transaksi/view.jsx", "src/app/api/investasi/midtrans/[id]/route.ts"],
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "src/app_modules/investasi/proses_transaksi/view.jsx", "src/app/api/investasi/midtrans/[id]/route.ts", "src/app_modules/job/create/TextEdit.tsx"],
"exclude": ["node_modules"]
}
diff --git a/yarn.lock b/yarn.lock
index b2657f61..a89549ba 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -47,16 +47,16 @@
js-tokens "^4.0.0"
"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.18.3", "@babel/runtime@^7.23.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":
- version "7.23.6"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.6.tgz#c05e610dc228855dc92ef1b53d07389ed8ab521d"
- integrity sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==
+ version "7.23.9"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7"
+ integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==
dependencies:
regenerator-runtime "^0.14.0"
"@babel/types@^7.22.15":
- version "7.23.6"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd"
- integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==
+ version "7.23.9"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002"
+ integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==
dependencies:
"@babel/helper-string-parser" "^7.23.4"
"@babel/helper-validator-identifier" "^7.22.20"
@@ -192,20 +192,20 @@
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.44.0.tgz#961a5903c74139390478bdc808bcde3fc45ab7af"
integrity sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==
-"@floating-ui/core@^1.4.2":
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.2.tgz#53a0f7a98c550e63134d504f26804f6b83dbc071"
- integrity sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==
+"@floating-ui/core@^1.0.0":
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1"
+ integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==
dependencies:
- "@floating-ui/utils" "^0.1.3"
+ "@floating-ui/utils" "^0.2.1"
"@floating-ui/dom@^1.2.1":
- version "1.5.3"
- resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa"
- integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.3.tgz#954e46c1dd3ad48e49db9ada7218b0985cee75ef"
+ integrity sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==
dependencies:
- "@floating-ui/core" "^1.4.2"
- "@floating-ui/utils" "^0.1.3"
+ "@floating-ui/core" "^1.0.0"
+ "@floating-ui/utils" "^0.2.0"
"@floating-ui/react-dom@^1.3.0":
version "1.3.0"
@@ -223,18 +223,18 @@
aria-hidden "^1.1.3"
tabbable "^6.0.1"
-"@floating-ui/utils@^0.1.3":
- version "0.1.6"
- resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9"
- integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==
+"@floating-ui/utils@^0.2.0", "@floating-ui/utils@^0.2.1":
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2"
+ integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==
"@humanwhocodes/config-array@^0.11.10":
- version "0.11.13"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297"
- integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==
+ version "0.11.14"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b"
+ integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==
dependencies:
- "@humanwhocodes/object-schema" "^2.0.1"
- debug "^4.1.1"
+ "@humanwhocodes/object-schema" "^2.0.2"
+ debug "^4.3.1"
minimatch "^3.0.5"
"@humanwhocodes/module-importer@^1.0.1":
@@ -242,10 +242,10 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
-"@humanwhocodes/object-schema@^2.0.1":
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044"
- integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==
+"@humanwhocodes/object-schema@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917"
+ integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==
"@isaacs/cliui@^8.0.2":
version "8.0.2"
@@ -269,9 +269,9 @@
"@jridgewell/trace-mapping" "^0.3.9"
"@jridgewell/resolve-uri@^3.1.0":
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
- integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
+ integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
"@jridgewell/set-array@^1.0.1":
version "1.1.2"
@@ -284,17 +284,17 @@
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
"@jridgewell/trace-mapping@^0.3.9":
- version "0.3.20"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f"
- integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==
+ version "0.3.22"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c"
+ integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==
dependencies:
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
"@mantine/carousel@^7.1.5":
- version "7.3.2"
- resolved "https://registry.yarnpkg.com/@mantine/carousel/-/carousel-7.3.2.tgz#81c6258b4cdbce113496a9b0d78f7d1f2bd5b76c"
- integrity sha512-wv6jfh8RU1Fz5iQREYFtHtK/iG1APHkdYmYxRTZdhCZxNPdb4PDQvZJBz+tjYWpKN2IKUu2NlAdmP0hIMI0bHw==
+ version "7.5.3"
+ resolved "https://registry.yarnpkg.com/@mantine/carousel/-/carousel-7.5.3.tgz#b1431c4470b86c1ebc8564ebe1dcc041e05521db"
+ integrity sha512-rGB4tpYc+n2gTC0ijHP2jeMO3z5s29lY/LqtSq2uh8JnIXguV23QUR61twI1TkuvFNhyS4jJspruaEx2ErtrLg==
"@mantine/core@^6.0.17":
version "6.0.21"
@@ -316,9 +316,9 @@
"@mantine/utils" "6.0.21"
"@mantine/dropzone@^7.1.3":
- version "7.3.2"
- resolved "https://registry.yarnpkg.com/@mantine/dropzone/-/dropzone-7.3.2.tgz#358d99089318e62bc520040a55708a31b0ab7259"
- integrity sha512-SqeBARkfS/x8UkxTc8qup7oWF1NDXP2WsbzllsLpjnlH7A/MpNgEUHs/y6oUF0Sxnc3g5Z0cvzHlZpFiWDGCmg==
+ version "7.5.3"
+ resolved "https://registry.yarnpkg.com/@mantine/dropzone/-/dropzone-7.5.3.tgz#8e6e0d3c379b09a6e59a2ac2fd5fed1a3c4bf393"
+ integrity sha512-NbMnLN9B07WHkdrpxNTC0k0vzR6prONF+/awFPidphsXGAgRSZhiZXv06l9Wp9wVp6xPhVMTqGphh0i4Ey+AYg==
dependencies:
react-dropzone-esm "15.0.1"
@@ -359,6 +359,11 @@
clsx "1.1.1"
csstype "3.0.9"
+"@mantine/tiptap@^7.5.3":
+ version "7.5.3"
+ resolved "https://registry.yarnpkg.com/@mantine/tiptap/-/tiptap-7.5.3.tgz#a43f0f3c06783361020535b12f215722171ffbd9"
+ integrity sha512-mCwW3Pe4fMGEc7NQBgfT/FO3IqHaSOCPj4bGfkw7U1uDp5u8SxR6pji0WlmpmYGN+NeEHH02vr6TazRnsqfdOg==
+
"@mantine/utils@6.0.21":
version "6.0.21"
resolved "https://registry.yarnpkg.com/@mantine/utils/-/utils-6.0.21.tgz#6185506e91cba3e308aaa8ea9ababc8e767995d6"
@@ -442,7 +447,7 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@peculiar/asn1-schema@^2.3.6":
+"@peculiar/asn1-schema@^2.3.8":
version "2.3.8"
resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz#04b38832a814e25731232dd5be883460a156da3b"
integrity sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==
@@ -459,25 +464,30 @@
tslib "^2.0.0"
"@peculiar/webcrypto@^1.4.0":
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.4.3.tgz#078b3e8f598e847b78683dc3ba65feb5029b93a7"
- integrity sha512-VtaY4spKTdN5LjJ04im/d/joXuvLbQdgy5Z4DXF4MFZhQ+MTrejbNMkfZBp1Bs3O5+bFqnJgyGdPuZQflvIa5A==
+ version "1.4.5"
+ resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.4.5.tgz#424bed6b0d133b772f5cbffd143d0468a90f40a0"
+ integrity sha512-oDk93QCDGdxFRM8382Zdminzs44dg3M2+E5Np+JWkpqLDyJC9DviMh8F8mEJkYuUcUOGA5jHO5AJJ10MFWdbZw==
dependencies:
- "@peculiar/asn1-schema" "^2.3.6"
+ "@peculiar/asn1-schema" "^2.3.8"
"@peculiar/json-schema" "^1.1.12"
- pvtsutils "^1.3.2"
- tslib "^2.5.0"
- webcrypto-core "^1.7.7"
+ pvtsutils "^1.3.5"
+ tslib "^2.6.2"
+ webcrypto-core "^1.7.8"
"@pkgjs/parseargs@^0.11.0":
version "0.11.0"
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
+"@popperjs/core@^2.9.0":
+ version "2.11.8"
+ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
+ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
+
"@prisma/client@^5.0.0":
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.7.1.tgz#a124afd05663267f7255a639a81d28303684a063"
- integrity sha512-TUSa4nUcC4nf/e7X3jyO1pEd6XcI/TLRCA0KjkA46RDIpxUaRsBYEOqITwXRW2c0bMFyKcCRXrH4f7h4q9oOlg==
+ version "5.10.1"
+ resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.10.1.tgz#8768a4f9de1249bfff959dc33a9e4c0eb7708325"
+ integrity sha512-4R8Vp6sSwVJSnOxw8WU1WSLqE/G3WJy1xA05XvW87cINoB1hEY7endw5Ppy6TrIBCCtHQim2lqfHkbPvv+i7bQ==
"@radix-ui/number@1.0.0":
version "1.0.0"
@@ -569,10 +579,41 @@
dependencies:
"@babel/runtime" "^7.13.10"
+"@remirror/core-constants@^2.0.2":
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/@remirror/core-constants/-/core-constants-2.0.2.tgz#f05eccdc69e3a65e7d524b52548f567904a11a1a"
+ integrity sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==
+
+"@remirror/core-helpers@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@remirror/core-helpers/-/core-helpers-3.0.0.tgz#3a35c2346bc23ebc3cee585b7840b5567755c5f1"
+ integrity sha512-tusEgQJIqg4qKj6HSBUFcyRnWnziw3neh4T9wOmsPGHFC3w9kl5KSrDb9UAgE8uX6y32FnS7vJ955mWOl3n50A==
+ dependencies:
+ "@remirror/core-constants" "^2.0.2"
+ "@remirror/types" "^1.0.1"
+ "@types/object.omit" "^3.0.0"
+ "@types/object.pick" "^1.3.2"
+ "@types/throttle-debounce" "^2.1.0"
+ case-anything "^2.1.13"
+ dash-get "^1.0.2"
+ deepmerge "^4.3.1"
+ fast-deep-equal "^3.1.3"
+ make-error "^1.3.6"
+ object.omit "^3.0.0"
+ object.pick "^1.3.0"
+ throttle-debounce "^3.0.1"
+
+"@remirror/types@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@remirror/types/-/types-1.0.1.tgz#768502497a0fbbc23338a1586b893f729310cf70"
+ integrity sha512-VlZQxwGnt1jtQ18D6JqdIF+uFZo525WEqrfp9BOc3COPpK4+AWCgdnAWL+ho6imWcoINlGjR/+3b6y5C1vBVEA==
+ dependencies:
+ type-fest "^2.19.0"
+
"@rushstack/eslint-patch@^1.1.3":
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.6.1.tgz#9ab8f811930d7af3e3d549183a50884f9eb83f36"
- integrity sha512-UY+FGM/2jjMkzQLn8pxcHGMaVLh9aEitG3zY2CiY7XHdLiz3bZOwa6oDxNqEMv7zZkV+cj5DOdz0cQ1BP5Hjgw==
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz#2d4260033e199b3032a08b41348ac10de21c47e9"
+ integrity sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==
"@socket.io/component-emitter@~3.1.0":
version "3.1.0"
@@ -587,17 +628,215 @@
tslib "^2.4.0"
"@tabler/icons-react@^2.38.0":
- version "2.44.0"
- resolved "https://registry.yarnpkg.com/@tabler/icons-react/-/icons-react-2.44.0.tgz#8119d3b6321ebaf98400fba7932e280d008125f8"
- integrity sha512-10qwrqJ/QBNgY4YYer9PjWmCwm3wv9aVK8kGAkFKkwu6UJURVLZ2ea+oFh5j6vSXnA1zMtUG+X8anR5fZ67Isw==
+ version "2.47.0"
+ resolved "https://registry.yarnpkg.com/@tabler/icons-react/-/icons-react-2.47.0.tgz#b704e7ae98f95be8bd6e938b4b2e84cd20b0cf31"
+ integrity sha512-iqly2FvCF/qUbgmvS8E40rVeYY7laltc5GUjRxQj59DuX0x/6CpKHTXt86YlI2whg4czvd/c8Ce8YR08uEku0g==
dependencies:
- "@tabler/icons" "2.44.0"
+ "@tabler/icons" "2.47.0"
prop-types "^15.7.2"
-"@tabler/icons@2.44.0":
- version "2.44.0"
- resolved "https://registry.yarnpkg.com/@tabler/icons/-/icons-2.44.0.tgz#9f3cf86150b23e84a6eaf9d29ab2b2aaa8c7eed6"
- integrity sha512-WPPtihDcAwEm1QZM9MXQw6+r/R2/qx7KMU1eegsi9DsqBLAb0W2kbt6e/syvd6j9c+6XNpRVBW1ziGqSWQAWOg==
+"@tabler/icons@2.47.0":
+ version "2.47.0"
+ resolved "https://registry.yarnpkg.com/@tabler/icons/-/icons-2.47.0.tgz#c41c680d1947e3ab2d60af3febc4132287c60596"
+ integrity sha512-4w5evLh+7FUUiA1GucvGj2ReX2TvOjEr4ejXdwL/bsjoSkof6r1gQmzqI+VHrE2CpJpB3al7bCTulOkFa/RcyA==
+
+"@tiptap/core@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.2.3.tgz#54375c27bcca81901e5316e056147ce0cbc89ba6"
+ integrity sha512-0l3p1/cuaQk8XFf+Ft/ExbUjReGes5Iep7y4nuL/Fzi2S92DZzozY6cosXBHC/Xsqzn6zIkl/gnQTgmTvlmhCQ==
+
+"@tiptap/extension-blockquote@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.2.3.tgz#0951a321f56c70b3f276e11bd17fa1ff109042e7"
+ integrity sha512-gN23d/ADhTOB0YIM4lR0VrVczdyaXpmIVYYWZ45tQEVJzFWRSIScE9m9NaVqtqwEMpYHyTHxLth0OQutZ91sog==
+
+"@tiptap/extension-bold@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.2.3.tgz#e4cd91de4e8dbdabd915bbc10c86eda321e91d17"
+ integrity sha512-bHeFkRY5+Nf2DKupstV8EIVn359tw/9MFwDEDoF9F+Sn/vjuS35vm0OqjXYg/Ya9CQvwl/2oym/fKv5kO+Q6og==
+
+"@tiptap/extension-bubble-menu@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.2.3.tgz#e3b603324726aa2f96b2500855622ace625117df"
+ integrity sha512-6ybColxLznGilzOY/yk3KcpV4JQy+QDDW6Za6zWV6OEs9D8I8VUeMAS77isMMc1dffvHfmgZpVZm/lsva8UuCw==
+ dependencies:
+ tippy.js "^6.3.7"
+
+"@tiptap/extension-bullet-list@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.2.3.tgz#98b82afd9a6c553278d4b613b29dbed99da063f9"
+ integrity sha512-BpYg1pIfLE+2LTC90ts53deEWGSmAojhM/jJ84U19qfbfXt/7/KHrZJ4SAMxJSW3pLpy0bIq2XuOuvppOYVR5g==
+
+"@tiptap/extension-code-block@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.2.3.tgz#caeaad4f4ccf92963e73ddf1b90265edd94c7af3"
+ integrity sha512-1xFM2Aj/JEWAT1PWjQ/7hEVmo1Av6JHxTANxMIjXUcmrMJkXDA+BQ7yItlwrrHxY0SJdxBbR/WWFn4dWIxd7iA==
+
+"@tiptap/extension-code@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.2.3.tgz#183847b126496f9d4d473a72b7e1d2ab2a90da68"
+ integrity sha512-ZMp3CrbAV+PVOnPbGmruvlxFENLc+J/Fos8Y4mWvS1nDbrGuu19OKgKimwdzfDBpZVFVnHpEUnDTMBDzDe0hkg==
+
+"@tiptap/extension-document@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.2.3.tgz#40e4faac7369d0fea31ea4eb57716ed7393f24b7"
+ integrity sha512-60Egd9yKb5SzpQlstQAP2A/2a/Qr+A+TblMRKZugrT+NENUhAj6Tx1HxWlblqGu2MsS1iXvQLZ6BQO1jHkL2IQ==
+
+"@tiptap/extension-dropcursor@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.2.3.tgz#f58f37b41cc6b41ae047c9b3ce25db58b1c06bb7"
+ integrity sha512-SFvxgVX8/l3H+fV1q6dwmVEwlHuGbaKp1pkQb16/cDiWke/AWOBFTGOIVDfulLI5IiRIL7u3uc+Fy7BXrGDqQw==
+
+"@tiptap/extension-floating-menu@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.2.3.tgz#3e200f51760fd1d48cb572223dcaf54c70f244a6"
+ integrity sha512-ZeQGmIFNImhu/zzn//Xzupwa82j2vIwiMoviX2zd+2DutoFnm4qRIAU6qpjzV+ZOSHAq3aBMGnYwEAY6vl4f3g==
+ dependencies:
+ tippy.js "^6.3.7"
+
+"@tiptap/extension-gapcursor@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.2.3.tgz#d6e064bea103433d6a365a06f9f78acc33b27971"
+ integrity sha512-zPVpxembkuOQL/eJ5oAjvZ9Tyv480OpViKrNtOsQh+0nZctmWKnfDntMoWBZiSeW1vsGjkeFIckdeEAQ1KbIxA==
+
+"@tiptap/extension-hard-break@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.2.3.tgz#7d7b8e7bcf99be5f518a705c65ebcc1dacaaa514"
+ integrity sha512-P7sP4WBEaQyiiFAswy9lKvaUWUAUwnfTSN3svTAgx0fpU3/ZeVWg+SDi5ve474Ym2oz2eRAr09mNTdWEUsL32Q==
+
+"@tiptap/extension-heading@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.2.3.tgz#4934e3a887d8843f85706a809fd6293b2b42b2b5"
+ integrity sha512-7atctuvtwPqIAdnBPOhAMsJZd41UPnWN3CktzgzfsfEoplq/86QR1hGIE4JXVB2wAZDmbnKP9Fe8PCNr7Q8JCQ==
+
+"@tiptap/extension-highlight@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-highlight/-/extension-highlight-2.2.3.tgz#b9cf810547d2abc8b3b7567b9002397b6add3477"
+ integrity sha512-3K9WbrR2WCYq7a/2JSQi5K2zzG/5ebNfTOXyDcT3kn5B5PutyWuDCzqjkPxGXmkf8yEZTQ9Sn2lQPRMG3sNwFw==
+
+"@tiptap/extension-history@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.2.3.tgz#5df2f5bb7f082e13db72583c1236e7c2f41b901f"
+ integrity sha512-S1TUfLtrasyv4zFNlBL302uYaR4wxqR/T36a4d71c0ozr0PsdVc6/f9lfH4aYw4PmS3fzDwJj0PAJ9bb+qDbPw==
+
+"@tiptap/extension-horizontal-rule@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.2.3.tgz#ff76b7627b6fea3ba5397fbfccd818f0f2e6efbd"
+ integrity sha512-pc0J0hBcvj9ymJkFau1W/3L+OhB1PQzMjsx4ZWJvxURL8U7zdDqvYvJjfCA0i5Qw2ZuSVXFACGbEVr6NoCMRAw==
+
+"@tiptap/extension-italic@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.2.3.tgz#d01e075bf0db5ac01113a19ab80cc39af39033fc"
+ integrity sha512-SSsFuRnm4Y4Qnc6EuvmA4iarLCt/sg8qkqCKiNPjDUP5JR8HGESeoYVjQzprLHY8jusT9qoC26TP1Sin5vZmWQ==
+
+"@tiptap/extension-link@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.2.3.tgz#5c6571dffebbe328277b0abfae0deccfb20c2559"
+ integrity sha512-AKKgkllpj0Po/hi2bVz719OMqyB1nBhKU/Q05yeWVirOYwF2ZwfM4iK2Iab7xWUVhvlyIG3lrWFQL8A30yuqwQ==
+ dependencies:
+ linkifyjs "^4.1.0"
+
+"@tiptap/extension-list-item@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.2.3.tgz#dfdc268cc2063947dc46749464d6d91afc0842a4"
+ integrity sha512-eyfk4f1jOioj+mkIN2m6XQK61MpV0fi17utt8VNx893Td8kS0g7HHuuYMwyjIRtG35ENUaAt7c216JQwnLsrAw==
+
+"@tiptap/extension-ordered-list@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.2.3.tgz#07588d9091076e0577f5e4873e2e65c27d69a7be"
+ integrity sha512-YIWpjkHAJN74tY185ZqatlG4+KbXQOdkJpc5cKWqO89gVWLi7+4xwdeeXbTEG64/LOOWS4Q6r1/EJmDy2FCbyA==
+
+"@tiptap/extension-paragraph@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.2.3.tgz#39e705198eba640a57f58276044950d3d77067ff"
+ integrity sha512-4dP+Ecb2iEWW33ckFKjXRnSfEygaFUN19qzc7mUYD8e61ZA8caWL6//uL7DFIz4Q1rchyefbU52gCwTh2P42kQ==
+
+"@tiptap/extension-strike@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.2.3.tgz#9caaca60d4f717863b03a8ade71af22a1579096c"
+ integrity sha512-3wwFk01ociZajRzD08hp4j/4isFUeD6BIkKPDnZeGD5HKPdTOaDciE3dJ3JaZZrRZPPdPV3yMt5hkBOapqEKzQ==
+
+"@tiptap/extension-subscript@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-subscript/-/extension-subscript-2.2.3.tgz#91c994222ea8120e0a19bd870cf47c8cfdc82353"
+ integrity sha512-zWN8MOfYSaGXNI5yKTk4I4hHSpCUz//NQASHD8OOKN+rt6i8RUTNynpJyCZC77RXdlvTY70Ox2vNgp/rriz+Qw==
+
+"@tiptap/extension-superscript@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-superscript/-/extension-superscript-2.2.3.tgz#51cb2bde41656688ea6088e02d89d43195f6c1c6"
+ integrity sha512-4V4PoXPuxCiiISFxz1StP/5azQqUmlwCECJg8ketrQ6WFfUf54lzCEjMeo9RwwdBbfpL6dhwJ8mmv6qil4j1KA==
+
+"@tiptap/extension-text-align@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-text-align/-/extension-text-align-2.2.3.tgz#98c8f46b254ce2cfcc72b23c8f9084ee4b1e8c18"
+ integrity sha512-Di/nNTlWsd9LW2NYUg80MkwDnDy9E8H2o2m8Vi/FgvCvDikDr/VD2+AD37SfJMxAjiPFqhJJMyci3vY2Yenv0g==
+
+"@tiptap/extension-text@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.2.3.tgz#3adc14b6f5956f2fb6102702beb0adbfe1f86131"
+ integrity sha512-BrWGCkmuzVcsNy7dSCfJyVwedPzeNz6BR/OUNzM8Mqt2KSxfoIRy7cg16HvFB4YW+ijrM9XUqDIFvqYI0TY+Jg==
+
+"@tiptap/extension-underline@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/extension-underline/-/extension-underline-2.2.3.tgz#ce77652d6d8d0a4337460be98910e5ff239ea41b"
+ integrity sha512-Y6PTaXmDFay39+Knk77T+Ezc5vuC/gFxZFD6cQhjctZHMJ2QMAguMKWtBVaSs78HBkKnwTU9EViAFBurz++Geg==
+
+"@tiptap/pm@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.2.3.tgz#88c8547015098ebd438211e839de64b043b655f3"
+ integrity sha512-jYZX+0fjN+a1J8qY72Poz1LK6X6oHVQkJIq6qzcx3rm0voYZNVRzP2GIfzstncZiEqRXABHY3mWfOi2I4K9tQA==
+ dependencies:
+ prosemirror-changeset "^2.2.1"
+ prosemirror-collab "^1.3.1"
+ prosemirror-commands "^1.5.2"
+ prosemirror-dropcursor "^1.8.1"
+ prosemirror-gapcursor "^1.3.2"
+ prosemirror-history "^1.3.2"
+ prosemirror-inputrules "^1.3.0"
+ prosemirror-keymap "^1.2.2"
+ prosemirror-markdown "^1.12.0"
+ prosemirror-menu "^1.2.4"
+ prosemirror-model "^1.19.4"
+ prosemirror-schema-basic "^1.2.2"
+ prosemirror-schema-list "^1.3.0"
+ prosemirror-state "^1.4.3"
+ prosemirror-tables "^1.3.5"
+ prosemirror-trailing-node "^2.0.7"
+ prosemirror-transform "^1.8.0"
+ prosemirror-view "^1.32.7"
+
+"@tiptap/react@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/react/-/react-2.2.3.tgz#a9688e892f83b58b9d6f51e4a99f52d2ac7548b7"
+ integrity sha512-OTQgc5DHX3KRqf4MvSR5uJqXvxKnMGDPlbYC7psREIie1eK6J456e91q+MLwAtRshnP7nHryGCpZZOXn5nq7vQ==
+ dependencies:
+ "@tiptap/extension-bubble-menu" "^2.2.3"
+ "@tiptap/extension-floating-menu" "^2.2.3"
+
+"@tiptap/starter-kit@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.2.3.tgz#d7583bf518147f0561981372a6410b083fd47a6d"
+ integrity sha512-Jx+QXz0SE1y+j498TqYEJcjbIV9YSMwcuIJQ04q8KqHuSmZrq9B22Qa4d0fpcM7uL7dLI4AcRrcqaOuIahCJYQ==
+ dependencies:
+ "@tiptap/core" "^2.2.3"
+ "@tiptap/extension-blockquote" "^2.2.3"
+ "@tiptap/extension-bold" "^2.2.3"
+ "@tiptap/extension-bullet-list" "^2.2.3"
+ "@tiptap/extension-code" "^2.2.3"
+ "@tiptap/extension-code-block" "^2.2.3"
+ "@tiptap/extension-document" "^2.2.3"
+ "@tiptap/extension-dropcursor" "^2.2.3"
+ "@tiptap/extension-gapcursor" "^2.2.3"
+ "@tiptap/extension-hard-break" "^2.2.3"
+ "@tiptap/extension-heading" "^2.2.3"
+ "@tiptap/extension-history" "^2.2.3"
+ "@tiptap/extension-horizontal-rule" "^2.2.3"
+ "@tiptap/extension-italic" "^2.2.3"
+ "@tiptap/extension-list-item" "^2.2.3"
+ "@tiptap/extension-ordered-list" "^2.2.3"
+ "@tiptap/extension-paragraph" "^2.2.3"
+ "@tiptap/extension-strike" "^2.2.3"
+ "@tiptap/extension-text" "^2.2.3"
"@types/accepts@*":
version "1.3.7"
@@ -632,9 +871,9 @@
integrity sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==
"@types/cookies@*":
- version "0.7.10"
- resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.10.tgz#c4881dca4dd913420c488508d192496c46eb4fd0"
- integrity sha512-hmUCjAk2fwZVPPkkPBcI7jGLIR5mg4OVoNMBwU6aVsMm/iNPY7z9/R+x2fSwLt/ZXoGua6C5Zy2k5xOo9jUyhQ==
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.9.0.tgz#a2290cfb325f75f0f28720939bee854d4142aee2"
+ integrity sha512-40Zk8qR147RABiQ7NQnBzWzDcjKzNrntB5BAmeGCb2p/MIyOE+4BVvc17wumsUqUw00bJYqoXFHYygQnEFh4/Q==
dependencies:
"@types/connect" "*"
"@types/express" "*"
@@ -642,9 +881,9 @@
"@types/node" "*"
"@types/express-serve-static-core@^4.17.33":
- version "4.17.41"
- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz#5077defa630c2e8d28aa9ffc2c01c157c305bef6"
- integrity sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==
+ version "4.17.43"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz#10d8444be560cb789c4735aea5eac6e5af45df54"
+ integrity sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==
dependencies:
"@types/node" "*"
"@types/qs" "*"
@@ -689,9 +928,9 @@
"@types/koa" "*"
"@types/koa@*", "@types/koa@^2.13.5":
- version "2.13.12"
- resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.13.12.tgz#70d87a9061a81909e0ee11ca50168416e8d3e795"
- integrity sha512-vAo1KuDSYWFDB4Cs80CHvfmzSQWeUb909aQib0C0aFx4sw0K9UZFz2m5jaEP+b3X1+yr904iQiruS0hXi31jbw==
+ version "2.14.0"
+ resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.14.0.tgz#8939e8c3b695defc12f2ef9f38064509e564be18"
+ integrity sha512-DTDUyznHGNHAl+wd1n0z1jxNajduyTh8R53xoewuerdBzGo6Ogj6F2299BFtrexJw4NtgjsI5SMPCmV9gZwGXA==
dependencies:
"@types/accepts" "*"
"@types/content-disposition" "*"
@@ -718,9 +957,9 @@
integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==
"@types/node@*":
- version "20.10.5"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.5.tgz#47ad460b514096b7ed63a1dae26fad0914ed3ab2"
- integrity sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==
+ version "20.11.19"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.19.tgz#b466de054e9cb5b3831bee38938de64ac7f81195"
+ integrity sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==
dependencies:
undici-types "~5.26.4"
@@ -734,6 +973,16 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190"
integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==
+"@types/object.omit@^3.0.0":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/@types/object.omit/-/object.omit-3.0.3.tgz#cc52b1d9774c1619b5c6fc50229d087f01eabd68"
+ integrity sha512-xrq4bQTBGYY2cw+gV4PzoG2Lv3L0pjZ1uXStRRDQoATOYW1lCsFQHhQ+OkPhIcQoqLjAq7gYif7D14Qaa6Zbew==
+
+"@types/object.pick@^1.3.2":
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/@types/object.pick/-/object.pick-1.3.4.tgz#1a38b6e69a35f36ec2dcc8b9f5ffd555c1c4d7fc"
+ integrity sha512-5PjwB0uP2XDp3nt5u5NJAG2DORHIRClPzWT/TTZhJ2Ekwe8M5bA9tvPdi9NO/n2uvu2/ictat8kgqvLfcIE1SA==
+
"@types/parse-json@^4.0.0":
version "4.0.2"
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239"
@@ -749,6 +998,13 @@
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.11.tgz#208d8a30bc507bd82e03ada29e4732ea46a6bbda"
integrity sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==
+"@types/quill@^1.3.10":
+ version "1.3.10"
+ resolved "https://registry.yarnpkg.com/@types/quill/-/quill-1.3.10.tgz#dc1f7b6587f7ee94bdf5291bc92289f6f0497613"
+ integrity sha512-IhW3fPW+bkt9MLNlycw8u8fWb7oO7W5URC9MfZYHBlA24rex9rs23D5DETChu1zvgVdc5ka64ICjJOgQMr6Shw==
+ dependencies:
+ parchment "^1.1.2"
+
"@types/range-parser@*":
version "1.2.7"
resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb"
@@ -762,9 +1018,9 @@
"@types/react" "*"
"@types/react@*":
- version "18.2.45"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.45.tgz#253f4fac288e7e751ab3dc542000fb687422c15c"
- integrity sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==
+ version "18.2.57"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.57.tgz#147b516d8bdb2900219acbfc6f939bdeecca7691"
+ integrity sha512-ZvQsktJgSYrQiMirAN60y4O/LRevIV8hUzSOSNB6gfR3/o3wCBFQx3sPwIYtuDMeiVgsSS3UzCV26tEzgnfvQw==
dependencies:
"@types/prop-types" "*"
"@types/scheduler" "*"
@@ -801,10 +1057,15 @@
"@types/mime" "*"
"@types/node" "*"
+"@types/throttle-debounce@^2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz#1c3df624bfc4b62f992d3012b84c56d41eab3776"
+ integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==
+
"@types/uuid@^9.0.4":
- version "9.0.7"
- resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.7.tgz#b14cebc75455eeeb160d5fe23c2fcc0c64f724d8"
- integrity sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==
+ version "9.0.8"
+ resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba"
+ integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==
"@typescript-eslint/parser@^5.42.0":
version "5.62.0"
@@ -856,9 +1117,9 @@ acorn-jsx@^5.3.2:
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^8.9.0:
- version "8.11.2"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b"
- integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
+ version "8.11.3"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
+ integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
ajv@^6.10.0, ajv@^6.12.4:
version "6.12.6"
@@ -936,13 +1197,13 @@ aria-query@^5.3.0:
dependencies:
dequal "^2.0.3"
-array-buffer-byte-length@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead"
- integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==
+array-buffer-byte-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f"
+ integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==
dependencies:
- call-bind "^1.0.2"
- is-array-buffer "^3.0.1"
+ call-bind "^1.0.5"
+ is-array-buffer "^3.0.4"
array-includes@^3.1.6, array-includes@^3.1.7:
version "3.1.7"
@@ -960,16 +1221,27 @@ array-union@^2.1.0:
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-array.prototype.findlastindex@^1.2.3:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207"
- integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==
+array.prototype.filter@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz#423771edeb417ff5914111fff4277ea0624c0d0e"
+ integrity sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==
dependencies:
call-bind "^1.0.2"
define-properties "^1.2.0"
es-abstract "^1.22.1"
- es-shim-unscopables "^1.0.0"
- get-intrinsic "^1.2.1"
+ es-array-method-boxes-properly "^1.0.0"
+ is-string "^1.0.7"
+
+array.prototype.findlastindex@^1.2.3:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz#d1c50f0b3a9da191981ff8942a0aedd82794404f"
+ integrity sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==
+ dependencies:
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ es-abstract "^1.22.3"
+ es-errors "^1.3.0"
+ es-shim-unscopables "^1.0.2"
array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2:
version "1.3.2"
@@ -992,27 +1264,28 @@ array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2:
es-shim-unscopables "^1.0.0"
array.prototype.tosorted@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd"
- integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8"
+ integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.2.0"
- es-abstract "^1.22.1"
- es-shim-unscopables "^1.0.0"
- get-intrinsic "^1.2.1"
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ es-abstract "^1.22.3"
+ es-errors "^1.1.0"
+ es-shim-unscopables "^1.0.2"
-arraybuffer.prototype.slice@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12"
- integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==
+arraybuffer.prototype.slice@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6"
+ integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==
dependencies:
- array-buffer-byte-length "^1.0.0"
- call-bind "^1.0.2"
- define-properties "^1.2.0"
- es-abstract "^1.22.1"
- get-intrinsic "^1.2.1"
- is-array-buffer "^3.0.2"
+ array-buffer-byte-length "^1.0.1"
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ es-abstract "^1.22.3"
+ es-errors "^1.2.1"
+ get-intrinsic "^1.2.3"
+ is-array-buffer "^3.0.4"
is-shared-array-buffer "^1.0.2"
asn1js@^3.0.1, asn1js@^3.0.5:
@@ -1048,10 +1321,12 @@ autoprefixer@10.4.14:
picocolors "^1.0.0"
postcss-value-parser "^4.2.0"
-available-typed-arrays@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
- integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
+available-typed-arrays@^1.0.6, available-typed-arrays@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
+ integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
+ dependencies:
+ possible-typed-array-names "^1.0.0"
axe-core@=4.7.0:
version "4.7.0"
@@ -1119,12 +1394,12 @@ braces@^3.0.2, braces@~3.0.2:
fill-range "^7.0.1"
browserslist@^4.21.5:
- version "4.22.2"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b"
- integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==
+ version "4.23.0"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab"
+ integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==
dependencies:
- caniuse-lite "^1.0.30001565"
- electron-to-chromium "^1.4.601"
+ caniuse-lite "^1.0.30001587"
+ electron-to-chromium "^1.4.668"
node-releases "^2.0.14"
update-browserslist-db "^1.0.13"
@@ -1148,14 +1423,16 @@ busboy@1.6.0:
dependencies:
streamsearch "^1.1.0"
-call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513"
- integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==
+call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
+ integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
function-bind "^1.1.2"
- get-intrinsic "^1.2.1"
- set-function-length "^1.1.1"
+ get-intrinsic "^1.2.4"
+ set-function-length "^1.2.1"
callsites@^3.0.0:
version "3.1.0"
@@ -1167,10 +1444,15 @@ camelcase-css@^2.0.1:
resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
-caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001565:
- version "1.0.30001572"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001572.tgz#1ccf7dc92d2ee2f92ed3a54e11b7b4a3041acfa0"
- integrity sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==
+caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001587:
+ version "1.0.30001588"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz#07f16b65a7f95dba82377096923947fb25bce6e3"
+ integrity sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==
+
+case-anything@^2.1.13:
+ version "2.1.13"
+ resolved "https://registry.yarnpkg.com/case-anything/-/case-anything-2.1.13.tgz#0cdc16278cb29a7fcdeb072400da3f342ba329e9"
+ integrity sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==
chalk@^2.4.2:
version "2.4.2"
@@ -1190,9 +1472,9 @@ chalk@^4.0.0:
supports-color "^7.1.0"
chokidar@^3.5.3:
- version "3.5.3"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
- integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
+ integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
@@ -1205,15 +1487,20 @@ chokidar@^3.5.3:
fsevents "~2.3.2"
classnames@^2.2.5:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.0.tgz#9304d63d8d7135989e33e1ffb0bcc65178f92c2a"
- integrity sha512-FQuRlyKinxrb5gwJlfVASbSrDlikDJ07426TrfPsdGLvtochowmkbnSFdQGJ2aoXrSetq5KqGV9emvWpy+91xA==
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b"
+ integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==
client-only@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1"
integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
+clone@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
+ integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==
+
clsx@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
@@ -1284,6 +1571,11 @@ cosmiconfig@^7.0.0:
path-type "^4.0.0"
yaml "^1.10.0"
+crelt@^1.0.0:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72"
+ integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==
+
cross-spawn@^7.0.0, cross-spawn@^7.0.2:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
@@ -1313,6 +1605,11 @@ damerau-levenshtein@^1.0.8:
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
+dash-get@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/dash-get/-/dash-get-1.0.2.tgz#4c9e9ad5ef04c4bf9d3c9a451f6f7997298dcc7c"
+ integrity sha512-4FbVrHDwfOASx7uQVxeiCTo7ggSdYZbqs8lH+WU6ViypPlDbe9y6IP5VVUDQBv9DcnyaiPT5XT0UWHgJ64zLeQ==
+
dayjs@^1.11.10:
version "1.11.10"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0"
@@ -1325,26 +1622,43 @@ debug@^3.2.7:
dependencies:
ms "^2.1.1"
-debug@^4.1.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2:
+debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
+deep-equal@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.2.tgz#78a561b7830eef3134c7f6f3a3d6af272a678761"
+ integrity sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==
+ dependencies:
+ is-arguments "^1.1.1"
+ is-date-object "^1.0.5"
+ is-regex "^1.1.4"
+ object-is "^1.1.5"
+ object-keys "^1.1.1"
+ regexp.prototype.flags "^1.5.1"
+
deep-is@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
-define-data-property@^1.0.1, define-data-property@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3"
- integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==
+deepmerge@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
+ integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
+
+define-data-property@^1.0.1, define-data-property@^1.1.2, define-data-property@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
+ integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
dependencies:
- get-intrinsic "^1.2.1"
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
gopd "^1.0.1"
- has-property-descriptors "^1.0.0"
define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1:
version "1.2.1"
@@ -1455,35 +1769,35 @@ echarts-for-react@^3.0.2:
size-sensor "^1.0.1"
echarts@^5.4.3:
- version "5.4.3"
- resolved "https://registry.yarnpkg.com/echarts/-/echarts-5.4.3.tgz#f5522ef24419164903eedcfd2b506c6fc91fb20c"
- integrity sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/echarts/-/echarts-5.5.0.tgz#c13945a7f3acdd67c134d8a9ac67e917830113ac"
+ integrity sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==
dependencies:
tslib "2.3.0"
- zrender "5.4.4"
+ zrender "5.5.0"
-electron-to-chromium@^1.4.601:
- version "1.4.616"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz#4bddbc2c76e1e9dbf449ecd5da3d8119826ea4fb"
- integrity sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==
+electron-to-chromium@^1.4.668:
+ version "1.4.677"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.677.tgz#49ee77713516740bdde32ac2d1443c444f0dafe7"
+ integrity sha512-erDa3CaDzwJOpyvfKhOiJjBVNnMM0qxHq47RheVVwsSQrgBA9ZSGV9kdaOfZDPXcHzhG7lBxhj6A7KvfLJBd6Q==
embla-carousel-react@^8.0.0-rc14:
- version "8.0.0-rc17"
- resolved "https://registry.yarnpkg.com/embla-carousel-react/-/embla-carousel-react-8.0.0-rc17.tgz#277d4212eb95b6a29898b65660efe60d2075aa3a"
- integrity sha512-x4aFprwFB+PQO9EsHHZsrDxARb0uYNBYn9mr5oDFdBdPez4M8G1r5yidWbUcT9pNUc8AQXC9sGzlfauBfBxVOw==
+ version "8.0.0-rc23"
+ resolved "https://registry.yarnpkg.com/embla-carousel-react/-/embla-carousel-react-8.0.0-rc23.tgz#bd1760f6c0b333fd68d50bf5d9617b8b72dd0dd4"
+ integrity sha512-EmtIx4oYkBAUi9R31Tg1lh2HCw0Q01bOftXRDhIlNfB+gsDRS76AgeYU+mQc9qW6yeI5C/W5BqtPZU+ymR0E2Q==
dependencies:
- embla-carousel "8.0.0-rc17"
- embla-carousel-reactive-utils "8.0.0-rc17"
+ embla-carousel "8.0.0-rc23"
+ embla-carousel-reactive-utils "8.0.0-rc23"
-embla-carousel-reactive-utils@8.0.0-rc17:
- version "8.0.0-rc17"
- resolved "https://registry.yarnpkg.com/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.0.0-rc17.tgz#a94934fdce7faa7464581d6c9f10d9e8ed63ca42"
- integrity sha512-eluEOK/u5HdjYaTLC4bUG3iTCnyX7RsYix3il0aH4ZECOKa5fS+pVK2vrM17Mgw6C5Hyjcr3r3lfJtGerVzVsQ==
+embla-carousel-reactive-utils@8.0.0-rc23:
+ version "8.0.0-rc23"
+ resolved "https://registry.yarnpkg.com/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.0.0-rc23.tgz#9d64577a9bde68e4c4cd4bb76bf4daec7110ea9a"
+ integrity sha512-/NPejNksrw1iWthTtrps5LNj6gJzylvfCuNTh2+P0FLSPbX/+RlT84Ab5qnbSS/vdmEs8daJbVvb5Bol9v0OdQ==
-embla-carousel@8.0.0-rc17:
- version "8.0.0-rc17"
- resolved "https://registry.yarnpkg.com/embla-carousel/-/embla-carousel-8.0.0-rc17.tgz#146dc802d8742b88834ac7ea34416b0f0e983e93"
- integrity sha512-evF49b88VOitvqFtlvhvKVSu96Y8A+QSFdhok87Bfm8R7OYuk95FT+o8+M1GQLi/EhGDUlT193HTVAR0Wt2neQ==
+embla-carousel@8.0.0-rc23:
+ version "8.0.0-rc23"
+ resolved "https://registry.yarnpkg.com/embla-carousel/-/embla-carousel-8.0.0-rc23.tgz#07052fd046d4cfa5cc9809a8003d3e210dd05103"
+ integrity sha512-ybuDHm+udElyH+XpuemS/W+x8ZhB3a/4UzeTBvsoZUxDSty12ch1f2T0CZxGqIs2FfdaofEOmpLMSvuEPVTMCg==
emoji-regex@^8.0.0:
version "8.0.0"
@@ -1507,9 +1821,9 @@ engine.io-client@~6.5.2:
xmlhttprequest-ssl "~2.0.0"
engine.io-parser@~5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.1.tgz#9f213c77512ff1a6cc0c7a86108a7ffceb16fcfb"
- integrity sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.2.tgz#37b48e2d23116919a3453738c5720455e64e1c49"
+ integrity sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==
enhanced-resolve@^5.12.0:
version "5.15.0"
@@ -1529,6 +1843,11 @@ entities@^3.0.1:
resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
+entities@^4.4.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
+ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
+
error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
@@ -1536,81 +1855,101 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.22.1:
- version "1.22.3"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32"
- integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==
+es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.22.4:
+ version "1.22.4"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.4.tgz#26eb2e7538c3271141f5754d31aabfdb215f27bf"
+ integrity sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==
dependencies:
- array-buffer-byte-length "^1.0.0"
- arraybuffer.prototype.slice "^1.0.2"
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.5"
- es-set-tostringtag "^2.0.1"
+ array-buffer-byte-length "^1.0.1"
+ arraybuffer.prototype.slice "^1.0.3"
+ available-typed-arrays "^1.0.6"
+ call-bind "^1.0.7"
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ es-set-tostringtag "^2.0.2"
es-to-primitive "^1.2.1"
function.prototype.name "^1.1.6"
- get-intrinsic "^1.2.2"
- get-symbol-description "^1.0.0"
+ get-intrinsic "^1.2.4"
+ get-symbol-description "^1.0.2"
globalthis "^1.0.3"
gopd "^1.0.1"
- has-property-descriptors "^1.0.0"
+ has-property-descriptors "^1.0.2"
has-proto "^1.0.1"
has-symbols "^1.0.3"
- hasown "^2.0.0"
- internal-slot "^1.0.5"
- is-array-buffer "^3.0.2"
+ hasown "^2.0.1"
+ internal-slot "^1.0.7"
+ is-array-buffer "^3.0.4"
is-callable "^1.2.7"
is-negative-zero "^2.0.2"
is-regex "^1.1.4"
is-shared-array-buffer "^1.0.2"
is-string "^1.0.7"
- is-typed-array "^1.1.12"
+ is-typed-array "^1.1.13"
is-weakref "^1.0.2"
object-inspect "^1.13.1"
object-keys "^1.1.1"
- object.assign "^4.1.4"
- regexp.prototype.flags "^1.5.1"
- safe-array-concat "^1.0.1"
- safe-regex-test "^1.0.0"
+ object.assign "^4.1.5"
+ regexp.prototype.flags "^1.5.2"
+ safe-array-concat "^1.1.0"
+ safe-regex-test "^1.0.3"
string.prototype.trim "^1.2.8"
string.prototype.trimend "^1.0.7"
string.prototype.trimstart "^1.0.7"
- typed-array-buffer "^1.0.0"
+ typed-array-buffer "^1.0.1"
typed-array-byte-length "^1.0.0"
typed-array-byte-offset "^1.0.0"
typed-array-length "^1.0.4"
unbox-primitive "^1.0.2"
- which-typed-array "^1.1.13"
+ which-typed-array "^1.1.14"
+
+es-array-method-boxes-properly@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e"
+ integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==
+
+es-define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
+ integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
+ dependencies:
+ get-intrinsic "^1.2.4"
+
+es-errors@^1.0.0, es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
+ integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
es-iterator-helpers@^1.0.12, es-iterator-helpers@^1.0.15:
- version "1.0.15"
- resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40"
- integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==
+ version "1.0.17"
+ resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.17.tgz#123d1315780df15b34eb181022da43e734388bb8"
+ integrity sha512-lh7BsUqelv4KUbR5a/ZTaGGIMLCjPGPqJ6q+Oq24YP0RdyptX1uzm4vvaqzk7Zx3bpl/76YLTTDj9L7uYQ92oQ==
dependencies:
asynciterator.prototype "^1.0.0"
- call-bind "^1.0.2"
+ call-bind "^1.0.7"
define-properties "^1.2.1"
- es-abstract "^1.22.1"
- es-set-tostringtag "^2.0.1"
- function-bind "^1.1.1"
- get-intrinsic "^1.2.1"
+ es-abstract "^1.22.4"
+ es-errors "^1.3.0"
+ es-set-tostringtag "^2.0.2"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
globalthis "^1.0.3"
- has-property-descriptors "^1.0.0"
+ has-property-descriptors "^1.0.2"
has-proto "^1.0.1"
has-symbols "^1.0.3"
- internal-slot "^1.0.5"
+ internal-slot "^1.0.7"
iterator.prototype "^1.1.2"
- safe-array-concat "^1.0.1"
+ safe-array-concat "^1.1.0"
-es-set-tostringtag@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9"
- integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==
+es-set-tostringtag@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777"
+ integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==
dependencies:
- get-intrinsic "^1.2.2"
- has-tostringtag "^1.0.0"
- hasown "^2.0.0"
+ get-intrinsic "^1.2.4"
+ has-tostringtag "^1.0.2"
+ hasown "^2.0.1"
-es-shim-unscopables@^1.0.0:
+es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763"
integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==
@@ -1627,9 +1966,9 @@ es-to-primitive@^1.2.1:
is-symbol "^1.0.2"
escalade@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
- integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
+ integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
escape-string-regexp@^1.0.5:
version "1.0.5"
@@ -1846,11 +2185,26 @@ esutils@^2.0.2:
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+eventemitter3@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba"
+ integrity sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==
+
+extend@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+fast-diff@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154"
+ integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==
+
fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.1:
version "3.3.2"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
@@ -1873,9 +2227,9 @@ fast-levenshtein@^2.0.6:
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
fastq@^1.6.0:
- version "1.16.0"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.16.0.tgz#83b9a9375692db77a822df081edb6a9cf6839320"
- integrity sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==
+ version "1.17.1"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
+ integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
dependencies:
reusify "^1.0.4"
@@ -1916,14 +2270,14 @@ flat-cache@^3.0.4:
rimraf "^3.0.2"
flatted@^3.2.9:
- version "3.2.9"
- resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf"
- integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.0.tgz#5fdca2b5e671cd38d1537427a10e02a2caa8257e"
+ integrity sha512-noqGuLw158+DuD9UPRKHpJ2hGxpFyDlYYrfM0mWt4XhT4n0lwzTLh70Tkdyy4kyTmyTT9Bv7bWAJqw7cgkEXDg==
follow-redirects@^1.14.8:
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a"
- integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==
+ version "1.15.5"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020"
+ integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==
for-each@^0.3.3:
version "0.3.3"
@@ -1955,7 +2309,7 @@ fsevents@~2.3.2:
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-function-bind@^1.1.1, function-bind@^1.1.2:
+function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
@@ -1975,11 +2329,12 @@ functions-have-names@^1.2.3:
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
-get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b"
- integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==
+get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
+ integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
dependencies:
+ es-errors "^1.3.0"
function-bind "^1.1.2"
has-proto "^1.0.1"
has-symbols "^1.0.3"
@@ -1990,13 +2345,14 @@ get-nonce@^1.0.0:
resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3"
integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==
-get-symbol-description@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6"
- integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==
+get-symbol-description@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5"
+ integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==
dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.1.1"
+ call-bind "^1.0.5"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
get-tsconfig@^4.5.0:
version "4.7.2"
@@ -2117,34 +2473,34 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-has-property-descriptors@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340"
- integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==
+has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1, has-property-descriptors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
+ integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
dependencies:
- get-intrinsic "^1.2.2"
+ es-define-property "^1.0.0"
-has-proto@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
- integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
+has-proto@^1.0.1, has-proto@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
+ integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
has-symbols@^1.0.2, has-symbols@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
-has-tostringtag@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
- integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
+has-tostringtag@^1.0.0, has-tostringtag@^1.0.1, has-tostringtag@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
+ integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
dependencies:
- has-symbols "^1.0.2"
+ has-symbols "^1.0.3"
-hasown@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
- integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
+hasown@^2.0.0, hasown@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa"
+ integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==
dependencies:
function-bind "^1.1.2"
@@ -2200,9 +2556,9 @@ ieee754@^1.2.1:
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
ignore@^5.2.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78"
- integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
+ integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
import-fresh@^3.2.1:
version "3.3.0"
@@ -2235,12 +2591,12 @@ inline-style-parser@0.1.1:
resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1"
integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
-internal-slot@^1.0.5:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930"
- integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==
+internal-slot@^1.0.5, internal-slot@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802"
+ integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==
dependencies:
- get-intrinsic "^1.2.2"
+ es-errors "^1.3.0"
hasown "^2.0.0"
side-channel "^1.0.4"
@@ -2271,14 +2627,21 @@ iron-webcrypto@^0.2.5:
dependencies:
buffer "^6"
-is-array-buffer@^3.0.1, is-array-buffer@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe"
- integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==
+is-arguments@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
dependencies:
call-bind "^1.0.2"
- get-intrinsic "^1.2.0"
- is-typed-array "^1.1.10"
+ has-tostringtag "^1.0.0"
+
+is-array-buffer@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98"
+ integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.2.1"
is-arrayish@^0.2.1:
version "0.2.1"
@@ -2333,6 +2696,13 @@ is-date-object@^1.0.1, is-date-object@^1.0.5:
dependencies:
has-tostringtag "^1.0.0"
+is-extendable@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@ -2370,9 +2740,9 @@ is-map@^2.0.1:
integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==
is-negative-zero@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
- integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747"
+ integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==
is-number-object@^1.0.4:
version "1.0.7"
@@ -2391,6 +2761,13 @@ is-path-inside@^3.0.3:
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
is-regex@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
@@ -2405,11 +2782,11 @@ is-set@^2.0.1:
integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==
is-shared-array-buffer@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79"
- integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688"
+ integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==
dependencies:
- call-bind "^1.0.2"
+ call-bind "^1.0.7"
is-string@^1.0.5, is-string@^1.0.7:
version "1.0.7"
@@ -2425,12 +2802,12 @@ is-symbol@^1.0.2, is-symbol@^1.0.3:
dependencies:
has-symbols "^1.0.2"
-is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9:
- version "1.1.12"
- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a"
- integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==
+is-typed-array@^1.1.13:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229"
+ integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==
dependencies:
- which-typed-array "^1.1.11"
+ which-typed-array "^1.1.14"
is-weakmap@^2.0.1:
version "2.0.1"
@@ -2472,6 +2849,11 @@ isexe@^2.0.0:
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
+
iterator.prototype@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0"
@@ -2498,9 +2880,9 @@ jiti@^1.18.2:
integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==
jotai@^2.4.3:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.6.0.tgz#68b5d634f78a9ea55adfb8d92206ef59304b5dd5"
- integrity sha512-Vt6hsc04Km4j03l+Ax+Sc+FVft5cRJhqgxt6GTz6GM2eM3DyX3CdBdzcG0z2FrlZToL1/0OAkqDghIyARWnSuQ==
+ version "2.6.4"
+ resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.6.4.tgz#a68a76f0e5cd2b614afae7112cfc52a77dbfe038"
+ integrity sha512-RniwQPX4893YlNR1muOtyUGHYaTD1fhEN4qnOuZJSrDHj6xdEMrqlRSN/hCm2fshwk78ruecB/P2l+NCVWe6TQ==
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
@@ -2584,15 +2966,27 @@ lilconfig@^2.1.0:
integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
lilconfig@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc"
- integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3"
+ integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==
lines-and-columns@^1.1.6:
version "1.2.4"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+linkify-it@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421"
+ integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==
+ dependencies:
+ uc.micro "^2.0.0"
+
+linkifyjs@^4.1.0:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/linkifyjs/-/linkifyjs-4.1.3.tgz#0edbc346428a7390a23ea2e5939f76112c9ae07f"
+ integrity sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg==
+
locate-path@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
@@ -2605,7 +2999,7 @@ lodash.merge@^4.6.2:
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
-lodash@^4.17.21:
+lodash@^4.17.21, lodash@^4.17.4:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -2625,9 +3019,31 @@ lru-cache@^6.0.0:
yallist "^4.0.0"
"lru-cache@^9.1.1 || ^10.0.0":
- version "10.1.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484"
- integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==
+ version "10.2.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3"
+ integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==
+
+make-error@^1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
+ integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
+
+markdown-it@^14.0.0:
+ version "14.0.0"
+ resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.0.0.tgz#b4b2ddeb0f925e88d981f84c183b59bac9e3741b"
+ integrity sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==
+ dependencies:
+ argparse "^2.0.1"
+ entities "^4.4.0"
+ linkify-it "^5.0.0"
+ mdurl "^2.0.0"
+ punycode.js "^2.3.1"
+ uc.micro "^2.0.0"
+
+mdurl@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0"
+ integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==
merge2@^1.3.0, merge2@^1.4.1:
version "1.4.1"
@@ -2764,11 +3180,19 @@ object-hash@^3.0.0:
resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
-object-inspect@^1.13.1, object-inspect@^1.9.0:
+object-inspect@^1.13.1:
version "1.13.1"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
+object-is@^1.1.5:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
+ integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.1.3"
+
object-keys@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
@@ -2779,7 +3203,7 @@ object-keys@~0.4.0:
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==
-object.assign@^4.1.4:
+object.assign@^4.1.4, object.assign@^4.1.5:
version "4.1.5"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0"
integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==
@@ -2808,14 +3232,15 @@ object.fromentries@^2.0.6, object.fromentries@^2.0.7:
es-abstract "^1.22.1"
object.groupby@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee"
- integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.2.tgz#494800ff5bab78fd0eff2835ec859066e00192ec"
+ integrity sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.2.0"
- es-abstract "^1.22.1"
- get-intrinsic "^1.2.1"
+ array.prototype.filter "^1.0.3"
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ es-abstract "^1.22.3"
+ es-errors "^1.0.0"
object.hasown@^1.1.2:
version "1.1.3"
@@ -2825,6 +3250,20 @@ object.hasown@^1.1.2:
define-properties "^1.2.0"
es-abstract "^1.22.1"
+object.omit@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-3.0.0.tgz#0e3edc2fce2ba54df5577ff529f6d97bd8a522af"
+ integrity sha512-EO+BCv6LJfu+gBIF3ggLicFebFLN5zqzz/WWJlMFfkMyGth+oBkhxzDl0wx2W4GkLzuQs/FsSkXZb2IMWQqmBQ==
+ dependencies:
+ is-extendable "^1.0.0"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==
+ dependencies:
+ isobject "^3.0.1"
+
object.values@^1.1.6, object.values@^1.1.7:
version "1.1.7"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a"
@@ -2853,6 +3292,11 @@ optionator@^0.9.3:
prelude-ls "^1.2.1"
type-check "^0.4.0"
+orderedmap@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-2.1.1.tgz#61481269c44031c449915497bf5a4ad273c512d2"
+ integrity sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==
+
p-limit@^3.0.2:
version "3.1.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
@@ -2867,6 +3311,11 @@ p-locate@^5.0.0:
dependencies:
p-limit "^3.0.2"
+parchment@^1.1.2, parchment@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/parchment/-/parchment-1.1.4.tgz#aeded7ab938fe921d4c34bc339ce1168bc2ffde5"
+ integrity sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==
+
parent-module@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
@@ -2937,6 +3386,11 @@ pirates@^4.0.1:
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
+possible-typed-array-names@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f"
+ integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
+
postcss-import@^15.1.0:
version "15.1.0"
resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70"
@@ -2969,9 +3423,9 @@ postcss-nested@^6.0.1:
postcss-selector-parser "^6.0.11"
postcss-selector-parser@^6.0.11:
- version "6.0.14"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.14.tgz#9d45f1afbebedae6811a17f49d09754f2ad153b3"
- integrity sha512-65xXYsT40i9GyWzlHQ5ShZoK7JZdySeOozi/tz2EezDo6c04q6+ckYMeoY7idaie1qp2dT5KoYQ2yky6JuoHnA==
+ version "6.0.15"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz#11cc2b21eebc0b99ea374ffb9887174855a01535"
+ integrity sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
@@ -3000,9 +3454,9 @@ postcss@8.4.31:
source-map-js "^1.0.2"
postcss@^8.4.23:
- version "8.4.32"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.32.tgz#1dac6ac51ab19adb21b8b34fd2d93a86440ef6c9"
- integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==
+ version "8.4.35"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7"
+ integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==
dependencies:
nanoid "^3.3.7"
picocolors "^1.0.0"
@@ -3027,6 +3481,165 @@ prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1:
object-assign "^4.1.1"
react-is "^16.13.1"
+prosemirror-changeset@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz#dae94b63aec618fac7bb9061648e6e2a79988383"
+ integrity sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==
+ dependencies:
+ prosemirror-transform "^1.0.0"
+
+prosemirror-collab@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz#0e8c91e76e009b53457eb3b3051fb68dad029a33"
+ integrity sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==
+ dependencies:
+ prosemirror-state "^1.0.0"
+
+prosemirror-commands@^1.0.0, prosemirror-commands@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz#e94aeea52286f658cd984270de9b4c3fff580852"
+ integrity sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==
+ dependencies:
+ prosemirror-model "^1.0.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.0.0"
+
+prosemirror-dropcursor@^1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz#49b9fb2f583e0d0f4021ff87db825faa2be2832d"
+ integrity sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==
+ dependencies:
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.1.0"
+ prosemirror-view "^1.1.0"
+
+prosemirror-gapcursor@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz#5fa336b83789c6199a7341c9493587e249215cb4"
+ integrity sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==
+ dependencies:
+ prosemirror-keymap "^1.0.0"
+ prosemirror-model "^1.0.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-view "^1.0.0"
+
+prosemirror-history@^1.0.0, prosemirror-history@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-1.3.2.tgz#ce6ad7ab9db83e761aee716f3040d74738311b15"
+ integrity sha512-/zm0XoU/N/+u7i5zepjmZAEnpvjDtzoPWW6VmKptcAnPadN/SStsBjMImdCEbb3seiNTpveziPTIrXQbHLtU1g==
+ dependencies:
+ prosemirror-state "^1.2.2"
+ prosemirror-transform "^1.0.0"
+ prosemirror-view "^1.31.0"
+ rope-sequence "^1.3.0"
+
+prosemirror-inputrules@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz#ef1519bb2cb0d1e0cec74bad1a97f1c1555068bb"
+ integrity sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==
+ dependencies:
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.0.0"
+
+prosemirror-keymap@^1.0.0, prosemirror-keymap@^1.1.2, prosemirror-keymap@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz#14a54763a29c7b2704f561088ccf3384d14eb77e"
+ integrity sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==
+ dependencies:
+ prosemirror-state "^1.0.0"
+ w3c-keyname "^2.2.0"
+
+prosemirror-markdown@^1.12.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-1.12.0.tgz#d2de09d37897abf7adb6293d925ff132dac5b0a6"
+ integrity sha512-6F5HS8Z0HDYiS2VQDZzfZP6A0s/I0gbkJy8NCzzDMtcsz3qrfqyroMMeoSjAmOhDITyon11NbXSzztfKi+frSQ==
+ dependencies:
+ markdown-it "^14.0.0"
+ prosemirror-model "^1.0.0"
+
+prosemirror-menu@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz#3cfdc7c06d10f9fbd1bce29082c498bd11a0a79a"
+ integrity sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==
+ dependencies:
+ crelt "^1.0.0"
+ prosemirror-commands "^1.0.0"
+ prosemirror-history "^1.0.0"
+ prosemirror-state "^1.0.0"
+
+prosemirror-model@^1.0.0, prosemirror-model@^1.16.0, prosemirror-model@^1.19.0, prosemirror-model@^1.19.4, prosemirror-model@^1.8.1:
+ version "1.19.4"
+ resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.19.4.tgz#e45e84480c97dd3922095dbe579e1c98c86c0704"
+ integrity sha512-RPmVXxUfOhyFdayHawjuZCxiROsm9L4FCUA6pWI+l7n2yCBsWy9VpdE1hpDHUS8Vad661YLY9AzqfjLhAKQ4iQ==
+ dependencies:
+ orderedmap "^2.0.0"
+
+prosemirror-schema-basic@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.2.tgz#6695f5175e4628aab179bf62e5568628b9cfe6c7"
+ integrity sha512-/dT4JFEGyO7QnNTe9UaKUhjDXbTNkiWTq/N4VpKaF79bBjSExVV2NXmJpcM7z/gD7mbqNjxbmWW5nf1iNSSGnw==
+ dependencies:
+ prosemirror-model "^1.19.0"
+
+prosemirror-schema-list@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-1.3.0.tgz#05374702cf35a3ba5e7ec31079e355a488d52519"
+ integrity sha512-Hz/7gM4skaaYfRPNgr421CU4GSwotmEwBVvJh5ltGiffUJwm7C8GfN/Bc6DR1EKEp5pDKhODmdXXyi9uIsZl5A==
+ dependencies:
+ prosemirror-model "^1.0.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.7.3"
+
+prosemirror-state@^1.0.0, prosemirror-state@^1.2.2, prosemirror-state@^1.3.1, prosemirror-state@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-1.4.3.tgz#94aecf3ffd54ec37e87aa7179d13508da181a080"
+ integrity sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==
+ dependencies:
+ prosemirror-model "^1.0.0"
+ prosemirror-transform "^1.0.0"
+ prosemirror-view "^1.27.0"
+
+prosemirror-tables@^1.3.5:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/prosemirror-tables/-/prosemirror-tables-1.3.5.tgz#80f03394f5b9991f9693bcb3a90b6dba6b16254d"
+ integrity sha512-JSZ2cCNlApu/ObAhdPyotrjBe2cimniniTpz60YXzbL0kZ+47nEYk2LWbfKU2lKpBkUNquta2PjteoNi4YCluQ==
+ dependencies:
+ prosemirror-keymap "^1.1.2"
+ prosemirror-model "^1.8.1"
+ prosemirror-state "^1.3.1"
+ prosemirror-transform "^1.2.1"
+ prosemirror-view "^1.13.3"
+
+prosemirror-trailing-node@^2.0.7:
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/prosemirror-trailing-node/-/prosemirror-trailing-node-2.0.7.tgz#ba782a7929f18bcae650b1c7082a2d10443eab19"
+ integrity sha512-8zcZORYj/8WEwsGo6yVCRXFMOfBo0Ub3hCUvmoWIZYfMP26WqENU0mpEP27w7mt8buZWuGrydBewr0tOArPb1Q==
+ dependencies:
+ "@remirror/core-constants" "^2.0.2"
+ "@remirror/core-helpers" "^3.0.0"
+ escape-string-regexp "^4.0.0"
+
+prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transform@^1.2.1, prosemirror-transform@^1.7.3, prosemirror-transform@^1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz#a47c64a3c373c1bd0ff46e95be3210c8dda0cd11"
+ integrity sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==
+ dependencies:
+ prosemirror-model "^1.0.0"
+
+prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.27.0, prosemirror-view@^1.31.0, prosemirror-view@^1.32.7:
+ version "1.33.1"
+ resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.33.1.tgz#58dfd154f4fb1c9f7353bf1097c54d6afc6f57ea"
+ integrity sha512-62qkYgSJIkwIMMCpuGuPzc52DiK1Iod6TWoIMxP4ja6BTD4yO8kCUL64PZ/WhH/dJ9fW0CDO39FhH1EMyhUFEg==
+ dependencies:
+ prosemirror-model "^1.16.0"
+ prosemirror-state "^1.0.0"
+ prosemirror-transform "^1.1.0"
+
+punycode.js@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7"
+ integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==
+
punycode@^2.1.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
@@ -3049,6 +3662,27 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+quill-delta@^3.6.2:
+ version "3.6.3"
+ resolved "https://registry.yarnpkg.com/quill-delta/-/quill-delta-3.6.3.tgz#b19fd2b89412301c60e1ff213d8d860eac0f1032"
+ integrity sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==
+ dependencies:
+ deep-equal "^1.0.1"
+ extend "^3.0.2"
+ fast-diff "1.1.2"
+
+quill@^1.3.7:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/quill/-/quill-1.3.7.tgz#da5b2f3a2c470e932340cdbf3668c9f21f9286e8"
+ integrity sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==
+ dependencies:
+ clone "^2.1.1"
+ deep-equal "^1.0.1"
+ eventemitter3 "^2.0.3"
+ extend "^3.0.2"
+ parchment "^1.1.4"
+ quill-delta "^3.6.2"
+
react-countdown@^2.3.5:
version "2.3.5"
resolved "https://registry.yarnpkg.com/react-countdown/-/react-countdown-2.3.5.tgz#70c035b5cbc7e8fdb4ad91fe5f44afd7a7933a68"
@@ -3078,6 +3712,11 @@ react-easy-swipe@^0.0.21:
dependencies:
prop-types "^15.5.8"
+react-fast-marquee@^1.6.4:
+ version "1.6.4"
+ resolved "https://registry.yarnpkg.com/react-fast-marquee/-/react-fast-marquee-1.6.4.tgz#ac0bed0faee63e4d97e9b8cd03f3bea9f242fab3"
+ integrity sha512-LAgvhRmHdqaUQ8R5jCUwzEGFUIjnCCt3T3W8X7j7wF6DWe0SATlpP0JX1V0pp2qX3DYUezmn1Iz5AtRFdL2EWQ==
+
react-is@^16.13.1, react-is@^16.7.0:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
@@ -3088,10 +3727,19 @@ react-property@2.0.0:
resolved "https://registry.yarnpkg.com/react-property/-/react-property-2.0.0.tgz#2156ba9d85fa4741faf1918b38efc1eae3c6a136"
integrity sha512-kzmNjIgU32mO4mmH5+iUyrqlpFQhF8K2k7eZ4fdLSOPFrD1XgEuSBv9LDEgxRXTMBqMd8ppT0x6TIzqE5pdGdw==
+react-quill@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/react-quill/-/react-quill-2.0.0.tgz#67a0100f58f96a246af240c9fa6841b363b3e017"
+ integrity sha512-4qQtv1FtCfLgoD3PXAur5RyxuUbPXQGOHgTlFie3jtxp43mXDtzCKaOgQ3mLyZfi1PUlyjycfivKelFhy13QUg==
+ dependencies:
+ "@types/quill" "^1.3.10"
+ lodash "^4.17.4"
+ quill "^1.3.7"
+
react-remove-scroll-bar@^2.3.4:
- version "2.3.4"
- resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9"
- integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.5.tgz#cd2543b3ed7716c7c5b446342d21b0e0b303f47c"
+ integrity sha512-3cqjOqg6s0XbOjWvmasmqHch+RLxIEk2r/70rzGXuz3iIGQsQheEQyqYCBb5EECoD01Vo2SIbDqW4paLeLTASw==
dependencies:
react-style-singleton "^2.2.1"
tslib "^2.0.0"
@@ -3201,14 +3849,15 @@ readdirp@~3.6.0:
picomatch "^2.2.1"
reflect.getprototypeof@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3"
- integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz#e0bd28b597518f16edaf9c0e292c631eb13e0674"
+ integrity sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.2.0"
- es-abstract "^1.22.1"
- get-intrinsic "^1.2.1"
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ es-abstract "^1.22.3"
+ es-errors "^1.0.0"
+ get-intrinsic "^1.2.3"
globalthis "^1.0.3"
which-builtin-type "^1.1.3"
@@ -3217,14 +3866,15 @@ regenerator-runtime@^0.14.0:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
-regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e"
- integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==
+regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334"
+ integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
dependencies:
- call-bind "^1.0.2"
- define-properties "^1.2.0"
- set-function-name "^2.0.0"
+ call-bind "^1.0.6"
+ define-properties "^1.2.1"
+ es-errors "^1.3.0"
+ set-function-name "^2.0.1"
resolve-from@^4.0.0:
version "4.0.0"
@@ -3266,6 +3916,11 @@ rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
+rope-sequence@^1.3.0:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/rope-sequence/-/rope-sequence-1.3.4.tgz#df85711aaecd32f1e756f76e43a415171235d425"
+ integrity sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==
+
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
@@ -3273,13 +3928,13 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
-safe-array-concat@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c"
- integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==
+safe-array-concat@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692"
+ integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==
dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.2.1"
+ call-bind "^1.0.5"
+ get-intrinsic "^1.2.2"
has-symbols "^1.0.3"
isarray "^2.0.5"
@@ -3288,13 +3943,13 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-safe-regex-test@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295"
- integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==
+safe-regex-test@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377"
+ integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==
dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.1.3"
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
is-regex "^1.1.4"
scheduler@^0.23.0:
@@ -3310,30 +3965,33 @@ semver@^6.3.1:
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.3.7:
- version "7.5.4"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
- integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
+ version "7.6.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
+ integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
dependencies:
lru-cache "^6.0.0"
-set-function-length@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed"
- integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==
+set-function-length@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425"
+ integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==
dependencies:
- define-data-property "^1.1.1"
- get-intrinsic "^1.2.1"
+ define-data-property "^1.1.2"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.3"
gopd "^1.0.1"
- has-property-descriptors "^1.0.0"
+ has-property-descriptors "^1.0.1"
set-function-name@^2.0.0, set-function-name@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a"
- integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985"
+ integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
dependencies:
- define-data-property "^1.0.1"
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
functions-have-names "^1.2.3"
- has-property-descriptors "^1.0.0"
+ has-property-descriptors "^1.0.2"
shebang-command@^2.0.0:
version "2.0.0"
@@ -3348,13 +4006,14 @@ shebang-regex@^3.0.0:
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
side-channel@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
- integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.5.tgz#9a84546599b48909fb6af1211708d23b1946221b"
+ integrity sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==
dependencies:
- call-bind "^1.0.0"
- get-intrinsic "^1.0.2"
- object-inspect "^1.9.0"
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+ object-inspect "^1.13.1"
signal-exit@^4.0.1:
version "4.1.0"
@@ -3372,9 +4031,9 @@ slash@^3.0.0:
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
socket.io-client@^4.7.2:
- version "4.7.2"
- resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.7.2.tgz#f2f13f68058bd4e40f94f2a1541f275157ff2c08"
- integrity sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==
+ version "4.7.4"
+ resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-4.7.4.tgz#5f0e060ff34ac0a4b4c5abaaa88e0d1d928c64c8"
+ integrity sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==
dependencies:
"@socket.io/component-emitter" "~3.1.0"
debug "~4.3.2"
@@ -3616,6 +4275,11 @@ thenify-all@^1.0.0:
dependencies:
any-promise "^1.0.0"
+throttle-debounce@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb"
+ integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==
+
through2@~0.4.1:
version "0.4.2"
resolved "https://registry.yarnpkg.com/through2/-/through2-0.4.2.tgz#dbf5866031151ec8352bb6c4db64a2292a840b9b"
@@ -3629,6 +4293,13 @@ through@^2.3.8:
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+tippy.js@^6.3.7:
+ version "6.3.7"
+ resolved "https://registry.yarnpkg.com/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c"
+ integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==
+ dependencies:
+ "@popperjs/core" "^2.9.0"
+
to-fast-properties@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
@@ -3666,7 +4337,7 @@ tslib@^1.8.1:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.1, tslib@^2.6.2:
+tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.6.1, tslib@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
@@ -3690,50 +4361,65 @@ type-fest@^0.20.2:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
-typed-array-buffer@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60"
- integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==
+type-fest@^2.19.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
+ integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
+
+typed-array-buffer@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3"
+ integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==
dependencies:
- call-bind "^1.0.2"
- get-intrinsic "^1.2.1"
- is-typed-array "^1.1.10"
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ is-typed-array "^1.1.13"
typed-array-byte-length@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0"
- integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67"
+ integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==
dependencies:
- call-bind "^1.0.2"
+ call-bind "^1.0.7"
for-each "^0.3.3"
- has-proto "^1.0.1"
- is-typed-array "^1.1.10"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
typed-array-byte-offset@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b"
- integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063"
+ integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==
dependencies:
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.2"
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
for-each "^0.3.3"
- has-proto "^1.0.1"
- is-typed-array "^1.1.10"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
typed-array-length@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb"
- integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.5.tgz#57d44da160296d8663fd63180a1802ebf25905d5"
+ integrity sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==
dependencies:
- call-bind "^1.0.2"
+ call-bind "^1.0.7"
for-each "^0.3.3"
- is-typed-array "^1.1.9"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+ possible-typed-array-names "^1.0.0"
typescript@5.1.6:
version "5.1.6"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274"
integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==
+uc.micro@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.0.0.tgz#84b3c335c12b1497fd9e80fcd3bfa7634c363ff1"
+ integrity sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==
+
unbox-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
@@ -3806,6 +4492,11 @@ uuid@^9.0.1:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30"
integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
+w3c-keyname@^2.2.0:
+ version "2.2.8"
+ resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5"
+ integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==
+
watchpack@2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
@@ -3814,16 +4505,16 @@ watchpack@2.4.0:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
-webcrypto-core@^1.7.7:
- version "1.7.7"
- resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.7.tgz#06f24b3498463e570fed64d7cab149e5437b162c"
- integrity sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g==
+webcrypto-core@^1.7.8:
+ version "1.7.8"
+ resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.8.tgz#056918036e846c72cfebbb04052e283f57f1114a"
+ integrity sha512-eBR98r9nQXTqXt/yDRtInszPMjTaSAMJAFDg2AHsgrnczawT1asx9YNBX6k5p+MekbPF4+s/UJJrr88zsTqkSg==
dependencies:
- "@peculiar/asn1-schema" "^2.3.6"
+ "@peculiar/asn1-schema" "^2.3.8"
"@peculiar/json-schema" "^1.1.12"
asn1js "^3.0.1"
- pvtsutils "^1.3.2"
- tslib "^2.4.0"
+ pvtsutils "^1.3.5"
+ tslib "^2.6.2"
which-boxed-primitive@^1.0.2:
version "1.0.2"
@@ -3864,16 +4555,16 @@ which-collection@^1.0.1:
is-weakmap "^2.0.1"
is-weakset "^2.0.1"
-which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9:
- version "1.1.13"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36"
- integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==
+which-typed-array@^1.1.14, which-typed-array@^1.1.9:
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06"
+ integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==
dependencies:
- available-typed-arrays "^1.0.5"
- call-bind "^1.0.4"
+ available-typed-arrays "^1.0.6"
+ call-bind "^1.0.5"
for-each "^0.3.3"
gopd "^1.0.1"
- has-tostringtag "^1.0.0"
+ has-tostringtag "^1.0.1"
which@^2.0.1:
version "2.0.2"
@@ -3942,9 +4633,9 @@ yocto-queue@^0.1.0:
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
-zrender@5.4.4:
- version "5.4.4"
- resolved "https://registry.yarnpkg.com/zrender/-/zrender-5.4.4.tgz#8854f1d95ecc82cf8912f5a11f86657cb8c9e261"
- integrity sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==
+zrender@5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/zrender/-/zrender-5.5.0.tgz#54d0d6c4eda81a96d9f60a9cd74dc48ea026bc1e"
+ integrity sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w==
dependencies:
tslib "2.3.0"