diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..b9c0e9c6 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,29 @@ +stages: + - build + - deploy + +build-dev: + stage: build + when: on_success + only: + - main + image: docker:stable + services: + - name: docker:dind + command: ["--insecure-registry=103.82.242.92:8900"] + script: + - docker logout + - docker login -u $DEPLOY_USERNAME -p $DEPLOY_TOKEN 103.82.242.92:8900 + - docker build -t 103.82.242.92:8900/mediahub/new-mediahub-fe:dev . + - docker push 103.82.242.92:8900/mediahub/new-mediahub-fe:dev + +auto-deploy: + stage: deploy + when: on_success + only: + - main + image: curlimages/curl:latest + services: + - docker:dind + script: + - curl --user admin:$JENKINS_PWD http://38.47.180.165:8080/job/auto-deploy-new-mediahub-fe/build?token=autodeploynewmediahub diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..13b638c8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM node:21-alpine + +ENV PORT 3000 + +# Create app directory +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +# Installing dependencies +COPY package*.json /usr/src/app/ + +# RUN npm install --force +RUN npm install -g npm@latest +RUN npm install next --legacy-peer-deps + +# Copying source files +COPY . /usr/src/app + +# Building app +RUN npm run build +EXPOSE 3000 + +# Running the app +CMD "npm" "run" "start" diff --git a/app/(root)/page.tsx b/app/(root)/page.tsx deleted file mode 100644 index 5c618e91..00000000 --- a/app/(root)/page.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React from "react"; - -const page = () => { - return
ppp
; -}; - -export default page; diff --git a/app/[locale]/(protected)/agenda-setting/event-modal.tsx b/app/[locale]/(protected)/agenda-setting/event-modal.tsx index 4d698df7..87ebc61f 100644 --- a/app/[locale]/(protected)/agenda-setting/event-modal.tsx +++ b/app/[locale]/(protected)/agenda-setting/event-modal.tsx @@ -1,11 +1,11 @@ -"use client" +"use client"; import React, { useState, useEffect } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { useForm, Controller } from "react-hook-form"; -import { cn, } from "@/lib/utils"; -import { format } from "date-fns" +import { cn } from "@/lib/utils"; +import { format } from "date-fns"; import { Popover, PopoverContent, @@ -24,23 +24,36 @@ import { z } from "zod"; import { Loader2, CalendarIcon } from "lucide-react"; import DeleteConfirmationDialog from "@/components/delete-confirmation-dialog"; import { CalendarCategory } from "./data"; -import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; const schema = z.object({ title: z.string().min(3, { message: "Required" }), }); -const EventModal = ({ open, onClose, categories, event, selectedDate }: { +const EventModal = ({ + open, + onClose, + categories, + event, + selectedDate, +}: { open: boolean; onClose: () => void; categories: any; event: any; - selectedDate: any + selectedDate: any; }) => { const [startDate, setStartDate] = useState(new Date()); const [endDate, setEndDate] = useState(new Date()); const [isPending, startTransition] = React.useTransition(); - const [calendarProps, setCalendarProps] = React.useState(categories[0].value); + const [calendarProps, setCalendarProps] = React.useState( + categories[0].value + ); // delete modal state const [deleteModalOpen, setDeleteModalOpen] = useState(false); const [eventIdToDelete, setEventIdToDelete] = useState(null); @@ -58,7 +71,7 @@ const EventModal = ({ open, onClose, categories, event, selectedDate }: { }); const onSubmit = (data: any) => { - startTransition(async () => { + startTransition(() => { if (!event) { data.start = startDate; data.end = endDate; @@ -91,10 +104,7 @@ const EventModal = ({ open, onClose, categories, event, selectedDate }: { const onDeleteEventAction = async () => { try { - - } catch (error) { - - } + } catch (error) {} }; const handleOpenDeleteModal = (eventId: string) => { @@ -112,9 +122,7 @@ const EventModal = ({ open, onClose, categories, event, selectedDate }: { defaultToast={false} /> - + {event ? "Edit Event" : "Create Event"} {event?.title} @@ -133,7 +141,7 @@ const EventModal = ({ open, onClose, categories, event, selectedDate }: { /> {errors?.title?.message && (
- {typeof errors?.title?.message === 'string' + {typeof errors?.title?.message === "string" ? errors?.title?.message : JSON.stringify(errors?.title?.message)}
diff --git a/app/[locale]/(protected)/app/calendar/event-modal.tsx b/app/[locale]/(protected)/app/calendar/event-modal.tsx index 4d698df7..87ebc61f 100644 --- a/app/[locale]/(protected)/app/calendar/event-modal.tsx +++ b/app/[locale]/(protected)/app/calendar/event-modal.tsx @@ -1,11 +1,11 @@ -"use client" +"use client"; import React, { useState, useEffect } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { useForm, Controller } from "react-hook-form"; -import { cn, } from "@/lib/utils"; -import { format } from "date-fns" +import { cn } from "@/lib/utils"; +import { format } from "date-fns"; import { Popover, PopoverContent, @@ -24,23 +24,36 @@ import { z } from "zod"; import { Loader2, CalendarIcon } from "lucide-react"; import DeleteConfirmationDialog from "@/components/delete-confirmation-dialog"; import { CalendarCategory } from "./data"; -import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog"; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog"; const schema = z.object({ title: z.string().min(3, { message: "Required" }), }); -const EventModal = ({ open, onClose, categories, event, selectedDate }: { +const EventModal = ({ + open, + onClose, + categories, + event, + selectedDate, +}: { open: boolean; onClose: () => void; categories: any; event: any; - selectedDate: any + selectedDate: any; }) => { const [startDate, setStartDate] = useState(new Date()); const [endDate, setEndDate] = useState(new Date()); const [isPending, startTransition] = React.useTransition(); - const [calendarProps, setCalendarProps] = React.useState(categories[0].value); + const [calendarProps, setCalendarProps] = React.useState( + categories[0].value + ); // delete modal state const [deleteModalOpen, setDeleteModalOpen] = useState(false); const [eventIdToDelete, setEventIdToDelete] = useState(null); @@ -58,7 +71,7 @@ const EventModal = ({ open, onClose, categories, event, selectedDate }: { }); const onSubmit = (data: any) => { - startTransition(async () => { + startTransition(() => { if (!event) { data.start = startDate; data.end = endDate; @@ -91,10 +104,7 @@ const EventModal = ({ open, onClose, categories, event, selectedDate }: { const onDeleteEventAction = async () => { try { - - } catch (error) { - - } + } catch (error) {} }; const handleOpenDeleteModal = (eventId: string) => { @@ -112,9 +122,7 @@ const EventModal = ({ open, onClose, categories, event, selectedDate }: { defaultToast={false} /> - + {event ? "Edit Event" : "Create Event"} {event?.title} @@ -133,7 +141,7 @@ const EventModal = ({ open, onClose, categories, event, selectedDate }: { /> {errors?.title?.message && (
- {typeof errors?.title?.message === 'string' + {typeof errors?.title?.message === "string" ? errors?.title?.message : JSON.stringify(errors?.title?.message)}
diff --git a/app/[locale]/(protected)/blog/page.tsx b/app/[locale]/(protected)/blog/page.tsx index 98fa1cb8..f5995af4 100644 --- a/app/[locale]/(protected)/blog/page.tsx +++ b/app/[locale]/(protected)/blog/page.tsx @@ -1,6 +1,5 @@ import SiteBreadcrumb from "@/components/site-breadcrumb"; import { Card, CardContent } from "@/components/ui/card"; -import MediahubTable from "../planning/mediahub/table-mediahub/mediahub-table"; import { Button } from "@/components/ui/button"; import { UploadIcon } from "lucide-react"; import BlogTable from "./table/blog-table"; diff --git a/app/[locale]/(protected)/communications/account-report/page.tsx b/app/[locale]/(protected)/communications/account-report/page.tsx index 98fa1cb8..f5995af4 100644 --- a/app/[locale]/(protected)/communications/account-report/page.tsx +++ b/app/[locale]/(protected)/communications/account-report/page.tsx @@ -1,6 +1,5 @@ import SiteBreadcrumb from "@/components/site-breadcrumb"; import { Card, CardContent } from "@/components/ui/card"; -import MediahubTable from "../planning/mediahub/table-mediahub/mediahub-table"; import { Button } from "@/components/ui/button"; import { UploadIcon } from "lucide-react"; import BlogTable from "./table/blog-table"; diff --git a/app/[locale]/(protected)/communications/collaboration/page.tsx b/app/[locale]/(protected)/communications/collaboration/page.tsx index 98fa1cb8..f5995af4 100644 --- a/app/[locale]/(protected)/communications/collaboration/page.tsx +++ b/app/[locale]/(protected)/communications/collaboration/page.tsx @@ -1,6 +1,5 @@ import SiteBreadcrumb from "@/components/site-breadcrumb"; import { Card, CardContent } from "@/components/ui/card"; -import MediahubTable from "../planning/mediahub/table-mediahub/mediahub-table"; import { Button } from "@/components/ui/button"; import { UploadIcon } from "lucide-react"; import BlogTable from "./table/blog-table"; diff --git a/app/[locale]/(protected)/communications/forward/page.tsx b/app/[locale]/(protected)/communications/forward/page.tsx index 98fa1cb8..f5995af4 100644 --- a/app/[locale]/(protected)/communications/forward/page.tsx +++ b/app/[locale]/(protected)/communications/forward/page.tsx @@ -1,6 +1,5 @@ import SiteBreadcrumb from "@/components/site-breadcrumb"; import { Card, CardContent } from "@/components/ui/card"; -import MediahubTable from "../planning/mediahub/table-mediahub/mediahub-table"; import { Button } from "@/components/ui/button"; import { UploadIcon } from "lucide-react"; import BlogTable from "./table/blog-table"; diff --git a/app/[locale]/(protected)/communications/internal/page.tsx b/app/[locale]/(protected)/communications/internal/page.tsx index 98fa1cb8..f5995af4 100644 --- a/app/[locale]/(protected)/communications/internal/page.tsx +++ b/app/[locale]/(protected)/communications/internal/page.tsx @@ -1,6 +1,5 @@ import SiteBreadcrumb from "@/components/site-breadcrumb"; import { Card, CardContent } from "@/components/ui/card"; -import MediahubTable from "../planning/mediahub/table-mediahub/mediahub-table"; import { Button } from "@/components/ui/button"; import { UploadIcon } from "lucide-react"; import BlogTable from "./table/blog-table"; diff --git a/app/[locale]/(protected)/communications/questions/page.tsx b/app/[locale]/(protected)/communications/questions/page.tsx index 98fa1cb8..f5995af4 100644 --- a/app/[locale]/(protected)/communications/questions/page.tsx +++ b/app/[locale]/(protected)/communications/questions/page.tsx @@ -1,6 +1,5 @@ import SiteBreadcrumb from "@/components/site-breadcrumb"; import { Card, CardContent } from "@/components/ui/card"; -import MediahubTable from "../planning/mediahub/table-mediahub/mediahub-table"; import { Button } from "@/components/ui/button"; import { UploadIcon } from "lucide-react"; import BlogTable from "./table/blog-table"; diff --git a/app/[locale]/(protected)/content/spit/page.tsx b/app/[locale]/(protected)/content/spit/page.tsx index 75f82a8c..c87af372 100644 --- a/app/[locale]/(protected)/content/spit/page.tsx +++ b/app/[locale]/(protected)/content/spit/page.tsx @@ -1,11 +1,11 @@ "use client"; import { Card, CardContent } from "@/components/ui/card"; import SiteBreadcrumb from "@/components/site-breadcrumb"; -import TableImage from "./table-spit"; +import TableImage from "./table-spit/page"; import { Newspaper, NewspaperIcon, UploadIcon } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Icon } from "@iconify/react/dist/iconify.js"; -import TableSPIT from "./table-spit"; +import TableSPIT from "./table-spit/page"; const ReactTableSPITPage = () => { return ( diff --git a/app/[locale]/(protected)/content/spit/table-spit/index.tsx b/app/[locale]/(protected)/content/spit/table-spit/page.tsx similarity index 87% rename from app/[locale]/(protected)/content/spit/table-spit/index.tsx rename to app/[locale]/(protected)/content/spit/table-spit/page.tsx index f45b1930..b343e6a3 100644 --- a/app/[locale]/(protected)/content/spit/table-spit/index.tsx +++ b/app/[locale]/(protected)/content/spit/table-spit/page.tsx @@ -1,5 +1,4 @@ "use client"; - import * as React from "react"; import { ColumnDef, @@ -25,8 +24,6 @@ import { TableRow, } from "@/components/ui/table"; -import { data } from "./data"; -import TablePagination from "./table-pagination"; import { Button } from "@/components/ui/button"; import { format } from "date-fns"; import { @@ -45,12 +42,7 @@ import { import { title } from "process"; import { getCookiesDecrypt } from "@/lib/utils"; -import { - listDataAudio, - listDataImage, - listDataVideo, - listSPIT, -} from "@/service/content/content"; +import { listSPIT } from "@/service/content/content"; import { pages } from "next/dist/build/templates/app-page"; export type CompanyData = { @@ -65,7 +57,7 @@ export type CompanyData = { isDone: string; }; -export const columns: ColumnDef[] = [ +const columns: ColumnDef[] = [ { accessorKey: "no", header: "No", @@ -251,46 +243,46 @@ const TableSPIT = () => { }, }); - React.useEffect(() => { - initState(); - }, [page, limit]); + // React.useEffect(() => { + // initState(); + // }, [page, limit]); - async function initState() { - try { - const isForSelf = Number(roleId) == 4; + // async function initState() { + // try { + // const isForSelf = Number(roleId) == 4; - let isPublish; - if (statusFilter.length > 1) { - isPublish = ""; - } else if (statusFilter.length === 1) { - if (statusFilter.includes(1)) { - isPublish = false; - } else { - isPublish = true; - } - } else { - isPublish = undefined; - } - const res = await listSPIT(pages, limit, search, isPublish); - const data = res.data.data.content.map((item: any, index: number) => ({ - no: (page - 1) * limit + index + 1, - title: item.title, - categoryName: item.categoryName, - creatorGroup: item.creatorGroup, - assignmentType: item.assignmentType?.name || "-", - createdAt: item.createdAt, - isDone: item.isDone, - publishedOn: item.publishedOn, - isPublish: item.isPublish, - isPublishOnPolda: item.isPublishOnPolda, - })); + // let isPublish; + // if (statusFilter.length > 1) { + // isPublish = ""; + // } else if (statusFilter.length === 1) { + // if (statusFilter.includes(1)) { + // isPublish = false; + // } else { + // isPublish = true; + // } + // } else { + // isPublish = undefined; + // } + // const res = await listSPIT(pages, limit, search, isPublish); + // const data = res.data.data.content.map((item: any, index: number) => ({ + // no: (page - 1) * limit + index + 1, + // title: item.title, + // categoryName: item.categoryName, + // creatorGroup: item.creatorGroup, + // assignmentType: item.assignmentType?.name || "-", + // createdAt: item.createdAt, + // isDone: item.isDone, + // publishedOn: item.publishedOn, + // isPublish: item.isPublish, + // isPublishOnPolda: item.isPublishOnPolda, + // })); - setSpitTable(data); - setTotalPage(res.data.totalPages); - } catch (error) { - console.error("Error fetching tasks:", error); - } - } + // setSpitTable(data); + // setTotalPage(res.data.totalPages); + // } catch (error) { + // console.error("Error fetching tasks:", error); + // } + // } return (
diff --git a/app/[locale]/(protected)/dashboard/routine-task/most-sales.tsx b/app/[locale]/(protected)/dashboard/routine-task/most-sales.tsx index ab78a6fd..c1d320d5 100644 --- a/app/[locale]/(protected)/dashboard/routine-task/most-sales.tsx +++ b/app/[locale]/(protected)/dashboard/routine-task/most-sales.tsx @@ -1,6 +1,6 @@ -"use client" +"use client"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; -import world from "./world-map.json"; +// import world from "./world-map.json"; import { VectorMap } from "@south-paw/react-vector-maps"; import { useState } from "react"; import { cn } from "@/lib/utils"; @@ -39,7 +39,6 @@ const sales = [ }, ]; - const MostSales = () => { const [filterMap, setFilterMap] = useState("usa"); const t = useTranslations("AnalyticsDashboard"); @@ -63,7 +62,10 @@ const MostSales = () => { setFilterMap("usa")} > @@ -111,7 +113,7 @@ const MostSales = () => {
- + {/* */}
diff --git a/app/[locale]/(protected)/faq/page.tsx b/app/[locale]/(protected)/faq/page.tsx index 98fa1cb8..f5995af4 100644 --- a/app/[locale]/(protected)/faq/page.tsx +++ b/app/[locale]/(protected)/faq/page.tsx @@ -1,6 +1,5 @@ import SiteBreadcrumb from "@/components/site-breadcrumb"; import { Card, CardContent } from "@/components/ui/card"; -import MediahubTable from "../planning/mediahub/table-mediahub/mediahub-table"; import { Button } from "@/components/ui/button"; import { UploadIcon } from "lucide-react"; import BlogTable from "./table/blog-table"; diff --git a/app/[locale]/(protected)/knowledge-base/page.tsx b/app/[locale]/(protected)/knowledge-base/page.tsx index 98fa1cb8..f5995af4 100644 --- a/app/[locale]/(protected)/knowledge-base/page.tsx +++ b/app/[locale]/(protected)/knowledge-base/page.tsx @@ -1,6 +1,5 @@ import SiteBreadcrumb from "@/components/site-breadcrumb"; import { Card, CardContent } from "@/components/ui/card"; -import MediahubTable from "../planning/mediahub/table-mediahub/mediahub-table"; import { Button } from "@/components/ui/button"; import { UploadIcon } from "lucide-react"; import BlogTable from "./table/blog-table"; diff --git a/app/[locale]/(protected)/layout.tsx b/app/[locale]/(protected)/layout.tsx index e8932eb2..e76aca90 100644 --- a/app/[locale]/(protected)/layout.tsx +++ b/app/[locale]/(protected)/layout.tsx @@ -1,30 +1,26 @@ import LayoutProvider from "@/providers/layout.provider"; import LayoutContentProvider from "@/providers/content.provider"; -import DashCodeSidebar from '@/components/partials/sidebar' -import DashCodeFooter from '@/components/partials/footer' -import ThemeCustomize from '@/components/partials/customizer' -import DashCodeHeader from '@/components/partials/header' +import DashCodeSidebar from "@/components/partials/sidebar"; +import DashCodeFooter from "@/components/partials/footer"; +import ThemeCustomize from "@/components/partials/customizer"; +import DashCodeHeader from "@/components/partials/header"; import { auth } from "@/lib/auth"; import { redirect } from "@/components/navigation"; const layout = async ({ children }: { children: React.ReactNode }) => { - const session = await auth(); - - if (!session) { - redirect("/"); - } - return ( - - - - - - {children} - - - - ) - + const session = await auth(); + if (!session) { + redirect("/"); + } + return ( + + + {/* */} + + {children} + {/* */} + + ); }; export default layout; diff --git a/app/[locale]/(protected)/planning/medsos-mediahub/table-medsos/medsos-table.tsx b/app/[locale]/(protected)/planning/medsos-mediahub/table-medsos/medsos-table.tsx index 14eda2a6..104a8d39 100644 --- a/app/[locale]/(protected)/planning/medsos-mediahub/table-medsos/medsos-table.tsx +++ b/app/[locale]/(protected)/planning/medsos-mediahub/table-medsos/medsos-table.tsx @@ -54,7 +54,6 @@ export type CompanyData = { import { data } from "./data"; import { Input } from "@/components/ui/input"; import { InputGroup, InputGroupText } from "@/components/ui/input-group"; -import { listTask } from "@/service/ppid-categories-services"; import page from "../page"; import { getPlanningSentPagination } from "@/service/planning/planning"; diff --git a/app/[locale]/(public)/audio/layout.tsx b/app/[locale]/(public)/audio/layout.tsx index 5eca8060..9670b380 100644 --- a/app/[locale]/(public)/audio/layout.tsx +++ b/app/[locale]/(public)/audio/layout.tsx @@ -6,8 +6,8 @@ import ThemeCustomize from "@/components/partials/customizer"; import DashCodeHeader from "@/components/partials/header"; import { auth } from "@/lib/auth"; import { redirect } from "@/components/navigation"; -import Navbar from "@/components/landing-page/navbar"; -import Footer from "@/components/landing-page/footer"; +import Footer from "@/components/landing-page/Footer"; +import Navbar from "@/components/landing-page/Navbar"; const layout = async ({ children }: { children: React.ReactNode }) => { return ( diff --git a/app/[locale]/(public)/document/layout.tsx b/app/[locale]/(public)/document/layout.tsx index 5eca8060..9670b380 100644 --- a/app/[locale]/(public)/document/layout.tsx +++ b/app/[locale]/(public)/document/layout.tsx @@ -6,8 +6,8 @@ import ThemeCustomize from "@/components/partials/customizer"; import DashCodeHeader from "@/components/partials/header"; import { auth } from "@/lib/auth"; import { redirect } from "@/components/navigation"; -import Navbar from "@/components/landing-page/navbar"; -import Footer from "@/components/landing-page/footer"; +import Footer from "@/components/landing-page/Footer"; +import Navbar from "@/components/landing-page/Navbar"; const layout = async ({ children }: { children: React.ReactNode }) => { return ( diff --git a/app/[locale]/(public)/image/layout.tsx b/app/[locale]/(public)/image/layout.tsx index 5eca8060..9670b380 100644 --- a/app/[locale]/(public)/image/layout.tsx +++ b/app/[locale]/(public)/image/layout.tsx @@ -6,8 +6,8 @@ import ThemeCustomize from "@/components/partials/customizer"; import DashCodeHeader from "@/components/partials/header"; import { auth } from "@/lib/auth"; import { redirect } from "@/components/navigation"; -import Navbar from "@/components/landing-page/navbar"; -import Footer from "@/components/landing-page/footer"; +import Footer from "@/components/landing-page/Footer"; +import Navbar from "@/components/landing-page/Navbar"; const layout = async ({ children }: { children: React.ReactNode }) => { return ( diff --git a/app/[locale]/(public)/indeks/layout.tsx b/app/[locale]/(public)/indeks/layout.tsx index 5eca8060..9670b380 100644 --- a/app/[locale]/(public)/indeks/layout.tsx +++ b/app/[locale]/(public)/indeks/layout.tsx @@ -6,8 +6,8 @@ import ThemeCustomize from "@/components/partials/customizer"; import DashCodeHeader from "@/components/partials/header"; import { auth } from "@/lib/auth"; import { redirect } from "@/components/navigation"; -import Navbar from "@/components/landing-page/navbar"; -import Footer from "@/components/landing-page/footer"; +import Footer from "@/components/landing-page/Footer"; +import Navbar from "@/components/landing-page/Navbar"; const layout = async ({ children }: { children: React.ReactNode }) => { return ( diff --git a/app/[locale]/(public)/schedule/layout.tsx b/app/[locale]/(public)/schedule/layout.tsx index 5eca8060..9670b380 100644 --- a/app/[locale]/(public)/schedule/layout.tsx +++ b/app/[locale]/(public)/schedule/layout.tsx @@ -6,8 +6,8 @@ import ThemeCustomize from "@/components/partials/customizer"; import DashCodeHeader from "@/components/partials/header"; import { auth } from "@/lib/auth"; import { redirect } from "@/components/navigation"; -import Navbar from "@/components/landing-page/navbar"; -import Footer from "@/components/landing-page/footer"; +import Footer from "@/components/landing-page/Footer"; +import Navbar from "@/components/landing-page/Navbar"; const layout = async ({ children }: { children: React.ReactNode }) => { return ( diff --git a/app/[locale]/(public)/video/layout.tsx b/app/[locale]/(public)/video/layout.tsx index 5eca8060..9670b380 100644 --- a/app/[locale]/(public)/video/layout.tsx +++ b/app/[locale]/(public)/video/layout.tsx @@ -6,8 +6,8 @@ import ThemeCustomize from "@/components/partials/customizer"; import DashCodeHeader from "@/components/partials/header"; import { auth } from "@/lib/auth"; import { redirect } from "@/components/navigation"; -import Navbar from "@/components/landing-page/navbar"; -import Footer from "@/components/landing-page/footer"; +import Footer from "@/components/landing-page/Footer"; +import Navbar from "@/components/landing-page/Navbar"; const layout = async ({ children }: { children: React.ReactNode }) => { return ( diff --git a/app/[locale]/page.tsx b/app/[locale]/page.tsx index e81eed0d..a069670c 100644 --- a/app/[locale]/page.tsx +++ b/app/[locale]/page.tsx @@ -10,6 +10,7 @@ import Hero from "@/components/landing-page/hero"; import Footer from "@/components/landing-page/footer"; import Division from "@/components/landing-page/division"; + const Home = ({ params: { locale } }: { params: { locale: string } }) => { return ( <> diff --git a/components/delete-confirmation-dialog.tsx b/components/delete-confirmation-dialog.tsx index 1e4c4803..5f483093 100644 --- a/components/delete-confirmation-dialog.tsx +++ b/components/delete-confirmation-dialog.tsx @@ -12,7 +12,12 @@ import { import { toast } from "react-hot-toast"; import { Loader2 } from "lucide-react"; -const DeleteConfirmationDialog = ({ open, onClose, onConfirm, defaultToast = true, toastMessage = "Successfully deleted", +const DeleteConfirmationDialog = ({ + open, + onClose, + onConfirm, + defaultToast = true, + toastMessage = "Successfully deleted", }: { open: boolean; onClose: () => void; @@ -22,12 +27,12 @@ const DeleteConfirmationDialog = ({ open, onClose, onConfirm, defaultToast = tru }) => { const [isPending, startTransition] = useTransition(); - const handleConfirm = async () => { + const handleConfirm = () => { if (!onConfirm) { onClose(); return; } - await onConfirm(); + onConfirm(); onClose(); if (defaultToast) { diff --git a/components/form/communication/collaboration-form.tsx b/components/form/communication/collaboration-form.tsx index 768e9cca..fbb02466 100644 --- a/components/form/communication/collaboration-form.tsx +++ b/components/form/communication/collaboration-form.tsx @@ -10,17 +10,7 @@ import * as z from "zod"; import Swal from "sweetalert2"; import withReactContent from "sweetalert2-react-content"; import { useRouter } from "next/navigation"; - -import { Checkbox } from "@/components/ui/checkbox"; -import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import JoditEditor from "jodit-react"; -import { type } from "os"; -import loading from "@/app/[locale]/(protected)/app/projects/loading"; -import { request } from "http"; -import { error } from "@/lib/utils"; -import { createTask } from "@/service/task"; -import { options } from "@fullcalendar/core/preact.js"; -import { setOptions } from "leaflet"; import { getCuratorUser, getTicketingPriority, diff --git a/components/form/communication/internal-form.tsx b/components/form/communication/internal-form.tsx index dc71d180..86ab54a4 100644 --- a/components/form/communication/internal-form.tsx +++ b/components/form/communication/internal-form.tsx @@ -11,16 +11,7 @@ import Swal from "sweetalert2"; import withReactContent from "sweetalert2-react-content"; import { useRouter } from "next/navigation"; -import { Checkbox } from "@/components/ui/checkbox"; -import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import JoditEditor from "jodit-react"; -import { type } from "os"; -import loading from "@/app/[locale]/(protected)/app/projects/loading"; -import { request } from "http"; -import { error } from "@/lib/utils"; -import { createTask } from "@/service/task"; -import { options } from "@fullcalendar/core/preact.js"; -import { setOptions } from "leaflet"; import { getCuratorUser, getTicketingPriority, diff --git a/components/partials/auth/login-form.tsx b/components/partials/auth/login-form.tsx index 37ff1abc..cb344fa9 100644 --- a/components/partials/auth/login-form.tsx +++ b/components/partials/auth/login-form.tsx @@ -52,138 +52,135 @@ const LoginForm = () => { // Fungsi submit form const onSubmit: SubmitHandler = async (data) => { - startTransition(async () => { - try { - const response = await setLogin({ - ...data, - grant_type: "password", - client_id: "mediahub-app", + try { + const response = await setLogin({ + ...data, + grant_type: "password", + client_id: "mediahub-app", + }); + + if (response.error) { + toast.error("Username / Password Tidak Sesuai"); + } else { + const { access_token } = response.data; + const { refresh_token } = response.data; + const dateTime = new Date(); + const newTime = dateTime.getTime() + 10 * 60 * 1000; + + Cookies.set("access_token", access_token, { + expires: 1, + }); + Cookies.set("refresh_token", refresh_token, { + expires: 1, + }); + Cookies.set("time_refresh", new Date(newTime).toISOString(), { + expires: 1, }); - if (response.error) { - toast.error("Username / Password Tidak Sesuai"); + Cookies.set("is_first_login", String(true), { + secure: true, + sameSite: "strict", + }); + const profile = await getProfile(access_token); + console.log("PROFILE : ", profile?.data?.data); + + if ( + profile?.data?.data?.isInternational == true || + profile?.data?.data?.isActive == false || + profile?.data?.data?.isDelete == true + ) { + Object.keys(Cookies.get()).forEach((cookieName) => { + Cookies.remove(cookieName); + }); + warning( + "Akun Anda tidak dapat digunakan untuk masuk ke MediaHub Polri", + "/auth/login" + ); } else { - const { access_token } = response.data; - const { refresh_token } = response.data; - const dateTime = new Date(); - const newTime = dateTime.getTime() + 10 * 60 * 1000; - - Cookies.set("access_token", access_token, { + Cookies.set("home_path", profile.data?.data?.homePath, { expires: 1, }); - Cookies.set("refresh_token", refresh_token, { + Cookies.set( + "profile_picture", + profile.data?.data?.profilePictureUrl, + { + expires: 1, + } + ); + Cookies.set("state", profile.data?.data?.userLevel?.name, { expires: 1, }); - Cookies.set("time_refresh", new Date(newTime).toISOString(), { + setCookiesEncrypt("uie", profile.data.data?.id, { expires: 1, }); - - Cookies.set("is_first_login", String(true), { - secure: true, - sameSite: "strict", + setCookiesEncrypt("urie", profile.data.data?.roleId, { + expires: 1, + }); + setCookiesEncrypt("urne", profile.data.data?.role?.name, { + expires: 1, + }); + setCookiesEncrypt("ulie", profile.data.data?.userLevel?.id, { + expires: 1, + }); + setCookiesEncrypt( + "ulplie", + profile.data.data?.userLevel?.parentLevelId, + { + expires: 1, + } + ); + setCookiesEncrypt("ulne", profile.data.data?.userLevel?.levelNumber, { + expires: 1, + }); + setCookiesEncrypt("ufne", profile.data.data?.fullname, { + expires: 1, + }); + setCookiesEncrypt("ulnae", profile.data.data?.userLevel?.name, { + expires: 1, + }); + setCookiesEncrypt("uinse", profile.data.data?.instituteId, { + expires: 1, }); - const profile = await getProfile(access_token); - console.log("PROFILE : ", profile?.data?.data); if ( - profile?.data?.data?.isInternational == true || - profile?.data?.data?.isActive == false || - profile?.data?.data?.isDelete == true + Number(profile.data.data?.roleId) == 2 || + Number(profile.data.data?.roleId) == 3 || + Number(profile.data.data?.roleId) == 4 || + Number(profile.data.data?.roleId) == 9 || + Number(profile.data.data?.roleId) == 10 || + Number(profile.data.data?.roleId) == 11 || + Number(profile.data.data?.roleId) == 12 ) { - Object.keys(Cookies.get()).forEach((cookieName) => { - Cookies.remove(cookieName); - }); - warning( - "Akun Anda tidak dapat digunakan untuk masuk ke MediaHub Polri", - "/auth/login" - ); - } else { - Cookies.set("home_path", profile.data?.data?.homePath, { - expires: 1, - }); - Cookies.set( - "profile_picture", - profile.data?.data?.profilePictureUrl, - { - expires: 1, - } - ); - Cookies.set("state", profile.data?.data?.userLevel?.name, { - expires: 1, - }); - setCookiesEncrypt("uie", profile.data.data?.id, { - expires: 1, - }); - setCookiesEncrypt("urie", profile.data.data?.roleId, { - expires: 1, - }); - setCookiesEncrypt("urne", profile.data.data?.role?.name, { - expires: 1, - }); - setCookiesEncrypt("ulie", profile.data.data?.userLevel?.id, { - expires: 1, - }); - setCookiesEncrypt( - "ulplie", - profile.data.data?.userLevel?.parentLevelId, - { - expires: 1, - } - ); - setCookiesEncrypt( - "ulne", - profile.data.data?.userLevel?.levelNumber, - { - expires: 1, - } - ); - setCookiesEncrypt("ufne", profile.data.data?.fullname, { - expires: 1, - }); - setCookiesEncrypt("ulnae", profile.data.data?.userLevel?.name, { - expires: 1, - }); - setCookiesEncrypt("uinse", profile.data.data?.instituteId, { - expires: 1, - }); - if ( - Number(profile.data.data?.roleId) == 2 || - Number(profile.data.data?.roleId) == 3 || - Number(profile.data.data?.roleId) == 4 || - Number(profile.data.data?.roleId) == 9 || - Number(profile.data.data?.roleId) == 10 || - Number(profile.data.data?.roleId) == 11 || - Number(profile.data.data?.roleId) == 12 + profile.data.data?.userLevel?.id == 761 || + profile.data.data?.userLevel?.parentLevelId == 761 ) { - if ( - profile.data.data?.userLevel?.id == 761 || - profile.data.data?.userLevel?.parentLevelId == 761 - ) { - window.location.href = "/admin/welcome"; - // router.push('/admin/dashboard'); - Cookies.set("status", "login", { - expires: 1, - }); - } else { - window.location.href = "/en/dashboard"; - // router.push('/admin/dashboard'); - Cookies.set("status", "login", { - expires: 1, - }); - } + window.location.href = "/admin/welcome"; + // router.push('/admin/dashboard'); + Cookies.set("status", "login", { + expires: 1, + }); } else { - window.location.href = "/"; + window.location.href = "/en/dashboard"; + // router.push('/admin/dashboard'); Cookies.set("status", "login", { expires: 1, }); } + } else { + window.location.href = "/"; + Cookies.set("status", "login", { + expires: 1, + }); } } - } catch (err: any) { - toast.error(err.message || "An unexpected error occurred."); } - }); + } catch (err: any) { + toast.error(err.message || "An unexpected error occurred."); + } + // startTransition( () => { + + // }); }; return ( diff --git a/components/partials/auth/social.tsx b/components/partials/auth/social.tsx index b8e7e121..eeabb64d 100644 --- a/components/partials/auth/social.tsx +++ b/components/partials/auth/social.tsx @@ -10,7 +10,13 @@ const Social = ({ locale }: { locale: string }) => { href="#" className="inline-flex h-10 w-10 p-2 bg-[#1C9CEB] text-white text-2xl flex-col items-center justify-center rounded-full" > - +
  • @@ -18,7 +24,13 @@ const Social = ({ locale }: { locale: string }) => { href="#" className="inline-flex h-10 w-10 p-2 bg-[#395599] text-white text-2xl flex-col items-center justify-center rounded-full" > - +
  • @@ -26,22 +38,36 @@ const Social = ({ locale }: { locale: string }) => { href="#" className="inline-flex h-10 w-10 p-2 bg-[#0A63BC] text-white text-2xl flex-col items-center justify-center rounded-full" > - +
  • { - "use server"; - await signIn("google", { redirectTo: `/${locale}/dashboard/analytics` }); - }} + // action={async () => { + // "use server"; + // await signIn("google", { redirectTo: `/${locale}/dashboard/analytics` }); + // }} > -
  • - ); diff --git a/components/partials/header/index.tsx b/components/partials/header/index.tsx index 9d21b981..2d48037a 100644 --- a/components/partials/header/index.tsx +++ b/components/partials/header/index.tsx @@ -1,42 +1,39 @@ -import React from 'react' -import HeaderContent from './header-content' -import HeaderSearch from './header-search' -import ProfileInfo from './profile-info' -import Notifications from './notifications' -import Messages from "./messages" -import { Cart } from './cart' -import ThemeSwitcher from './theme-switcher' -import { SidebarToggle } from '@/components/partials/sidebar/sidebar-toggle' -import { SheetMenu } from '@/components/partials/sidebar/menu/sheet-menu' -import HorizontalMenu from "./horizontal-menu" -import LocalSwitcher from './locale-switcher' -import HeaderLogo from "./header-logo" - +import React from "react"; +import HeaderContent from "./header-content"; +import HeaderSearch from "./header-search"; +import ProfileInfo from "./profile-info"; +import Notifications from "./notifications"; +import Messages from "./messages"; +import { Cart } from "./cart"; +import ThemeSwitcher from "./theme-switcher"; +import { SidebarToggle } from "@/components/partials/sidebar/sidebar-toggle"; +import { SheetMenu } from "@/components/partials/sidebar/menu/sheet-menu"; +import HorizontalMenu from "./horizontal-menu"; +import LocalSwitcher from "./locale-switcher"; +import HeaderLogo from "./header-logo"; const DashCodeHeader = async () => { + return ( + <> + +
    + + + +
    +
    + + + + + + {/* */} + +
    +
    + + + ); +}; - - return ( - <> - -
    - - - -
    -
    - - - - - - - -
    -
    - - - ) -} - -export default DashCodeHeader \ No newline at end of file +export default DashCodeHeader; diff --git a/components/partials/header/profile-info.tsx b/components/partials/header/profile-info.tsx index 2ad6ac6c..097272f5 100644 --- a/components/partials/header/profile-info.tsx +++ b/components/partials/header/profile-info.tsx @@ -1,4 +1,3 @@ - import { DropdownMenu, DropdownMenuContent, @@ -12,23 +11,20 @@ import { DropdownMenuSubTrigger, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; -import { Icon } from "@/components/ui/icon" +import { Icon } from "@/components/ui/icon"; import { signOut, auth } from "@/lib/auth"; import Image from "next/image"; -import { Link } from '@/i18n/routing'; +import { Link } from "@/i18n/routing"; import { Button } from "@/components/ui/button"; const ProfileInfo = async () => { const session = await auth(); - - return (
    - {session?.user?.name?.charAt(0) { - {session?.user?.name?.charAt(0) { { name: "profile", icon: "heroicons:user", - href: "/user-profile" + href: "/user-profile", }, { name: "Billing", icon: "heroicons:megaphone", - href: "/dashboard" + href: "/dashboard", }, { name: "Settings", icon: "heroicons:paper-airplane", - href: "/dashboard" + href: "/dashboard", }, { name: "Keyboard shortcuts", icon: "heroicons:language", - href: "/dashboard" + href: "/dashboard", }, ].map((item, index) => ( { - - +
    { - "use server"; - await signOut(); - }} + // action={async () => { + // "use server"; + // await signOut(); + // }} > - diff --git a/package-lock.json b/package-lock.json index f491eec4..009ce5ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -298,9 +298,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.3.tgz", - "integrity": "sha512-yTmc8J+Sj8yLzwr4PD5Xb/WF3bOYu2C2OoSZPzbuqRm4n98XirsbzaX+GloeO376UnSYIYJ4NCanwV5/ugZkwA==", + "version": "7.26.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", + "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.26.3", @@ -360,9 +360,9 @@ } }, "node_modules/@dnd-kit/core": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.3.0.tgz", - "integrity": "sha512-1PZxmnH+hQFwcaVRCe4SrtBn4cZ9S0trGtxHE13iLGEEZFhiFe+Sxg4ZUlwirYsXJCejqUYDi85PQC7J8/AINg==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.3.1.tgz", + "integrity": "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==", "dependencies": { "@dnd-kit/accessibility": "^3.1.1", "@dnd-kit/utilities": "^3.2.2", @@ -465,9 +465,9 @@ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, "node_modules/@emotion/cache": { - "version": "11.13.5", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.5.tgz", - "integrity": "sha512-Z3xbtJ+UcK76eWkagZ1onvn/wAVb1GOMuR15s30Fm2wrMgC7jzpnO2JZXr4eujTTqoQFUrZIw/rT0c6Zzjca1g==", + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", "dependencies": { "@emotion/memoize": "^0.9.0", "@emotion/sheet": "^1.4.0", @@ -492,15 +492,15 @@ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "node_modules/@emotion/react": { - "version": "11.13.5", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.5.tgz", - "integrity": "sha512-6zeCUxUH+EPF1s+YF/2hPVODeV/7V07YU5x+2tfuRL8MdW6rv5vb2+CBEGTGwBdux0OIERcOS+RzxeK80k2DsQ==", + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", - "@emotion/cache": "^11.13.5", + "@emotion/cache": "^11.14.0", "@emotion/serialize": "^1.3.3", - "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" @@ -537,9 +537,9 @@ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", - "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", "peerDependencies": { "react": ">=16.8.0" } @@ -678,46 +678,47 @@ "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==" }, "node_modules/@formatjs/ecma402-abstract": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.4.tgz", - "integrity": "sha512-lFyiQDVvSbQOpU+WFd//ILolGj4UgA/qXrKeZxdV14uKiAUiPAtX6XAn7WBCRi7Mx6I7EybM9E5yYn4BIpZWYg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.1.tgz", + "integrity": "sha512-Ip9uV+/MpLXWRk03U/GzeJMuPeOXpJBSB5V1tjA6kJhvqssye5J5LoYLc7Z5IAHb7nR62sRoguzrFiVCP/hnzw==", "dependencies": { - "@formatjs/fast-memoize": "2.2.3", - "@formatjs/intl-localematcher": "0.5.8", + "@formatjs/fast-memoize": "2.2.5", + "@formatjs/intl-localematcher": "0.5.9", + "decimal.js": "10", "tslib": "2" } }, "node_modules/@formatjs/fast-memoize": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.3.tgz", - "integrity": "sha512-3jeJ+HyOfu8osl3GNSL4vVHUuWFXR03Iz9jjgI7RwjG6ysu/Ymdr0JRCPHfF5yGbTE6JCrd63EpvX1/WybYRbA==", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.5.tgz", + "integrity": "sha512-6PoewUMrrcqxSoBXAOJDiW1m+AmkrAj0RiXnOMD59GRaswjXhm3MDhgepXPBgonc09oSirAJTsAggzAGQf6A6g==", "dependencies": { "tslib": "2" } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.4.tgz", - "integrity": "sha512-Tbvp5a9IWuxUcpWNIW6GlMQYEc4rwNHR259uUFoKWNN1jM9obf9Ul0e+7r7MvFOBNcN+13K7NuKCKqQiAn1QEg==", + "version": "2.9.7", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.7.tgz", + "integrity": "sha512-cuEHyRM5VqLQobANOjtjlgU7+qmk9Q3fDQuBiRRJ3+Wp3ZoZhpUPtUfuimZXsir6SaI2TaAJ+SLo9vLnV5QcbA==", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.4", - "@formatjs/icu-skeleton-parser": "1.8.8", + "@formatjs/ecma402-abstract": "2.3.1", + "@formatjs/icu-skeleton-parser": "1.8.11", "tslib": "2" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.8.tgz", - "integrity": "sha512-vHwK3piXwamFcx5YQdCdJxUQ1WdTl6ANclt5xba5zLGDv5Bsur7qz8AD7BevaKxITwpgDeU0u8My3AIibW9ywA==", + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.11.tgz", + "integrity": "sha512-8LlHHE/yL/zVJZHAX3pbKaCjZKmBIO6aJY1mkVh4RMSEu/2WRZ4Ysvv3kKXJ9M8RJLBHdnk1/dUQFdod1Dt7Dw==", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.4", + "@formatjs/ecma402-abstract": "2.3.1", "tslib": "2" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.8.tgz", - "integrity": "sha512-I+WDNWWJFZie+jkfkiK5Mp4hEDyRSEvmyfYadflOno/mmKJKcB17fEpEH0oJu/OWhhCJ8kJBDz2YMd/6cDl7Mg==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.9.tgz", + "integrity": "sha512-8zkGu/sv5euxbjfZ/xmklqLyDGQSxsLqg8XOq88JW3cmJtzhCP8EtSJXlaKZnVO4beEaoiT9wj4eIoCQ9smwxA==", "dependencies": { "tslib": "2" } @@ -849,9 +850,9 @@ "dev": true }, "node_modules/@iconify/react": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@iconify/react/-/react-5.0.2.tgz", - "integrity": "sha512-wtmstbYlEbo4NDxFxBJkhkf9gJBDqMGr7FaqLrAUMneRV3Z+fVHLJjOhWbkAF8xDQNFC/wcTYdrWo1lnRhmagQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@iconify/react/-/react-5.1.0.tgz", + "integrity": "sha512-vj2wzalywy23DR37AnsogMPIkDa1nKEqITjxpH4z44tiLV869Mh7VyydD4/t0yJLEs9tsxlrPWtXvMOe1Lcd5g==", "dependencies": { "@iconify/types": "^2.0.0" }, @@ -1609,9 +1610,9 @@ } }, "node_modules/@next/bundle-analyzer": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-15.0.3.tgz", - "integrity": "sha512-x7ZNvpoQPO0C5ZG//qVp21Qs3v6+C8LBJmdu9DKj4/NmjlnwoQ7dqRZ/nKZcwVhkFT7BHf+Qd5FaeHq9IDJvDQ==", + "version": "15.0.4", + "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-15.0.4.tgz", + "integrity": "sha512-0If3/mxqUWYC0lAdV5cChGA1Xs1BENjaLyJkdqpI2df86HqprcDZagiB2IU1xc5ph7xZHRdi5mT2cY7VkyibTQ==", "dev": true, "dependencies": { "webpack-bundle-analyzer": "4.10.1" @@ -3372,9 +3373,9 @@ } }, "node_modules/@tanstack/react-virtual": { - "version": "3.10.9", - "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.10.9.tgz", - "integrity": "sha512-OXO2uBjFqA4Ibr2O3y0YMnkrRWGVNqcvHQXmGvMu6IK8chZl3PrDxFXdGZ2iZkSrKh3/qUYoFqYe+Rx23RoU0g==", + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.11.1.tgz", + "integrity": "sha512-orn2QNe5tF6SqjucHJ6cKTKcRDe3GG7bcYqPNn72Yejj7noECdzgAyRfGt2pGDPemhYim3d1HIR/dgruCnLfUA==", "dependencies": { "@tanstack/virtual-core": "3.10.9" }, @@ -3383,8 +3384,8 @@ "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/@tanstack/table-core": { @@ -3549,9 +3550,9 @@ } }, "node_modules/@types/geojson": { - "version": "7946.0.14", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", - "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", + "version": "7946.0.15", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.15.tgz", + "integrity": "sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA==", "dev": true }, "node_modules/@types/google.maps": { @@ -3662,9 +3663,9 @@ "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, "node_modules/@types/prop-types": { - "version": "15.7.13", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==" }, "node_modules/@types/qs": { "version": "6.9.17", @@ -3672,9 +3673,9 @@ "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==" }, "node_modules/@types/react": { - "version": "18.3.13", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.13.tgz", - "integrity": "sha512-ii/gswMmOievxAJed4PAHT949bpYjPKXvXo1v6cRB/kqc2ZR4n+SgyCyvyc5Fec5ez8VnUumI1Vk7j6fRyRogg==", + "version": "18.3.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.14.tgz", + "integrity": "sha512-NzahNKvjNhVjuPBQ+2G7WlxstQ+47kXZNHlUvFakDViuIEfGY926GqhMueQFZ7woG+sPiQKlF36XfrIUVSUfFg==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -3873,9 +3874,9 @@ } }, "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", + "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==" }, "node_modules/@vercel/analytics": { "version": "1.4.1", @@ -4391,15 +4392,14 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -4408,6 +4408,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -4425,9 +4437,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001686", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001686.tgz", - "integrity": "sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==", + "version": "1.0.30001687", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", + "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", "funding": [ { "type": "opencollective", @@ -5280,9 +5292,9 @@ "dev": true }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dependencies": { "ms": "^2.1.3" }, @@ -5295,6 +5307,11 @@ } } }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, "node_modules/decimal.js-light": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", @@ -5515,6 +5532,19 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dunder-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", + "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -5672,12 +5702,9 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "engines": { "node": ">= 0.4" } @@ -6619,9 +6646,9 @@ } }, "node_modules/framer-motion": { - "version": "11.13.1", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.13.1.tgz", - "integrity": "sha512-F40tpGTHByhn9h3zdBQPcEro+pSLtzARcocbNqAyfBI+u9S+KZuHH/7O9+z+GEkoF3eqFxfvVw0eBDytohwqmQ==", + "version": "11.13.3", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.13.3.tgz", + "integrity": "sha512-3ZSNuYpDFeNxqVKUyYipOm5A1fXSbMje1XIfEWxKTJ4ughl5FEjvkp6gKmFHLjzwijCVU/PjsMNlTMVCmi+Twg==", "dependencies": { "motion-dom": "^11.13.0", "motion-utils": "^11.13.0", @@ -6707,15 +6734,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.5.tgz", + "integrity": "sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -7034,11 +7064,12 @@ } }, "node_modules/has-proto": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.1.0.tgz", - "integrity": "sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, "dependencies": { - "call-bind": "^1.0.7" + "dunder-proto": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -7717,13 +7748,13 @@ "integrity": "sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==" }, "node_modules/intl-messageformat": { - "version": "10.7.7", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.7.tgz", - "integrity": "sha512-F134jIoeYMro/3I0h08D0Yt4N9o9pjddU/4IIxMMURqbAtI2wu70X8hvG1V48W49zXHXv3RKSF/po+0fDfsGjA==", + "version": "10.7.10", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.10.tgz", + "integrity": "sha512-hp7iejCBiJdW3zmOe18FdlJu8U/JsADSDiBPQhfdSeI8B9POtvPRvPh3nMlvhYayGMKLv6maldhR7y3Pf1vkpw==", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.4", - "@formatjs/fast-memoize": "2.2.3", - "@formatjs/icu-messageformat-parser": "2.9.4", + "@formatjs/ecma402-abstract": "2.3.1", + "@formatjs/fast-memoize": "2.2.5", + "@formatjs/icu-messageformat-parser": "2.9.7", "tslib": "2" } }, @@ -8454,9 +8485,9 @@ } }, "node_modules/katex": { - "version": "0.16.11", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.11.tgz", - "integrity": "sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ==", + "version": "0.16.15", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.15.tgz", + "integrity": "sha512-yE9YJIEAk2aZ+FL/G8r+UGw0CTUzEA8ZFy6E+8tc3spHUKq3qBnzCkI1CQwGoI9atJhVyFPEypQsTY7mJ1Pi9w==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -10381,9 +10412,9 @@ } }, "node_modules/next-intl": { - "version": "3.25.3", - "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.25.3.tgz", - "integrity": "sha512-3VQ+OZdU9Z2enx5uWLYfmd/eb/gZN6QIfj59ROE/R+MTSD7ZAOPsGFnKqj5wwqm4EISGviYenkSuxypyYnhomA==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.26.0.tgz", + "integrity": "sha512-gkamnHIANQzeW8xpTGRxd0xiOCztQhY8GDp79fgdlw0GioqrjTEfSWLhHkgaAtvHRbuh/ByJdwiEY5eNK9bUSQ==", "funding": [ { "type": "individual", @@ -10393,11 +10424,11 @@ "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", "negotiator": "^1.0.0", - "use-intl": "^3.25.3" + "use-intl": "^3.26.0" }, "peerDependencies": { "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" } }, "node_modules/next-mdx-remote": { @@ -11479,9 +11510,9 @@ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/react-hook-form": { - "version": "7.53.2", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.2.tgz", - "integrity": "sha512-YVel6fW5sOeedd1524pltpHX+jgU2u3DSDtXEaBORNdqiNrsX/nUI/iGXONegttg0mJVnfrIkiV0cmTU6Oo2xw==", + "version": "7.54.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.54.0.tgz", + "integrity": "sha512-PS05+UQy/IdSbJNojBypxAo9wllhHgGmyr8/dyGQcPoiMf3e7Dfb9PWYVRco55bLbxH9S+1yDDJeTdlYCSxO3A==", "engines": { "node": ">=18.0.0" }, @@ -11819,18 +11850,19 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" }, "node_modules/reflect.getprototypeof": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.7.tgz", - "integrity": "sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz", + "integrity": "sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", + "dunder-proto": "^1.0.0", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "which-builtin-type": "^1.1.4" + "gopd": "^1.2.0", + "which-builtin-type": "^1.2.0" }, "engines": { "node": ">= 0.4" @@ -12540,9 +12572,9 @@ } }, "node_modules/sonner": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.7.0.tgz", - "integrity": "sha512-W6dH7m5MujEPyug3lpI2l3TC3Pp1+LTgK0Efg+IHDrBbtEjyCmCHHo6yfNBOsf1tFZ6zf+jceWwB38baC8yO9g==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.7.1.tgz", + "integrity": "sha512-b6LHBfH32SoVasRFECrdY8p8s7hXPDn3OHUFbZZbiB1ctLS9Gdh6rpX2dVrpQA0kiL5jcRzDDldwwLkSKk3+QQ==", "peerDependencies": { "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" @@ -13762,23 +13794,23 @@ } }, "node_modules/use-intl": { - "version": "3.25.3", - "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.25.3.tgz", - "integrity": "sha512-zF+GHRx7auT1qpmiPMN+RnzSad6W5ZjhOpgC5Li/TByqCkMs4SP3xcd8C0jWxT8YI8Ucl518bnkS+gvKIvrXjw==", + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.26.0.tgz", + "integrity": "sha512-HGXmpjGlbEv1uFZPfm557LK8p/hv0pKF9UwnrJeHUTxQx6bUGzMgpmPRLCVY3zkr7hfjy4LPwQJfk4Fhnn+dIg==", "dependencies": { "@formatjs/fast-memoize": "^2.2.0", "intl-messageformat": "^10.5.14" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0" } }, "node_modules/use-isomorphic-layout-effect": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", - "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.0.tgz", + "integrity": "sha512-q6ayo8DWoPZT0VdG4u3D3uxcgONP3Mevx2i2b0434cwWBoL+aelL1DzkXI6w3PhTZzUeR2kaVlZn70iCiseP6w==", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -13816,11 +13848,11 @@ } }, "node_modules/use-sync-external-store": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", - "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", + "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/util-deprecate": { diff --git a/service/http-config/http-base-service.ts b/service/http-config/http-base-service.ts index d1f22381..3fb234c7 100644 --- a/service/http-config/http-base-service.ts +++ b/service/http-config/http-base-service.ts @@ -4,53 +4,27 @@ import axios from "axios"; import Cookies from "js-cookie"; import qs from "qs"; -// export async function httpPost(pathUrl: any, headers: any, data?: any) { -// const response = await axiosBaseInstance -// .post(pathUrl, data, { headers }) -// .catch(function (error: any) { -// console.log(error); -// return error.response; -// }); -// console.log("Response base svc : ", response); -// if (response?.status == 200 || response?.status == 201) { -// return { -// error: false, -// message: "success", -// data: response?.data, -// }; -// } else { -// return { -// error: true, -// message: response?.data?.message || response?.data || null, -// data: null, -// }; -// } -// } - -const baseURL = "https://netidhub.com/api/"; -const tokenAuth = Cookies.get("access_token") - ? Cookies.get("access_token") - : null; - -export async function postAPI(url: any, data: any) { - const headers = { - Authorization: `Bearer ${tokenAuth}`, - }; - const response = await axiosInstance - .post(url, qs.stringify(data), { headers }) - .catch((error) => error.response); - if (response?.status > 300) { - return { - error: true, - message: response?.data.error_description, - data: null, - }; - } - return { - error: false, - message: "success", - data: response?.data, - }; +export async function httpPost(pathUrl: any, headers: any, data?: any) { + const response = await axiosBaseInstance + .post(pathUrl, data, { headers }) + .catch(function (error: any) { + console.log(error); + return error.response; + }); + console.log("Response base svc : ", response); + if (response?.status == 200 || response?.status == 201) { + return { + error: false, + message: "success", + data: response?.data, + }; + } else { + return { + error: true, + message: response?.data?.message || response?.data || null, + data: null, + }; + } } export async function httpGet(pathUrl: any, headers: any) { diff --git a/service/ppid-categories-services.ts b/service/ppid-categories-services.ts deleted file mode 100644 index bf7ceac7..00000000 --- a/service/ppid-categories-services.ts +++ /dev/null @@ -1,143 +0,0 @@ -import { httpGet, httpPost } from "./http-config/http-base-service"; -import { - httpDeleteInterceptor, - httpGetInterceptor, - httpPostInterceptor, - httpPutInterceptor, -} from "./http-config/http-interceptor-service"; - -export async function getPublicListPpidData(categoryId: number) { - const headers = { - "content-type": "application/json", - }; - return await httpGet(`/ppid-datas?categoryId=${categoryId}`, headers); -} - -export async function getListCategories(size: number, page: number) { - return await httpGetInterceptor( - `/ppid-data-categories?page=${page}&size=${size}&isOnlyTop=true` - ); -} - -export async function updateCategoryPosition(category: any) { - const pathUrl = `/ppid-data-categories/position`; - return await httpPostInterceptor(pathUrl, category); -} - -export async function getListSubCategories( - size: number, - page: number, - parentId: number -) { - const headers = { - "content-type": "application/json", - }; - return await httpGetInterceptor( - `/ppid-data-categories?page=${page}&size=${size}&parentId=${parentId}` - ); -} - -export async function getPublicListCategoriesByParentId( - id: any, - limit: number, - levelGroup?: string -) { - const headers = { - "content-type": "application/json", - }; - return await httpGet( - `/ppid-data-categories?parentId=${id}&isPpidDataIncluded=true&sort=asc&sortBy=position&limit=${limit}${ - levelGroup ? `&levelGroup=${levelGroup}` : "" - }`, - headers - ); -} - -export async function getListCategoriesByParentId( - id: any, - limit: number, - levelGroup?: string -) { - const headers = { - "content-type": "application/json", - }; - return await httpGetInterceptor( - `/ppid-data-categories?parentId=${id}&isPpidDataIncluded=true&sort=asc&sortBy=position&limit=${limit}${ - levelGroup ? `&levelGroup=${levelGroup}` : "" - }` - ); -} - -export async function getListCategoriesById(id: any) { - const headers = { - "content-type": "application/json", - }; - return await httpGetInterceptor(`/ppid-data-categories/${id}`); -} - -export async function getListCategoriesBySlug(slug: any) { - const headers = { - "content-type": "application/json", - }; - return await httpGetInterceptor(`/ppid-data-categories/slug/${slug}`); -} - -export async function getPublicListCategoriesBySlug(slug: any) { - const headers = { - "content-type": "application/json", - }; - return await httpGet(`/ppid-data-categories/slug/${slug}`, headers); -} - -export async function getList(categoryId: number) { - const headers = { - "content-type": "application/json", - }; - return await httpGetInterceptor(`/ppid-datas?categoryId=1`); -} - -export async function createArticle(data: any) { - const pathUrl = `/articles`; - return await httpPostInterceptor(pathUrl, data); -} - -export async function createPublicCategory(request: any) { - const pathUrl = `/ppid-data-categories`; - return await httpPostInterceptor(pathUrl, request); -} - -export async function uploadPublicThumbnail(id: number, data: any) { - const headers = { - "Content-Type": "multipart/form-data", - }; - const pathUrl = `ppid-data-categories/thumbnail/${id}`; - return await httpPost(pathUrl, headers, data); -} - -export async function getPublicCategoryById(id: any) { - const headers = { - "content-type": "application/json", - }; - return await httpGetInterceptor(`/ppid-data-categories/${id}`); -} - -export async function updatePublicCategory(id: any, request: any) { - const headers = { - "content-type": "application/json", - }; - return await httpPutInterceptor(`/ppid-data-categories/${id}`, request); -} - -export async function deletePublicCategory(id: any) { - const headers = { - "content-type": "application/json", - }; - return await httpDeleteInterceptor(`/ppid-data-categories/${id}`); -} - -export async function getParentCategories() { - const headers = { - "content-type": "application/json", - }; - return await httpGet(`ppid-data-categories?isOnlyTop=true`, headers); -}