pull main
This commit is contained in:
commit
426a9e5c39
1
.env
1
.env
|
|
@ -1,2 +1,3 @@
|
|||
NEXT_PUBLIC_API=https://netidhub.com/api
|
||||
NEXT_PUBLIC=https://netidhub.com
|
||||
NEXT_PUBLIC_TINYMCE_API_KEY=bhteuja26yz5p0aubxry9b95hs33amgn65kjv5km0fd5iuev
|
||||
|
|
@ -11,10 +11,7 @@ RUN npm install -g pnpm
|
|||
WORKDIR /usr/src/app
|
||||
|
||||
# Menyalin file penting terlebih dahulu untuk caching
|
||||
COPY package.json pnpm-lock.yaml ./
|
||||
|
||||
# Menyalin direktori ckeditor5 jika diperlukan
|
||||
COPY vendor/ckeditor5 ./vendor/ckeditor5
|
||||
COPY package.json ./
|
||||
|
||||
# Install dependencies
|
||||
RUN pnpm install
|
||||
|
|
|
|||
|
|
@ -240,7 +240,7 @@ export default function CreateCategoryModal() {
|
|||
<Dialog open={isOpen} onOpenChange={setIsOpen}>
|
||||
<DialogTrigger asChild>
|
||||
<Button color="primary" size="md">
|
||||
{t("add-category")}
|
||||
{t("add-category", { defaultValue: "Add Category" })}
|
||||
</Button>
|
||||
</DialogTrigger>
|
||||
<DialogContent
|
||||
|
|
@ -248,7 +248,7 @@ export default function CreateCategoryModal() {
|
|||
className="sm:h-[300px] md:h-[300px] lg:h-[500px] overflow-y-auto"
|
||||
>
|
||||
<DialogHeader>
|
||||
<DialogTitle> {t("add-category")}</DialogTitle>
|
||||
<DialogTitle> {t("add-category", { defaultValue: "Add Category" })}</DialogTitle>
|
||||
</DialogHeader>
|
||||
<Form {...form}>
|
||||
<form
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ const AdminCategoryTable = () => {
|
|||
return (
|
||||
<div className="w-full overflow-x-auto bg-white p-4 rounded-sm space-y-3">
|
||||
<div className="flex justify-between mb-10 items-center">
|
||||
<p className="text-xl font-medium text-default-900">{t("category")}</p>
|
||||
<p className="text-xl font-medium text-default-900">{t("category", { defaultValue: "Category" })}</p>
|
||||
<CreateCategoryModal />
|
||||
</div>
|
||||
<div className="flex items-end justify-end">
|
||||
|
|
|
|||
|
|
@ -121,12 +121,12 @@ export default function CreateFAQModal() {
|
|||
<Dialog open={isOpen} onOpenChange={setIsOpen}>
|
||||
<DialogTrigger asChild>
|
||||
<Button color="primary" size="md">
|
||||
{t("add")} FAQ
|
||||
{t("add", { defaultValue: "Add" })} FAQ
|
||||
</Button>
|
||||
</DialogTrigger>
|
||||
<DialogContent size="md">
|
||||
<DialogHeader>
|
||||
<DialogTitle>{t("add")} FAQ</DialogTitle>
|
||||
<DialogTitle>{t("add", { defaultValue: "Add" })} FAQ</DialogTitle>
|
||||
</DialogHeader>
|
||||
<Form {...form}>
|
||||
<form
|
||||
|
|
|
|||
|
|
@ -111,12 +111,12 @@ export default function CreateFAQModal() {
|
|||
<Dialog open={isOpen} onOpenChange={setIsOpen}>
|
||||
<DialogTrigger asChild>
|
||||
<Button color="primary" size="md">
|
||||
{t("add")} Feedback
|
||||
{t("add", { defaultValue: "Add" })} Feedback
|
||||
</Button>
|
||||
</DialogTrigger>
|
||||
<DialogContent size="md">
|
||||
<DialogHeader>
|
||||
<DialogTitle>{t("add")} Feedback</DialogTitle>
|
||||
<DialogTitle>{t("add", { defaultValue: "Add" })} Feedback</DialogTitle>
|
||||
</DialogHeader>
|
||||
<Form {...form}>
|
||||
<form
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import {
|
|||
} from "@/components/ui/form";
|
||||
import { close, error, loading } from "@/config/swal";
|
||||
import { Input } from "@/components/ui/input";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import { useEffect, useRef } from "react";
|
||||
import { getPrivacy, savePrivacy } from "@/service/settings/settings";
|
||||
import { useToast } from "@/components/ui/use-toast";
|
||||
|
|
@ -104,16 +104,6 @@ export default function AdminPrivacyPolicy() {
|
|||
<FormItem>
|
||||
<FormLabel>Konten</FormLabel>
|
||||
<FormControl>
|
||||
{/* <JoditEditor
|
||||
ref={editor}
|
||||
value={field.value}
|
||||
config={{
|
||||
height: 400, // Tinggi editor dalam piksel
|
||||
}}
|
||||
className="dark:text-black"
|
||||
onChange={field.onChange}
|
||||
|
||||
/> */}
|
||||
<CustomEditor
|
||||
onChange={field.onChange}
|
||||
initialData={field.value}
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
const MySwal = withReactContent(Swal);
|
||||
|
|
|
|||
|
|
@ -109,12 +109,12 @@ export default function CreateTagModal() {
|
|||
<Dialog open={isOpen} onOpenChange={setIsOpen}>
|
||||
<DialogTrigger asChild>
|
||||
<Button color="primary" size="md">
|
||||
{t("add-tags")}
|
||||
{t("add-tags", { defaultValue: "Add Tags" })}
|
||||
</Button>
|
||||
</DialogTrigger>
|
||||
<DialogContent size="md">
|
||||
<DialogHeader>
|
||||
<DialogTitle> {t("add-tags")}</DialogTitle>
|
||||
<DialogTitle> {t("add-tags", { defaultValue: "Add Tags" })}</DialogTitle>
|
||||
</DialogHeader>
|
||||
<Form {...form}>
|
||||
<form
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ const AdminTagTable = () => {
|
|||
return (
|
||||
<div className="w-full overflow-x-auto bg-white p-4 rounded-sm space-y-3">
|
||||
<div className="flex justify-between mb-10 items-center">
|
||||
<p className="text-xl font-medium text-default-900">{t("tags")}</p>
|
||||
<p className="text-xl font-medium text-default-900">{t("tags", { defaultValue: "Tags" })}</p>
|
||||
<CreateFAQModal />
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ const t = useTranslations("CalendarApp")
|
|||
className="dark:bg-background dark:text-foreground"
|
||||
>
|
||||
<Plus className="w-4 h-4 me-1" />
|
||||
{t("addEvent")}
|
||||
{t("addEvent", { defaultValue: "Add Event" })}
|
||||
</Button>
|
||||
</CardHeader>
|
||||
<div className="px-3">
|
||||
|
|
@ -160,14 +160,14 @@ const t = useTranslations("CalendarApp")
|
|||
|
||||
<div id="external-events" className=" space-y-1.5 mt-6 px-4">
|
||||
<p className="text-sm font-medium text-default-700 mb-3">
|
||||
{t("shortDesc")}
|
||||
{t("shortDesc", { defaultValue: "Short Desc" })}
|
||||
</p>
|
||||
{dragEvents.map((event) => (
|
||||
<ExternalDraggingevent key={event.id} event={event} />
|
||||
))}
|
||||
</div>
|
||||
<div className="py-4 text-default-800 font-semibold text-xs uppercase mt-4 mb-2 px-4">
|
||||
{t("filter")}
|
||||
{t("filter", { defaultValue: "Filter" })}
|
||||
</div>
|
||||
<ul className="space-y-3 px-4">
|
||||
<li className=" flex gap-3">
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
import { faker } from "@faker-js/faker";
|
||||
|
||||
const date = new Date();
|
||||
const prevDay = new Date().getDate() - 1;
|
||||
const nextDay = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
|
||||
|
|
@ -10,7 +8,7 @@ const nextMonth = date.getMonth() === 11 ? new Date(date.getFullYear() + 1, 0, 1
|
|||
const prevMonth = date.getMonth() === 11 ? new Date(date.getFullYear() - 1, 0, 1) : new Date(date.getFullYear(), date.getMonth() - 1, 1)
|
||||
export const calendarEvents = [
|
||||
{
|
||||
id: faker.string.uuid() ,
|
||||
id: "calendar-all-day-event-001",
|
||||
title: "All Day Event",
|
||||
start: date,
|
||||
end: nextDay,
|
||||
|
|
@ -21,7 +19,7 @@ export const calendarEvents = [
|
|||
},
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "calendar-meeting-client-002",
|
||||
title: "Meeting With Client",
|
||||
start: new Date(date.getFullYear(), date.getMonth() + 1, -11),
|
||||
end: new Date(date.getFullYear(), date.getMonth() + 1, -10),
|
||||
|
|
@ -32,7 +30,7 @@ export const calendarEvents = [
|
|||
},
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "calendar-lunch-003",
|
||||
title: "Lunch",
|
||||
allDay: true,
|
||||
start: new Date(date.getFullYear(), date.getMonth() + 1, -9),
|
||||
|
|
@ -43,7 +41,7 @@ export const calendarEvents = [
|
|||
},
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "calendar-birthday-party-004",
|
||||
title: "Birthday Party",
|
||||
start: new Date(date.getFullYear(), date.getMonth() + 1, -11),
|
||||
end: new Date(date.getFullYear(), date.getMonth() + 1, -10),
|
||||
|
|
@ -54,7 +52,7 @@ export const calendarEvents = [
|
|||
},
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "calendar-birthday-party-005",
|
||||
title: "Birthday Party",
|
||||
start: new Date(date.getFullYear(), date.getMonth() + 1, -13),
|
||||
end: new Date(date.getFullYear(), date.getMonth() + 1, -12),
|
||||
|
|
@ -65,7 +63,7 @@ export const calendarEvents = [
|
|||
},
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "calendar-monthly-meeting-006",
|
||||
title: "Monthly Meeting",
|
||||
start: nextMonth,
|
||||
end: nextMonth,
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ import { Input } from "@/components/ui/input";
|
|||
import { Icon } from "@/components/ui/icon";
|
||||
import { Annoyed, SendHorizontal } from "lucide-react";
|
||||
|
||||
import data from "@emoji-mart/data";
|
||||
import Picker from "@emoji-mart/react";
|
||||
// import data from "@emoji-mart/data";
|
||||
// import Picker from "@emoji-mart/react";
|
||||
import {
|
||||
Tooltip,
|
||||
TooltipArrow,
|
||||
|
|
@ -81,11 +81,11 @@ const MessageFooter = () => {
|
|||
</Button>
|
||||
</PopoverTrigger>
|
||||
<PopoverContent side="top" align="start" className="w-fit p-0 shadow-none border-none bottom-0 rtl:left-5 ltr:-left-[110px]">
|
||||
<Picker
|
||||
{/* <Picker
|
||||
data={data}
|
||||
onEmojiSelect={handleSelectEmoji}
|
||||
theme={mode === "dark" ? "dark" : "light"}
|
||||
/>
|
||||
/> */}
|
||||
</PopoverContent>
|
||||
</Popover>
|
||||
|
||||
|
|
|
|||
|
|
@ -15,10 +15,10 @@ const Blank = () => {
|
|||
<div className="text-center flex flex-col items-center">
|
||||
<Icon icon="uiw:message" className="text-7xl text-default-300" />
|
||||
<div className="mt-4 text-lg font-medium text-default-500">
|
||||
{t("blankMessageTitle")}
|
||||
{t("blankMessageTitle", { defaultValue: "Blank Message Title" })}
|
||||
</div>
|
||||
<p className="mt-1 text-sm font-medium text-default-400">
|
||||
{t("blankMessageDesc")}
|
||||
{t("blankMessageDesc", { defaultValue: "Blank Message Desc" })}
|
||||
</p>
|
||||
{isLg && (
|
||||
<Button className="mt-2" onClick={() => setChatConfig({ ...chatConfig, isOpen: true })}>
|
||||
|
|
|
|||
|
|
@ -61,12 +61,12 @@ const Compose = () => {
|
|||
className="dark:bg-background dark:ring-background dark:text-foreground"
|
||||
>
|
||||
<Plus className="w-6 h-6 me-1.5" />
|
||||
{t("compose")}
|
||||
{t("compose", { defaultValue: "Compose" })}
|
||||
</Button>
|
||||
|
||||
<DialogContent>
|
||||
<DialogHeader className="mb-6">
|
||||
<DialogTitle> {t("composeEmail")}</DialogTitle>
|
||||
<DialogTitle> {t("composeEmail", { defaultValue: "Compose Email" })}</DialogTitle>
|
||||
</DialogHeader>
|
||||
|
||||
<form onSubmit={handleSubmit(onSubmit)} className="space-y-3.5">
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ const AddBoard = () => {
|
|||
<DialogTrigger asChild>
|
||||
<Button>
|
||||
<Plus className="h-4 w-4 me-1" />
|
||||
{t("addBoard")}
|
||||
{t("addBoard", { defaultValue: "Add Board" })}
|
||||
</Button>
|
||||
</DialogTrigger>
|
||||
<DialogContent className="sm:max-w-[425px]">
|
||||
|
|
|
|||
|
|
@ -1,23 +1,21 @@
|
|||
import { faker } from "@faker-js/faker";
|
||||
|
||||
export const defaultCols = [
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "col-todo-001",
|
||||
title: "Todo",
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "col-wip-002",
|
||||
title: "Work in progress",
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "col-done-003",
|
||||
title: "Done",
|
||||
},
|
||||
];
|
||||
|
||||
export const defaultTasks = [
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "task-crm-dashboard-001",
|
||||
columnId: defaultCols[0].id,
|
||||
title: "CRM Dashboard ",
|
||||
projectLogo: "/images/project/p-2.png",
|
||||
|
|
@ -42,7 +40,7 @@ export const defaultTasks = [
|
|||
remainingDays: 3
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "task-business-dashboard-002",
|
||||
columnId: defaultCols[0].id,
|
||||
title: "Business Dashboard ",
|
||||
projectLogo: "/images/project/p-2.png",
|
||||
|
|
@ -67,7 +65,7 @@ export const defaultTasks = [
|
|||
remainingDays: 3
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "task-management-dashboard-003",
|
||||
columnId: defaultCols[1].id,
|
||||
title: "Management Dashboard ",
|
||||
projectLogo: "/images/project/p-2.png",
|
||||
|
|
@ -92,7 +90,7 @@ export const defaultTasks = [
|
|||
remainingDays: 3
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "task-analytics-dashboard-004",
|
||||
columnId: defaultCols[1].id,
|
||||
title: "Analytics Dashboard ",
|
||||
projectLogo: "/images/project/p-2.png",
|
||||
|
|
@ -118,7 +116,7 @@ export const defaultTasks = [
|
|||
},
|
||||
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "task-marketing-dashboard-005",
|
||||
columnId: defaultCols[1].id,
|
||||
title: "Marketing Dashboard ",
|
||||
projectLogo: "/images/project/p-2.png",
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@ const KanBanApp = ({ defaultCols, defaultTasks }: { defaultCols: Column[], defau
|
|||
<div className="">
|
||||
<div className="flex gap-2 mb-5">
|
||||
<div className="flex-1 font-medium lg:text-2xl text-xl capitalize text-default-900">
|
||||
{t("title")}
|
||||
{t("title", { defaultValue: "Title" })}
|
||||
</div>
|
||||
<div className="flex-none">
|
||||
<AddBoard />
|
||||
|
|
|
|||
|
|
@ -1,6 +1,3 @@
|
|||
import { faker } from "@faker-js/faker";
|
||||
|
||||
|
||||
export const defaultProjects = [
|
||||
{
|
||||
id: "c06d48bf-7f35-4789-b71e-d80fee5b430f",
|
||||
|
|
@ -27,7 +24,7 @@ export const defaultProjects = [
|
|||
remainingDays: 3
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "project-business-dashboard-002",
|
||||
title: "Business Dashboard ",
|
||||
projectLogo: "/images/project/p-2.png",
|
||||
desc: "Amet minim mollit non deserunt ullamco est sit aliqua dolor do amet sint.",
|
||||
|
|
@ -51,7 +48,7 @@ export const defaultProjects = [
|
|||
remainingDays: 3
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "project-management-dashboard-003",
|
||||
title: "Management Dashboard ",
|
||||
projectLogo: "/images/project/p-2.png",
|
||||
desc: "Amet minim mollit non deserunt ullamco est sit aliqua dolor do amet sint.",
|
||||
|
|
@ -75,7 +72,7 @@ export const defaultProjects = [
|
|||
remainingDays: 3
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "project-analytics-dashboard-004",
|
||||
title: "Analytics Dashboard ",
|
||||
projectLogo: "/images/project/p-2.png",
|
||||
desc: "Amet minim mollit non deserunt ullamco est sit aliqua dolor do amet sint.",
|
||||
|
|
@ -100,7 +97,7 @@ export const defaultProjects = [
|
|||
},
|
||||
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "project-marketing-dashboard-005",
|
||||
title: "Marketing Dashboard ",
|
||||
projectLogo: "/images/project/p-2.png",
|
||||
desc: "Amet minim mollit non deserunt ullamco est sit aliqua dolor do amet sint.",
|
||||
|
|
|
|||
|
|
@ -72,12 +72,12 @@ const CreateTodo = () => {
|
|||
<DialogTrigger asChild>
|
||||
<Button fullWidth size="lg" className="dark:bg-background dark:text-foreground">
|
||||
<Plus className="w-6 h-6 me-1.5" />
|
||||
{t("addTask")}
|
||||
{t("addTask", { defaultValue: "Add Task" })}
|
||||
</Button>
|
||||
</DialogTrigger>
|
||||
<DialogContent>
|
||||
<DialogHeader className="mb-4">
|
||||
<DialogTitle> {t("addTask")}</DialogTitle>
|
||||
<DialogTitle> {t("addTask", { defaultValue: "Add Task" })}</DialogTitle>
|
||||
</DialogHeader>
|
||||
<Form {...form}>
|
||||
<form onSubmit={form.handleSubmit(onSubmit)} className="space-y-4">
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
import { faker } from "@faker-js/faker";
|
||||
|
||||
export const todos = [
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "todo-001-laboriosam",
|
||||
image: [
|
||||
{
|
||||
image: "/images/avatar/avatar-4.png",
|
||||
|
|
@ -32,7 +30,7 @@ export const todos = [
|
|||
]
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "todo-002-amet-minim",
|
||||
image: [
|
||||
{
|
||||
image: "/images/avatar/avatar-2.png",
|
||||
|
|
@ -53,7 +51,7 @@ export const todos = [
|
|||
]
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "todo-003-amet-minim-2",
|
||||
image: [
|
||||
{
|
||||
image: "/images/avatar/avatar-4.png",
|
||||
|
|
@ -83,7 +81,7 @@ export const todos = [
|
|||
]
|
||||
},
|
||||
{
|
||||
id:faker.string.uuid(),
|
||||
id: "todo-004-illo-expedita",
|
||||
image: [
|
||||
{
|
||||
image: "/images/avatar/avatar-3.png",
|
||||
|
|
@ -117,7 +115,7 @@ export const todos = [
|
|||
]
|
||||
},
|
||||
{
|
||||
id:faker.string.uuid(),
|
||||
id: "todo-005-illo-expedita-2",
|
||||
image: [
|
||||
{
|
||||
image: "/images/avatar/avatar-5.png",
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ const t = useTranslations("TodoApp");
|
|||
}
|
||||
]} />
|
||||
<div className="py-4 px-5 text-default-800 font-semibold text-xs uppercase">
|
||||
{t("todos")}
|
||||
{t("todos", { defaultValue: "Todos" })}
|
||||
</div>
|
||||
<Nav dotStyle links={[
|
||||
{
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ const ChangeLogPage = () => {
|
|||
<div className="lg:col-span-8 col-span-12">
|
||||
<Card>
|
||||
<CardHeader>
|
||||
<CardTitle>{t("version")}</CardTitle>
|
||||
<CardTitle>{t("version", { defaultValue: "Version" })}</CardTitle>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<Badge color="primary" className="dark:text-white">New</Badge>
|
||||
|
|
@ -149,12 +149,12 @@ const ChangeLogPage = () => {
|
|||
<Card>
|
||||
<CardHeader>
|
||||
<CardTitle>
|
||||
{t("changelog")}
|
||||
{t("changelog", { defaultValue: "Changelog" })}
|
||||
</CardTitle>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<h5 className="text-xs font-medium">
|
||||
{t("versionHistory")}
|
||||
{t("versionHistory", { defaultValue: "Version History" })}
|
||||
</h5>
|
||||
<ul className="space-y-3 mt-6 divide-y divide-default-100 dark:divide-default-300">
|
||||
{items.map((item, i) => (
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ const BarsWithMarkes = ({ height = 350 }) => {
|
|||
return (
|
||||
<Chart
|
||||
options={options}
|
||||
series={series}
|
||||
series={series as any}
|
||||
type="bar"
|
||||
height={height}
|
||||
width={"100%"}
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ const ColumnMarker = ({ height = 300 }) => {
|
|||
return (
|
||||
<Chart
|
||||
options={options}
|
||||
series={series}
|
||||
series={series as any}
|
||||
type="bar"
|
||||
height={height}
|
||||
width={"100%"}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import { useTheme } from "next-themes";
|
|||
import { hexToRGB } from "@/lib/utils";
|
||||
|
||||
import { Bar } from "react-chartjs-2";
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
|
|
@ -56,21 +56,21 @@ const DelayChart = ({ height = 350 }) => {
|
|||
datasets: [
|
||||
{
|
||||
label: "Dataset 1",
|
||||
data: labels.map(() => faker.number.int({ min: -100, max: 100 })),
|
||||
data: labels.map(() => 67),
|
||||
borderColor: hexToRGB(colors.danger, 0.5),
|
||||
backgroundColor: hexToRGB(colors.danger, 0.5),
|
||||
borderSkipped: "bottom",
|
||||
},
|
||||
{
|
||||
label: "Dataset 1",
|
||||
data: labels.map(() => faker.number.int({ min: -100, max: 100 })),
|
||||
data: labels.map(() => -45),
|
||||
borderColor: hexToRGB(colors.info, 0.5),
|
||||
backgroundColor: hexToRGB(colors.info, 0.5),
|
||||
borderSkipped: "bottom",
|
||||
},
|
||||
{
|
||||
label: "Dataset 3",
|
||||
data: labels.map(() => faker.number.int({ min: -100, max: 100 })),
|
||||
data: labels.map(() => 45),
|
||||
borderColor: hexToRGB(colors.success, 0.5),
|
||||
backgroundColor: hexToRGB(colors.success, 0.5),
|
||||
borderSkipped: "bottom",
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import { useTheme } from "next-themes";
|
|||
import { hexToRGB } from "@/lib/utils";
|
||||
|
||||
import { Line } from "react-chartjs-2";
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
|
|
@ -60,7 +60,7 @@ const DropChart = ({ height = 350 }) => {
|
|||
delay: 500,
|
||||
},
|
||||
},
|
||||
data: labels.map(() => faker.number.int({ min: -100, max: 100 })),
|
||||
data: labels.map(() => 23),
|
||||
borderColor: hexToRGB(colors.danger, 0.5),
|
||||
backgroundColor: hexToRGB(colors.danger, 0.5),
|
||||
fill: true,
|
||||
|
|
@ -68,7 +68,7 @@ const DropChart = ({ height = 350 }) => {
|
|||
},
|
||||
{
|
||||
label: "Dataset 1",
|
||||
data: labels.map(() => faker.number.int({ min: -100, max: 100 })),
|
||||
data: labels.map(() => -34),
|
||||
borderColor: hexToRGB(colors.info, 0.5),
|
||||
backgroundColor: hexToRGB(colors.info, 0.5),
|
||||
},
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import { useTheme } from "next-themes";
|
|||
import { hexToRGB } from "@/lib/utils";
|
||||
|
||||
import { Line } from "react-chartjs-2";
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
|
|
@ -61,7 +61,7 @@ const LoopChart = ({ height = 350 }) => {
|
|||
delay: 500,
|
||||
},
|
||||
},
|
||||
data: labels.map(() => faker.number.int({ min: -100, max: 100 })),
|
||||
data: labels.map(() => -23),
|
||||
borderColor: hexToRGB(colors.danger, 0.5),
|
||||
backgroundColor: hexToRGB(colors.danger, 0.5),
|
||||
fill: 1,
|
||||
|
|
@ -69,7 +69,7 @@ const LoopChart = ({ height = 350 }) => {
|
|||
},
|
||||
{
|
||||
label: "Dataset 1",
|
||||
data: labels.map(() => faker.number.int({ min: -100, max: 100 })),
|
||||
data: labels.map(() => 89),
|
||||
borderColor: hexToRGB(colors.info, 0.5),
|
||||
backgroundColor: hexToRGB(colors.info, 0.5),
|
||||
},
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ import { useTheme } from "next-themes";
|
|||
import { hexToRGB } from "@/lib/utils";
|
||||
|
||||
import { Line } from "react-chartjs-2";
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
|
|
@ -34,16 +33,6 @@ const LineStyling = ({ height = 350 }) => {
|
|||
|
||||
const { theme: mode } = useTheme();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const labels = [
|
||||
"January",
|
||||
"February",
|
||||
|
|
@ -59,21 +48,21 @@ const LineStyling = ({ height = 350 }) => {
|
|||
datasets: [
|
||||
{
|
||||
label: "Unfilled",
|
||||
data: labels.map(() => faker.number.int({ min: -100, max: 100 })),
|
||||
data: [45, -23, 67, -12, 89, -34, 56],
|
||||
borderColor: hexToRGB(colors.success, 0.5),
|
||||
tension: 0.4,
|
||||
fill: false,
|
||||
},
|
||||
{
|
||||
label: "Dashed",
|
||||
data: labels.map(() => faker.number.int({ min: -100, max: 100 })),
|
||||
data: [-67, 34, -89, 12, -45, 78, -23],
|
||||
borderColor: hexToRGB(colors.info, 0.5),
|
||||
borderDash: [5, 5],
|
||||
fill: false,
|
||||
},
|
||||
{
|
||||
label: "Filled",
|
||||
data: labels.map(() => faker.number.int({ min: -100, max: 100 })),
|
||||
data: [23, -56, 78, -34, 45, -67, 89],
|
||||
borderColor: hexToRGB(colors.danger, 0.5),
|
||||
backgroundColor: hexToRGB(colors.danger, 0.5),
|
||||
fill: true,
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import { useTheme } from "next-themes";
|
|||
import { hexToRGB } from "@/lib/utils";
|
||||
|
||||
import { Line } from "react-chartjs-2";
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
|
|
@ -56,7 +56,7 @@ const MultiAxisLineChart = ({ height = 350 }) => {
|
|||
{
|
||||
label: "Dataset 1",
|
||||
data: labels.map(() =>
|
||||
faker.number.int({ min: -1000, max: 1000 })
|
||||
890
|
||||
),
|
||||
borderColor: hexToRGB(colors.danger, 0.5),
|
||||
backgroundColor: hexToRGB(colors.danger, 0.5),
|
||||
|
|
@ -65,7 +65,7 @@ const MultiAxisLineChart = ({ height = 350 }) => {
|
|||
{
|
||||
label: "Dataset 2",
|
||||
data: labels.map(() =>
|
||||
faker.number.int({ min: -1000, max: 1000 })
|
||||
670
|
||||
),
|
||||
borderColor: hexToRGB(colors.primary, 0.5),
|
||||
backgroundColor: hexToRGB(colors.primary, 0.5),
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import { useTheme } from "next-themes";
|
|||
import { hexToRGB } from "@/lib/utils";
|
||||
|
||||
import { Line } from "react-chartjs-2";
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
|
|
@ -43,7 +43,7 @@ const PointStyling = ({ height = 350 }) => {
|
|||
datasets: [
|
||||
{
|
||||
label: "Dataset",
|
||||
data: labels.map(() => faker.number.int({ min: -100, max: 100 })),
|
||||
data: labels.map(() => 89),
|
||||
borderColor: hexToRGB(colors.danger, 0.5),
|
||||
backgroundColor: hexToRGB(colors.danger, 0.5),
|
||||
pointStyle: "circle",
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import { useTheme } from "next-themes";
|
|||
import { hexToRGB } from "@/lib/utils";
|
||||
|
||||
import { Line } from "react-chartjs-2";
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
|
|
@ -45,7 +45,7 @@ const SteppedLineCharts = ({ height = 350 }) => {
|
|||
datasets: [
|
||||
{
|
||||
label: "Dataset",
|
||||
data: labels.map(() => faker.number.int({ min: -100, max: 100 })),
|
||||
data: labels.map(() => -12),
|
||||
borderColor: hexToRGB(colors.danger, 0.5),
|
||||
fill: false,
|
||||
stepped: true,
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import {
|
|||
Tooltip,
|
||||
Legend,
|
||||
PointElement,
|
||||
Filler,
|
||||
} from "chart.js";
|
||||
import { colors } from "@/lib/colors";
|
||||
|
||||
|
|
@ -16,7 +17,6 @@ import { useTheme } from "next-themes";
|
|||
import { hexToRGB } from "@/lib/utils";
|
||||
|
||||
import { Line } from "react-chartjs-2";
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
|
|
@ -25,20 +25,14 @@ ChartJS.register(
|
|||
Title,
|
||||
Tooltip,
|
||||
Legend,
|
||||
PointElement
|
||||
PointElement,
|
||||
Filler
|
||||
);
|
||||
|
||||
const LinearScaleStepSize = ({ height = 350 }) => {
|
||||
const LinearScaleStepsize = ({ height = 350 }) => {
|
||||
|
||||
const { theme: mode } = useTheme();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
const labels = [
|
||||
"January",
|
||||
"February",
|
||||
|
|
@ -54,17 +48,17 @@ const LinearScaleStepSize = ({ height = 350 }) => {
|
|||
datasets: [
|
||||
{
|
||||
label: "Dataset 1",
|
||||
data: labels.map(() => faker.number.int({ min: 0, max: 100 })),
|
||||
borderColor: hexToRGB(colors.danger, 0.5),
|
||||
backgroundColor: hexToRGB(colors.danger, 0.5),
|
||||
tension: 0.1,
|
||||
data: [25, 45, 67, 34, 89, 56, 78],
|
||||
borderColor: hexToRGB(colors.primary, 0.5),
|
||||
backgroundColor: hexToRGB(colors.primary, 0.5),
|
||||
fill: true,
|
||||
},
|
||||
{
|
||||
label: "Dataset 2",
|
||||
data: labels.map(() => faker.number.int({ min: 0, max: 100 })),
|
||||
borderColor: hexToRGB(colors.primary, 0.5),
|
||||
backgroundColor: hexToRGB(colors.primary, 0.5),
|
||||
tension: 0.1,
|
||||
data: [67, 23, 45, 78, 34, 89, 12],
|
||||
borderColor: hexToRGB(colors.success, 0.5),
|
||||
backgroundColor: hexToRGB(colors.success, 0.5),
|
||||
fill: true,
|
||||
},
|
||||
],
|
||||
};
|
||||
|
|
@ -131,4 +125,4 @@ const LinearScaleStepSize = ({ height = 350 }) => {
|
|||
);
|
||||
};
|
||||
|
||||
export default LinearScaleStepSize;
|
||||
export default LinearScaleStepsize;
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import { useTheme } from "next-themes";
|
|||
import { hexToRGB } from "@/lib/utils";
|
||||
|
||||
import { Line } from "react-chartjs-2";
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
|
|
@ -52,7 +52,7 @@ const LogScaleChart = ({ height = 350 }) => {
|
|||
datasets: [
|
||||
{
|
||||
label: "Dataset 1",
|
||||
data: labels.map(() => faker.number.int({ min: 0, max: 100 })),
|
||||
data: labels.map(() => 45),
|
||||
borderColor: hexToRGB(colors.danger, 0.5),
|
||||
},
|
||||
],
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ import { useTheme } from "next-themes";
|
|||
import { hexToRGB } from "@/lib/utils";
|
||||
|
||||
import { Line } from "react-chartjs-2";
|
||||
import { faker } from "@faker-js/faker";
|
||||
|
||||
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
|
|
@ -75,14 +75,14 @@ const TimeScaleChart = ({ height = 350 }) => {
|
|||
backgroundColor: hexToRGB(colors.danger, 0.5),
|
||||
borderColor: hexToRGB(colors.danger, 0.5),
|
||||
fill: false,
|
||||
data: labels.map(() => faker.number.int({ min: 0, max: 100 })),
|
||||
data: labels.map(() => 90),
|
||||
},
|
||||
{
|
||||
label: "My Second dataset",
|
||||
backgroundColor: hexToRGB(colors.primary, 0.5),
|
||||
borderColor: hexToRGB(colors.primary, 0.5),
|
||||
fill: false,
|
||||
data: labels.map(() => faker.number.int({ min: 0, max: 100 })),
|
||||
data: labels.map(() => 45),
|
||||
},
|
||||
{
|
||||
label: "Dataset with point data",
|
||||
|
|
@ -92,19 +92,19 @@ const TimeScaleChart = ({ height = 350 }) => {
|
|||
data: [
|
||||
{
|
||||
x: [100],
|
||||
y: labels.map(() => faker.number.int({ min: 0, max: 100 })),
|
||||
y: labels.map(() => 67),
|
||||
},
|
||||
{
|
||||
x: [43],
|
||||
y: labels.map(() => faker.number.int({ min: 0, max: 100 })),
|
||||
y: labels.map(() => 67),
|
||||
},
|
||||
{
|
||||
x: [16],
|
||||
y: labels.map(() => faker.number.int({ min: 0, max: 100 })),
|
||||
y: labels.map(() => 56),
|
||||
},
|
||||
{
|
||||
x: [5],
|
||||
y: labels.map(() => faker.number.int({ min: 0, max: 100 })),
|
||||
y: labels.map(() => 90),
|
||||
},
|
||||
],
|
||||
},
|
||||
|
|
|
|||
|
|
@ -425,7 +425,7 @@ const CalendarView = ({ categories }: CalendarViewProps) => {
|
|||
<div className="px-2">
|
||||
{events.length === 0 ? (
|
||||
<div className="mt-1 py-2 rounded-lg bg-white border border-black">
|
||||
<p className="text-center">{t("no-data-yet")}</p>
|
||||
<p className="text-center">{t("no-data-yet", { defaultValue: "No Data Yet" })}</p>
|
||||
</div>
|
||||
) : (
|
||||
<>
|
||||
|
|
@ -543,7 +543,7 @@ const CalendarView = ({ categories }: CalendarViewProps) => {
|
|||
className="dark:bg-background dark:text-foreground w-full"
|
||||
>
|
||||
<Plus className="w-4 h-4 me-1" />
|
||||
{t("addEvent")}
|
||||
{t("addEvent", { defaultValue: "Add Event" })}
|
||||
</Button>
|
||||
)}
|
||||
|
||||
|
|
@ -552,12 +552,12 @@ const CalendarView = ({ categories }: CalendarViewProps) => {
|
|||
<DialogTrigger asChild>
|
||||
<Button className="dark:bg-background dark:text-foreground w-full">
|
||||
<Book size={15} className="w-4 h-4 mr-3" />
|
||||
{t("bag-pa-monitoring-results")}
|
||||
{t("bag-pa-monitoring-results", { defaultValue: "Bag Pa Monitoring Results" })}
|
||||
</Button>
|
||||
</DialogTrigger>
|
||||
<DialogContent className="sm:max-w-[425px] md:max-w-[500px] lg:max-w-[1500px] overflow-y-auto max-h-[500px]">
|
||||
<DialogHeader>
|
||||
<DialogTitle>{t("monitoring-results")}</DialogTitle>
|
||||
<DialogTitle>{t("monitoring-results", { defaultValue: "Monitoring Results" })}</DialogTitle>
|
||||
</DialogHeader>
|
||||
{getModalContent()}
|
||||
</DialogContent>
|
||||
|
|
@ -580,7 +580,7 @@ const CalendarView = ({ categories }: CalendarViewProps) => {
|
|||
</div>
|
||||
|
||||
<div className="py-4 text-default-800 font-semibold text-xs uppercase mt-4 mb-2 px-4">
|
||||
{t("filter")}
|
||||
{t("filter", { defaultValue: "Filter" })}
|
||||
</div>
|
||||
<ul className="space-y-3 px-4">
|
||||
<li className="flex gap-3">
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import { getAgendaSettingsList } from "@/service/agenda-setting/agenda-setting";
|
||||
import { faker } from "@faker-js/faker";
|
||||
import dayjs from "dayjs";
|
||||
|
||||
const date = new Date();
|
||||
|
|
@ -15,7 +14,7 @@ const prevMonth = date.getMonth() === 11 ? new Date(date.getFullYear() - 1, 0, 1
|
|||
|
||||
export const calendarEvents = [
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "event-001-calendar-all-day",
|
||||
title: "aaaAll Day Event",
|
||||
start: date,
|
||||
end: nextDay,
|
||||
|
|
@ -26,7 +25,7 @@ export const calendarEvents = [
|
|||
},
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "event-002-meeting-client",
|
||||
title: "Meeting With Client",
|
||||
start: new Date(date.getFullYear(), date.getMonth() + 1, -11),
|
||||
end: new Date(date.getFullYear(), date.getMonth() + 1, -10),
|
||||
|
|
@ -37,7 +36,7 @@ export const calendarEvents = [
|
|||
},
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "event-003-lunch",
|
||||
title: "Lunch",
|
||||
allDay: true,
|
||||
start: new Date(date.getFullYear(), date.getMonth() + 1, -9),
|
||||
|
|
@ -48,7 +47,7 @@ export const calendarEvents = [
|
|||
},
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "event-004-birthday-party",
|
||||
title: "Birthday Party",
|
||||
start: new Date(date.getFullYear(), date.getMonth() + 1, -11),
|
||||
end: new Date(date.getFullYear(), date.getMonth() + 1, -10),
|
||||
|
|
@ -59,7 +58,7 @@ export const calendarEvents = [
|
|||
},
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "event-005-birthday-party-2",
|
||||
title: "Birthday Party",
|
||||
start: new Date(date.getFullYear(), date.getMonth() + 1, -13),
|
||||
end: new Date(date.getFullYear(), date.getMonth() + 1, -12),
|
||||
|
|
@ -70,7 +69,7 @@ export const calendarEvents = [
|
|||
},
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "event-006-monthly-meeting",
|
||||
title: "Monthly Meeting",
|
||||
start: nextMonth,
|
||||
end: nextMonth,
|
||||
|
|
|
|||
|
|
@ -181,13 +181,13 @@ const BlogTable = () => {
|
|||
<CardTitle>
|
||||
<div className="flex items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("table")} {t("blog")}
|
||||
{t("table", { defaultValue: "Table" })} {t("blog", { defaultValue: "Blog" })}
|
||||
</div>
|
||||
<div className="flex-none">
|
||||
<Link href={"/contributor/blog/create"}>
|
||||
<Button fullWidth color="primary">
|
||||
<Plus size={18} className=" me-1.5" />
|
||||
{t("create-indeks")}
|
||||
{t("create-indeks", { defaultValue: "Create Indeks" })}
|
||||
</Button>
|
||||
</Link>
|
||||
</div>
|
||||
|
|
@ -254,7 +254,7 @@ const BlogTable = () => {
|
|||
<div className="flex flex-row justify-between my-1 mx-1">
|
||||
<p>Filter</p>
|
||||
</div>
|
||||
<Label className="ml-2">{t("category")}</Label>
|
||||
<Label className="ml-2">{t("category", { defaultValue: "Category" })}</Label>
|
||||
{categories.length > 0 ? (
|
||||
categories.map((category) => (
|
||||
<div
|
||||
|
|
|
|||
|
|
@ -25,24 +25,24 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => <span>{row.getValue("no")}</span>,
|
||||
},
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-normal">{row.getValue("title")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "categoryName",
|
||||
header: t("category"),
|
||||
header: t("category", { defaultValue: "Category" }),
|
||||
cell: ({ row }) => <span>{row.getValue("categoryName")}</span>,
|
||||
},
|
||||
{
|
||||
accessorKey: "createdAt",
|
||||
header: t("upload-date"),
|
||||
header: t("upload-date", { defaultValue: "Upload Date" }),
|
||||
cell: ({ row }) => {
|
||||
const createdAt = row.getValue("createdAt") as
|
||||
| string
|
||||
|
|
@ -58,7 +58,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "tags",
|
||||
header: t("tag"),
|
||||
header: t("tag", { defaultValue: "Tag" }),
|
||||
cell: ({ row }) => <span className="">{row.getValue("tags")}</span>,
|
||||
},
|
||||
{
|
||||
|
|
@ -89,7 +89,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
const router = useRouter();
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -40,7 +40,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const title: string = row.getValue("title");
|
||||
return (
|
||||
|
|
@ -52,7 +52,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "categoryName",
|
||||
header: t("category-name"),
|
||||
header: t("category-name", { defaultValue: "Category Name" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("categoryName")}
|
||||
|
|
@ -61,7 +61,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "createdAt",
|
||||
header: t("upload-date"),
|
||||
header: t("upload-date", { defaultValue: "Upload Date" }),
|
||||
cell: ({ row }) => {
|
||||
const createdAt = row.getValue("createdAt") as
|
||||
| string
|
||||
|
|
@ -77,14 +77,14 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "creatorName",
|
||||
header: t("creator-group"),
|
||||
header: t("creator-group", { defaultValue: "Creator Group" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("creatorName")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "creatorGroupLevelName",
|
||||
header: t("source"),
|
||||
header: t("source", { defaultValue: "Source" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("creatorGroupLevelName")}
|
||||
|
|
@ -93,7 +93,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "publishedOn",
|
||||
header: t("published"),
|
||||
header: t("published", { defaultValue: "Published" }),
|
||||
cell: ({ row }) => {
|
||||
const isPublish = row.original.isPublish;
|
||||
const isPublishOnPolda = row.original.isPublishOnPolda;
|
||||
|
|
@ -177,7 +177,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
const MySwal = withReactContent(Swal);
|
||||
|
|
|
|||
|
|
@ -22,10 +22,10 @@ const ReactTableAudioPage = () => {
|
|||
</div>
|
||||
<div>
|
||||
<p>
|
||||
<span className="text-red-500">{t("average")} :0</span>
|
||||
<span className="text-red-500">{t("average", { defaultValue: "Average" })} :0</span>
|
||||
</p>
|
||||
<p className="text-sm">
|
||||
{t("Hasil_unggah_disetujui_hari_ini")}
|
||||
{t("Hasil_unggah_disetujui_hari_ini", { defaultValue: "Hasil Unggah Disetujui Hari Ini" })}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -35,9 +35,9 @@ const ReactTableAudioPage = () => {
|
|||
</div>
|
||||
<div>
|
||||
<p>
|
||||
<span className="text-red-500">{t("average")} :0</span>
|
||||
<span className="text-red-500">{t("average", { defaultValue: "Average" })} :0</span>
|
||||
</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_direvisi_hari_ini")}</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_direvisi_hari_ini", { defaultValue: "Hasil Unggah Direvisi Hari Ini" })}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-row items-center text-xl font-medium text-default-900 gap-2">
|
||||
|
|
@ -46,9 +46,9 @@ const ReactTableAudioPage = () => {
|
|||
</div>
|
||||
<div>
|
||||
<p>
|
||||
<span className="text-red-500">{t("average")} :0</span>
|
||||
<span className="text-red-500">{t("average", { defaultValue: "Average" })} :0</span>
|
||||
</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_ditolak_hari_ini")}</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_ditolak_hari_ini", { defaultValue: "Hasil Unggah Ditolak Hari Ini" })}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -58,13 +58,13 @@ const ReactTableAudioPage = () => {
|
|||
<CardTitle>
|
||||
<div className="flex items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("audio")}
|
||||
{t("audio", { defaultValue: "Audio" })}
|
||||
</div>
|
||||
<div className="flex-none">
|
||||
<Link href={"/contributor/content/audio/create"}>
|
||||
<Button color="primary" className="text-white">
|
||||
<UploadIcon size={18} className="mr-2" />
|
||||
{t("create-audio")}
|
||||
{t("create-audio", { defaultValue: "Create Audio" })}
|
||||
</Button>
|
||||
</Link>
|
||||
{/* <Button color="primary" className="text-white ml-3">
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -43,7 +43,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const title: string = row.getValue("title");
|
||||
return (
|
||||
|
|
@ -55,7 +55,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "categoryName",
|
||||
header: t("category-name"),
|
||||
header: t("category-name", { defaultValue: "Category Name" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("categoryName")}
|
||||
|
|
@ -64,7 +64,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "createdAt",
|
||||
header: t("upload-date"),
|
||||
header: t("upload-date", { defaultValue: "Upload Date" }),
|
||||
cell: ({ row }) => {
|
||||
const createdAt = row.getValue("createdAt") as
|
||||
| string
|
||||
|
|
@ -80,14 +80,14 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "creatorName",
|
||||
header: t("creator-group"),
|
||||
header: t("creator-group", { defaultValue: "Creator Group" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("creatorName")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "creatorGroupLevelName",
|
||||
header: t("source"),
|
||||
header: t("source", { defaultValue: "Source" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("creatorGroupLevelName")}
|
||||
|
|
@ -96,7 +96,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "publishedOn",
|
||||
header: t("published"),
|
||||
header: t("published", { defaultValue: "Published" }),
|
||||
cell: ({ row }) => {
|
||||
const isPublish = row.original.isPublish;
|
||||
const isPublishOnPolda = row.original.isPublishOnPolda;
|
||||
|
|
@ -182,7 +182,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
const router = useRouter();
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import { Card, CardContent } from "@/components/ui/card";
|
|||
import SiteBreadcrumb from "@/components/site-breadcrumb";
|
||||
import FormTask from "@/components/form/task/task-form";
|
||||
import FormImage from "@/components/form/content/image-form";
|
||||
import EditorTest from "@/components/editor/editor-test";
|
||||
|
||||
const ImageCreatePage = async () => {
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -22,10 +22,10 @@ const ReactTableImagePage = () => {
|
|||
</div>
|
||||
<div>
|
||||
<p>
|
||||
<span className="text-red-500">{t("average")} :0</span>
|
||||
<span className="text-red-500">{t("average", { defaultValue: "Average" })} :0</span>
|
||||
</p>
|
||||
<p className="text-sm">
|
||||
{t("Hasil_unggah_disetujui_hari_ini")}
|
||||
{t("Hasil_unggah_disetujui_hari_ini", { defaultValue: "Hasil Unggah Disetujui Hari Ini" })}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -35,9 +35,9 @@ const ReactTableImagePage = () => {
|
|||
</div>
|
||||
<div>
|
||||
<p>
|
||||
<span className="text-red-500">{t("average")} :0</span>
|
||||
<span className="text-red-500">{t("average", { defaultValue: "Average" })} :0</span>
|
||||
</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_direvisi_hari_ini")}</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_direvisi_hari_ini", { defaultValue: "Hasil Unggah Direvisi Hari Ini" })}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-row items-center text-xl font-medium text-default-900 gap-2">
|
||||
|
|
@ -46,9 +46,9 @@ const ReactTableImagePage = () => {
|
|||
</div>
|
||||
<div>
|
||||
<p>
|
||||
<span className="text-red-500">{t("average")} :0</span>
|
||||
<span className="text-red-500">{t("average", { defaultValue: "Average" })} :0</span>
|
||||
</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_ditolak_hari_ini")}</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_ditolak_hari_ini", { defaultValue: "Hasil Unggah Ditolak Hari Ini" })}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -58,13 +58,13 @@ const ReactTableImagePage = () => {
|
|||
<CardTitle>
|
||||
<div className="flex items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("image")}
|
||||
{t("image", { defaultValue: "Image" })}
|
||||
</div>
|
||||
<div className="flex-none">
|
||||
<Link href={"/contributor/content/image/create"}>
|
||||
<Button color="primary" className="text-white">
|
||||
<UploadIcon size={18} className="mr-2" />
|
||||
{t("create-image")}
|
||||
{t("create-image", { defaultValue: "Create Image" })}
|
||||
</Button>
|
||||
</Link>
|
||||
{/* <Link href={"/contributor/content/image/createAi"}>
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -39,7 +39,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "contentTitle",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const title: string = row.getValue("contentTitle");
|
||||
return (
|
||||
|
|
@ -51,7 +51,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "contentTag",
|
||||
header: t("tag"),
|
||||
header: t("tag", { defaultValue: "Tag" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("contentTag")}</span>
|
||||
),
|
||||
|
|
@ -59,14 +59,14 @@ const useTableColumns = () => {
|
|||
|
||||
{
|
||||
accessorKey: "contentType",
|
||||
header: t("type-content"),
|
||||
header: t("type-content", { defaultValue: "Type Content" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("contentType")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "contentCreatedGroupBy",
|
||||
header: t("source"),
|
||||
header: t("source", { defaultValue: "Source" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("contentCreatedGroupBy")}
|
||||
|
|
@ -98,7 +98,7 @@ const useTableColumns = () => {
|
|||
|
||||
{
|
||||
accessorKey: "contentCreatedDate",
|
||||
header: t("upload-date"),
|
||||
header: t("upload-date", { defaultValue: "Upload Date" }),
|
||||
cell: ({ row }) => {
|
||||
const createdAt = row.getValue("contentCreatedDate") as
|
||||
| string
|
||||
|
|
|
|||
|
|
@ -209,7 +209,7 @@ const TableSPIT = () => {
|
|||
<p>Filter</p>
|
||||
</div>
|
||||
<div className="mx-2 my-1">
|
||||
<Label>{t("date")}</Label>
|
||||
<Label>{t("date", { defaultValue: "Date" })}</Label>
|
||||
<Input
|
||||
type="date"
|
||||
value={dateFilter}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -40,7 +40,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const title: string = row.getValue("title");
|
||||
return (
|
||||
|
|
@ -52,7 +52,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "categoryName",
|
||||
header: t("category-name"),
|
||||
header: t("category-name", { defaultValue: "Category Name" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("categoryName")}
|
||||
|
|
@ -61,7 +61,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "createdAt",
|
||||
header: t("upload-date"),
|
||||
header: t("upload-date", { defaultValue: "Upload Date" }),
|
||||
cell: ({ row }) => {
|
||||
const createdAt = row.getValue("createdAt") as
|
||||
| string
|
||||
|
|
@ -77,14 +77,14 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "creatorName",
|
||||
header: t("creator-group"),
|
||||
header: t("creator-group", { defaultValue: "Creator Group" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("creatorName")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "creatorGroupLevelName",
|
||||
header: t("source"),
|
||||
header: t("source", { defaultValue: "Source" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("creatorGroupLevelName")}
|
||||
|
|
@ -93,7 +93,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "publishedOn",
|
||||
header: t("published"),
|
||||
header: t("published", { defaultValue: "Published" }),
|
||||
cell: ({ row }) => {
|
||||
const isPublish = row.original.isPublish;
|
||||
const isPublishOnPolda = row.original.isPublishOnPolda;
|
||||
|
|
@ -178,7 +178,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
const MySwal = withReactContent(Swal);
|
||||
|
|
|
|||
|
|
@ -23,11 +23,11 @@ const ReactTableTeksPage = () => {
|
|||
</div>
|
||||
<div>
|
||||
<p>
|
||||
<span className="text-red-500">{t("average")} :0</span>
|
||||
<span className="text-red-500">{t("average", { defaultValue: "Average" })} :0</span>
|
||||
</p>
|
||||
<p className="text-sm">
|
||||
{" "}
|
||||
{t("Hasil_unggah_disetujui_hari_ini")}
|
||||
{t("Hasil_unggah_disetujui_hari_ini", { defaultValue: "Hasil Unggah Disetujui Hari Ini" })}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -37,9 +37,9 @@ const ReactTableTeksPage = () => {
|
|||
</div>
|
||||
<div>
|
||||
<p>
|
||||
<span className="text-red-500">{t("average")} :0</span>
|
||||
<span className="text-red-500">{t("average", { defaultValue: "Average" })} :0</span>
|
||||
</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_direvisi_hari_ini")}</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_direvisi_hari_ini", { defaultValue: "Hasil Unggah Direvisi Hari Ini" })}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-row items-center text-xl font-medium text-default-900 gap-2">
|
||||
|
|
@ -48,9 +48,9 @@ const ReactTableTeksPage = () => {
|
|||
</div>
|
||||
<div>
|
||||
<p>
|
||||
<span className="text-red-500">{t("average")} :0</span>
|
||||
<span className="text-red-500">{t("average", { defaultValue: "Average" })} :0</span>
|
||||
</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_ditolak_hari_ini")}</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_ditolak_hari_ini", { defaultValue: "Hasil Unggah Ditolak Hari Ini" })}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -60,14 +60,14 @@ const ReactTableTeksPage = () => {
|
|||
<CardTitle>
|
||||
<div className="flex items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("text")}
|
||||
{t("text", { defaultValue: "Text" })}
|
||||
</div>
|
||||
|
||||
<div className="flex-none">
|
||||
<Link href={"/contributor/content/teks/create"}>
|
||||
<Button color="primary" className="text-white">
|
||||
<UploadIcon size={18} className="mr-2" />
|
||||
{t("create-text")}
|
||||
{t("create-text", { defaultValue: "Create Text" })}
|
||||
</Button>
|
||||
</Link>
|
||||
{/* <Button color="primary" className="text-white ml-3">
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -40,7 +40,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const title: string = row.getValue("title");
|
||||
return (
|
||||
|
|
@ -52,7 +52,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "categoryName",
|
||||
header: t("category-name"),
|
||||
header: t("category-name", { defaultValue: "Category Name" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("categoryName")}
|
||||
|
|
@ -61,7 +61,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "createdAt",
|
||||
header: t("upload-date"),
|
||||
header: t("upload-date", { defaultValue: "Upload Date" }),
|
||||
cell: ({ row }) => {
|
||||
const createdAt = row.getValue("createdAt") as
|
||||
| string
|
||||
|
|
@ -77,14 +77,14 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "creatorName",
|
||||
header: t("creator-group"),
|
||||
header: t("creator-group", { defaultValue: "Creator Group" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("creatorName")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "creatorGroupLevelName",
|
||||
header: t("source"),
|
||||
header: t("source", { defaultValue: "Source" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("creatorGroupLevelName")}
|
||||
|
|
@ -93,7 +93,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "publishedOn",
|
||||
header: t("published"),
|
||||
header: t("published", { defaultValue: "Published" }),
|
||||
cell: ({ row }) => {
|
||||
const isPublish = row.original.isPublish;
|
||||
const isPublishOnPolda = row.original.isPublishOnPolda;
|
||||
|
|
@ -178,7 +178,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
const MySwal = withReactContent(Swal);
|
||||
|
|
|
|||
|
|
@ -23,10 +23,10 @@ const ReactTableVideoPage = () => {
|
|||
</div>
|
||||
<div>
|
||||
<p>
|
||||
<span className="text-red-500">{t("average")} :0</span>
|
||||
<span className="text-red-500">{t("average", { defaultValue: "Average" })} :0</span>
|
||||
</p>
|
||||
<p className="text-sm">
|
||||
{t("Hasil_unggah_disetujui_hari_ini")}
|
||||
{t("Hasil_unggah_disetujui_hari_ini", { defaultValue: "Hasil Unggah Disetujui Hari Ini" })}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -36,9 +36,9 @@ const ReactTableVideoPage = () => {
|
|||
</div>
|
||||
<div>
|
||||
<p>
|
||||
<span className="text-red-500">{t("average")} :0</span>
|
||||
<span className="text-red-500">{t("average", { defaultValue: "Average" })} :0</span>
|
||||
</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_direvisi_hari_ini")}</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_direvisi_hari_ini", { defaultValue: "Hasil Unggah Direvisi Hari Ini" })}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="flex flex-row items-center text-xl font-medium text-default-900 gap-2">
|
||||
|
|
@ -47,9 +47,9 @@ const ReactTableVideoPage = () => {
|
|||
</div>
|
||||
<div>
|
||||
<p>
|
||||
<span className="text-red-500">{t("average")} :0</span>
|
||||
<span className="text-red-500">{t("average", { defaultValue: "Average" })} :0</span>
|
||||
</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_ditolak_hari_ini")}</p>
|
||||
<p className="text-sm">{t("Hasil_unggah_ditolak_hari_ini", { defaultValue: "Hasil Unggah Ditolak Hari Ini" })}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -59,13 +59,13 @@ const ReactTableVideoPage = () => {
|
|||
<CardTitle>
|
||||
<div className="flex items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("video")}
|
||||
{t("video", { defaultValue: "Video" })}
|
||||
</div>
|
||||
<div className="flex-none">
|
||||
<Link href={"/contributor/content/video/create"}>
|
||||
<Button color="primary" className="text-white">
|
||||
<UploadIcon size={18} className="mr-2" />
|
||||
{t("create-video")}
|
||||
{t("create-video", { defaultValue: "Create Video" })}
|
||||
</Button>
|
||||
</Link>
|
||||
{/* <Button color="primary" className="text-white ml-3">
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -33,7 +33,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -46,7 +46,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "createdAt",
|
||||
header: t("upload-date"),
|
||||
header: t("upload-date", { defaultValue: "Upload Date" }),
|
||||
cell: ({ row }) => {
|
||||
const createdAt = row.getValue("createdAt") as
|
||||
| string
|
||||
|
|
@ -80,7 +80,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -144,7 +144,7 @@ const MediahubTable = () => {
|
|||
<CardTitle>
|
||||
<div className="flex items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("planning")} : {t("channel")} Mediahub
|
||||
{t("planning", { defaultValue: "Planning" })} : {t("channel", { defaultValue: "Channel" })} Mediahub
|
||||
</div>
|
||||
</div>
|
||||
</CardTitle>
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -33,7 +33,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -46,7 +46,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "createdAt",
|
||||
header: t("upload-date"),
|
||||
header: t("upload-date", { defaultValue: "Upload Date" }),
|
||||
cell: ({ row }) => {
|
||||
const createdAt = row.getValue("createdAt") as
|
||||
| string
|
||||
|
|
@ -80,7 +80,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ const MedsosTable = () => {
|
|||
<CardTitle>
|
||||
<div className="flex items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("planning")} : {t("channel")} Medsos
|
||||
{t("planning", { defaultValue: "Planning" })} : {t("channel", { defaultValue: "Channel" })} Medsos
|
||||
</div>
|
||||
</div>
|
||||
</CardTitle>
|
||||
|
|
|
|||
|
|
@ -37,19 +37,19 @@ const useTableColumns = ({
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => <span>{row.getValue("no")}</span>,
|
||||
},
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-normal">{row.getValue("title")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "createdAt",
|
||||
header: t("generate-date"),
|
||||
header: t("generate-date", { defaultValue: "Generate Date" }),
|
||||
cell: ({ row }) => {
|
||||
const createdAt = row.getValue("createdAt") as
|
||||
| string
|
||||
|
|
@ -65,20 +65,20 @@ const useTableColumns = ({
|
|||
},
|
||||
{
|
||||
accessorKey: "version",
|
||||
header: t("version"),
|
||||
header: t("version", { defaultValue: "Version" }),
|
||||
cell: ({ row }) => <span className="">{row.getValue("version")}</span>,
|
||||
},
|
||||
|
||||
{
|
||||
accessorKey: "status",
|
||||
header: t("status"),
|
||||
header: t("status", { defaultValue: "Status" }),
|
||||
cell: ({ row }) => <span className="">{row.getValue("status")}</span>,
|
||||
},
|
||||
|
||||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
const router = useRouter();
|
||||
|
|
|
|||
|
|
@ -269,12 +269,12 @@ const ReportTable = () => {
|
|||
<CardTitle>
|
||||
<div className="flex items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("table")} {t("report")}
|
||||
{t("table", { defaultValue: "Table" })} {t("report", { defaultValue: "Report" })}
|
||||
</div>
|
||||
<div className="flex-none">
|
||||
<Button fullWidth color="primary" onClick={handleGenerateReport}>
|
||||
<Plus size={18} className=" me-1.5" />
|
||||
{t("generate-report")}
|
||||
{t("generate-report", { defaultValue: "Generate Report" })}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -344,7 +344,7 @@ const ReportTable = () => {
|
|||
<p>Filter</p>
|
||||
</div>
|
||||
<div className="mx-2 my-1">
|
||||
<Label>{t("date")}</Label>
|
||||
<Label>{t("date", { defaultValue: "Date" })}</Label>
|
||||
<Input
|
||||
type="date"
|
||||
value={dateFilter}
|
||||
|
|
@ -371,7 +371,7 @@ const ReportTable = () => {
|
|||
onChange={() => handleStatusCheckboxChange(1)}
|
||||
/>
|
||||
<label htmlFor="status-1" className="text-sm">
|
||||
{t("wait-review")}
|
||||
{t("wait-review", { defaultValue: "Wait Review" })}
|
||||
</label>
|
||||
</div>
|
||||
<div className="flex items-center px-4 py-1">
|
||||
|
|
@ -383,7 +383,7 @@ const ReportTable = () => {
|
|||
onChange={() => handleStatusCheckboxChange(2)}
|
||||
/>
|
||||
<label htmlFor="status-2" className="text-sm">
|
||||
{t("acc")}
|
||||
{t("acc", { defaultValue: "Acc" })}
|
||||
</label>
|
||||
</div>
|
||||
</DropdownMenuContent>
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ const CalendarPolriTable = () => {
|
|||
<CardTitle>
|
||||
<div className="flex items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("calendar-polri")} {t("schedule")}
|
||||
{t("calendar-polri", { defaultValue: "Calendar Polri" })} {t("schedule", { defaultValue: "Schedule" })}
|
||||
</div>
|
||||
<div className="flex-none">
|
||||
<Link href={"/contributor/schedule/calendar-polri/create"}>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -38,7 +38,7 @@ const useTableColumns = () => {
|
|||
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const title: string = row.getValue("title");
|
||||
return (
|
||||
|
|
@ -50,14 +50,14 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "startDate",
|
||||
header: t("start-date"),
|
||||
header: t("start-date", { defaultValue: "Start Date" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("startDate")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "endDate",
|
||||
header: t("end-date"),
|
||||
header: t("end-date", { defaultValue: "End Date" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("endDate")}</span>
|
||||
),
|
||||
|
|
@ -85,7 +85,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "createdByName",
|
||||
header: t("source"),
|
||||
header: t("source", { defaultValue: "Source" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("createdByName")}
|
||||
|
|
@ -96,7 +96,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
const MySwal = withReactContent(Swal);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -34,7 +34,7 @@ const useTableColumns = () => {
|
|||
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const title: string = row.getValue("title");
|
||||
return (
|
||||
|
|
@ -46,21 +46,21 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "startDate",
|
||||
header: t("start-date"),
|
||||
header: t("start-date", { defaultValue: "Start Date" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("startDate")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "endDate",
|
||||
header: t("end-date"),
|
||||
header: t("end-date", { defaultValue: "End Date" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("endDate")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "time",
|
||||
header: t("time"),
|
||||
header: t("time", { defaultValue: "Time" }),
|
||||
cell: ({ row }: { row: { original: any } }) => {
|
||||
console.log("Row Original Data:", row.original);
|
||||
const { startTime, endTime } = row.original;
|
||||
|
|
@ -73,7 +73,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "address",
|
||||
header: t("address"),
|
||||
header: t("address", { defaultValue: "Address" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const address: string = row.getValue("address");
|
||||
return (
|
||||
|
|
@ -111,7 +111,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "speaker",
|
||||
header: t("speaker"),
|
||||
header: t("speaker", { defaultValue: "Speaker" }),
|
||||
cell: ({ row }: { row: { original: any } }) => {
|
||||
console.log("Row Original Data:", row.original);
|
||||
const { speakerTitle, speakerName } = row.original;
|
||||
|
|
@ -124,7 +124,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "uploaderName",
|
||||
header: t("source"),
|
||||
header: t("source", { defaultValue: "Source" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("uploaderName")}
|
||||
|
|
@ -135,7 +135,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -144,13 +144,13 @@ const EventTable = () => {
|
|||
<CardTitle>
|
||||
<div className="flex items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
Event {t("schedule")}
|
||||
Event {t("schedule", { defaultValue: "Schedule" })}
|
||||
</div>
|
||||
<div className="flex-none">
|
||||
<Link href={"/contributor/schedule/event/create"}>
|
||||
<Button color="primary" className="text-white">
|
||||
<UploadIcon size={18} className="mr-2" />
|
||||
{t("create-schedule")}
|
||||
{t("create-schedule", { defaultValue: "Create Schedule" })}
|
||||
</Button>
|
||||
</Link>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ const useTableColumns = (props: { selectedTypeSchedule: string }) => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -38,7 +38,7 @@ const useTableColumns = (props: { selectedTypeSchedule: string }) => {
|
|||
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const title: string = row.getValue("title");
|
||||
return (
|
||||
|
|
@ -50,21 +50,21 @@ const useTableColumns = (props: { selectedTypeSchedule: string }) => {
|
|||
},
|
||||
{
|
||||
accessorKey: "startDate",
|
||||
header: t("start-date"),
|
||||
header: t("start-date", { defaultValue: "Start Date" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("startDate")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "endDate",
|
||||
header: t("end-date"),
|
||||
header: t("end-date", { defaultValue: "End Date" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("endDate")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "time",
|
||||
header: t("time"),
|
||||
header: t("time", { defaultValue: "Time" }),
|
||||
cell: ({ row }: { row: { original: any } }) => {
|
||||
console.log("Row Original Data:", row.original);
|
||||
const { startTime, endTime } = row.original;
|
||||
|
|
@ -77,7 +77,7 @@ const useTableColumns = (props: { selectedTypeSchedule: string }) => {
|
|||
},
|
||||
{
|
||||
accessorKey: "address",
|
||||
header: t("address"),
|
||||
header: t("address", { defaultValue: "Address" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const address: string = row.getValue("address");
|
||||
return (
|
||||
|
|
@ -115,7 +115,7 @@ const useTableColumns = (props: { selectedTypeSchedule: string }) => {
|
|||
},
|
||||
{
|
||||
accessorKey: "speaker",
|
||||
header: t("speaker"),
|
||||
header: t("speaker", { defaultValue: "Speaker" }),
|
||||
cell: ({ row }: { row: { original: any } }) => {
|
||||
console.log("Row Original Data:", row.original);
|
||||
const { speakerTitle, speakerName } = row.original;
|
||||
|
|
@ -128,7 +128,7 @@ const useTableColumns = (props: { selectedTypeSchedule: string }) => {
|
|||
},
|
||||
{
|
||||
accessorKey: "uploaderName",
|
||||
header: t("source"),
|
||||
header: t("source", { defaultValue: "Source" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("uploaderName")}
|
||||
|
|
@ -139,7 +139,7 @@ const useTableColumns = (props: { selectedTypeSchedule: string }) => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
const MySwal = withReactContent(Swal);
|
||||
|
|
|
|||
|
|
@ -168,13 +168,13 @@ const LiveReportTable = () => {
|
|||
<CardTitle>
|
||||
<div className="flex items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("live-report")} {t("schedule")}
|
||||
{t("live-report", { defaultValue: "Live Report" })} {t("schedule", { defaultValue: "Schedule" })}
|
||||
</div>
|
||||
<div className="flex-none">
|
||||
<Link href={"/contributor/schedule/live-report/create"}>
|
||||
<Button color="primary" className="text-white">
|
||||
<UploadIcon size={18} className="mr-2" />
|
||||
{t("create-schedule")}
|
||||
{t("create-schedule", { defaultValue: "Create Schedule" })}
|
||||
</Button>
|
||||
</Link>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -34,7 +34,7 @@ const useTableColumns = () => {
|
|||
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const title: string = row.getValue("title");
|
||||
return (
|
||||
|
|
@ -46,21 +46,21 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "startDate",
|
||||
header: t("start-date"),
|
||||
header: t("start-date", { defaultValue: "Start Date" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("startDate")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "endDate",
|
||||
header: t("end-date"),
|
||||
header: t("end-date", { defaultValue: "End Date" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("endDate")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "time",
|
||||
header: t("time"),
|
||||
header: t("time", { defaultValue: "Time" }),
|
||||
cell: ({ row }: { row: { original: any } }) => {
|
||||
console.log("Row Original Data:", row.original);
|
||||
const { startTime, endTime } = row.original;
|
||||
|
|
@ -73,7 +73,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "address",
|
||||
header: t("address"),
|
||||
header: t("address", { defaultValue: "Address" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const address: string = row.getValue("address");
|
||||
return (
|
||||
|
|
@ -111,7 +111,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "speaker",
|
||||
header: t("speaker"),
|
||||
header: t("speaker", { defaultValue: "Speaker" }),
|
||||
cell: ({ row }: { row: { original: any } }) => {
|
||||
console.log("Row Original Data:", row.original);
|
||||
const { speakerTitle, speakerName } = row.original;
|
||||
|
|
@ -124,7 +124,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "uploaderName",
|
||||
header: t("source"),
|
||||
header: t("source", { defaultValue: "Source" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("uploaderName")}
|
||||
|
|
@ -135,7 +135,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -158,13 +158,13 @@ const PressConferenceTable = () => {
|
|||
<CardTitle>
|
||||
<div className="flex items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("press-conference")} {t("schedule")}
|
||||
{t("press-conference", { defaultValue: "Press Conference" })} {t("schedule", { defaultValue: "Schedule" })}
|
||||
</div>
|
||||
<div className="flex-none">
|
||||
<Link href={"/contributor/schedule/press-conference/create"}>
|
||||
<Button color="primary" className="text-white">
|
||||
<UploadIcon size={18} className="mr-2" />
|
||||
{t("create-schedule")}
|
||||
{t("create-schedule", { defaultValue: "Create Schedule" })}
|
||||
</Button>
|
||||
</Link>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => (
|
||||
<div className="flex items-center gap-5">
|
||||
<div className="flex-1 text-start">
|
||||
|
|
@ -34,7 +34,7 @@ const useTableColumns = () => {
|
|||
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const title: string = row.getValue("title");
|
||||
return (
|
||||
|
|
@ -46,21 +46,21 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "startDate",
|
||||
header: t("start-date"),
|
||||
header: t("start-date", { defaultValue: "Start Date" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("startDate")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "endDate",
|
||||
header: t("end-date"),
|
||||
header: t("end-date", { defaultValue: "End Date" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">{row.getValue("endDate")}</span>
|
||||
),
|
||||
},
|
||||
{
|
||||
accessorKey: "time",
|
||||
header: t("time"),
|
||||
header: t("time", { defaultValue: "Time" }),
|
||||
cell: ({ row }: { row: { original: any } }) => {
|
||||
console.log("Row Original Data:", row.original);
|
||||
const { startTime, endTime } = row.original;
|
||||
|
|
@ -73,7 +73,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "address",
|
||||
header: t("address"),
|
||||
header: t("address", { defaultValue: "Address" }),
|
||||
cell: ({ row }: { row: { getValue: (key: string) => string } }) => {
|
||||
const address: string = row.getValue("address");
|
||||
return (
|
||||
|
|
@ -111,7 +111,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "speaker",
|
||||
header: t("speaker"),
|
||||
header: t("speaker", { defaultValue: "Speaker" }),
|
||||
cell: ({ row }: { row: { original: any } }) => {
|
||||
console.log("Row Original Data:", row.original);
|
||||
const { speakerTitle, speakerName } = row.original;
|
||||
|
|
@ -124,7 +124,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "uploaderName",
|
||||
header: t("source"),
|
||||
header: t("source", { defaultValue: "Source" }),
|
||||
cell: ({ row }) => (
|
||||
<span className="whitespace-nowrap">
|
||||
{row.getValue("uploaderName")}
|
||||
|
|
@ -135,7 +135,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -159,13 +159,13 @@ const PressReleaseTable = () => {
|
|||
<CardTitle>
|
||||
<div className="flex items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("press-release")} {t("schedule")}
|
||||
{t("press-release", { defaultValue: "Press Release" })} {t("schedule", { defaultValue: "Schedule" })}
|
||||
</div>
|
||||
<div className="flex-none">
|
||||
<Link href={"/contributor/schedule/press-release/create"}>
|
||||
<Button color="primary" className="text-white">
|
||||
<UploadIcon size={18} className="mr-2" />
|
||||
{t("create-schedule")}
|
||||
{t("create-schedule", { defaultValue: "Create Schedule" })}
|
||||
</Button>
|
||||
</Link>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -27,12 +27,12 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => <span>{row.getValue("no")}</span>,
|
||||
},
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }) => (
|
||||
<div>
|
||||
<span>{row.getValue("title")}</span>
|
||||
|
|
@ -52,7 +52,7 @@ const useTableColumns = () => {
|
|||
|
||||
{
|
||||
accessorKey: "createdAt",
|
||||
header: t("upload-date"),
|
||||
header: t("upload-date", { defaultValue: "Upload Date" }),
|
||||
cell: ({ row }) => {
|
||||
const createdAt = row.getValue("createdAt") as
|
||||
| string
|
||||
|
|
@ -100,7 +100,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
const router = useRouter();
|
||||
|
|
|
|||
|
|
@ -210,7 +210,7 @@ const TaskTaTable = () => {
|
|||
}
|
||||
px-[18px] py-1 transition duration-100 rounded`}
|
||||
>
|
||||
{t("special-attention")}
|
||||
{t("special-attention", { defaultValue: "Special Attention" })}
|
||||
</span>
|
||||
<span
|
||||
className={`
|
||||
|
|
@ -222,7 +222,7 @@ const TaskTaTable = () => {
|
|||
px-[18px] py-1 transition duration-100 rounded
|
||||
`}
|
||||
>
|
||||
{t("daily-tasks")}
|
||||
{t("daily-tasks", { defaultValue: "Daily Tasks" })}
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
|
@ -293,7 +293,7 @@ const TaskTaTable = () => {
|
|||
<p>Filter</p>
|
||||
</div>
|
||||
<div className="mx-2 my-1">
|
||||
<Label>{t("date")}</Label>
|
||||
<Label>{t("date", { defaultValue: "Date" })}</Label>
|
||||
<Input
|
||||
type="date"
|
||||
value={dateFilter}
|
||||
|
|
@ -320,7 +320,7 @@ const TaskTaTable = () => {
|
|||
onChange={() => handleStatusCheckboxChange(1)}
|
||||
/>
|
||||
<label htmlFor="status-1" className="text-sm">
|
||||
{t("done")}
|
||||
{t("done", { defaultValue: "Done" })}
|
||||
</label>
|
||||
</div>
|
||||
<div className="flex items-center px-4 py-1">
|
||||
|
|
@ -332,7 +332,7 @@ const TaskTaTable = () => {
|
|||
onChange={() => handleStatusCheckboxChange(2)}
|
||||
/>
|
||||
<label htmlFor="status-2" className="text-sm">
|
||||
{t("active")}
|
||||
{t("active", { defaultValue: "Active" })}
|
||||
</label>
|
||||
</div>
|
||||
</DropdownMenuContent>
|
||||
|
|
|
|||
|
|
@ -35,14 +35,14 @@ const TaskTaPage = () => {
|
|||
<CardTitle>
|
||||
<div className="flex flex-col sm:flex-row lg:flex-row lg:items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("tabel")} {t("task-ta")}
|
||||
{t("tabel", { defaultValue: "Tabel" })} {t("task-ta", { defaultValue: "Task Ta" })}
|
||||
</div>
|
||||
<div className="flex-none">
|
||||
{roleId !== 12 && (
|
||||
<Link href={"/contributor/task-ta/create"}>
|
||||
<Button color="primary" className="text-white">
|
||||
<UploadIcon size={18} className="mr-2" />
|
||||
{t("create-task")}
|
||||
{t("create-task", { defaultValue: "Create Task" })}
|
||||
</Button>
|
||||
</Link>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -27,12 +27,12 @@ const useTableColumns = () => {
|
|||
const columns: ColumnDef<any>[] = [
|
||||
{
|
||||
accessorKey: "no",
|
||||
header: t("no"),
|
||||
header: t("no", { defaultValue: "No" }),
|
||||
cell: ({ row }) => <span>{row.getValue("no")}</span>,
|
||||
},
|
||||
{
|
||||
accessorKey: "title",
|
||||
header: t("title"),
|
||||
header: t("title", { defaultValue: "Title" }),
|
||||
cell: ({ row }) => (
|
||||
<div>
|
||||
<span>{row.getValue("title")}</span>
|
||||
|
|
@ -52,13 +52,13 @@ const useTableColumns = () => {
|
|||
|
||||
{
|
||||
accessorKey: "uniqueCode",
|
||||
header: t("code"),
|
||||
header: t("code", { defaultValue: "Code" }),
|
||||
cell: ({ row }) => <span>{row.getValue("uniqueCode")}</span>,
|
||||
},
|
||||
|
||||
{
|
||||
accessorKey: "assignmentMainType",
|
||||
header: t("type-task"),
|
||||
header: t("type-task", { defaultValue: "Type Task" }),
|
||||
cell: ({ row }) => {
|
||||
const type = row.getValue("assignmentMainType") as { name: string };
|
||||
return <span>{type?.name}</span>;
|
||||
|
|
@ -66,7 +66,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "assignmentType",
|
||||
header: t("category-task"),
|
||||
header: t("category-task", { defaultValue: "Category Task" }),
|
||||
cell: ({ row }) => {
|
||||
const type = row.getValue("assignmentType") as { name: string };
|
||||
return <span>{type?.name}</span>;
|
||||
|
|
@ -74,7 +74,7 @@ const useTableColumns = () => {
|
|||
},
|
||||
{
|
||||
accessorKey: "createdAt",
|
||||
header: t("upload-date"),
|
||||
header: t("upload-date", { defaultValue: "Upload Date" }),
|
||||
cell: ({ row }) => {
|
||||
const createdAt = row.getValue("createdAt") as
|
||||
| string
|
||||
|
|
@ -122,7 +122,7 @@ const useTableColumns = () => {
|
|||
{
|
||||
id: "actions",
|
||||
accessorKey: "action",
|
||||
header: t("action"),
|
||||
header: t("action", { defaultValue: "Action" }),
|
||||
enableHiding: false,
|
||||
cell: ({ row }) => {
|
||||
const router = useRouter();
|
||||
|
|
|
|||
|
|
@ -211,7 +211,7 @@ const TaskTable = () => {
|
|||
}
|
||||
px-[18px] py-1 transition duration-100 rounded`}
|
||||
>
|
||||
{t("special-attention")}
|
||||
{t("special-attention", { defaultValue: "Special Attention" })}
|
||||
</span>
|
||||
<span
|
||||
className={`
|
||||
|
|
@ -223,7 +223,7 @@ const TaskTable = () => {
|
|||
px-[18px] py-1 transition duration-100 rounded
|
||||
`}
|
||||
>
|
||||
{t("daily-tasks")}
|
||||
{t("daily-tasks", { defaultValue: "Daily Tasks" })}
|
||||
</span>
|
||||
</label>
|
||||
</div>
|
||||
|
|
@ -294,7 +294,7 @@ const TaskTable = () => {
|
|||
<p>Filter</p>
|
||||
</div>
|
||||
<div className="mx-2 my-1">
|
||||
<Label>{t("date")}</Label>
|
||||
<Label>{t("date", { defaultValue: "Date" })}</Label>
|
||||
<Input
|
||||
type="date"
|
||||
value={dateFilter}
|
||||
|
|
@ -321,7 +321,7 @@ const TaskTable = () => {
|
|||
onChange={() => handleStatusCheckboxChange(1)}
|
||||
/>
|
||||
<label htmlFor="status-1" className="text-sm">
|
||||
{t("done")}
|
||||
{t("done", { defaultValue: "Done" })}
|
||||
</label>
|
||||
</div>
|
||||
<div className="flex items-center px-4 py-1">
|
||||
|
|
@ -333,7 +333,7 @@ const TaskTable = () => {
|
|||
onChange={() => handleStatusCheckboxChange(2)}
|
||||
/>
|
||||
<label htmlFor="status-2" className="text-sm">
|
||||
{t("active")}
|
||||
{t("active", { defaultValue: "Active" })}
|
||||
</label>
|
||||
</div>
|
||||
</DropdownMenuContent>
|
||||
|
|
|
|||
|
|
@ -29,13 +29,13 @@ const TaskPage = () => {
|
|||
<CardTitle>
|
||||
<div className="flex flex-col sm:flex-row lg:flex-row lg:items-center">
|
||||
<div className="flex-1 text-xl font-medium text-default-900">
|
||||
{t("tabel")} {t("task")}
|
||||
{t("tabel", { defaultValue: "Tabel" })} {t("task", { defaultValue: "Task" })}
|
||||
</div>
|
||||
<div className="flex-none">
|
||||
<Link href={"/contributor/task/create"}>
|
||||
<Button color="primary" className="text-white">
|
||||
<UploadIcon size={18} className="mr-2" />
|
||||
{t("create-task")}
|
||||
{t("create-task", { defaultValue: "Create Task" })}
|
||||
</Button>
|
||||
</Link>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
@ -710,7 +710,6 @@ export default function CreateDaily() {
|
|||
<FormItem>
|
||||
<FormLabel>Detail Perencanaan</FormLabel>
|
||||
<CustomEditor onChange={onChange} initialData={value} />
|
||||
|
||||
<FormMessage />
|
||||
</FormItem>
|
||||
)}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -10,15 +10,14 @@ import { getPlanningById } from "@/service/planning/planning";
|
|||
import { useParams } from "next/navigation";
|
||||
import dayjs from "dayjs";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import {
|
||||
Select,
|
||||
SelectContent,
|
||||
SelectGroup,
|
||||
SelectItem,
|
||||
SelectTrigger,
|
||||
SelectValue,
|
||||
} from "@/components/ui/select";
|
||||
import JoditEditor from "jodit-react";
|
||||
import dynamic from "next/dynamic";
|
||||
|
||||
const ViewEditor = dynamic(
|
||||
() => {
|
||||
return import("@/components/editor/view-editor");
|
||||
},
|
||||
{ ssr: false }
|
||||
);
|
||||
|
||||
export default function DetailTaskPlanMediahub() {
|
||||
const params = useParams();
|
||||
|
|
@ -258,12 +257,7 @@ export default function DetailTaskPlanMediahub() {
|
|||
<Input value={planningData?.date} className="w-fit" readOnly />
|
||||
<p className="text-sm">Penugasan Mingguan</p>
|
||||
<Input value={weeklyList[0]?.label} readOnly />
|
||||
<JoditEditor
|
||||
ref={editor}
|
||||
value={planningData?.description}
|
||||
className="dark:text-black"
|
||||
config={{ readonly: true, toolbar: false }}
|
||||
/>
|
||||
<ViewEditor initialData={planningData?.description} />
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import { CalendarIcon } from "lucide-react";
|
|||
import React, { useEffect, useRef, useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { format } from "date-fns";
|
||||
import JoditEditor from "jodit-react";
|
||||
|
||||
import {
|
||||
Form,
|
||||
FormControl,
|
||||
|
|
|
|||
|
|
@ -10,15 +10,15 @@ import { getPlanningById } from "@/service/planning/planning";
|
|||
import { useParams } from "next/navigation";
|
||||
import dayjs from "dayjs";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import {
|
||||
Select,
|
||||
SelectContent,
|
||||
SelectGroup,
|
||||
SelectItem,
|
||||
SelectTrigger,
|
||||
SelectValue,
|
||||
} from "@/components/ui/select";
|
||||
import JoditEditor from "jodit-react";
|
||||
import dynamic from "next/dynamic";
|
||||
|
||||
const ViewEditor = dynamic(
|
||||
() => {
|
||||
return import("@/components/editor/view-editor");
|
||||
},
|
||||
{ ssr: false }
|
||||
);
|
||||
|
||||
|
||||
export default function DetailTaskPlanMediahub() {
|
||||
const params = useParams();
|
||||
|
|
@ -258,12 +258,7 @@ export default function DetailTaskPlanMediahub() {
|
|||
<Input value={planningData?.date} className="w-fit" readOnly />
|
||||
<p className="text-sm">Penugasan Mingguan</p>
|
||||
<Input value={weeklyList[0]?.label} readOnly />
|
||||
<JoditEditor
|
||||
ref={editor}
|
||||
value={planningData?.description}
|
||||
className="dark:text-black"
|
||||
config={{ readonly: true, toolbar: false }}
|
||||
/>
|
||||
<ViewEditor initialData={planningData?.description} />
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -40,31 +40,31 @@ const DashboardPage = () => {
|
|||
value="routine-task"
|
||||
className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground rounded-md px-6"
|
||||
>
|
||||
{t("task-routine")}
|
||||
{t("task-routine", { defaultValue: "Task Routine" })}
|
||||
</TabsTrigger>
|
||||
<TabsTrigger
|
||||
value="task"
|
||||
className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground rounded-md px-6"
|
||||
>
|
||||
{t("task")}
|
||||
{t("task", { defaultValue: "Task" })}
|
||||
</TabsTrigger>
|
||||
<TabsTrigger
|
||||
value="schedule"
|
||||
className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground rounded-md px-6"
|
||||
>
|
||||
{t("schedule")}
|
||||
{t("schedule", { defaultValue: "Schedule" })}
|
||||
</TabsTrigger>
|
||||
<TabsTrigger
|
||||
value="indeks"
|
||||
className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground rounded-md px-6"
|
||||
>
|
||||
{t("indeks")}
|
||||
{t("indeks", { defaultValue: "Indeks" })}
|
||||
</TabsTrigger>
|
||||
<TabsTrigger
|
||||
value="report"
|
||||
className="data-[state=active]:bg-primary data-[state=active]:text-primary-foreground rounded-md px-6"
|
||||
>
|
||||
{t("report")}
|
||||
{t("report", { defaultValue: "Report" })}
|
||||
</TabsTrigger>
|
||||
</TabsList>
|
||||
</Card>
|
||||
|
|
@ -75,18 +75,18 @@ const DashboardPage = () => {
|
|||
<CardContent className="p-4">
|
||||
<div className="grid md:grid-cols-3 gap-4">
|
||||
<StatisticsBlock
|
||||
title={t("Hasil_unggah_disetujui_hari_ini")}
|
||||
title={t("Hasil_unggah_disetujui_hari_ini", { defaultValue: "Hasil Unggah Disetujui Hari Ini" })}
|
||||
total="3,564"
|
||||
className="bg-info/10 border-none shadow-none"
|
||||
/>
|
||||
<StatisticsBlock
|
||||
title={t("Hasil_unggah_direvisi_hari_ini")}
|
||||
title={t("Hasil_unggah_direvisi_hari_ini", { defaultValue: "Hasil Unggah Direvisi Hari Ini" })}
|
||||
total="564"
|
||||
className="bg-warning/10 border-none shadow-none"
|
||||
chartColor="#FB8F65"
|
||||
/>
|
||||
<StatisticsBlock
|
||||
title={t("Hasil_unggah_ditolak_hari_ini")}
|
||||
title={t("Hasil_unggah_ditolak_hari_ini", { defaultValue: "Hasil Unggah Ditolak Hari Ini" })}
|
||||
total="+5.0%"
|
||||
className="bg-primary/10 border-none shadow-none"
|
||||
chartColor="#2563eb"
|
||||
|
|
@ -101,7 +101,7 @@ const DashboardPage = () => {
|
|||
<Card>
|
||||
<CardHeader className="flex flex-row items-center">
|
||||
<CardTitle className="flex-1 text-lg">
|
||||
{t("Total-Content-Production")}
|
||||
{t("Total-Content-Production", { defaultValue: "Total Content Production" })}
|
||||
</CardTitle>
|
||||
<DashboardDropdown />
|
||||
</CardHeader>
|
||||
|
|
@ -113,7 +113,7 @@ const DashboardPage = () => {
|
|||
<div className="lg:col-span-8 col-span-12">
|
||||
<Card>
|
||||
<CardHeader className="flex flex-row items-center">
|
||||
<CardTitle className="flex-1">{t("tabel")}</CardTitle>
|
||||
<CardTitle className="flex-1">{t("tabel", { defaultValue: "Tabel" })}</CardTitle>
|
||||
{/* <DashboardDropdown /> */}
|
||||
</CardHeader>
|
||||
<CardContent className="p-0">
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
"use client";
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
||||
// import world from "./world-map.json";
|
||||
import { VectorMap } from "@south-paw/react-vector-maps";
|
||||
import { useState } from "react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { useTranslations } from "next-intl";
|
||||
|
|
@ -45,7 +44,7 @@ const MostSales = () => {
|
|||
return (
|
||||
<Card>
|
||||
<CardHeader className="flex flex-row items-center">
|
||||
<CardTitle className="flex-1"> {t("most_sales_map_title")}</CardTitle>
|
||||
<CardTitle className="flex-1"> {t("most_sales_map_title", { defaultValue: "Most Sales Map Title" })}</CardTitle>
|
||||
<div className="border border-default-200 dark:border-default-300 rounded p-1 flex items-center bg-background">
|
||||
<span
|
||||
className={cn(
|
||||
|
|
@ -57,7 +56,7 @@ const MostSales = () => {
|
|||
)}
|
||||
onClick={() => setFilterMap("global")}
|
||||
>
|
||||
{t("total_earning_map_button_1")}
|
||||
{t("total_earning_map_button_1", { defaultValue: "Total Earning Map Button 1" })}
|
||||
</span>
|
||||
<span
|
||||
className={cn(
|
||||
|
|
@ -77,7 +76,7 @@ const MostSales = () => {
|
|||
<div className="md:flex items-center">
|
||||
<div className="flex-none">
|
||||
<h4 className="text-default-600 text-sm font-normal mb-1.5">
|
||||
{t("total_earning_map_desc")}
|
||||
{t("total_earning_map_desc", { defaultValue: "Total Earning Map Desc" })}
|
||||
</h4>
|
||||
{filterMap === "usa" && (
|
||||
<div className="text-lg font-medium mb-1.5 text-default-900">
|
||||
|
|
@ -91,7 +90,7 @@ const MostSales = () => {
|
|||
)}
|
||||
<div className="text-xs font-light">
|
||||
<span className="text-primary">+08%</span>{" "}
|
||||
{t("total_earning_map_desc_2")}
|
||||
{t("total_earning_map_desc_2", { defaultValue: "Total Earning Map Desc 2" })}
|
||||
</div>
|
||||
<ul className="bg-default-50 rounded p-4 min-w-[184px] space-y-5 mt-4">
|
||||
{sales.map((item, i) => (
|
||||
|
|
|
|||
|
|
@ -118,25 +118,25 @@ const RecentActivity: React.FC = () => {
|
|||
<div className="flex flex-row items-center gap-3">
|
||||
<ImageIcon size={40} className="text-blue-700" />
|
||||
<p className="text-xl">
|
||||
{counts.images} {t("image")}
|
||||
{counts.images} {t("image", { defaultValue: "Image" })}
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex flex-row items-center gap-3">
|
||||
<YoutubeIcon size={40} className="text-blue-700" />
|
||||
<p className="text-xl">
|
||||
{counts.audiovisual} {t("video")}
|
||||
{counts.audiovisual} {t("video", { defaultValue: "Video" })}
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex flex-row items-center gap-3">
|
||||
<DockIcon size={40} className="text-blue-700" />
|
||||
<p className="text-xl">
|
||||
{counts.text} {t("text")}
|
||||
{counts.text} {t("text", { defaultValue: "Text" })}
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex flex-row items-center gap-3">
|
||||
<MicIcon size={40} className="text-blue-700" />
|
||||
<p className="text-xl">
|
||||
{counts.audio} {t("audio")}
|
||||
{counts.audio} {t("audio", { defaultValue: "Audio" })}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ const CounterButton = () => {
|
|||
icon="heroicons:shopping-cart"
|
||||
className="w-4 h-4 me-2 text-sm leading-none"
|
||||
/>
|
||||
{t("add_to_cart")}
|
||||
{t("add_to_cart", { defaultValue: "Add To Cart" })}
|
||||
</Button>
|
||||
)}
|
||||
{show && (
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
import { faker } from "@faker-js/faker";
|
||||
export const products = [
|
||||
{
|
||||
id: "c06d48bf-7f35-4789-b71e-d80fee5b430t",
|
||||
|
|
@ -14,7 +13,7 @@ export const products = [
|
|||
brand: "apple",
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
img: "/images/e-commerce/product-card/black-t-shirt.png",
|
||||
category: "men",
|
||||
name: "Classical Black T-Shirt",
|
||||
|
|
@ -27,7 +26,7 @@ export const products = [
|
|||
brand: "apex",
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "b2c3d4e5-f6g7-8901-bcde-f23456789012",
|
||||
img: "/images/e-commerce/product-card/check-shirt.png",
|
||||
category: "women",
|
||||
name: "Classical Black T-Shirt",
|
||||
|
|
@ -40,7 +39,7 @@ export const products = [
|
|||
brand: "easy",
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "c3d4e5f6-g7h8-9012-cdef-345678901234",
|
||||
img: "/images/e-commerce/product-card/gray-jumper.png",
|
||||
category: "women",
|
||||
name: "Classical Black T-Shirt",
|
||||
|
|
@ -53,7 +52,7 @@ export const products = [
|
|||
brand: "pixel",
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "d4e5f6g7-h8i9-0123-defg-456789012345",
|
||||
img: "/images/e-commerce/product-card/gray-t-shirt.png",
|
||||
category: "baby",
|
||||
name: "Classical Black T-Shirt",
|
||||
|
|
@ -66,7 +65,7 @@ export const products = [
|
|||
brand: "apex",
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "e5f6g7h8-i9j0-1234-efgh-567890123456",
|
||||
img: "/images/e-commerce/product-card/red-t-shirt.png",
|
||||
category: "women",
|
||||
name: "Classical Black T-Shirt",
|
||||
|
|
@ -79,7 +78,7 @@ export const products = [
|
|||
brand: "apple",
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "f6g7h8i9-j0k1-2345-fghi-678901234567",
|
||||
img: "/images/e-commerce/product-card/red-t-shirt.png",
|
||||
category: "women",
|
||||
name: "Classical Black T-Shirt",
|
||||
|
|
@ -92,7 +91,7 @@ export const products = [
|
|||
brand: "easy",
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "g7h8i9j0-k1l2-3456-ghij-789012345678",
|
||||
img: "/images/e-commerce/product-card/yellow-frok.png",
|
||||
category: "women",
|
||||
name: "Classical Black T-Shirt",
|
||||
|
|
@ -105,7 +104,7 @@ export const products = [
|
|||
brand: "pixel",
|
||||
},
|
||||
{
|
||||
id: faker.string.uuid(),
|
||||
id: "h8i9j0k1-l2m3-4567-hijk-890123456789",
|
||||
img: "/images/e-commerce/product-card/yellow-jumper.png",
|
||||
category: "furniture",
|
||||
name: "Classical Black T-Shirt",
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ const Sidebar = () => {
|
|||
<CardContent className="space-y-6 divide-y divide-default-200 ">
|
||||
<div className="space-y-2">
|
||||
<div className="text-default-800 font-semibold text-xs uppercase pt-5 pb-2">
|
||||
{t("categories")}
|
||||
{t("categories", { defaultValue: "Categories" })}
|
||||
</div>
|
||||
{categories.map((category, i) => (
|
||||
<div
|
||||
|
|
@ -52,12 +52,12 @@ const Sidebar = () => {
|
|||
))}
|
||||
|
||||
<button className="text-xs font-medium text-default-900 pt-1">
|
||||
{t("view_less")}
|
||||
{t("view_less", { defaultValue: "View Less" })}
|
||||
</button>
|
||||
</div>
|
||||
<div className="space-y-2 ltr:-ml-6 ltr:pl-6 rtl:-mr-6 rtl:pr-6">
|
||||
<div className="text-default-800 font-semibold text-xs uppercase pt-5 pb-2">
|
||||
{t("brands")}
|
||||
{t("brands", { defaultValue: "Brands" })}
|
||||
</div>
|
||||
{brands.map((brand, i) => (
|
||||
<div
|
||||
|
|
@ -77,12 +77,12 @@ const Sidebar = () => {
|
|||
</div>
|
||||
))}
|
||||
<button className="text-xs font-medium text-default-900 pt-1">
|
||||
{t("view_less")}
|
||||
{t("view_less", { defaultValue: "View Less" })}
|
||||
</button>
|
||||
</div>
|
||||
<div className="space-y-2 ltr:-ml-6 ltr:pl-6 rtl:-mr-6 rtl:pr-6">
|
||||
<div className="text-default-800 font-semibold text-xs uppercase pt-5 pb-2">
|
||||
{t("price")}
|
||||
{t("price", { defaultValue: "Price" })}
|
||||
</div>
|
||||
{prices.map((price, i) => (
|
||||
<div
|
||||
|
|
@ -104,7 +104,7 @@ const Sidebar = () => {
|
|||
</div>
|
||||
<div className="space-y-2 ltr:-ml-6 ltr:pl-6 rtl:-mr-6 rtl:pr-6">
|
||||
<div className="text-default-800 font-semibold text-xs uppercase pt-5 pb-2">
|
||||
{t("ratings")}
|
||||
{t("ratings", { defaultValue: "Ratings" })}
|
||||
</div>
|
||||
{ratings.map((rating, i) => (
|
||||
<div
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
export const MAP_KEY = "7ZOaHj6xeWeeUNIdCjfC";
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
import { Metadata } from "next";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Media Hub | POLRI",
|
||||
description: "Media Hub merupakan situs resmi milik Divisi Humas Polri di mana di dalamnya berisi konten-konten yang dapat diakses secara gratis oleh Internal Polri, Jurnalis, Masyarakat Umum, dan KSP.",
|
||||
};
|
||||
const Layout = ({ children }: { children: React.ReactNode }) => {
|
||||
return <>{children}</>;
|
||||
};
|
||||
|
||||
export default Layout;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue