feat: add forgot-password page
This commit is contained in:
parent
0d3f3bc2e7
commit
6a82c49193
|
|
@ -1,7 +1,7 @@
|
||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useParams, usePathname, useSearchParams } from "next/navigation";
|
import { useParams, usePathname, useSearchParams } from "next/navigation";
|
||||||
import React, { useEffect, useState } from "react";
|
import React, { useEffect, useRef, useState } from "react";
|
||||||
import { Icon } from "@iconify/react/dist/iconify.js";
|
import { Icon } from "@iconify/react/dist/iconify.js";
|
||||||
import NewContent from "@/components/landing-page/new-content";
|
import NewContent from "@/components/landing-page/new-content";
|
||||||
import { Link, useRouter } from "@/i18n/routing";
|
import { Link, useRouter } from "@/i18n/routing";
|
||||||
|
|
@ -15,10 +15,23 @@ import { sendMediaUploadToEmail } from "@/service/media-tracking/media-tracking"
|
||||||
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
|
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
|
||||||
import { Input } from "@/components/ui/input";
|
import { Input } from "@/components/ui/input";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
|
import { Slider } from "@/components/ui/slider";
|
||||||
|
|
||||||
|
const formWaveSurferOptions = (ref: any) => ({
|
||||||
|
container: ref,
|
||||||
|
waveColor: "#eee",
|
||||||
|
progressColor: "OrangeRed",
|
||||||
|
cursorColor: "OrangeRed",
|
||||||
|
barWidth: 3,
|
||||||
|
barRadius: 3,
|
||||||
|
responsive: true,
|
||||||
|
height: 150, // If true, normalize by the maximum peak instead of 1.0.
|
||||||
|
normalize: true, // Use the PeakCache to improve rendering speed of large waveforms.
|
||||||
|
partialRender: true,
|
||||||
|
});
|
||||||
|
|
||||||
const DetailAudio = () => {
|
const DetailAudio = () => {
|
||||||
const [selectedSize, setSelectedSize] = useState<string>("L");
|
const [selectedSize, setSelectedSize] = useState<string>("L");
|
||||||
const [selectedTab, setSelectedTab] = useState("video");
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const pathname = usePathname();
|
const pathname = usePathname();
|
||||||
const params = useParams();
|
const params = useParams();
|
||||||
|
|
@ -42,8 +55,13 @@ const DetailAudio = () => {
|
||||||
const [width, setWidth] = useState<any>();
|
const [width, setWidth] = useState<any>();
|
||||||
const [content, setContent] = useState<any>([]);
|
const [content, setContent] = useState<any>([]);
|
||||||
const userRoleId = getCookiesDecrypt("urie");
|
const userRoleId = getCookiesDecrypt("urie");
|
||||||
|
const [playing, setPlaying] = useState(false);
|
||||||
|
const wavesurfer = useRef<any>(null);
|
||||||
|
const waveformRef = useRef(null);
|
||||||
|
const [audioLoaded, setAudioLoaded] = useState(false);
|
||||||
|
const [volume, setVolume] = useState<any>(0.5);
|
||||||
|
|
||||||
let typeString = "video";
|
let typeString = "audio";
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
initFetch();
|
initFetch();
|
||||||
|
|
@ -268,6 +286,11 @@ const DetailAudio = () => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handlePlayPause = () => {
|
||||||
|
setPlaying(!playing);
|
||||||
|
wavesurfer?.current?.playPause();
|
||||||
|
};
|
||||||
|
|
||||||
const handleEmailList = (e: any) => {
|
const handleEmailList = (e: any) => {
|
||||||
const arrayEmail: any = [];
|
const arrayEmail: any = [];
|
||||||
for (let i = 0; i < emailShareList?.length; i += 1) {
|
for (let i = 0; i < emailShareList?.length; i += 1) {
|
||||||
|
|
@ -284,6 +307,74 @@ const DetailAudio = () => {
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
function initState() {
|
||||||
|
if (typeString == "audio" && main?.url != undefined) {
|
||||||
|
const init = async () => {
|
||||||
|
const { default: WaveSurfer } = await import("wavesurfer.js");
|
||||||
|
|
||||||
|
setPlaying(false);
|
||||||
|
|
||||||
|
const formatTime = function (time: any) {
|
||||||
|
return [
|
||||||
|
Math.floor((time % 3600) / 60),
|
||||||
|
// minutes
|
||||||
|
`00${Math.floor(time % 60)}`.slice(-2), // seconds
|
||||||
|
].join(":");
|
||||||
|
};
|
||||||
|
|
||||||
|
const options = formWaveSurferOptions(waveformRef.current);
|
||||||
|
|
||||||
|
wavesurfer.current = WaveSurfer.create(options);
|
||||||
|
|
||||||
|
wavesurfer.current.load(main?.url);
|
||||||
|
|
||||||
|
wavesurfer.current.on("ready", () => {
|
||||||
|
// https://wavesurfer-js.org/docs/methods.html
|
||||||
|
// wavesurfer.current.playPause();
|
||||||
|
// setPlaying(true);
|
||||||
|
setAudioLoaded(true);
|
||||||
|
// make sure object stillavailable when file loaded
|
||||||
|
if (wavesurfer.current) {
|
||||||
|
wavesurfer.current.setVolume(volume);
|
||||||
|
let volumeNow = volume;
|
||||||
|
setVolume(volumeNow);
|
||||||
|
}
|
||||||
|
|
||||||
|
$(".waveform__duration").text(formatTime(wavesurfer.current.getDuration()));
|
||||||
|
});
|
||||||
|
|
||||||
|
// Show current time
|
||||||
|
wavesurfer.current.on("audioprocess", () => {
|
||||||
|
$(".waveform__counter").text(formatTime(wavesurfer.current.getCurrentTime()));
|
||||||
|
});
|
||||||
|
|
||||||
|
wavesurfer.current.on("finish", () => {
|
||||||
|
setPlaying(false);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
init();
|
||||||
|
// Removes events, elements and disconnects Web Audio nodes.
|
||||||
|
// when component unmount
|
||||||
|
|
||||||
|
return () => wavesurfer?.current?.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
initState();
|
||||||
|
}, [main?.url]);
|
||||||
|
|
||||||
|
const onVolumeChange = (e: any) => {
|
||||||
|
const { target } = e;
|
||||||
|
const newVolume = +target?.value;
|
||||||
|
|
||||||
|
if (newVolume) {
|
||||||
|
setVolume(newVolume);
|
||||||
|
wavesurfer?.current?.setVolume(newVolume || 1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="min-h-screen px-4 md:px-24 py-4">
|
<div className="min-h-screen px-4 md:px-24 py-4">
|
||||||
|
|
@ -291,11 +382,50 @@ const DetailAudio = () => {
|
||||||
<div className="rounded-md overflow-hidden md:flex">
|
<div className="rounded-md overflow-hidden md:flex">
|
||||||
{/* Bagian Kiri */}
|
{/* Bagian Kiri */}
|
||||||
<div className="md:w-3/4">
|
<div className="md:w-3/4">
|
||||||
<div className="relative flex justify-center">
|
<div className="relative flex flex-row justify-between">
|
||||||
<img src="/assets/audio-btn.png" />
|
<button onClick={handlePlayPause}>
|
||||||
|
<img src={`/assets/${playing ? "stop-icon.png" : "play-icon.png"}`} />
|
||||||
|
</button>
|
||||||
|
<div
|
||||||
|
className="flex items-center "
|
||||||
|
style={
|
||||||
|
audioLoaded
|
||||||
|
? {
|
||||||
|
display: "none",
|
||||||
|
}
|
||||||
|
: {}
|
||||||
|
}
|
||||||
|
>
|
||||||
<BarWave color="#ffc831" width="60px" height="25px" duration="2s" />
|
<BarWave color="#ffc831" width="60px" height="25px" duration="2s" />
|
||||||
<div className="absolute top-4 left-4"></div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div id="waveform" ref={waveformRef} />
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
className="flex flex-row mt-2"
|
||||||
|
style={
|
||||||
|
audioLoaded
|
||||||
|
? {}
|
||||||
|
: {
|
||||||
|
display: "none !important",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Icon icon="fa:volume-up" />
|
||||||
|
{/* <Slider onChange={onVolumeChange} defaultValue={volume} /> */}
|
||||||
|
<input
|
||||||
|
type="range"
|
||||||
|
id="volume"
|
||||||
|
name="volume" // waveSurfer recognize value of `0` same as `1`
|
||||||
|
// so we need to set some zero-ish value for silence
|
||||||
|
|
||||||
|
min="0.01"
|
||||||
|
max="1"
|
||||||
|
step=".025"
|
||||||
|
onChange={onVolumeChange}
|
||||||
|
defaultValue={volume}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* Footer Informasi */}
|
{/* Footer Informasi */}
|
||||||
<div className="p-4 text-sm text-gray-500 flex justify-between items-center border-t mt-4">
|
<div className="p-4 text-sm text-gray-500 flex justify-between items-center border-t mt-4">
|
||||||
<p className="flex flex-row items-center">
|
<p className="flex flex-row items-center">
|
||||||
|
|
@ -307,7 +437,7 @@ const DetailAudio = () => {
|
||||||
<p>Kreator: {detailDataAudio?.creatorName}</p>
|
<p>Kreator: {detailDataAudio?.creatorName}</p>
|
||||||
</div>
|
</div>
|
||||||
{/* Keterangan */}
|
{/* Keterangan */}
|
||||||
<div className="md:w-3/4">
|
<div className="w-full">
|
||||||
<h1 className="flex flex-row font-bold text-2xl mx-5 my-8">{detailDataAudio?.title}</h1>
|
<h1 className="flex flex-row font-bold text-2xl mx-5 my-8">{detailDataAudio?.title}</h1>
|
||||||
<div className="font-light text-justify" dangerouslySetInnerHTML={{ __html: detailDataAudio?.htmlDescription }} />
|
<div className="font-light text-justify" dangerouslySetInnerHTML={{ __html: detailDataAudio?.htmlDescription }} />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import React, { useEffect, useState } from "react";
|
||||||
import { Card, CardContent } from "@/components/ui/card";
|
import { Card, CardContent } from "@/components/ui/card";
|
||||||
import { Checkbox } from "@/components/ui/checkbox";
|
import { Checkbox } from "@/components/ui/checkbox";
|
||||||
import { Icon } from "@iconify/react/dist/iconify.js";
|
import { Icon } from "@iconify/react/dist/iconify.js";
|
||||||
import { formatDateToIndonesian, getOnlyDate, getOnlyMonthAndYear } from "@/utils/globals";
|
import { formatDateToIndonesian, getOnlyDate, getOnlyMonthAndYear, secondToTimes } from "@/utils/globals";
|
||||||
import { useParams, usePathname, useSearchParams } from "next/navigation";
|
import { useParams, usePathname, useSearchParams } from "next/navigation";
|
||||||
import { getUserLevelListByParent, listCategory, listData, listDataRegional } from "@/service/landing/landing";
|
import { getUserLevelListByParent, listCategory, listData, listDataRegional } from "@/service/landing/landing";
|
||||||
import { ColumnDef, ColumnFiltersState, PaginationState, SortingState, VisibilityState, getCoreRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, useReactTable } from "@tanstack/react-table";
|
import { ColumnDef, ColumnFiltersState, PaginationState, SortingState, VisibilityState, getCoreRowModel, getFilteredRowModel, getPaginationRowModel, getSortedRowModel, useReactTable } from "@tanstack/react-table";
|
||||||
|
|
@ -243,7 +243,7 @@ const FilterPage = () => {
|
||||||
const format = formatFilter == undefined ? "" : formatFilter?.join(",");
|
const format = formatFilter == undefined ? "" : formatFilter?.join(",");
|
||||||
loading();
|
loading();
|
||||||
const response = await listDataRegional(
|
const response = await listDataRegional(
|
||||||
"1",
|
"4",
|
||||||
name,
|
name,
|
||||||
filter,
|
filter,
|
||||||
format,
|
format,
|
||||||
|
|
@ -465,8 +465,7 @@ const FilterPage = () => {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Konten Kanan */}
|
{/* Konten Kanan */}
|
||||||
<Reveal>
|
<div className="w-[75%]">
|
||||||
<div className="flex-1">
|
|
||||||
<div className="flex flex-col items-end mb-4">
|
<div className="flex flex-col items-end mb-4">
|
||||||
<h2 className="text-lg font-semibold">{t("sortBy")} </h2>
|
<h2 className="text-lg font-semibold">{t("sortBy")} </h2>
|
||||||
<select defaultValue={sortBy == "popular" ? "terpopuler" : "terbaru"} onChange={(e) => handleSorting(e)} className="border rounded-md py-2 px-3 focus:ring-red-500 focus:border-red-500">
|
<select defaultValue={sortBy == "popular" ? "terpopuler" : "terbaru"} onChange={(e) => handleSorting(e)} className="border rounded-md py-2 px-3 focus:ring-red-500 focus:border-red-500">
|
||||||
|
|
@ -476,14 +475,12 @@ const FilterPage = () => {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{audioData?.length > 0 ? (
|
{audioData?.length > 0 ? (
|
||||||
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
|
<div className="">
|
||||||
{audioData?.map((image: any) => (
|
|
||||||
<Carousel className="w-full max-w-7xl mx-auto">
|
|
||||||
<CarouselContent>
|
|
||||||
{audioData?.map((audio: any) => (
|
{audioData?.map((audio: any) => (
|
||||||
<CarouselItem key={audio?.id} className="md:basis-1/2 lg:basis-1/3">
|
<div key={audio?.id}>
|
||||||
<div className="flex flex-row gap-6">
|
<Link href={`/audio/detail/${audio?.slug}`} className="flex flex-row items-center bg-white dark:bg-gray-800 cursor-pointer shadow-md rounded-lg p-4 gap-4 w-full">
|
||||||
<Link href={`/audio/detail/${audio?.slug}`} className="flex flex-col sm:flex-row items-center bg-white dark:bg-gray-800 cursor-pointer shadow-md rounded-lg p-4 gap-4 w-full">
|
<div className="flex justify-between w-full gap-6">
|
||||||
|
<div className="flex flex-row gap-3">
|
||||||
<div className="flex items-center justify-center bg-red-500 text-white rounded-lg w-16 h-8 lg:h-16">
|
<div className="flex items-center justify-center bg-red-500 text-white rounded-lg w-16 h-8 lg:h-16">
|
||||||
<svg width="32" height="34" viewBox="0 0 32 34" fill="null" xmlns="http://www.w3.org/2000/svg">
|
<svg width="32" height="34" viewBox="0 0 32 34" fill="null" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path
|
<path
|
||||||
|
|
@ -492,21 +489,29 @@ const FilterPage = () => {
|
||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="flex flex-col">
|
||||||
<div className="flex flex-col flex-1">
|
<div className="text-gray-500 dark:text-gray-400 flex flex-row text-sm items-center">
|
||||||
<div className="text-gray-500 dark:text-gray-400 flex flex-row text-sm">
|
{formatDateToIndonesian(new Date(audio?.createdAt))} {audio?.timezone ? audio?.timezone : "WIB"} | <Icon icon="formkit:eye" width="15" height="15" />
|
||||||
{formatDateToIndonesian(new Date(audio?.createdAt))} {audio?.timezone ? audio?.timezone : "WIB"} | <Icon icon="formkit:eye" width="15" height="15" /> {audio?.clickCount}{" "}
|
{audio?.clickCount}{" "}
|
||||||
</div>
|
</div>
|
||||||
<div className="font-semibold text-gray-900 dark:text-white mt-1 text-sm h-5 hover:h-auto truncate hover:whitespace-normal hover:overflow-visible">{audio?.title}</div>
|
<div className="font-semibold text-gray-900 dark:text-white mt-1 text-sm h-5 hover:h-auto truncate hover:whitespace-normal hover:overflow-visible">{audio?.title}</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex flex-row items-center place-content-end gap-3">
|
||||||
|
<img src="/assets/wave.svg" alt="wave" className="h-16" />
|
||||||
|
<svg width="17" height="20" viewBox="0 0 32 34" fill="null" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M23.404 0.452014C23.7033 0.35857 24.0204 0.336816 24.3297 0.388509C24.639 0.440203 24.9318 0.563895 25.1845 0.749599C25.4371 0.935304 25.6426 1.17782 25.7843 1.45756C25.9259 1.73731 25.9998 2.04644 26 2.36001V14.414C25.3462 14.2296 24.6766 14.1064 24 14.046V8.36001L10 12.736V27C10 28.1264 9.6197 29.2197 8.92071 30.1029C8.22172 30.9861 7.24499 31.6075 6.14877 31.8663C5.05255 32.125 3.90107 32.0061 2.88089 31.5287C1.86071 31.0514 1.03159 30.2435 0.52787 29.2361C0.024152 28.2286 -0.124656 27.0806 0.105556 25.9781C0.335768 24.8755 0.931513 23.883 1.79627 23.1613C2.66102 22.4396 3.74413 22.031 4.87009 22.0017C5.99606 21.9724 7.09893 22.3242 8.00001 23V6.73601C7.99982 6.30956 8.13596 5.8942 8.38854 5.55059C8.64112 5.20698 8.99692 4.9531 9.40401 4.82601L23.404 0.452014ZM10 10.64L24 6.26601V2.36001L10 6.73601V10.64ZM5.00001 24C4.20436 24 3.44129 24.3161 2.87869 24.8787C2.31608 25.4413 2.00001 26.2044 2.00001 27C2.00001 27.7957 2.31608 28.5587 2.87869 29.1213C3.44129 29.6839 4.20436 30 5.00001 30C5.79566 30 6.55872 29.6839 7.12133 29.1213C7.68394 28.5587 8.00001 27.7957 8.00001 27C8.00001 26.2044 7.68394 25.4413 7.12133 24.8787C6.55872 24.3161 5.79566 24 5.00001 24ZM32 25C32 27.387 31.0518 29.6761 29.364 31.364C27.6761 33.0518 25.387 34 23 34C20.6131 34 18.3239 33.0518 16.636 31.364C14.9482 29.6761 14 27.387 14 25C14 22.6131 14.9482 20.3239 16.636 18.6361C18.3239 16.9482 20.6131 16 23 16C25.387 16 27.6761 16.9482 29.364 18.6361C31.0518 20.3239 32 22.6131 32 25ZM27.47 24.128L21.482 20.828C21.3298 20.7443 21.1583 20.7016 20.9846 20.7043C20.8108 20.707 20.6408 20.7549 20.4912 20.8433C20.3416 20.9317 20.2176 21.0576 20.1315 21.2086C20.0453 21.3595 20 21.5302 20 21.704V28.304C20 28.4778 20.0453 28.6486 20.1315 28.7995C20.2176 28.9504 20.3416 29.0763 20.4912 29.1647C20.6408 29.2531 20.8108 29.301 20.9846 29.3037C21.1583 29.3064 21.3298 29.2638 21.482 29.18L27.47 25.88C27.6268 25.7937 27.7575 25.6669 27.8486 25.5128C27.9397 25.3587 27.9877 25.183 27.9877 25.004C27.9877 24.825 27.9397 24.6493 27.8486 24.4952C27.7575 24.3412 27.6268 24.2143 27.47 24.128Z"
|
||||||
|
fill="black"
|
||||||
|
/>
|
||||||
|
</svg>
|
||||||
|
<p className="text-sm text-center"> {audio?.duration ? secondToTimes(Number(audio?.duration)) : "00:00:00"}</p>
|
||||||
|
<Icon icon="ph:download-fill" className="text-red-500" fontSize={20} />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</CarouselItem>
|
|
||||||
))}
|
|
||||||
</CarouselContent>
|
|
||||||
<CarouselPrevious />
|
|
||||||
<CarouselNext />
|
|
||||||
</Carousel>
|
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
|
|
@ -517,7 +522,6 @@ const FilterPage = () => {
|
||||||
|
|
||||||
<LandingPagination table={table} totalData={totalData} totalPage={totalPage} />
|
<LandingPagination table={table} totalData={totalData} totalPage={totalPage} />
|
||||||
</div>
|
</div>
|
||||||
</Reveal>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ import ImageBlurry from "@/components/ui/image-blurry";
|
||||||
|
|
||||||
const Galery = (props: any) => {
|
const Galery = (props: any) => {
|
||||||
const [profile, setProfile] = useState<any>();
|
const [profile, setProfile] = useState<any>();
|
||||||
const [selectedTab, setSelectedTab] = useState("video");
|
const [selectedTab, setSelectedTab] = useState("image");
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const MySwal = withReactContent(Swal);
|
const MySwal = withReactContent(Swal);
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
|
|
@ -336,11 +336,15 @@ const Galery = (props: any) => {
|
||||||
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
||||||
</a>
|
</a>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent className="w-40">
|
<PopoverContent className="w-52">
|
||||||
|
<Link href={`/content-management/rewrite/create/${video?.mediaUpload?.id}`} className="flex flex-row hover:text-red-800 gap-2">
|
||||||
|
<Icon icon="jam:write" fontSize={25} />
|
||||||
|
<p className="text-base font-semibold mb-2">Content Rewrite</p>
|
||||||
|
</Link>
|
||||||
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
||||||
<Popover>
|
<Popover>
|
||||||
<PopoverTrigger asChild>
|
<PopoverTrigger asChild>
|
||||||
<button className="w-full flex items-center gap-2">
|
<button className="w-full flex items-center gap-3">
|
||||||
<Icon icon="oi:share" fontSize={20} />
|
<Icon icon="oi:share" fontSize={20} />
|
||||||
<p className="text-base font-semibold mb-3">Bagikan</p>
|
<p className="text-base font-semibold mb-3">Bagikan</p>
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -359,7 +363,7 @@ const Galery = (props: any) => {
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</Popover>
|
</Popover>
|
||||||
</div>
|
</div>
|
||||||
<a onClick={() => handleDelete(video?.id)} className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
<a onClick={() => handleDelete(video?.id)} className="flex items-center gap-3 hover:text-red-800 w-full rounded-lg">
|
||||||
<Icon icon="fa:trash" fontSize={20} />
|
<Icon icon="fa:trash" fontSize={20} />
|
||||||
<p className="text-base font-semibold">Hapus</p>
|
<p className="text-base font-semibold">Hapus</p>
|
||||||
</a>
|
</a>
|
||||||
|
|
@ -414,11 +418,15 @@ const Galery = (props: any) => {
|
||||||
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
||||||
</a>
|
</a>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent className="w-40">
|
<PopoverContent className="w-52">
|
||||||
|
<Link href={`/content-management/rewrite/create/${audio?.mediaUpload?.id}`} className="flex flex-row hover:text-red-800 gap-2">
|
||||||
|
<Icon icon="jam:write" fontSize={25} />
|
||||||
|
<p className="text-base font-semibold mb-2">Content Rewrite</p>
|
||||||
|
</Link>
|
||||||
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
||||||
<Popover>
|
<Popover>
|
||||||
<PopoverTrigger asChild>
|
<PopoverTrigger asChild>
|
||||||
<button className="w-full flex items-center gap-2">
|
<button className="w-full flex items-center gap-3">
|
||||||
<Icon icon="oi:share" fontSize={20} />
|
<Icon icon="oi:share" fontSize={20} />
|
||||||
<p className="text-base font-semibold mb-3">Bagikan</p>
|
<p className="text-base font-semibold mb-3">Bagikan</p>
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -437,7 +445,7 @@ const Galery = (props: any) => {
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</Popover>
|
</Popover>
|
||||||
</div>
|
</div>
|
||||||
<a onClick={() => handleDelete(audio?.id)} className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
<a onClick={() => handleDelete(audio?.id)} className="flex items-center gap-3 hover:text-red-800 w-full rounded-lg">
|
||||||
<Icon icon="fa:trash" fontSize={20} />
|
<Icon icon="fa:trash" fontSize={20} />
|
||||||
<p className="text-base font-semibold">Hapus</p>
|
<p className="text-base font-semibold">Hapus</p>
|
||||||
</a>
|
</a>
|
||||||
|
|
@ -470,11 +478,15 @@ const Galery = (props: any) => {
|
||||||
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
||||||
</a>
|
</a>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent className="w-40">
|
<PopoverContent className="w-52">
|
||||||
|
<Link href={`/content-management/rewrite/create/${image?.mediaUpload?.id}`} className="flex flex-row hover:text-red-800 gap-2">
|
||||||
|
<Icon icon="jam:write" fontSize={25} />
|
||||||
|
<p className="text-base font-semibold mb-2">Content Rewrite</p>
|
||||||
|
</Link>
|
||||||
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
||||||
<Popover>
|
<Popover>
|
||||||
<PopoverTrigger asChild>
|
<PopoverTrigger asChild>
|
||||||
<button className="w-full flex items-center gap-2">
|
<button className="w-full flex items-center gap-3">
|
||||||
<Icon icon="oi:share" fontSize={20} />
|
<Icon icon="oi:share" fontSize={20} />
|
||||||
<p className="text-base font-semibold mb-3">Bagikan</p>
|
<p className="text-base font-semibold mb-3">Bagikan</p>
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -493,7 +505,7 @@ const Galery = (props: any) => {
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</Popover>
|
</Popover>
|
||||||
</div>
|
</div>
|
||||||
<a onClick={() => handleDelete(image?.id)} className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
<a onClick={() => handleDelete(image?.id)} className="flex items-center gap-3 hover:text-red-800 w-full rounded-lg">
|
||||||
<Icon icon="fa:trash" fontSize={20} />
|
<Icon icon="fa:trash" fontSize={20} />
|
||||||
<p className="text-base font-semibold">Hapus</p>
|
<p className="text-base font-semibold">Hapus</p>
|
||||||
</a>
|
</a>
|
||||||
|
|
@ -538,11 +550,15 @@ const Galery = (props: any) => {
|
||||||
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
||||||
</a>
|
</a>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent className="w-40">
|
<PopoverContent className="w-52">
|
||||||
|
<Link href={`/content-management/rewrite/create/${document?.mediaUpload?.id}`} className="flex flex-row hover:text-red-800 gap-2">
|
||||||
|
<Icon icon="jam:write" fontSize={25} />
|
||||||
|
<p className="text-base font-semibold mb-2">Content Rewrite</p>
|
||||||
|
</Link>
|
||||||
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
||||||
<Popover>
|
<Popover>
|
||||||
<PopoverTrigger asChild>
|
<PopoverTrigger asChild>
|
||||||
<button className="w-full flex items-center gap-2">
|
<button className="w-full flex items-center gap-3">
|
||||||
<Icon icon="oi:share" fontSize={20} />
|
<Icon icon="oi:share" fontSize={20} />
|
||||||
<p className="text-base font-semibold mb-3">Bagikan</p>
|
<p className="text-base font-semibold mb-3">Bagikan</p>
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -561,7 +577,7 @@ const Galery = (props: any) => {
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</Popover>
|
</Popover>
|
||||||
</div>
|
</div>
|
||||||
<a onClick={() => handleDelete(document?.id)} className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
<a onClick={() => handleDelete(document?.id)} className="flex items-center gap-3 hover:text-red-800 w-full rounded-lg">
|
||||||
<Icon icon="fa:trash" fontSize={20} />
|
<Icon icon="fa:trash" fontSize={20} />
|
||||||
<p className="text-base font-semibold">Hapus</p>
|
<p className="text-base font-semibold">Hapus</p>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ import ImageBlurry from "@/components/ui/image-blurry";
|
||||||
|
|
||||||
const Galery = (props: any) => {
|
const Galery = (props: any) => {
|
||||||
const [profile, setProfile] = useState<any>();
|
const [profile, setProfile] = useState<any>();
|
||||||
const [selectedTab, setSelectedTab] = useState("video");
|
const [selectedTab, setSelectedTab] = useState("image");
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const MySwal = withReactContent(Swal);
|
const MySwal = withReactContent(Swal);
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
|
|
@ -342,13 +342,21 @@ const Galery = (props: any) => {
|
||||||
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
||||||
</a>
|
</a>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent className="w-40">
|
<PopoverContent className="w-52">
|
||||||
|
<div onClick={() => handleSaveWishlist(video?.mediaUpload?.id)} className="cursor-pointer flex flex-row gap-2 hover:text-red-800">
|
||||||
|
<Icon icon="material-symbols:bookmark-outline" fontSize={25} />
|
||||||
|
<p className="text-base font-semibold mb-2">Simpan</p>
|
||||||
|
</div>
|
||||||
|
<Link href={`/content-management/rewrite/create/${video?.mediaUpload?.id}`} className="flex flex-row hover:text-red-800 gap-2">
|
||||||
|
<Icon icon="jam:write" fontSize={25} />
|
||||||
|
<p className="text-base font-semibold mb-2">Content Rewrite</p>
|
||||||
|
</Link>
|
||||||
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
||||||
<Popover>
|
<Popover>
|
||||||
<PopoverTrigger asChild>
|
<PopoverTrigger asChild>
|
||||||
<button className="w-full flex items-center gap-2">
|
<button className="w-full flex flex-row items-center gap-3">
|
||||||
<Icon icon="oi:share" fontSize={20} />
|
<Icon icon="oi:share" fontSize={20} />
|
||||||
<p className="text-base items-center font-semibold mb-3">Bagikan</p>
|
<p className="text-base font-semibold mb-1">Bagikan</p>
|
||||||
</button>
|
</button>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent>
|
<PopoverContent>
|
||||||
|
|
@ -365,10 +373,6 @@ const Galery = (props: any) => {
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</Popover>
|
</Popover>
|
||||||
</div>
|
</div>
|
||||||
<a onClick={() => handleDelete(video?.id)} className="flex items-center gap-2 hover:text-red-800 w-full rounded-lg">
|
|
||||||
<Icon icon="fa:trash" fontSize={20} />
|
|
||||||
<p className="text-base font-semibold">Hapus</p>
|
|
||||||
</a>
|
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</Popover>
|
</Popover>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -418,13 +422,21 @@ const Galery = (props: any) => {
|
||||||
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
||||||
</a>
|
</a>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent className="w-40">
|
<PopoverContent className="w-52">
|
||||||
|
<div onClick={() => handleSaveWishlist(audio?.mediaUpload?.id)} className="cursor-pointer flex flex-row gap-2 hover:text-red-800">
|
||||||
|
<Icon icon="material-symbols:bookmark-outline" fontSize={25} />
|
||||||
|
<p className="text-base font-semibold mb-2">Simpan</p>
|
||||||
|
</div>
|
||||||
|
<Link href={`/content-management/rewrite/create/${audio?.mediaUpload?.id}`} className="flex flex-row hover:text-red-800 gap-2">
|
||||||
|
<Icon icon="jam:write" fontSize={25} />
|
||||||
|
<p className="text-base font-semibold mb-2">Content Rewrite</p>
|
||||||
|
</Link>
|
||||||
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
||||||
<Popover>
|
<Popover>
|
||||||
<PopoverTrigger asChild>
|
<PopoverTrigger asChild>
|
||||||
<button className="w-full flex items-center gap-2">
|
<button className="w-full flex items-center gap-2">
|
||||||
<Icon icon="oi:share" fontSize={20} />
|
<Icon icon="oi:share" fontSize={20} />
|
||||||
<p className="text-base font-semibold mb-3">Bagikan</p>
|
<p className="text-base font-semibold mb-2">Bagikan</p>
|
||||||
</button>
|
</button>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent>
|
<PopoverContent>
|
||||||
|
|
@ -441,10 +453,6 @@ const Galery = (props: any) => {
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</Popover>
|
</Popover>
|
||||||
</div>
|
</div>
|
||||||
<a onClick={() => handleDelete(audio?.id)} className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
|
||||||
<Icon icon="fa:trash" fontSize={20} />
|
|
||||||
<p className="text-base font-semibold">Hapus</p>
|
|
||||||
</a>
|
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</Popover>
|
</Popover>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -474,13 +482,21 @@ const Galery = (props: any) => {
|
||||||
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
||||||
</a>
|
</a>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent className="w-40">
|
<PopoverContent className="w-52">
|
||||||
|
<div onClick={() => handleSaveWishlist(image?.mediaUpload?.id)} className="cursor-pointer flex flex-row gap-2 hover:text-red-800">
|
||||||
|
<Icon icon="material-symbols:bookmark-outline" fontSize={25} />
|
||||||
|
<p className="text-base font-semibold mb-2">Simpan</p>
|
||||||
|
</div>
|
||||||
|
<Link href={`/content-management/rewrite/create/${image?.mediaUpload?.id}`} className="flex flex-row hover:text-red-800 gap-2">
|
||||||
|
<Icon icon="jam:write" fontSize={25} />
|
||||||
|
<p className="text-base font-semibold mb-2">Content Rewrite</p>
|
||||||
|
</Link>
|
||||||
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
||||||
<Popover>
|
<Popover>
|
||||||
<PopoverTrigger asChild>
|
<PopoverTrigger asChild>
|
||||||
<button className="w-full flex items-center gap-2">
|
<button className="w-full flex items-center gap-2">
|
||||||
<Icon icon="oi:share" fontSize={20} />
|
<Icon icon="oi:share" fontSize={20} />
|
||||||
<p className="text-base font-semibold mb-3">Bagikan</p>
|
<p className="text-base font-semibold mb-2">Bagikan</p>
|
||||||
</button>
|
</button>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent>
|
<PopoverContent>
|
||||||
|
|
@ -497,10 +513,6 @@ const Galery = (props: any) => {
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</Popover>
|
</Popover>
|
||||||
</div>
|
</div>
|
||||||
<a onClick={() => handleDelete(image?.id)} className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
|
||||||
<Icon icon="fa:trash" fontSize={20} />
|
|
||||||
<p className="text-base font-semibold">Hapus</p>
|
|
||||||
</a>
|
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</Popover>
|
</Popover>
|
||||||
</CardContent>
|
</CardContent>
|
||||||
|
|
@ -542,13 +554,21 @@ const Galery = (props: any) => {
|
||||||
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
<Icon className="text-white ml-1" fontSize={25} icon="tabler:dots" />
|
||||||
</a>
|
</a>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent className="w-40">
|
<PopoverContent className="w-52">
|
||||||
|
<div onClick={() => handleSaveWishlist(document?.mediaUpload?.id)} className="cursor-pointer flex flex-row gap-2 hover:text-red-800">
|
||||||
|
<Icon icon="material-symbols:bookmark-outline" fontSize={25} />
|
||||||
|
<p className="text-base font-semibold mb-2">Simpan</p>
|
||||||
|
</div>
|
||||||
|
<Link href={`/content-management/rewrite/create/${document?.mediaUpload?.id}`} className="flex flex-row hover:text-red-800 gap-2">
|
||||||
|
<Icon icon="jam:write" fontSize={25} />
|
||||||
|
<p className="text-base font-semibold mb-2">Content Rewrite</p>
|
||||||
|
</Link>
|
||||||
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
<div className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
||||||
<Popover>
|
<Popover>
|
||||||
<PopoverTrigger asChild>
|
<PopoverTrigger asChild>
|
||||||
<button className="w-full flex items-center gap-2">
|
<button className="w-full flex items-center gap-2">
|
||||||
<Icon icon="oi:share" fontSize={20} />
|
<Icon icon="oi:share" fontSize={20} />
|
||||||
<p className="text-base font-semibold mb-3">Bagikan</p>
|
<p className="text-base font-semibold mb-2">Bagikan</p>
|
||||||
</button>
|
</button>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent>
|
<PopoverContent>
|
||||||
|
|
@ -565,10 +585,6 @@ const Galery = (props: any) => {
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</Popover>
|
</Popover>
|
||||||
</div>
|
</div>
|
||||||
<a onClick={() => handleDelete(document?.id)} className="flex items-center gap-1 hover:text-red-800 w-full rounded-lg">
|
|
||||||
<Icon icon="fa:trash" fontSize={20} />
|
|
||||||
<p className="text-base font-semibold">Hapus</p>
|
|
||||||
</a>
|
|
||||||
</PopoverContent>
|
</PopoverContent>
|
||||||
</Popover>
|
</Popover>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ const InboxSection = () => {
|
||||||
<div className="flex flex-col justify-center items-center gap-3">
|
<div className="flex flex-col justify-center items-center gap-3">
|
||||||
<div className="flex justify-center">
|
<div className="flex justify-center">
|
||||||
<div className="flex flex-row gap-10 items-center justify-center">
|
<div className="flex flex-row gap-10 items-center justify-center">
|
||||||
<div>
|
<div className="">
|
||||||
<p className="bg-[#bb3523] py-1 px-3 rounded-full">Pesan Masuk</p>
|
<p className="bg-[#bb3523] py-1 px-3 rounded-full">Pesan Masuk</p>
|
||||||
</div>
|
</div>
|
||||||
<Link href={`/inbox/update`}>Update</Link>
|
<Link href={`/inbox/update`}>Update</Link>
|
||||||
|
|
|
||||||
|
|
@ -9,12 +9,13 @@ import { format } from "date-fns";
|
||||||
import { cn } from "@/lib/utils";
|
import { cn } from "@/lib/utils";
|
||||||
import { Checkbox } from "@/components/ui/checkbox";
|
import { Checkbox } from "@/components/ui/checkbox";
|
||||||
import { Icon } from "@iconify/react/dist/iconify.js";
|
import { Icon } from "@iconify/react/dist/iconify.js";
|
||||||
import { detailSchedule, listSchedule, listScheduleNextPublic, listSchedulePrevPublic, listScheduleTodayPublic } from "@/service/schedule/schedule";
|
import { detailSchedule, listSchedule, listScheduleNextPublic, listSchedulePrevPublic, listScheduleTodayPublic, searchSchedules } from "@/service/schedule/schedule";
|
||||||
import { useRouter } from "@/i18n/routing";
|
import { useRouter } from "@/i18n/routing";
|
||||||
import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from "@/components/ui/alert-dialog";
|
import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger } from "@/components/ui/alert-dialog";
|
||||||
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion";
|
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion";
|
||||||
import { close, loading } from "@/config/swal";
|
import { close, loading } from "@/config/swal";
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
|
import { Input } from "@/components/ui/input";
|
||||||
|
|
||||||
const timeList = [
|
const timeList = [
|
||||||
{
|
{
|
||||||
|
|
@ -128,6 +129,28 @@ const Schedule = (props: any) => {
|
||||||
const [content, setContent] = useState();
|
const [content, setContent] = useState();
|
||||||
const { id } = props;
|
const { id } = props;
|
||||||
const t = useTranslations("LandingPage");
|
const t = useTranslations("LandingPage");
|
||||||
|
const [search, setSearch] = useState<any>();
|
||||||
|
const [scheduleSearch, setScheduleSearch] = useState<any>();
|
||||||
|
let typingTimer: any;
|
||||||
|
const doneTypingInterval = 1500;
|
||||||
|
|
||||||
|
async function doneTyping() {
|
||||||
|
if (search?.length > 2) {
|
||||||
|
const resSchedule = await searchSchedules(search);
|
||||||
|
setScheduleSearch(resSchedule.data?.data);
|
||||||
|
} else {
|
||||||
|
setScheduleSearch([]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleKeyUp = () => {
|
||||||
|
clearTimeout(typingTimer);
|
||||||
|
typingTimer = setTimeout(doneTyping, doneTypingInterval);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleKeyDown = () => {
|
||||||
|
clearTimeout(typingTimer);
|
||||||
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
async function getDataSchedule() {
|
async function getDataSchedule() {
|
||||||
|
|
@ -514,7 +537,14 @@ const Schedule = (props: any) => {
|
||||||
{/* komponen Kanan */}
|
{/* komponen Kanan */}
|
||||||
<div className="w-1/4 flex flex-col gap-6">
|
<div className="w-1/4 flex flex-col gap-6">
|
||||||
<div className="relative text-gray-600 dark:text-white">
|
<div className="relative text-gray-600 dark:text-white">
|
||||||
<input type="text" placeholder={t("titleSchedule")} className="pl-8 pr-4 py-1 w-full border rounded-full text-sm focus:outline-none" />
|
<input
|
||||||
|
onChange={(e) => setSearch(e.target.value)}
|
||||||
|
onKeyUp={handleKeyUp}
|
||||||
|
onKeyDown={handleKeyDown}
|
||||||
|
type="text"
|
||||||
|
placeholder={t("titleSchedule")}
|
||||||
|
className="pl-8 pr-4 py-1 w-full border rounded-full text-sm focus:outline-none"
|
||||||
|
/>
|
||||||
<span className="absolute left-2 top-1/2 transform -translate-y-1/2">
|
<span className="absolute left-2 top-1/2 transform -translate-y-1/2">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24">
|
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24">
|
||||||
<g fill="none" fill-rule="evenodd">
|
<g fill="none" fill-rule="evenodd">
|
||||||
|
|
|
||||||
|
|
@ -1,37 +1,20 @@
|
||||||
import { Link } from '@/i18n/routing';
|
import { Link } from "@/i18n/routing";
|
||||||
import ForgotPass from "@/components/partials/auth/forgot-pass";
|
import ForgotPass from "@/components/partials/auth/forgot-pass";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import Copyright from "@/components/partials/auth/copyright";
|
|
||||||
import Logo from "@/components/partials/auth/logo";
|
import Logo from "@/components/partials/auth/logo";
|
||||||
|
|
||||||
const ForgotPassPage = () => {
|
const ForgotPassPage = () => {
|
||||||
return (
|
return (
|
||||||
<div className="flex w-full items-center overflow-hidden min-h-dvh h-dvh basis-full">
|
<div className="flex w-full items-center overflow-hidden min-h-dvh h-dvh basis-full">
|
||||||
<div className="overflow-y-auto flex flex-wrap w-full h-dvh">
|
<div className="overflow-y-auto flex flex-wrap w-full h-dvh">
|
||||||
<div
|
<div className="lg:block hidden flex-1 overflow-hidden text-[40px] leading-[48px] text-default-600 relative z-[1] bg-default-50">
|
||||||
className="lg:block hidden flex-1 overflow-hidden text-[40px] leading-[48px] text-default-600
|
<div className="max-w-[520px] pt-16 ps-20 ">
|
||||||
relative z-[1] bg-default-50"
|
|
||||||
>
|
|
||||||
<div className="max-w-[520px] pt-20 ps-20">
|
|
||||||
<Link href="/" className="mb-6 inline-block">
|
<Link href="/" className="mb-6 inline-block">
|
||||||
<Logo />
|
<Image src="/assets/mediahub-logo.png" alt="" width={250} height={250} className="mb-10 w-full h-full" />
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<h4>
|
|
||||||
Unlock your Project{" "}
|
|
||||||
<span className="text-default-800 font-bold ms-2">
|
|
||||||
performance
|
|
||||||
</span>
|
|
||||||
</h4>
|
|
||||||
</div>
|
</div>
|
||||||
<div className="absolute left-0 bottom-[-130px] h-full w-full z-[-1]">
|
<div className="absolute left-0 2xl:bottom-[-160px] bottom-[-130px] h-full w-full z-[-1]">
|
||||||
<Image
|
<Image src="/assets/vector-login.svg" alt="" width={300} height={300} className="mb-10 w-full h-full" />
|
||||||
width={300}
|
|
||||||
height={300}
|
|
||||||
src="/images/auth/ils1.svg"
|
|
||||||
alt=""
|
|
||||||
className="h-full w-full object-contain"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex-1 relative dark:bg-default-100 bg-white">
|
<div className="flex-1 relative dark:bg-default-100 bg-white">
|
||||||
|
|
@ -44,29 +27,18 @@ const ForgotPassPage = () => {
|
||||||
</div>
|
</div>
|
||||||
<div className="text-center 2xl:mb-10 mb-5">
|
<div className="text-center 2xl:mb-10 mb-5">
|
||||||
<h4 className="font-medium mb-4">Forgot Your Password?</h4>
|
<h4 className="font-medium mb-4">Forgot Your Password?</h4>
|
||||||
<div className="text-default-500 text-base">
|
|
||||||
Reset Password with Dashcode.
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="font-normal text-base text-default-500 text-center px-2 bg-default-100 rounded py-3 mb-4 mt-10">
|
|
||||||
Enter your Email and instructions will be sent to you!
|
|
||||||
</div>
|
</div>
|
||||||
|
<div className="font-normal text-base text-default-500 text-center px-2 bg-default-100 rounded py-3 mb-4 mt-10">Enter your Username and instructions will be sent to you!</div>
|
||||||
|
|
||||||
<ForgotPass />
|
<ForgotPass />
|
||||||
<div className="md:max-w-[345px] mx-auto font-normal text-default-500 2xl:mt-12 mt-8 uppercase text-sm">
|
<div className="md:max-w-[345px] mx-auto font-normal text-default-500 2xl:mt-12 mt-8 uppercase text-sm">
|
||||||
Forget It,
|
Forget It,
|
||||||
<Link
|
<Link href="/auth" className="text-default-900 font-medium hover:underline">
|
||||||
href="/"
|
|
||||||
className="text-default-900 font-medium hover:underline"
|
|
||||||
>
|
|
||||||
Send me Back
|
Send me Back
|
||||||
</Link>
|
</Link>
|
||||||
to The Sign In
|
to The Sign In
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="text-xs font-normal text-default-500 z-[999] pb-10 text-center">
|
|
||||||
<Copyright />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -763,7 +763,7 @@ const page = () => {
|
||||||
<label htmlFor="address" className="mb-2">
|
<label htmlFor="address" className="mb-2">
|
||||||
Alamat <span className="text-red-500">*</span>
|
Alamat <span className="text-red-500">*</span>
|
||||||
</label>
|
</label>
|
||||||
<Textarea className={`form-control ${errors.address ? "block" : ""}`} {...register("address")} placeholder="Masukan Alamat Lengkap Anda" rows={3} />
|
<Textarea className={` ${errors.address ? "block" : ""}`} {...register("address")} placeholder="Masukan Alamat Lengkap Anda" rows={3} />
|
||||||
<div className="text-red-500">{errors.address?.message}</div>
|
<div className="text-red-500">{errors.address?.message}</div>
|
||||||
</div>
|
</div>
|
||||||
{Number(category) == 6 ? (
|
{Number(category) == 6 ? (
|
||||||
|
|
|
||||||
|
|
@ -6,17 +6,27 @@ import { getHeroData } from "@/service/landing/landing";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
import { useParams, usePathname, useRouter } from "next/navigation";
|
import { useParams, usePathname, useRouter } from "next/navigation";
|
||||||
import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel";
|
import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel";
|
||||||
|
import { Skeleton } from "../ui/skeleton";
|
||||||
|
|
||||||
const Hero: React.FC = () => {
|
const Hero: React.FC = () => {
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const pathname = usePathname();
|
const pathname = usePathname();
|
||||||
const params = useParams();
|
const params = useParams();
|
||||||
const locale = params?.locale;
|
const locale = params?.locale;
|
||||||
|
const [isLoading, setIsLoading] = useState<any>(true);
|
||||||
const [heroData, setHeroData] = useState<any>();
|
const [heroData, setHeroData] = useState<any>();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const timer = setTimeout(() => {
|
||||||
|
setIsLoading(false);
|
||||||
|
}, 3000);
|
||||||
|
|
||||||
|
return () => clearTimeout(timer);
|
||||||
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
async function fetchCategories() {
|
async function fetchCategories() {
|
||||||
const url = 'https://netidhub.com/api/csrf';
|
const url = "https://netidhub.com/api/csrf";
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch(url);
|
const response = await fetch(url);
|
||||||
|
|
@ -28,7 +38,7 @@ const Hero: React.FC = () => {
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
return data; // Menampilkan data yang diterima dari API
|
return data; // Menampilkan data yang diterima dari API
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Fetch error: ', error);
|
console.error("Fetch error: ", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -43,7 +53,16 @@ const Hero: React.FC = () => {
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col lg:flex-row items-start justify-center gap-8 px-4 lg:px-20 py-4 mx-auto w-auto mt-6">
|
<div className="flex flex-col lg:flex-row items-start justify-center gap-8 px-4 lg:px-20 py-4 mx-auto w-auto mt-6">
|
||||||
{/* Section Gambar Utama */}
|
{/* Section Gambar Utama */}
|
||||||
<Carousel className="lg:w-2/3 w-full lg:h-full ">
|
{isLoading ? (
|
||||||
|
<div className="flex flex-col space-y-3 mx-auto w-full lg:w-2/3">
|
||||||
|
<Skeleton className="h-[310px] lg:h-[420px] rounded-xl" />
|
||||||
|
<div className="space-y-2">
|
||||||
|
<Skeleton className="h-4 w-[250px]" />
|
||||||
|
<Skeleton className="h-4 w-[200px]" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<Carousel className="lg:w-2/3 lg:h-full ">
|
||||||
<CarouselContent>
|
<CarouselContent>
|
||||||
{heroData?.map((list: any) => (
|
{heroData?.map((list: any) => (
|
||||||
<CarouselItem key={list?.id}>
|
<CarouselItem key={list?.id}>
|
||||||
|
|
@ -72,9 +91,49 @@ const Hero: React.FC = () => {
|
||||||
<CarouselPrevious />
|
<CarouselPrevious />
|
||||||
<CarouselNext />
|
<CarouselNext />
|
||||||
</Carousel>
|
</Carousel>
|
||||||
|
)}
|
||||||
|
|
||||||
{/* Section Kanan */}
|
{/* Section Kanan */}
|
||||||
<div className=" ">
|
<div>
|
||||||
|
{isLoading ? (
|
||||||
|
<>
|
||||||
|
<div className="flex items-center gap-4 max-w-sm mx-auto mb-3">
|
||||||
|
<Skeleton className="h-[73px] w-16 rounded-md" />
|
||||||
|
<div className="space-y-2">
|
||||||
|
<Skeleton className="h-4 w-[250px]" />
|
||||||
|
<Skeleton className="h-4 w-[200px]" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center gap-4 max-w-sm mx-auto mb-3">
|
||||||
|
<Skeleton className="h-[73px] w-16 rounded-md" />
|
||||||
|
<div className="space-y-2">
|
||||||
|
<Skeleton className="h-4 w-[250px]" />
|
||||||
|
<Skeleton className="h-4 w-[200px]" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center gap-4 max-w-sm mx-auto mb-3">
|
||||||
|
<Skeleton className="h-[73px] w-16 rounded-md" />
|
||||||
|
<div className="space-y-2">
|
||||||
|
<Skeleton className="h-4 w-[250px]" />
|
||||||
|
<Skeleton className="h-4 w-[200px]" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center gap-4 max-w-sm mx-auto mb-3">
|
||||||
|
<Skeleton className="h-[73px] w-16 rounded-md" />
|
||||||
|
<div className="space-y-2">
|
||||||
|
<Skeleton className="h-4 w-[250px]" />
|
||||||
|
<Skeleton className="h-4 w-[200px]" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex items-center gap-4 max-w-sm mx-auto">
|
||||||
|
<Skeleton className="h-[73px] w-16 rounded-md" />
|
||||||
|
<div className="space-y-2">
|
||||||
|
<Skeleton className="h-4 w-[250px]" />
|
||||||
|
<Skeleton className="h-4 w-[200px]" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
<ul className="py-4 lg:py-0 flex flex-row lg:flex-col gap-4 flex-nowrap w-full overflow-x-auto">
|
<ul className="py-4 lg:py-0 flex flex-row lg:flex-col gap-4 flex-nowrap w-full overflow-x-auto">
|
||||||
{heroData?.map((item: any) => (
|
{heroData?.map((item: any) => (
|
||||||
<li key={item?.id} className="flex gap-4 flex-row lg:w-full ">
|
<li key={item?.id} className="flex gap-4 flex-row lg:w-full ">
|
||||||
|
|
@ -100,6 +159,7 @@ const Hero: React.FC = () => {
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -6,23 +6,8 @@ import { FiFile, FiImage, FiMusic, FiYoutube } from "react-icons/fi";
|
||||||
import { useParams, usePathname } from "next/navigation";
|
import { useParams, usePathname } from "next/navigation";
|
||||||
import { generateLocalizedPath } from "@/utils/globals";
|
import { generateLocalizedPath } from "@/utils/globals";
|
||||||
import { Link } from "@/i18n/routing";
|
import { Link } from "@/i18n/routing";
|
||||||
import {
|
import { NavigationMenu, NavigationMenuContent, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, navigationMenuTriggerStyle } from "@/components/ui/navigation-menu";
|
||||||
NavigationMenu,
|
import { DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from "../ui/dropdown-menu";
|
||||||
NavigationMenuContent,
|
|
||||||
NavigationMenuItem,
|
|
||||||
NavigationMenuLink,
|
|
||||||
NavigationMenuList,
|
|
||||||
NavigationMenuTrigger,
|
|
||||||
navigationMenuTriggerStyle,
|
|
||||||
} from "@/components/ui/navigation-menu";
|
|
||||||
import {
|
|
||||||
DropdownMenu,
|
|
||||||
DropdownMenuContent,
|
|
||||||
DropdownMenuGroup,
|
|
||||||
DropdownMenuItem,
|
|
||||||
DropdownMenuSeparator,
|
|
||||||
DropdownMenuTrigger,
|
|
||||||
} from "../ui/dropdown-menu";
|
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
import { Icon } from "../ui/icon";
|
import { Icon } from "../ui/icon";
|
||||||
import { getCookiesDecrypt } from "@/lib/utils";
|
import { getCookiesDecrypt } from "@/lib/utils";
|
||||||
|
|
@ -32,23 +17,10 @@ import { useTranslations } from "next-intl";
|
||||||
import { useRouter } from "@/i18n/routing";
|
import { useRouter } from "@/i18n/routing";
|
||||||
import { Button } from "@/components/ui/button";
|
import { Button } from "@/components/ui/button";
|
||||||
import LocalSwitcher from "../partials/header/locale-switcher";
|
import LocalSwitcher from "../partials/header/locale-switcher";
|
||||||
import {
|
import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog";
|
||||||
Dialog,
|
|
||||||
DialogClose,
|
|
||||||
DialogContent,
|
|
||||||
DialogDescription,
|
|
||||||
DialogFooter,
|
|
||||||
DialogHeader,
|
|
||||||
DialogTitle,
|
|
||||||
DialogTrigger,
|
|
||||||
} from "@/components/ui/dialog";
|
|
||||||
import { getUserNotifications, listRole } from "@/service/landing/landing";
|
import { getUserNotifications, listRole } from "@/service/landing/landing";
|
||||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
||||||
import {
|
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
|
||||||
Popover,
|
|
||||||
PopoverContent,
|
|
||||||
PopoverTrigger,
|
|
||||||
} from "@/components/ui/popover";
|
|
||||||
|
|
||||||
type Detail = {
|
type Detail = {
|
||||||
id: number;
|
id: number;
|
||||||
|
|
@ -89,11 +61,7 @@ const Navbar = () => {
|
||||||
const [notificationsUpdate, setNotificationsUpdate] = useState([]);
|
const [notificationsUpdate, setNotificationsUpdate] = useState([]);
|
||||||
const [selectedTab, setSelectedTab] = useState("image");
|
const [selectedTab, setSelectedTab] = useState("image");
|
||||||
|
|
||||||
let prefixPath = poldaName
|
let prefixPath = poldaName ? `/polda/${poldaName}` : satkerName ? `/satker/${satkerName}` : "/";
|
||||||
? `/polda/${poldaName}`
|
|
||||||
: satkerName
|
|
||||||
? `/satker/${satkerName}`
|
|
||||||
: "/";
|
|
||||||
|
|
||||||
let active = "";
|
let active = "";
|
||||||
let menu = "";
|
let menu = "";
|
||||||
|
|
@ -179,41 +147,18 @@ const Navbar = () => {
|
||||||
<div className="flex items-center justify-between px-4 lg:px-20 py-4 gap-3">
|
<div className="flex items-center justify-between px-4 lg:px-20 py-4 gap-3">
|
||||||
{/* Logo */}
|
{/* Logo */}
|
||||||
<Link href={prefixPath} className="flex items-center">
|
<Link href={prefixPath} className="flex items-center">
|
||||||
<img
|
<img src="/assets/mediahub-logo.gif" alt="Media Hub Logo" className="object-contain h-20" />
|
||||||
src="/assets/mediahub-logo.gif"
|
|
||||||
alt="Media Hub Logo"
|
|
||||||
className="object-contain h-20"
|
|
||||||
/>
|
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
{/* Mobile Menu Toggle */}
|
{/* Mobile Menu Toggle */}
|
||||||
<button
|
<button className="text-black dark:text-white right-0 size-20 h-10 w-10 lg:hidden" onClick={() => setMenuOpen(!menuOpen)}>
|
||||||
className="text-black dark:text-white right-0 size-20 h-10 w-10 lg:hidden"
|
|
||||||
onClick={() => setMenuOpen(!menuOpen)}
|
|
||||||
>
|
|
||||||
{menuOpen ? (
|
{menuOpen ? (
|
||||||
<svg
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
<path fill="#000" d="m13.41 12l4.3-4.29a1 1 0 1 0-1.42-1.42L12 10.59l-4.29-4.3a1 1 0 0 0-1.42 1.42l4.3 4.29l-4.3 4.29a1 1 0 0 0 0 1.42a1 1 0 0 0 1.42 0l4.29-4.3l4.29 4.3a1 1 0 0 0 1.42 0a1 1 0 0 0 0-1.42Z" />
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
fill="#000"
|
|
||||||
d="m13.41 12l4.3-4.29a1 1 0 1 0-1.42-1.42L12 10.59l-4.29-4.3a1 1 0 0 0-1.42 1.42l4.3 4.29l-4.3 4.29a1 1 0 0 0 0 1.42a1 1 0 0 0 1.42 0l4.29-4.3l4.29 4.3a1 1 0 0 0 1.42 0a1 1 0 0 0 0-1.42Z"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
) : (
|
) : (
|
||||||
<svg
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
<path fill="#000" d="M4 6a1 1 0 0 1 1-1h14a1 1 0 1 1 0 2H5a1 1 0 0 1-1-1m0 6a1 1 0 0 1 1-1h14a1 1 0 1 1 0 2H5a1 1 0 0 1-1-1m1 5a1 1 0 1 0 0 2h14a1 1 0 1 0 0-2z" />
|
||||||
width="24"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
fill="#000"
|
|
||||||
d="M4 6a1 1 0 0 1 1-1h14a1 1 0 1 1 0 2H5a1 1 0 0 1-1-1m0 6a1 1 0 0 1 1-1h14a1 1 0 1 1 0 2H5a1 1 0 0 1-1-1m1 5a1 1 0 1 0 0 2h14a1 1 0 1 0 0-2z"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
)}
|
)}
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -226,14 +171,7 @@ const Navbar = () => {
|
||||||
<NavigationMenuItem>
|
<NavigationMenuItem>
|
||||||
<NavigationMenuTrigger>
|
<NavigationMenuTrigger>
|
||||||
<a className="dark:text-white text-black flex flex-row justify-center items-center cursor-pointer">
|
<a className="dark:text-white text-black flex flex-row justify-center items-center cursor-pointer">
|
||||||
<svg
|
<svg className="mx-2 dark:" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
className="mx-2 dark:"
|
|
||||||
width="25"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 25 24"
|
|
||||||
fill="none"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
d="M20 7.5H5C4.6023 7.5004 4.221 7.65856 3.93978 7.93978C3.65856 8.221 3.5004 8.6023 3.5 9V19.5C3.5004 19.8977 3.65856 20.279 3.93978 20.5602C4.221 20.8414 4.6023 20.9996 5 21H20C20.3977 20.9996 20.779 20.8414 21.0602 20.5602C21.3414 20.279 21.4996 19.8977 21.5 19.5V9C21.4996 8.6023 21.3414 8.221 21.0602 7.93978C20.779 7.65856 20.3977 7.5004 20 7.5ZM10.25 17.25V11.25L15.5 14.25L10.25 17.25ZM5 4.5H20V6H5V4.5ZM6.5 1.5H18.5V3H6.5V1.5Z"
|
d="M20 7.5H5C4.6023 7.5004 4.221 7.65856 3.93978 7.93978C3.65856 8.221 3.5004 8.6023 3.5 9V19.5C3.5004 19.8977 3.65856 20.279 3.93978 20.5602C4.221 20.8414 4.6023 20.9996 5 21H20C20.3977 20.9996 20.779 20.8414 21.0602 20.5602C21.3414 20.279 21.4996 19.8977 21.5 19.5V9C21.4996 8.6023 21.3414 8.221 21.0602 7.93978C20.779 7.65856 20.3977 7.5004 20 7.5ZM10.25 17.25V11.25L15.5 14.25L10.25 17.25ZM5 4.5H20V6H5V4.5ZM6.5 1.5H18.5V3H6.5V1.5Z"
|
||||||
fill="currentColor"
|
fill="currentColor"
|
||||||
|
|
@ -243,19 +181,13 @@ const Navbar = () => {
|
||||||
</a>
|
</a>
|
||||||
</NavigationMenuTrigger>
|
</NavigationMenuTrigger>
|
||||||
<NavigationMenuContent className="flex flex-col place-content-start rounded-md overflow-hidden ">
|
<NavigationMenuContent className="flex flex-col place-content-start rounded-md overflow-hidden ">
|
||||||
<NavigationMenuLink
|
<NavigationMenuLink onClick={() => router.push(prefixPath + "/image/filter")} className="flex place-items-start gap-1.5 p-2 w-36">
|
||||||
onClick={() => router.push(prefixPath + "/image/filter")}
|
|
||||||
className="flex place-items-start gap-1.5 p-2 w-36"
|
|
||||||
>
|
|
||||||
<p className="text-slate-600 dark:text-white hover:text-[#bb3523] flex flex-row items-center py-2 cursor-pointer">
|
<p className="text-slate-600 dark:text-white hover:text-[#bb3523] flex flex-row items-center py-2 cursor-pointer">
|
||||||
<FiImage className="mr-2" />
|
<FiImage className="mr-2" />
|
||||||
{t("image")}
|
{t("image")}
|
||||||
</p>
|
</p>
|
||||||
</NavigationMenuLink>
|
</NavigationMenuLink>
|
||||||
<NavigationMenuLink
|
<NavigationMenuLink onClick={() => router.push(prefixPath + "/video/filter")} className="flex items-start gap-1.5 p-2 ">
|
||||||
onClick={() => router.push(prefixPath + "/video/filter")}
|
|
||||||
className="flex items-start gap-1.5 p-2 "
|
|
||||||
>
|
|
||||||
{pathname?.split("/")[1] == "in" ? (
|
{pathname?.split("/")[1] == "in" ? (
|
||||||
<>
|
<>
|
||||||
<p className="text-slate-600 text-left dark:text-white hover:text-[#bb3523] flex flex-row justify-center items-center py-2 cursor-pointer">
|
<p className="text-slate-600 text-left dark:text-white hover:text-[#bb3523] flex flex-row justify-center items-center py-2 cursor-pointer">
|
||||||
|
|
@ -272,19 +204,13 @@ const Navbar = () => {
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</NavigationMenuLink>
|
</NavigationMenuLink>
|
||||||
<NavigationMenuLink
|
<NavigationMenuLink onClick={() => router.push(prefixPath + "/document/filter")} className="flex place-items-start gap-1.5 p-2">
|
||||||
onClick={() => router.push(prefixPath + "/document/filter")}
|
|
||||||
className="flex place-items-start gap-1.5 p-2"
|
|
||||||
>
|
|
||||||
<p className="text-slate-600 text-left dark:text-white hover:text-[#bb3523] flex flex-row justify-center items-center py-2 cursor-pointer">
|
<p className="text-slate-600 text-left dark:text-white hover:text-[#bb3523] flex flex-row justify-center items-center py-2 cursor-pointer">
|
||||||
<FiFile className="mr-2" />
|
<FiFile className="mr-2" />
|
||||||
{t("text")}
|
{t("text")}
|
||||||
</p>
|
</p>
|
||||||
</NavigationMenuLink>
|
</NavigationMenuLink>
|
||||||
<NavigationMenuLink
|
<NavigationMenuLink onClick={() => router.push(prefixPath + "/audio/filter")} className="flex place-items-start gap-1.5 p-2 ">
|
||||||
onClick={() => router.push(prefixPath + "/audio/filter")}
|
|
||||||
className="flex place-items-start gap-1.5 p-2 "
|
|
||||||
>
|
|
||||||
<p className="text-slate-600 text-left dark:text-white hover:text-[#bb3523] flex flex-row justify-center items-center py-2 cursor-pointer">
|
<p className="text-slate-600 text-left dark:text-white hover:text-[#bb3523] flex flex-row justify-center items-center py-2 cursor-pointer">
|
||||||
<FiMusic className="mr-2" />
|
<FiMusic className="mr-2" />
|
||||||
{t("audio")}{" "}
|
{t("audio")}{" "}
|
||||||
|
|
@ -296,14 +222,7 @@ const Navbar = () => {
|
||||||
<Link href={prefixPath + "/schedule"} legacyBehavior passHref>
|
<Link href={prefixPath + "/schedule"} legacyBehavior passHref>
|
||||||
<NavigationMenuLink className={navigationMenuTriggerStyle()}>
|
<NavigationMenuLink className={navigationMenuTriggerStyle()}>
|
||||||
<span>
|
<span>
|
||||||
<svg
|
<svg className="mr-2" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
className="mr-2"
|
|
||||||
width="25"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 25 24"
|
|
||||||
fill="none"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
d="M19.5 4H18.5V3C18.5 2.4 18.1 2 17.5 2C16.9 2 16.5 2.4 16.5 3V4H8.5V3C8.5 2.4 8.1 2 7.5 2C6.9 2 6.5 2.4 6.5 3V4H5.5C3.8 4 2.5 5.3 2.5 7V8H22.5V7C22.5 5.3 21.2 4 19.5 4ZM2.5 19C2.5 20.7 3.8 22 5.5 22H19.5C21.2 22 22.5 20.7 22.5 19V10H2.5V19ZM17.5 12C18.1 12 18.5 12.4 18.5 13C18.5 13.6 18.1 14 17.5 14C16.9 14 16.5 13.6 16.5 13C16.5 12.4 16.9 12 17.5 12ZM17.5 16C18.1 16 18.5 16.4 18.5 17C18.5 17.6 18.1 18 17.5 18C16.9 18 16.5 17.6 16.5 17C16.5 16.4 16.9 16 17.5 16ZM12.5 12C13.1 12 13.5 12.4 13.5 13C13.5 13.6 13.1 14 12.5 14C11.9 14 11.5 13.6 11.5 13C11.5 12.4 11.9 12 12.5 12ZM12.5 16C13.1 16 13.5 16.4 13.5 17C13.5 17.6 13.1 18 12.5 18C11.9 18 11.5 17.6 11.5 17C11.5 16.4 11.9 16 12.5 16ZM7.5 12C8.1 12 8.5 12.4 8.5 13C8.5 13.6 8.1 14 7.5 14C6.9 14 6.5 13.6 6.5 13C6.5 12.4 6.9 12 7.5 12ZM7.5 16C8.1 16 8.5 16.4 8.5 17C8.5 17.6 8.1 18 7.5 18C6.9 18 6.5 17.6 6.5 17C6.5 16.4 6.9 16 7.5 16Z"
|
d="M19.5 4H18.5V3C18.5 2.4 18.1 2 17.5 2C16.9 2 16.5 2.4 16.5 3V4H8.5V3C8.5 2.4 8.1 2 7.5 2C6.9 2 6.5 2.4 6.5 3V4H5.5C3.8 4 2.5 5.3 2.5 7V8H22.5V7C22.5 5.3 21.2 4 19.5 4ZM2.5 19C2.5 20.7 3.8 22 5.5 22H19.5C21.2 22 22.5 20.7 22.5 19V10H2.5V19ZM17.5 12C18.1 12 18.5 12.4 18.5 13C18.5 13.6 18.1 14 17.5 14C16.9 14 16.5 13.6 16.5 13C16.5 12.4 16.9 12 17.5 12ZM17.5 16C18.1 16 18.5 16.4 18.5 17C18.5 17.6 18.1 18 17.5 18C16.9 18 16.5 17.6 16.5 17C16.5 16.4 16.9 16 17.5 16ZM12.5 12C13.1 12 13.5 12.4 13.5 13C13.5 13.6 13.1 14 12.5 14C11.9 14 11.5 13.6 11.5 13C11.5 12.4 11.9 12 12.5 12ZM12.5 16C13.1 16 13.5 16.4 13.5 17C13.5 17.6 13.1 18 12.5 18C11.9 18 11.5 17.6 11.5 17C11.5 16.4 11.9 16 12.5 16ZM7.5 12C8.1 12 8.5 12.4 8.5 13C8.5 13.6 8.1 14 7.5 14C6.9 14 6.5 13.6 6.5 13C6.5 12.4 6.9 12 7.5 12ZM7.5 16C8.1 16 8.5 16.4 8.5 17C8.5 17.6 8.1 18 7.5 18C6.9 18 6.5 17.6 6.5 17C6.5 16.4 6.9 16 7.5 16Z"
|
||||||
fill="currentColor"
|
fill="currentColor"
|
||||||
|
|
@ -318,14 +237,7 @@ const Navbar = () => {
|
||||||
<Link href={prefixPath + "/indeks"} legacyBehavior passHref>
|
<Link href={prefixPath + "/indeks"} legacyBehavior passHref>
|
||||||
<NavigationMenuLink className={navigationMenuTriggerStyle()}>
|
<NavigationMenuLink className={navigationMenuTriggerStyle()}>
|
||||||
<span>
|
<span>
|
||||||
<svg
|
<svg className="mr-2" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
className="mr-2"
|
|
||||||
width="25"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 25 24"
|
|
||||||
fill="none"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
fill-rule="evenodd"
|
fill-rule="evenodd"
|
||||||
clip-rule="evenodd"
|
clip-rule="evenodd"
|
||||||
|
|
@ -341,16 +253,49 @@ const Navbar = () => {
|
||||||
</NavigationMenuList>
|
</NavigationMenuList>
|
||||||
</NavigationMenu>
|
</NavigationMenu>
|
||||||
|
|
||||||
|
{roleId == undefined ? (
|
||||||
|
""
|
||||||
|
) : (
|
||||||
|
<div
|
||||||
|
className="my-auto items-center cursor-pointer"
|
||||||
|
style={
|
||||||
|
Number(roleId) == 5 || Number(roleId) == 8
|
||||||
|
? {
|
||||||
|
display: "none",
|
||||||
|
}
|
||||||
|
: {}
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Link
|
||||||
|
href="https://spit.humas.polri.go.id"
|
||||||
|
className=""
|
||||||
|
target="_blank"
|
||||||
|
style={
|
||||||
|
menuActive == "indeks"
|
||||||
|
? {
|
||||||
|
color: "#fff",
|
||||||
|
}
|
||||||
|
: {
|
||||||
|
color: "#1F1A17",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
legacyBehavior
|
||||||
|
>
|
||||||
|
<div className="flex flex-row items-center gap-1">
|
||||||
|
<Icon icon="material-symbols:align-end-rounded" fontSize={25} />
|
||||||
|
<p className="text-xs font-semibold">Raw Data</p>
|
||||||
|
</div>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
{/* <Link href="#" className="flex items-center space-x-1 text-red-600">
|
{/* <Link href="#" className="flex items-center space-x-1 text-red-600">
|
||||||
<span className="w-2 h-2 bg-red-500 rounded-full"></span>
|
<span className="w-2 h-2 bg-red-500 rounded-full"></span>
|
||||||
<span className="font-medium">{t("live")}</span>
|
<span className="font-medium">{t("live")}</span>
|
||||||
</Link> */}
|
</Link> */}
|
||||||
<div className="flex items-center space-x-1 ">
|
<div className="flex items-center space-x-1 ">
|
||||||
<a href="https://tvradio.polri.go.id/">
|
<a href="https://tvradio.polri.go.id/">
|
||||||
<img
|
<img src="/assets/polriTv.png" className="object-contain h-10 flex-auto " />
|
||||||
src="/assets/polriTv.png"
|
|
||||||
className="object-contain h-10 flex-auto "
|
|
||||||
/>
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -372,12 +317,7 @@ const Navbar = () => {
|
||||||
className="pl-8 pr-4 py-1 w-28 text-[13px] border rounded-full focus:outline-none dark:text-white"
|
className="pl-8 pr-4 py-1 w-28 text-[13px] border rounded-full focus:outline-none dark:text-white"
|
||||||
/>
|
/>
|
||||||
<span className="absolute left-4 top-1/2 transform -translate-y-1/2">
|
<span className="absolute left-4 top-1/2 transform -translate-y-1/2">
|
||||||
<svg
|
<svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24">
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="13"
|
|
||||||
height="13"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
fill="currentColor"
|
fill="currentColor"
|
||||||
fill-rule="evenodd"
|
fill-rule="evenodd"
|
||||||
|
|
@ -433,37 +373,22 @@ const Navbar = () => {
|
||||||
)}
|
)}
|
||||||
</div> */}
|
</div> */}
|
||||||
|
|
||||||
{roleId === "5" ||
|
{roleId === "5" || roleId === "6" || roleId === "7" || roleId === "8" ? (
|
||||||
roleId === "6" ||
|
|
||||||
roleId === "7" ||
|
|
||||||
roleId === "8" ? (
|
|
||||||
<>
|
<>
|
||||||
{/* Inbox */}
|
{/* Inbox */}
|
||||||
<Popover>
|
<Popover>
|
||||||
<PopoverTrigger asChild>
|
<PopoverTrigger asChild>
|
||||||
<a className="cursor-pointer" onClick={() => test()}>
|
<a className="cursor-pointer" onClick={() => test()}>
|
||||||
{" "}
|
{" "}
|
||||||
<Icon
|
<Icon icon="basil:envelope-outline" color="black" width="30" />
|
||||||
icon="basil:envelope-outline"
|
|
||||||
color="black"
|
|
||||||
width="30"
|
|
||||||
/>
|
|
||||||
</a>
|
</a>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent className=" p-0 flex flex-col mt-2" align="end">
|
<PopoverContent className="w-[320px] p-0 flex flex-col mt-2" align="end">
|
||||||
<Tabs
|
<Tabs value={selectedTab} onValueChange={setSelectedTab} className="flex flex-col">
|
||||||
value={selectedTab}
|
|
||||||
onValueChange={setSelectedTab}
|
|
||||||
className="flex flex-col"
|
|
||||||
>
|
|
||||||
<TabsList className="grid grid-cols-2 lg:flex lg:flex-row">
|
<TabsList className="grid grid-cols-2 lg:flex lg:flex-row">
|
||||||
<TabsTrigger value="notif-tab">
|
<TabsTrigger value="notif-tab" className="focus:bg-none">
|
||||||
<a
|
<a
|
||||||
className={`flex items-center justify-center cursor-pointer gap-4 rounded-lg p-3 text-sm mr-4 ${
|
className={`flex items-center justify-center cursor-pointer gap-4 rounded-lg p-3 text-sm ml-3 mr-4 ${selectedTab === "notif-tab" ? "bg-[#bb3523] text-white" : "bg-gray-200 text-black"}`}
|
||||||
selectedTab === "notif-tab"
|
|
||||||
? "bg-[#bb3523] text-white"
|
|
||||||
: "bg-gray-200 text-black"
|
|
||||||
}`}
|
|
||||||
id="notif-tab"
|
id="notif-tab"
|
||||||
data-toggle="tab"
|
data-toggle="tab"
|
||||||
role="tab"
|
role="tab"
|
||||||
|
|
@ -476,11 +401,7 @@ const Navbar = () => {
|
||||||
</TabsTrigger>
|
</TabsTrigger>
|
||||||
<TabsTrigger value="notifupdate-tab">
|
<TabsTrigger value="notifupdate-tab">
|
||||||
<a
|
<a
|
||||||
className={`flex items-center cursor-pointer gap-4 rounded-lg p-3 text-sm mr-4 ${
|
className={`flex items-center cursor-pointer gap-4 rounded-lg p-3 text-sm ml-3 mr-4 ${selectedTab === "notifupdate-tab" ? "bg-[#bb3523] text-white" : "bg-gray-200 text-black"}`}
|
||||||
selectedTab === "notifupdate-tab"
|
|
||||||
? "bg-[#bb3523] text-white"
|
|
||||||
: "bg-gray-200 text-black"
|
|
||||||
}`}
|
|
||||||
id="notifupdate-tab"
|
id="notifupdate-tab"
|
||||||
data-toggle="tab"
|
data-toggle="tab"
|
||||||
role="tab"
|
role="tab"
|
||||||
|
|
@ -496,43 +417,22 @@ const Navbar = () => {
|
||||||
<TabsContent value="notif-tab">
|
<TabsContent value="notif-tab">
|
||||||
<div className="flex flex-col justify-center my-3">
|
<div className="flex flex-col justify-center my-3">
|
||||||
{notifications?.map((list: any) => (
|
{notifications?.map((list: any) => (
|
||||||
<a
|
<a className="flex flex-row" href={list.redirectUrl} key={list.id}>
|
||||||
className="flex flex-row"
|
|
||||||
href={list.redirectUrl}
|
|
||||||
key={list.id}
|
|
||||||
>
|
|
||||||
<div className="ml-4">
|
<div className="ml-4">
|
||||||
<img
|
<img src="/assets/avatar-profile.png" alt="..." className="w-8 items-center mr-3" />
|
||||||
src="/assets/avatar-profile.png"
|
|
||||||
alt="..."
|
|
||||||
className="w-8 items-center mr-3"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className="">
|
|
||||||
<div className="text-wrap text-left">
|
|
||||||
{list?.message}
|
|
||||||
</div>
|
</div>
|
||||||
|
<div className="text-wrap text-left">{list?.message}</div>
|
||||||
<div>
|
<div>
|
||||||
<small>
|
<small>
|
||||||
{`${new Date(list?.createdAt).getDate()}/${
|
{`${new Date(list?.createdAt).getDate()}/${new Date(list?.createdAt).getMonth() + 1}/${new Date(list?.createdAt).getFullYear()} ${new Date(list?.createdAt).getHours()}:${new Date(
|
||||||
new Date(list?.createdAt).getMonth() + 1
|
|
||||||
}/${new Date(
|
|
||||||
list?.createdAt
|
|
||||||
).getFullYear()} ${new Date(
|
|
||||||
list?.createdAt
|
|
||||||
).getHours()}:${new Date(
|
|
||||||
list?.createdAt
|
list?.createdAt
|
||||||
).getMinutes()}`}{" "}
|
).getMinutes()}`}{" "}
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</a>
|
</a>
|
||||||
))}
|
))}
|
||||||
<Link href="/inbox" legacyBehavior>
|
<Link href="/inbox" legacyBehavior>
|
||||||
<p
|
<p className="text-[15px] text-center py-2" role="button">
|
||||||
className="text-[15px] text-center py-2"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
Lihat semua
|
Lihat semua
|
||||||
</p>
|
</p>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
@ -541,31 +441,15 @@ const Navbar = () => {
|
||||||
<TabsContent value="notifupdate-tab">
|
<TabsContent value="notifupdate-tab">
|
||||||
<div className="">
|
<div className="">
|
||||||
{notificationsUpdate?.map((list: any) => (
|
{notificationsUpdate?.map((list: any) => (
|
||||||
<a
|
<a className="flex flex-row" href={list.redirectUrl} key={list.id}>
|
||||||
className="flex flex-row"
|
|
||||||
href={list.redirectUrl}
|
|
||||||
key={list.id}
|
|
||||||
>
|
|
||||||
<div className="ml-4">
|
<div className="ml-4">
|
||||||
<img
|
<img src="/assets/avatar-profile.png" alt="..." className="w-8 items-center mr-3" />
|
||||||
src="/assets/avatar-profile.png"
|
|
||||||
alt="..."
|
|
||||||
className="w-8 items-center mr-3"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div className="">
|
<div className="">
|
||||||
<div className="text-wrap text-left">
|
<div className="text-wrap text-left">{list?.message}</div>
|
||||||
{list?.message}
|
|
||||||
</div>
|
|
||||||
<div>
|
<div>
|
||||||
<small>
|
<small>
|
||||||
{`${new Date(list?.createdAt).getDate()}/${
|
{`${new Date(list?.createdAt).getDate()}/${new Date(list?.createdAt).getMonth() + 1}/${new Date(list?.createdAt).getFullYear()} ${new Date(list?.createdAt).getHours()}:${new Date(
|
||||||
new Date(list?.createdAt).getMonth() + 1
|
|
||||||
}/${new Date(
|
|
||||||
list?.createdAt
|
|
||||||
).getFullYear()} ${new Date(
|
|
||||||
list?.createdAt
|
|
||||||
).getHours()}:${new Date(
|
|
||||||
list?.createdAt
|
list?.createdAt
|
||||||
).getMinutes()}`}{" "}
|
).getMinutes()}`}{" "}
|
||||||
</small>
|
</small>
|
||||||
|
|
@ -574,10 +458,7 @@ const Navbar = () => {
|
||||||
</a>
|
</a>
|
||||||
))}
|
))}
|
||||||
<Link href="/inbox/update" legacyBehavior>
|
<Link href="/inbox/update" legacyBehavior>
|
||||||
<p
|
<p className="text-[15px] text-center py-2" role="button">
|
||||||
className="text-[15px] text-center py-2"
|
|
||||||
role="button"
|
|
||||||
>
|
|
||||||
Lihat semua
|
Lihat semua
|
||||||
</p>
|
</p>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
@ -590,20 +471,10 @@ const Navbar = () => {
|
||||||
<DropdownMenuTrigger asChild className="cursor-pointer">
|
<DropdownMenuTrigger asChild className="cursor-pointer">
|
||||||
{detail !== undefined ? (
|
{detail !== undefined ? (
|
||||||
<div className="flex items-center gap-3 text-default-800">
|
<div className="flex items-center gap-3 text-default-800">
|
||||||
<Image
|
<Image src={"/assets/avatar-profile.png"} alt={"Image"} width={36} height={36} className="rounded-full" />
|
||||||
src={"/assets/avatar-profile.png"}
|
|
||||||
alt={"Image"}
|
|
||||||
width={36}
|
|
||||||
height={36}
|
|
||||||
className="rounded-full"
|
|
||||||
/>
|
|
||||||
<div>
|
<div>
|
||||||
<div className="text-sm font-medium capitalize lg:block hidden whitespace-nowrap overflow-hidden truncate">
|
<div className="text-sm font-medium capitalize lg:block hidden whitespace-nowrap overflow-hidden truncate">{detail?.fullname}</div>
|
||||||
{detail?.fullname}
|
<p className="text-xs whitespace-nowrap overflow-hidden truncate">({detail?.fullname})</p>
|
||||||
</div>
|
|
||||||
<p className="text-xs whitespace-nowrap overflow-hidden truncate">
|
|
||||||
({detail?.fullname})
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
<span className="text-base me-2.5 lg:inline-block hidden">
|
<span className="text-base me-2.5 lg:inline-block hidden">
|
||||||
<Icon icon="heroicons-outline:chevron-down"></Icon>
|
<Icon icon="heroicons-outline:chevron-down"></Icon>
|
||||||
|
|
@ -627,11 +498,7 @@ const Navbar = () => {
|
||||||
href: "/content-management/galery",
|
href: "/content-management/galery",
|
||||||
},
|
},
|
||||||
].map((item, index) => (
|
].map((item, index) => (
|
||||||
<Link
|
<Link href={item.href} key={`info-menu-${index}`} className="cursor-pointer">
|
||||||
href={item.href}
|
|
||||||
key={`info-menu-${index}`}
|
|
||||||
className="cursor-pointer"
|
|
||||||
>
|
|
||||||
<DropdownMenuItem className="flex items-center gap-2 text-sm font-medium text-default-600 capitalize px-3 py-1.5 cursor-pointer">
|
<DropdownMenuItem className="flex items-center gap-2 text-sm font-medium text-default-600 capitalize px-3 py-1.5 cursor-pointer">
|
||||||
<Icon icon={item.icon} className="w-4 h-4" />
|
<Icon icon={item.icon} className="w-4 h-4" />
|
||||||
{item.name}
|
{item.name}
|
||||||
|
|
@ -643,11 +510,7 @@ const Navbar = () => {
|
||||||
<DropdownMenuItem className="flex items-center gap-2 text-sm font-medium text-default-600 capitalize my-1 px-3 cursor-pointer">
|
<DropdownMenuItem className="flex items-center gap-2 text-sm font-medium text-default-600 capitalize my-1 px-3 cursor-pointer">
|
||||||
<div>
|
<div>
|
||||||
<Link href={"/"}>
|
<Link href={"/"}>
|
||||||
<button
|
<button type="submit" className="w-full flex items-center gap-2" onClick={onLogout}>
|
||||||
type="submit"
|
|
||||||
className="w-full flex items-center gap-2"
|
|
||||||
onClick={onLogout}
|
|
||||||
>
|
|
||||||
<Icon icon="heroicons:power" className="w-4 h-4" />
|
<Icon icon="heroicons:power" className="w-4 h-4" />
|
||||||
{t("logOut")}
|
{t("logOut")}
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -657,42 +520,22 @@ const Navbar = () => {
|
||||||
</DropdownMenuContent>
|
</DropdownMenuContent>
|
||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
</>
|
</>
|
||||||
) : roleId === "2" ||
|
) : roleId === "2" || roleId === "3" || roleId === "4" || roleId === "9" || roleId === "10" || roleId === "11" || roleId === "12" || roleId === "13" ? (
|
||||||
roleId === "3" ||
|
|
||||||
roleId === "4" ||
|
|
||||||
roleId === "9" ||
|
|
||||||
roleId === "10" ||
|
|
||||||
roleId === "11" ||
|
|
||||||
roleId === "12" ||
|
|
||||||
roleId === "13" ? (
|
|
||||||
<>
|
<>
|
||||||
{/* Inbox */}
|
{/* Inbox */}
|
||||||
<Popover>
|
<Popover>
|
||||||
<PopoverTrigger asChild>
|
<PopoverTrigger asChild>
|
||||||
<a className="cursor-pointer" onClick={() => test()}>
|
<a className="cursor-pointer" onClick={() => test()}>
|
||||||
{" "}
|
{" "}
|
||||||
<Icon
|
<Icon icon="basil:envelope-outline" color="black" width="30" />
|
||||||
icon="basil:envelope-outline"
|
|
||||||
color="black"
|
|
||||||
width="30"
|
|
||||||
/>
|
|
||||||
</a>
|
</a>
|
||||||
</PopoverTrigger>
|
</PopoverTrigger>
|
||||||
<PopoverContent
|
<PopoverContent className=" p-0 h-32 flex flex-col mt-2" align="end">
|
||||||
className=" p-0 h-32 flex flex-col mt-2"
|
<Tabs value={selectedTab} onValueChange={setSelectedTab} className="flex flex-row">
|
||||||
align="end"
|
|
||||||
>
|
|
||||||
<Tabs
|
|
||||||
value={selectedTab}
|
|
||||||
onValueChange={setSelectedTab}
|
|
||||||
className="flex flex-row"
|
|
||||||
>
|
|
||||||
<TabsList className="grid grid-cols-2 lg:flex lg:flex-row ">
|
<TabsList className="grid grid-cols-2 lg:flex lg:flex-row ">
|
||||||
<TabsTrigger value="notif-tab">
|
<TabsTrigger value="notif-tab">
|
||||||
<a
|
<a
|
||||||
className={`flex items-center justify-center cursor-pointer bg-[#bb3523] text-white gap-4 rounded-lg p-3 text-sm mr-4 ${
|
className={`flex items-center justify-center cursor-pointer bg-[#bb3523] text-white gap-4 rounded-lg p-3 text-sm mr-4 ${isMessageActive ? "active" : ""}`}
|
||||||
isMessageActive ? "active" : ""
|
|
||||||
}`}
|
|
||||||
id="notif-tab"
|
id="notif-tab"
|
||||||
data-toggle="tab"
|
data-toggle="tab"
|
||||||
role="tab"
|
role="tab"
|
||||||
|
|
@ -705,9 +548,7 @@ const Navbar = () => {
|
||||||
</TabsTrigger>
|
</TabsTrigger>
|
||||||
<TabsTrigger value="notifupdate-tab">
|
<TabsTrigger value="notifupdate-tab">
|
||||||
<a
|
<a
|
||||||
className={`flex items-center cursor-pointer bg-[#bb3523] text-white text-sm gap-4 rounded-lg p-3 mr-4 ${
|
className={`flex items-center cursor-pointer bg-[#bb3523] text-white text-sm gap-4 rounded-lg p-3 mr-4 ${isMessageActive ? "" : "active"}`}
|
||||||
isMessageActive ? "" : "active"
|
|
||||||
}`}
|
|
||||||
id="notifupdate-tab"
|
id="notifupdate-tab"
|
||||||
data-toggle="tab"
|
data-toggle="tab"
|
||||||
role="tab"
|
role="tab"
|
||||||
|
|
@ -721,33 +562,17 @@ const Navbar = () => {
|
||||||
</TabsTrigger>
|
</TabsTrigger>
|
||||||
</TabsList>
|
</TabsList>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
<div
|
<div className={`flex justify-center my-3 ${isMessageActive ? "active" : ""}`}>
|
||||||
className={`flex justify-center my-3 ${
|
|
||||||
isMessageActive ? "active" : ""
|
|
||||||
}`}
|
|
||||||
>
|
|
||||||
{notifications?.map((list: any) => (
|
{notifications?.map((list: any) => (
|
||||||
<a className="" href={list.redirectUrl} key={list.id}>
|
<a className="" href={list.redirectUrl} key={list.id}>
|
||||||
<div className="">
|
<div className="">
|
||||||
<img
|
<img src="/assets/avatar-profile.png" alt="..." className="" />
|
||||||
src="/assets/avatar-profile.png"
|
|
||||||
alt="..."
|
|
||||||
className=""
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div className="">
|
<div className="">
|
||||||
<div className="text-wrap text-left">
|
<div className="text-wrap text-left">{list?.message}</div>
|
||||||
{list?.message}
|
|
||||||
</div>
|
|
||||||
<div>
|
<div>
|
||||||
<small>
|
<small>
|
||||||
{`${new Date(list?.createdAt).getDate()}/${
|
{`${new Date(list?.createdAt).getDate()}/${new Date(list?.createdAt).getMonth() + 1}/${new Date(list?.createdAt).getFullYear()} ${new Date(list?.createdAt).getHours()}:${new Date(
|
||||||
new Date(list?.createdAt).getMonth() + 1
|
|
||||||
}/${new Date(
|
|
||||||
list?.createdAt
|
|
||||||
).getFullYear()} ${new Date(
|
|
||||||
list?.createdAt
|
|
||||||
).getHours()}:${new Date(
|
|
||||||
list?.createdAt
|
list?.createdAt
|
||||||
).getMinutes()}`}{" "}
|
).getMinutes()}`}{" "}
|
||||||
</small>
|
</small>
|
||||||
|
|
@ -761,37 +586,17 @@ const Navbar = () => {
|
||||||
</p>
|
</p>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div className={`flex flex-col justify-center my-3 ${isMessageActive ? "active" : ""}`}>
|
||||||
className={`flex flex-col justify-center my-3 ${
|
|
||||||
isMessageActive ? "active" : ""
|
|
||||||
}`}
|
|
||||||
>
|
|
||||||
{notificationsUpdate?.map((list: any) => (
|
{notificationsUpdate?.map((list: any) => (
|
||||||
<a
|
<a className="flex flex-row" href={list.redirectUrl} key={list.id}>
|
||||||
className="flex flex-row"
|
|
||||||
href={list.redirectUrl}
|
|
||||||
key={list.id}
|
|
||||||
>
|
|
||||||
<div className="ml-4">
|
<div className="ml-4">
|
||||||
<img
|
<img src="/assets/avatar-profile.png" alt="..." className="w-8 items-center mr-3" />
|
||||||
src="/assets/avatar-profile.png"
|
|
||||||
alt="..."
|
|
||||||
className="w-8 items-center mr-3"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div className="">
|
<div className="">
|
||||||
<div className="text-wrap text-left">
|
<div className="text-wrap text-left">{list?.message}</div>
|
||||||
{list?.message}
|
|
||||||
</div>
|
|
||||||
<div>
|
<div>
|
||||||
<small>
|
<small>
|
||||||
{`${new Date(list?.createdAt).getDate()}/${
|
{`${new Date(list?.createdAt).getDate()}/${new Date(list?.createdAt).getMonth() + 1}/${new Date(list?.createdAt).getFullYear()} ${new Date(list?.createdAt).getHours()}:${new Date(
|
||||||
new Date(list?.createdAt).getMonth() + 1
|
|
||||||
}/${new Date(
|
|
||||||
list?.createdAt
|
|
||||||
).getFullYear()} ${new Date(
|
|
||||||
list?.createdAt
|
|
||||||
).getHours()}:${new Date(
|
|
||||||
list?.createdAt
|
list?.createdAt
|
||||||
).getMinutes()}`}{" "}
|
).getMinutes()}`}{" "}
|
||||||
</small>
|
</small>
|
||||||
|
|
@ -813,20 +618,10 @@ const Navbar = () => {
|
||||||
<DropdownMenuTrigger asChild className="cursor-pointer">
|
<DropdownMenuTrigger asChild className="cursor-pointer">
|
||||||
{detail !== undefined ? (
|
{detail !== undefined ? (
|
||||||
<div className="flex items-center gap-3 text-default-800">
|
<div className="flex items-center gap-3 text-default-800">
|
||||||
<Image
|
<Image src={"/assets/avatar-profile.png"} alt={"Image"} width={36} height={36} className="rounded-full" />
|
||||||
src={"/assets/avatar-profile.png"}
|
|
||||||
alt={"Image"}
|
|
||||||
width={36}
|
|
||||||
height={36}
|
|
||||||
className="rounded-full"
|
|
||||||
/>
|
|
||||||
<div>
|
<div>
|
||||||
<div className="text-sm font-medium capitalize lg:block hidden whitespace-nowrap overflow-hidden truncate">
|
<div className="text-sm font-medium capitalize lg:block hidden whitespace-nowrap overflow-hidden truncate">{detail?.fullname}</div>
|
||||||
{detail?.fullname}
|
<p className="text-xs whitespace-nowrap overflow-hidden truncate">({detail?.fullname})</p>
|
||||||
</div>
|
|
||||||
<p className="text-xs whitespace-nowrap overflow-hidden truncate">
|
|
||||||
({detail?.fullname})
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
<span className="text-base me-2.5 lg:inline-block hidden">
|
<span className="text-base me-2.5 lg:inline-block hidden">
|
||||||
<Icon icon="heroicons-outline:chevron-down"></Icon>
|
<Icon icon="heroicons-outline:chevron-down"></Icon>
|
||||||
|
|
@ -850,11 +645,7 @@ const Navbar = () => {
|
||||||
href: "/dashboard",
|
href: "/dashboard",
|
||||||
},
|
},
|
||||||
].map((item, index) => (
|
].map((item, index) => (
|
||||||
<Link
|
<Link href={item.href} key={`info-menu-${index}`} className="cursor-pointer">
|
||||||
href={item.href}
|
|
||||||
key={`info-menu-${index}`}
|
|
||||||
className="cursor-pointer"
|
|
||||||
>
|
|
||||||
<DropdownMenuItem className="flex items-center gap-2 text-sm font-medium text-default-600 capitalize px-3 py-1.5 cursor-pointer">
|
<DropdownMenuItem className="flex items-center gap-2 text-sm font-medium text-default-600 capitalize px-3 py-1.5 cursor-pointer">
|
||||||
<Icon icon={item.icon} className="w-4 h-4" />
|
<Icon icon={item.icon} className="w-4 h-4" />
|
||||||
{item.name}
|
{item.name}
|
||||||
|
|
@ -866,11 +657,7 @@ const Navbar = () => {
|
||||||
<DropdownMenuItem className="flex items-center gap-2 text-sm font-medium text-default-600 capitalize my-1 px-3 cursor-pointer">
|
<DropdownMenuItem className="flex items-center gap-2 text-sm font-medium text-default-600 capitalize my-1 px-3 cursor-pointer">
|
||||||
<div>
|
<div>
|
||||||
<Link href={"/"}>
|
<Link href={"/"}>
|
||||||
<button
|
<button type="submit" className="w-full flex items-center gap-2" onClick={onLogout}>
|
||||||
type="submit"
|
|
||||||
className="w-full flex items-center gap-2"
|
|
||||||
onClick={onLogout}
|
|
||||||
>
|
|
||||||
<Icon icon="heroicons:power" className="w-4 h-4" />
|
<Icon icon="heroicons:power" className="w-4 h-4" />
|
||||||
{t("logOut")}
|
{t("logOut")}
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -883,39 +670,22 @@ const Navbar = () => {
|
||||||
) : (
|
) : (
|
||||||
// Masuk and Daftar buttons for roleId === null
|
// Masuk and Daftar buttons for roleId === null
|
||||||
<div className="flex justify-center items-center mx-3 gap-5">
|
<div className="flex justify-center items-center mx-3 gap-5">
|
||||||
<Link
|
<Link href="/auth" className="w-full lg:w-max px-4 py-1 bg-[#bb3523] text-white font-semibold rounded-md hover:bg-red-700 text-center">
|
||||||
href="/auth"
|
|
||||||
className="w-full lg:w-max px-4 py-1 bg-[#bb3523] text-white font-semibold rounded-md hover:bg-red-700 text-center"
|
|
||||||
>
|
|
||||||
{t("logIn")}
|
{t("logIn")}
|
||||||
</Link>
|
</Link>
|
||||||
<Dialog>
|
<Dialog>
|
||||||
<DialogTrigger asChild>
|
<DialogTrigger asChild>
|
||||||
<Button className="w-full lg:w-fit px-4 h-8 border bg-white border-[#bb3523] text-[#bb3523] font-semibold rounded-md hover:bg-[#bb3523] hover:text-white">
|
<Button className="w-full lg:w-fit px-4 h-8 border bg-white border-[#bb3523] text-[#bb3523] font-semibold rounded-md hover:bg-[#bb3523] hover:text-white">{t("register")}</Button>
|
||||||
{t("register")}
|
|
||||||
</Button>
|
|
||||||
</DialogTrigger>
|
</DialogTrigger>
|
||||||
<DialogContent size="sm" className="sm:max-w-[425px]">
|
<DialogContent size="sm" className="sm:max-w-[425px]">
|
||||||
<div className="flex flex-col w-full gap-1">
|
<div className="flex flex-col w-full gap-1">
|
||||||
<p className="text-lg font-semibold text-center">
|
<p className="text-lg font-semibold text-center">Kategori Registrasi</p>
|
||||||
Kategori Registrasi
|
<p className="text-base text-center">Silahkan pilih salah satu</p>
|
||||||
</p>
|
|
||||||
<p className="text-base text-center">
|
|
||||||
Silahkan pilih salah satu
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
{role?.map((row: any) => (
|
{role?.map((row: any) => (
|
||||||
<div key={row.id}>
|
<div key={row.id}>
|
||||||
<input
|
<input type="radio" id={`category${row.id}`} name="category" className="" value={row.id} checked={category == `${row.id}`} onChange={(event) => setCategory(event.target.value)} />
|
||||||
type="radio"
|
|
||||||
id={`category${row.id}`}
|
|
||||||
name="category"
|
|
||||||
className=""
|
|
||||||
value={row.id}
|
|
||||||
checked={category == `${row.id}`}
|
|
||||||
onChange={(event) => setCategory(event.target.value)}
|
|
||||||
/>
|
|
||||||
<label className="ml-2" htmlFor={`category${row.id}`}>
|
<label className="ml-2" htmlFor={`category${row.id}`}>
|
||||||
{row.name}
|
{row.name}
|
||||||
</label>
|
</label>
|
||||||
|
|
@ -924,11 +694,7 @@ const Navbar = () => {
|
||||||
</div>
|
</div>
|
||||||
<div className="border-b-2 border-black"></div>
|
<div className="border-b-2 border-black"></div>
|
||||||
<DialogFooter>
|
<DialogFooter>
|
||||||
<Link
|
<Link href={`/auth/registration?category=${category}`} className="bg-red-500 px-4 py-1 rounded-md border border-black text-white" type="submit">
|
||||||
href={`/auth/registration?category=${category}`}
|
|
||||||
className="bg-red-500 px-4 py-1 rounded-md border border-black text-white"
|
|
||||||
type="submit"
|
|
||||||
>
|
|
||||||
Selanjutnya{" "}
|
Selanjutnya{" "}
|
||||||
</Link>
|
</Link>
|
||||||
</DialogFooter>
|
</DialogFooter>
|
||||||
|
|
@ -947,14 +713,7 @@ const Navbar = () => {
|
||||||
<NavigationMenuItem>
|
<NavigationMenuItem>
|
||||||
<NavigationMenuTrigger>
|
<NavigationMenuTrigger>
|
||||||
<a className="dark:text-white text-black flex flex-row justify-center items-center cursor-pointer">
|
<a className="dark:text-white text-black flex flex-row justify-center items-center cursor-pointer">
|
||||||
<svg
|
<svg className="mx-2" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
className="mx-2"
|
|
||||||
width="25"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 25 24"
|
|
||||||
fill="none"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
d="M20 7.5H5C4.6023 7.5004 4.221 7.65856 3.93978 7.93978C3.65856 8.221 3.5004 8.6023 3.5 9V19.5C3.5004 19.8977 3.65856 20.279 3.93978 20.5602C4.221 20.8414 4.6023 20.9996 5 21H20C20.3977 20.9996 20.779 20.8414 21.0602 20.5602C21.3414 20.279 21.4996 19.8977 21.5 19.5V9C21.4996 8.6023 21.3414 8.221 21.0602 7.93978C20.779 7.65856 20.3977 7.5004 20 7.5ZM10.25 17.25V11.25L15.5 14.25L10.25 17.25ZM5 4.5H20V6H5V4.5ZM6.5 1.5H18.5V3H6.5V1.5Z"
|
d="M20 7.5H5C4.6023 7.5004 4.221 7.65856 3.93978 7.93978C3.65856 8.221 3.5004 8.6023 3.5 9V19.5C3.5004 19.8977 3.65856 20.279 3.93978 20.5602C4.221 20.8414 4.6023 20.9996 5 21H20C20.3977 20.9996 20.779 20.8414 21.0602 20.5602C21.3414 20.279 21.4996 19.8977 21.5 19.5V9C21.4996 8.6023 21.3414 8.221 21.0602 7.93978C20.779 7.65856 20.3977 7.5004 20 7.5ZM10.25 17.25V11.25L15.5 14.25L10.25 17.25ZM5 4.5H20V6H5V4.5ZM6.5 1.5H18.5V3H6.5V1.5Z"
|
||||||
fill="currentColor"
|
fill="currentColor"
|
||||||
|
|
@ -964,56 +723,25 @@ const Navbar = () => {
|
||||||
</a>
|
</a>
|
||||||
</NavigationMenuTrigger>
|
</NavigationMenuTrigger>
|
||||||
<NavigationMenuContent className="p-0 rounded-md overflow-hidden w-full">
|
<NavigationMenuContent className="p-0 rounded-md overflow-hidden w-full">
|
||||||
<NavigationMenuLink
|
<NavigationMenuLink onClick={() => router.push(generateLocalizedPath("/video/filter", String(locale)))} className="flex items-start gap-1.5 p-2 hover:bg-white">
|
||||||
onClick={() =>
|
|
||||||
router.push(
|
|
||||||
generateLocalizedPath("/video/filter", String(locale))
|
|
||||||
)
|
|
||||||
}
|
|
||||||
className="flex items-start gap-1.5 p-2 hover:bg-white"
|
|
||||||
>
|
|
||||||
<p className="text-slate-600 hover:text-[#bb3523] flex flex-row justify-center items-center px-5 py-2 cursor-pointer">
|
<p className="text-slate-600 hover:text-[#bb3523] flex flex-row justify-center items-center px-5 py-2 cursor-pointer">
|
||||||
<FiYoutube className="mr-2" />
|
<FiYoutube className="mr-2" />
|
||||||
{t("video")}
|
{t("video")}
|
||||||
</p>
|
</p>
|
||||||
</NavigationMenuLink>
|
</NavigationMenuLink>
|
||||||
<NavigationMenuLink
|
<NavigationMenuLink onClick={() => router.push(generateLocalizedPath("/audio/filter", String(locale)))} className="flex place-items-start gap-1.5 p-2 hover:bg-white">
|
||||||
onClick={() =>
|
|
||||||
router.push(
|
|
||||||
generateLocalizedPath("/audio/filter", String(locale))
|
|
||||||
)
|
|
||||||
}
|
|
||||||
className="flex place-items-start gap-1.5 p-2 hover:bg-white"
|
|
||||||
>
|
|
||||||
<p className="text-slate-600 hover:text-[#bb3523] flex flex-row justify-center items-center px-5 py-2 cursor-pointer">
|
<p className="text-slate-600 hover:text-[#bb3523] flex flex-row justify-center items-center px-5 py-2 cursor-pointer">
|
||||||
<FiMusic className="mr-2" />
|
<FiMusic className="mr-2" />
|
||||||
{t("audio")}
|
{t("audio")}
|
||||||
</p>
|
</p>
|
||||||
</NavigationMenuLink>
|
</NavigationMenuLink>
|
||||||
<NavigationMenuLink
|
<NavigationMenuLink onClick={() => router.push(generateLocalizedPath("/image/filter", String(locale)))} className="flex place-items-start gap-1.5 p-2 hover:bg-white">
|
||||||
onClick={() =>
|
|
||||||
router.push(
|
|
||||||
generateLocalizedPath("/image/filter", String(locale))
|
|
||||||
)
|
|
||||||
}
|
|
||||||
className="flex place-items-start gap-1.5 p-2 hover:bg-white"
|
|
||||||
>
|
|
||||||
<p className="text-slate-600 hover:text-[#bb3523] flex flex-row justify-center items-center px-5 py-2 cursor-pointer">
|
<p className="text-slate-600 hover:text-[#bb3523] flex flex-row justify-center items-center px-5 py-2 cursor-pointer">
|
||||||
<FiImage className="mr-2" />
|
<FiImage className="mr-2" />
|
||||||
{t("image")}
|
{t("image")}
|
||||||
</p>
|
</p>
|
||||||
</NavigationMenuLink>
|
</NavigationMenuLink>
|
||||||
<NavigationMenuLink
|
<NavigationMenuLink onClick={() => router.push(generateLocalizedPath("/document/filter", String(locale)))} className="flex place-items-start gap-1.5 p-2 hover:bg-white">
|
||||||
onClick={() =>
|
|
||||||
router.push(
|
|
||||||
generateLocalizedPath(
|
|
||||||
"/document/filter",
|
|
||||||
String(locale)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
className="flex place-items-start gap-1.5 p-2 hover:bg-white"
|
|
||||||
>
|
|
||||||
<p className="text-slate-600 hover:text-[#bb3523] flex flex-row justify-center items-center px-5 py-2 cursor-pointer">
|
<p className="text-slate-600 hover:text-[#bb3523] flex flex-row justify-center items-center px-5 py-2 cursor-pointer">
|
||||||
<FiFile className="mr-2" />
|
<FiFile className="mr-2" />
|
||||||
{t("text")}
|
{t("text")}
|
||||||
|
|
@ -1025,14 +753,7 @@ const Navbar = () => {
|
||||||
<Link href="/schedule" legacyBehavior passHref>
|
<Link href="/schedule" legacyBehavior passHref>
|
||||||
<NavigationMenuLink className={navigationMenuTriggerStyle()}>
|
<NavigationMenuLink className={navigationMenuTriggerStyle()}>
|
||||||
<span>
|
<span>
|
||||||
<svg
|
<svg className="mr-2" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
className="mr-2"
|
|
||||||
width="25"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 25 24"
|
|
||||||
fill="none"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
d="M19.5 4H18.5V3C18.5 2.4 18.1 2 17.5 2C16.9 2 16.5 2.4 16.5 3V4H8.5V3C8.5 2.4 8.1 2 7.5 2C6.9 2 6.5 2.4 6.5 3V4H5.5C3.8 4 2.5 5.3 2.5 7V8H22.5V7C22.5 5.3 21.2 4 19.5 4ZM2.5 19C2.5 20.7 3.8 22 5.5 22H19.5C21.2 22 22.5 20.7 22.5 19V10H2.5V19ZM17.5 12C18.1 12 18.5 12.4 18.5 13C18.5 13.6 18.1 14 17.5 14C16.9 14 16.5 13.6 16.5 13C16.5 12.4 16.9 12 17.5 12ZM17.5 16C18.1 16 18.5 16.4 18.5 17C18.5 17.6 18.1 18 17.5 18C16.9 18 16.5 17.6 16.5 17C16.5 16.4 16.9 16 17.5 16ZM12.5 12C13.1 12 13.5 12.4 13.5 13C13.5 13.6 13.1 14 12.5 14C11.9 14 11.5 13.6 11.5 13C11.5 12.4 11.9 12 12.5 12ZM12.5 16C13.1 16 13.5 16.4 13.5 17C13.5 17.6 13.1 18 12.5 18C11.9 18 11.5 17.6 11.5 17C11.5 16.4 11.9 16 12.5 16ZM7.5 12C8.1 12 8.5 12.4 8.5 13C8.5 13.6 8.1 14 7.5 14C6.9 14 6.5 13.6 6.5 13C6.5 12.4 6.9 12 7.5 12ZM7.5 16C8.1 16 8.5 16.4 8.5 17C8.5 17.6 8.1 18 7.5 18C6.9 18 6.5 17.6 6.5 17C6.5 16.4 6.9 16 7.5 16Z"
|
d="M19.5 4H18.5V3C18.5 2.4 18.1 2 17.5 2C16.9 2 16.5 2.4 16.5 3V4H8.5V3C8.5 2.4 8.1 2 7.5 2C6.9 2 6.5 2.4 6.5 3V4H5.5C3.8 4 2.5 5.3 2.5 7V8H22.5V7C22.5 5.3 21.2 4 19.5 4ZM2.5 19C2.5 20.7 3.8 22 5.5 22H19.5C21.2 22 22.5 20.7 22.5 19V10H2.5V19ZM17.5 12C18.1 12 18.5 12.4 18.5 13C18.5 13.6 18.1 14 17.5 14C16.9 14 16.5 13.6 16.5 13C16.5 12.4 16.9 12 17.5 12ZM17.5 16C18.1 16 18.5 16.4 18.5 17C18.5 17.6 18.1 18 17.5 18C16.9 18 16.5 17.6 16.5 17C16.5 16.4 16.9 16 17.5 16ZM12.5 12C13.1 12 13.5 12.4 13.5 13C13.5 13.6 13.1 14 12.5 14C11.9 14 11.5 13.6 11.5 13C11.5 12.4 11.9 12 12.5 12ZM12.5 16C13.1 16 13.5 16.4 13.5 17C13.5 17.6 13.1 18 12.5 18C11.9 18 11.5 17.6 11.5 17C11.5 16.4 11.9 16 12.5 16ZM7.5 12C8.1 12 8.5 12.4 8.5 13C8.5 13.6 8.1 14 7.5 14C6.9 14 6.5 13.6 6.5 13C6.5 12.4 6.9 12 7.5 12ZM7.5 16C8.1 16 8.5 16.4 8.5 17C8.5 17.6 8.1 18 7.5 18C6.9 18 6.5 17.6 6.5 17C6.5 16.4 6.9 16 7.5 16Z"
|
||||||
fill="currentColor"
|
fill="currentColor"
|
||||||
|
|
@ -1047,14 +768,7 @@ const Navbar = () => {
|
||||||
<Link href="/indeks" legacyBehavior passHref>
|
<Link href="/indeks" legacyBehavior passHref>
|
||||||
<NavigationMenuLink className={navigationMenuTriggerStyle()}>
|
<NavigationMenuLink className={navigationMenuTriggerStyle()}>
|
||||||
<span>
|
<span>
|
||||||
<svg
|
<svg className="mr-2" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
className="mr-2"
|
|
||||||
width="25"
|
|
||||||
height="24"
|
|
||||||
viewBox="0 0 25 24"
|
|
||||||
fill="none"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
fill-rule="evenodd"
|
fill-rule="evenodd"
|
||||||
clip-rule="evenodd"
|
clip-rule="evenodd"
|
||||||
|
|
@ -1076,10 +790,7 @@ const Navbar = () => {
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center space-x-1 mx-3 text-yellow-600 font-medium">
|
<div className="flex items-center space-x-1 mx-3 text-yellow-600 font-medium">
|
||||||
<a href="https://tvradio.polri.go.id/">
|
<a href="https://tvradio.polri.go.id/">
|
||||||
<img
|
<img src="/assets/polriTv.png" className="object-contain h-11 flex items-center" />
|
||||||
src="/assets/polriTv.png"
|
|
||||||
className="object-contain h-11 flex items-center"
|
|
||||||
/>
|
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -1118,22 +829,14 @@ const Navbar = () => {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className=" py-1 flex items-center mx-3">
|
<div className=" py-1 flex items-center mx-3">
|
||||||
<input
|
<input type="text" placeholder="Pencarian" className="border rounded-full w-full text-sm text-center text-gray-600" />
|
||||||
type="text"
|
|
||||||
placeholder="Pencarian"
|
|
||||||
className="border rounded-full w-full text-sm text-center text-gray-600"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div className="flex justify-center items-center mx-3 gap-5">
|
<div className="flex justify-center items-center mx-3 gap-5">
|
||||||
{fullName ? (
|
{fullName ? (
|
||||||
<>
|
<>
|
||||||
<DropdownMenu>
|
<DropdownMenu>
|
||||||
<DropdownMenuTrigger className="flex items-center gap-1">
|
<DropdownMenuTrigger className="flex items-center gap-1">
|
||||||
<img
|
<img className="h-12 w-12" src="/assets/avatar-profile.png" alt="avatar-profile" />
|
||||||
className="h-12 w-12"
|
|
||||||
src="/assets/avatar-profile.png"
|
|
||||||
alt="avatar-profile"
|
|
||||||
/>
|
|
||||||
<a className="gap-2">
|
<a className="gap-2">
|
||||||
<p className="text-xs font-semibold">{fullName}</p>
|
<p className="text-xs font-semibold">{fullName}</p>
|
||||||
<p className="text-xs">{`(${roleName})`}</p>
|
<p className="text-xs">{`(${roleName})`}</p>
|
||||||
|
|
@ -1141,33 +844,20 @@ const Navbar = () => {
|
||||||
</DropdownMenuTrigger>
|
</DropdownMenuTrigger>
|
||||||
<DropdownMenuContent>
|
<DropdownMenuContent>
|
||||||
<DropdownMenuItem>
|
<DropdownMenuItem>
|
||||||
<Link
|
<Link href="/profile" className="flex items-center gap-1 hover:bg-slate-600 w-full rounded-lg">
|
||||||
href="/profile"
|
|
||||||
className="flex items-center gap-1 hover:bg-slate-600 w-full rounded-lg"
|
|
||||||
>
|
|
||||||
<Icon icon="iconamoon:profile-circle-fill" />
|
<Icon icon="iconamoon:profile-circle-fill" />
|
||||||
{t("profile")}
|
{t("profile")}
|
||||||
</Link>
|
</Link>
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
<DropdownMenuItem>
|
<DropdownMenuItem>
|
||||||
<Link
|
<Link href="/content-management/galery" className="flex items-center gap-1 hover:bg-slate-600 w-full rounded-lg">
|
||||||
href="/content-management/galery"
|
|
||||||
className="flex items-center gap-1 hover:bg-slate-600 w-full rounded-lg"
|
|
||||||
>
|
|
||||||
<Icon icon="stash:save-ribbon-light" />
|
<Icon icon="stash:save-ribbon-light" />
|
||||||
{t("contentManagement")}
|
{t("contentManagement")}
|
||||||
</Link>
|
</Link>
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
<DropdownMenuItem>
|
<DropdownMenuItem>
|
||||||
<Link
|
<Link href={"/"} className="flex items-center gap-1 hover:bg-slate-600 w-full rounded-lg">
|
||||||
href={"/"}
|
<button type="submit" className="w-full flex items-center gap-2" onClick={onLogout}>
|
||||||
className="flex items-center gap-1 hover:bg-slate-600 w-full rounded-lg"
|
|
||||||
>
|
|
||||||
<button
|
|
||||||
type="submit"
|
|
||||||
className="w-full flex items-center gap-2"
|
|
||||||
onClick={onLogout}
|
|
||||||
>
|
|
||||||
<Icon icon="iconamoon:exit-bold" />
|
<Icon icon="iconamoon:exit-bold" />
|
||||||
{t("logOut")}
|
{t("logOut")}
|
||||||
</button>
|
</button>
|
||||||
|
|
@ -1178,41 +868,22 @@ const Navbar = () => {
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<Link
|
<Link href="/auth" className="px-4 py-[10px] bg-[#bb3523] text-white font-semibold rounded-md hover:bg-[#bb3523]">
|
||||||
href="/auth"
|
|
||||||
className="px-4 py-[10px] bg-[#bb3523] text-white font-semibold rounded-md hover:bg-[#bb3523]"
|
|
||||||
>
|
|
||||||
{t("logIn")}
|
{t("logIn")}
|
||||||
</Link>
|
</Link>
|
||||||
<Dialog>
|
<Dialog>
|
||||||
<DialogTrigger asChild>
|
<DialogTrigger asChild>
|
||||||
<Button className="w-full lg:w-max px-4 py-1 bg-[#bb3523] text-white font-semibold rounded-md hover:bg-red-700 text-center">
|
<Button className="w-full lg:w-max px-4 py-1 bg-[#bb3523] text-white font-semibold rounded-md hover:bg-red-700 text-center">{t("register")}</Button>
|
||||||
{t("register")}
|
|
||||||
</Button>
|
|
||||||
</DialogTrigger>
|
</DialogTrigger>
|
||||||
<DialogContent size="sm" className="sm:max-w-[425px]">
|
<DialogContent size="sm" className="sm:max-w-[425px]">
|
||||||
<div className="flex flex-col w-full gap-1">
|
<div className="flex flex-col w-full gap-1">
|
||||||
<p className="text-lg font-semibold text-center">
|
<p className="text-lg font-semibold text-center">Kategori Registrasi</p>
|
||||||
Kategori Registrasi
|
<p className="text-base text-center">Silahkan pilih salah satu</p>
|
||||||
</p>
|
|
||||||
<p className="text-base text-center">
|
|
||||||
Silahkan pilih salah satu
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
{role?.map((row: any) => (
|
{role?.map((row: any) => (
|
||||||
<div key={row.id}>
|
<div key={row.id}>
|
||||||
<input
|
<input type="radio" id={`category${row.id}`} name="category" className="" value={row.id} checked={category == `${row.id}`} onChange={(event) => setCategory(event.target.value)} />
|
||||||
type="radio"
|
|
||||||
id={`category${row.id}`}
|
|
||||||
name="category"
|
|
||||||
className=""
|
|
||||||
value={row.id}
|
|
||||||
checked={category == `${row.id}`}
|
|
||||||
onChange={(event) =>
|
|
||||||
setCategory(event.target.value)
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
<label className="ml-2" htmlFor={`category${row.id}`}>
|
<label className="ml-2" htmlFor={`category${row.id}`}>
|
||||||
{row.name}
|
{row.name}
|
||||||
</label>
|
</label>
|
||||||
|
|
@ -1221,11 +892,7 @@ const Navbar = () => {
|
||||||
</div>
|
</div>
|
||||||
<div className="border-b-2 border-black"></div>
|
<div className="border-b-2 border-black"></div>
|
||||||
<DialogFooter>
|
<DialogFooter>
|
||||||
<Link
|
<Link href={`/auth/registration?category=${category}`} className="bg-red-500 px-4 py-1 rounded-md border border-black text-white" type="submit">
|
||||||
href={`/auth/registration?category=${category}`}
|
|
||||||
className="bg-red-500 px-4 py-1 rounded-md border border-black text-white"
|
|
||||||
type="submit"
|
|
||||||
>
|
|
||||||
Selanjutnya{" "}
|
Selanjutnya{" "}
|
||||||
</Link>
|
</Link>
|
||||||
</DialogFooter>
|
</DialogFooter>
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,17 @@ import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
||||||
import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel";
|
import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel";
|
||||||
import { useParams, usePathname, useRouter } from "next/navigation";
|
import { useParams, usePathname, useRouter } from "next/navigation";
|
||||||
import { Icon } from "@iconify/react/dist/iconify.js";
|
import { Icon } from "@iconify/react/dist/iconify.js";
|
||||||
import { formatDateToIndonesian } from "@/utils/globals";
|
import { formatDateToIndonesian, secondToTimes } from "@/utils/globals";
|
||||||
import { getListContent } from "@/service/landing/landing";
|
import { getListContent } from "@/service/landing/landing";
|
||||||
import { Link } from "@/i18n/routing";
|
import { Link } from "@/i18n/routing";
|
||||||
import { Reveal } from "./Reveal";
|
import { Reveal } from "./Reveal";
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
|
import { Skeleton } from "../ui/skeleton";
|
||||||
|
|
||||||
const NewContent = (props: { group: string; type: string }) => {
|
const NewContent = (props: { group: string; type: string }) => {
|
||||||
const [newContent, setNewContent] = useState<any>();
|
const [newContent, setNewContent] = useState<any>();
|
||||||
const [selectedTab, setSelectedTab] = useState("image");
|
const [selectedTab, setSelectedTab] = useState("image");
|
||||||
|
const [isLoading, setIsLoading] = useState<any>(true);
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const pathname = usePathname();
|
const pathname = usePathname();
|
||||||
const params = useParams();
|
const params = useParams();
|
||||||
|
|
@ -22,6 +24,14 @@ const NewContent = (props: { group: string; type: string }) => {
|
||||||
const satkerName = params?.satker_name;
|
const satkerName = params?.satker_name;
|
||||||
const t = useTranslations("LandingPage");
|
const t = useTranslations("LandingPage");
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const timer = setTimeout(() => {
|
||||||
|
setIsLoading(false);
|
||||||
|
}, 3000);
|
||||||
|
|
||||||
|
return () => clearTimeout(timer);
|
||||||
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
initFetch();
|
initFetch();
|
||||||
}, [selectedTab]);
|
}, [selectedTab]);
|
||||||
|
|
@ -91,19 +101,29 @@ const NewContent = (props: { group: string; type: string }) => {
|
||||||
</TabsList>
|
</TabsList>
|
||||||
</Tabs>
|
</Tabs>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{isLoading ? (
|
||||||
|
<div className="flex flex-col space-y-3 max-w-sm mx-auto">
|
||||||
|
<Skeleton className="h-[125px] w-[250px] rounded-xl" />
|
||||||
|
<div className="space-y-2">
|
||||||
|
<Skeleton className="h-4 w-[250px]" />
|
||||||
|
<Skeleton className="h-4 w-[200px]" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
<div className="px-0 lg:px-10">
|
<div className="px-0 lg:px-10">
|
||||||
{selectedTab == "video" ? (
|
{selectedTab == "image" ? (
|
||||||
newContent?.length > 0 ? (
|
newContent?.length > 0 ? (
|
||||||
<Carousel className="w-full max-w-7xl mx-auto">
|
<Carousel className="w-full max-w-7xl mx-auto">
|
||||||
<CarouselContent>
|
<CarouselContent>
|
||||||
{newContent?.map((video: any) => (
|
{newContent?.map((image: any) => (
|
||||||
<CarouselItem key={video?.id} className="md:basis-1/2 lg:basis-1/3">
|
<CarouselItem key={image?.id} className="md:basis-1/2 lg:basis-1/3">
|
||||||
<Link href={`/video/detail/${video?.slug}`} className="relative group overflow-hidden shadow-md hover:shadow-lg">
|
<Link href={`/image/detail/${image?.slug}`} className="relative group overflow-hidden shadow-md hover:shadow-lg">
|
||||||
<img src={video?.thumbnailLink} className="w-full rounded-lg h-48 lg:h-60 object-cover group-hover:scale-100 transition-transform duration-300" />
|
<img src={image?.thumbnailLink} className="w-full rounded-lg h-48 lg:h-60 object-cover group-hover:scale-100 transition-transform duration-300" />
|
||||||
<div className="absolute bottom-0 left-0 right-0 bg-gray-600 border-l-4 border-[#bb3523] rounded-lg backdrop-blur-sm text-white p-2">
|
<div className="absolute bottom-0 left-0 right-0 bg-gray-600 border-l-4 border-[#bb3523] rounded-lg backdrop-blur-sm text-white p-2">
|
||||||
<h1 className="text-sm lg:text-lg mb-2 font-semibold h-5 hover:h-auto truncate hover:whitespace-normal hover:overflow-visible">{video?.title}</h1>
|
<h1 className="text-sm lg:text-lg mb-2 font-semibold h-5 hover:h-auto truncate hover:whitespace-normal hover:overflow-visible">{image?.title}</h1>
|
||||||
<p className="flex flex-row items-center text-[10px] gap-2">
|
<p className="flex flex-row items-center text-[10px] gap-2">
|
||||||
{formatDateToIndonesian(new Date(video?.createdAt))} {video?.timezone ? video?.timezone : "WIB"} | <Icon icon="formkit:eye" width="15" height="15" /> {video.clickCount}{" "}
|
{formatDateToIndonesian(new Date(image?.createdAt))} {image?.timezone ? image?.timezone : "WIB"} | <Icon icon="formkit:eye" width="15" height="15" /> {image.clickCount}{" "}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
@ -126,7 +146,7 @@ const NewContent = (props: { group: string; type: string }) => {
|
||||||
<CarouselItem key={audio?.id} className="md:basis-1/2 lg:basis-1/3">
|
<CarouselItem key={audio?.id} className="md:basis-1/2 lg:basis-1/3">
|
||||||
<div className="flex flex-row gap-6">
|
<div className="flex flex-row gap-6">
|
||||||
<Link href={`/audio/detail/${audio?.slug}`} className="flex flex-col sm:flex-row items-center bg-white dark:bg-gray-800 cursor-pointer shadow-md rounded-lg p-4 gap-4 w-full">
|
<Link href={`/audio/detail/${audio?.slug}`} className="flex flex-col sm:flex-row items-center bg-white dark:bg-gray-800 cursor-pointer shadow-md rounded-lg p-4 gap-4 w-full">
|
||||||
<div className="flex items-center justify-center bg-red-500 text-white rounded-lg w-16 h-8 lg:h-16">
|
<div className="flex items-center justify-center bg-red-500 text-white rounded-lg w-24 h-8 lg:h-16">
|
||||||
<svg width="32" height="34" viewBox="0 0 32 34" fill="null" xmlns="http://www.w3.org/2000/svg">
|
<svg width="32" height="34" viewBox="0 0 32 34" fill="null" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path
|
<path
|
||||||
d="M23.404 0.452014C23.7033 0.35857 24.0204 0.336816 24.3297 0.388509C24.639 0.440203 24.9318 0.563895 25.1845 0.749599C25.4371 0.935304 25.6426 1.17782 25.7843 1.45756C25.9259 1.73731 25.9998 2.04644 26 2.36001V14.414C25.3462 14.2296 24.6766 14.1064 24 14.046V8.36001L10 12.736V27C10 28.1264 9.6197 29.2197 8.92071 30.1029C8.22172 30.9861 7.24499 31.6075 6.14877 31.8663C5.05255 32.125 3.90107 32.0061 2.88089 31.5287C1.86071 31.0514 1.03159 30.2435 0.52787 29.2361C0.024152 28.2286 -0.124656 27.0806 0.105556 25.9781C0.335768 24.8755 0.931513 23.883 1.79627 23.1613C2.66102 22.4396 3.74413 22.031 4.87009 22.0017C5.99606 21.9724 7.09893 22.3242 8.00001 23V6.73601C7.99982 6.30956 8.13596 5.8942 8.38854 5.55059C8.64112 5.20698 8.99692 4.9531 9.40401 4.82601L23.404 0.452014ZM10 10.64L24 6.26601V2.36001L10 6.73601V10.64ZM5.00001 24C4.20436 24 3.44129 24.3161 2.87869 24.8787C2.31608 25.4413 2.00001 26.2044 2.00001 27C2.00001 27.7957 2.31608 28.5587 2.87869 29.1213C3.44129 29.6839 4.20436 30 5.00001 30C5.79566 30 6.55872 29.6839 7.12133 29.1213C7.68394 28.5587 8.00001 27.7957 8.00001 27C8.00001 26.2044 7.68394 25.4413 7.12133 24.8787C6.55872 24.3161 5.79566 24 5.00001 24ZM32 25C32 27.387 31.0518 29.6761 29.364 31.364C27.6761 33.0518 25.387 34 23 34C20.6131 34 18.3239 33.0518 16.636 31.364C14.9482 29.6761 14 27.387 14 25C14 22.6131 14.9482 20.3239 16.636 18.6361C18.3239 16.9482 20.6131 16 23 16C25.387 16 27.6761 16.9482 29.364 18.6361C31.0518 20.3239 32 22.6131 32 25ZM27.47 24.128L21.482 20.828C21.3298 20.7443 21.1583 20.7016 20.9846 20.7043C20.8108 20.707 20.6408 20.7549 20.4912 20.8433C20.3416 20.9317 20.2176 21.0576 20.1315 21.2086C20.0453 21.3595 20 21.5302 20 21.704V28.304C20 28.4778 20.0453 28.6486 20.1315 28.7995C20.2176 28.9504 20.3416 29.0763 20.4912 29.1647C20.6408 29.2531 20.8108 29.301 20.9846 29.3037C21.1583 29.3064 21.3298 29.2638 21.482 29.18L27.47 25.88C27.6268 25.7937 27.7575 25.6669 27.8486 25.5128C27.9397 25.3587 27.9877 25.183 27.9877 25.004C27.9877 24.825 27.9397 24.6493 27.8486 24.4952C27.7575 24.3412 27.6268 24.2143 27.47 24.128Z"
|
d="M23.404 0.452014C23.7033 0.35857 24.0204 0.336816 24.3297 0.388509C24.639 0.440203 24.9318 0.563895 25.1845 0.749599C25.4371 0.935304 25.6426 1.17782 25.7843 1.45756C25.9259 1.73731 25.9998 2.04644 26 2.36001V14.414C25.3462 14.2296 24.6766 14.1064 24 14.046V8.36001L10 12.736V27C10 28.1264 9.6197 29.2197 8.92071 30.1029C8.22172 30.9861 7.24499 31.6075 6.14877 31.8663C5.05255 32.125 3.90107 32.0061 2.88089 31.5287C1.86071 31.0514 1.03159 30.2435 0.52787 29.2361C0.024152 28.2286 -0.124656 27.0806 0.105556 25.9781C0.335768 24.8755 0.931513 23.883 1.79627 23.1613C2.66102 22.4396 3.74413 22.031 4.87009 22.0017C5.99606 21.9724 7.09893 22.3242 8.00001 23V6.73601C7.99982 6.30956 8.13596 5.8942 8.38854 5.55059C8.64112 5.20698 8.99692 4.9531 9.40401 4.82601L23.404 0.452014ZM10 10.64L24 6.26601V2.36001L10 6.73601V10.64ZM5.00001 24C4.20436 24 3.44129 24.3161 2.87869 24.8787C2.31608 25.4413 2.00001 26.2044 2.00001 27C2.00001 27.7957 2.31608 28.5587 2.87869 29.1213C3.44129 29.6839 4.20436 30 5.00001 30C5.79566 30 6.55872 29.6839 7.12133 29.1213C7.68394 28.5587 8.00001 27.7957 8.00001 27C8.00001 26.2044 7.68394 25.4413 7.12133 24.8787C6.55872 24.3161 5.79566 24 5.00001 24ZM32 25C32 27.387 31.0518 29.6761 29.364 31.364C27.6761 33.0518 25.387 34 23 34C20.6131 34 18.3239 33.0518 16.636 31.364C14.9482 29.6761 14 27.387 14 25C14 22.6131 14.9482 20.3239 16.636 18.6361C18.3239 16.9482 20.6131 16 23 16C25.387 16 27.6761 16.9482 29.364 18.6361C31.0518 20.3239 32 22.6131 32 25ZM27.47 24.128L21.482 20.828C21.3298 20.7443 21.1583 20.7016 20.9846 20.7043C20.8108 20.707 20.6408 20.7549 20.4912 20.8433C20.3416 20.9317 20.2176 21.0576 20.1315 21.2086C20.0453 21.3595 20 21.5302 20 21.704V28.304C20 28.4778 20.0453 28.6486 20.1315 28.7995C20.2176 28.9504 20.3416 29.0763 20.4912 29.1647C20.6408 29.2531 20.8108 29.301 20.9846 29.3037C21.1583 29.3064 21.3298 29.2638 21.482 29.18L27.47 25.88C27.6268 25.7937 27.7575 25.6669 27.8486 25.5128C27.9397 25.3587 27.9877 25.183 27.9877 25.004C27.9877 24.825 27.9397 24.6493 27.8486 24.4952C27.7575 24.3412 27.6268 24.2143 27.47 24.128Z"
|
||||||
|
|
@ -136,10 +156,12 @@ const NewContent = (props: { group: string; type: string }) => {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex flex-col flex-1">
|
<div className="flex flex-col flex-1">
|
||||||
<div className="text-gray-500 dark:text-gray-400 flex flex-row text-sm">
|
<div className="text-gray-500 dark:text-gray-400 flex flex-row text-sm text-center items-center">
|
||||||
{formatDateToIndonesian(new Date(audio?.createdAt))} {audio?.timezone ? audio?.timezone : "WIB"} | <Icon icon="formkit:eye" width="15" height="15" /> {audio?.clickCount}{" "}
|
{formatDateToIndonesian(new Date(audio?.createdAt))} {audio?.timezone ? audio?.timezone : "WIB"} | <Icon icon="formkit:eye" width="15" height="15" />
|
||||||
|
{audio?.clickCount}{" "}
|
||||||
</div>
|
</div>
|
||||||
<div className="font-semibold text-gray-900 dark:text-white mt-1 text-sm h-5 hover:h-auto truncate hover:whitespace-normal hover:overflow-visible">{audio?.title}</div>
|
<div className="font-semibold text-gray-900 dark:text-white mt-1 text-sm h-5 hover:h-auto truncate hover:whitespace-normal hover:overflow-visible">{audio?.title}</div>
|
||||||
|
<p className="text-sm"> {audio?.duration ? secondToTimes(Number(audio?.duration)) : "00:00:00"}</p>
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -154,18 +176,18 @@ const NewContent = (props: { group: string; type: string }) => {
|
||||||
<img src="/assets/empty-data.png" alt="empty" className="h-52 w-52 my-4" />
|
<img src="/assets/empty-data.png" alt="empty" className="h-52 w-52 my-4" />
|
||||||
</p>
|
</p>
|
||||||
)
|
)
|
||||||
) : selectedTab == "image" ? (
|
) : selectedTab == "video" ? (
|
||||||
newContent?.length > 0 ? (
|
newContent?.length > 0 ? (
|
||||||
<Carousel className="w-full max-w-7xl mx-auto">
|
<Carousel className="w-full max-w-7xl mx-auto">
|
||||||
<CarouselContent>
|
<CarouselContent>
|
||||||
{newContent?.map((image: any) => (
|
{newContent?.map((video: any) => (
|
||||||
<CarouselItem key={image?.id} className="md:basis-1/2 lg:basis-1/3">
|
<CarouselItem key={video?.id} className="md:basis-1/2 lg:basis-1/3">
|
||||||
<Link href={`/image/detail/${image?.slug}`} className="relative group rounded-md overflow-hidden shadow-md hover:shadow-lg">
|
<Link href={`/video/detail/${video?.slug}`} className="relative group rounded-md overflow-hidden shadow-md hover:shadow-lg">
|
||||||
<img src={image?.thumbnailLink} className="w-full h-40 lg:h-60 object-cover rounded-lg group-hover:scale-100 transition-transform duration-300" />
|
<img src={video?.thumbnailLink} className="w-full h-40 lg:h-60 object-cover rounded-lg group-hover:scale-100 transition-transform duration-300" />
|
||||||
<div className="absolute bottom-0 rounded-lg left-0 right-0 border-l-4 border-[#bb3523] bg-gray-600 text-white p-2">
|
<div className="absolute bottom-0 rounded-lg left-0 right-0 border-l-4 border-[#bb3523] bg-gray-600 text-white p-2">
|
||||||
<h1 className="text-sm font-semibold h-5 hover:h-auto truncate hover:whitespace-normal hover:overflow-visible">{image?.title}</h1>
|
<h1 className="text-sm font-semibold h-5 hover:h-auto truncate hover:whitespace-normal hover:overflow-visible">{video?.title}</h1>
|
||||||
<p className="flex flex-row items-center text-sm gap-2">
|
<p className="flex flex-row items-center text-sm gap-2">
|
||||||
{formatDateToIndonesian(new Date(image?.createdAt))} {image?.timezone ? image?.timezone : "WIB"}| <Icon icon="formkit:eye" width="15" height="15" /> {image?.clickCount}{" "}
|
{formatDateToIndonesian(new Date(video?.createdAt))} {video?.timezone ? video?.timezone : "WIB"}| <Icon icon="formkit:eye" width="15" height="15" /> {video?.clickCount}{" "}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
@ -225,6 +247,7 @@ const NewContent = (props: { group: string; type: string }) => {
|
||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
<div className="flex items-center flex-row justify-center">
|
<div className="flex items-center flex-row justify-center">
|
||||||
<Link href={`/${selectedTab}/filter?sortBy=${props.type}`} className="border text-[#bb3523] rounded-lg text-sm lg:text-md px-4 py-1 border-[#bb3523]">
|
<Link href={`/${selectedTab}/filter?sortBy=${props.type}`} className="border text-[#bb3523] rounded-lg text-sm lg:text-md px-4 py-1 border-[#bb3523]">
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,99 @@
|
||||||
|
// import { listCarousel } from '@/service/landing/landing';
|
||||||
|
// import React, { useEffect, useRef, useState } from 'react'
|
||||||
|
// import NewsTicker from "react-advanced-news-ticker";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// const NewsTicker = () => {
|
||||||
|
// const [content, setContent] = useState([]);
|
||||||
|
// const newsTickerRef = useRef<any>(null);
|
||||||
|
|
||||||
|
// useEffect(() => {
|
||||||
|
// async function fetchCarouselData() {
|
||||||
|
// try {
|
||||||
|
// const response = await listCarousel();
|
||||||
|
// setContent(response.data?.data || []);
|
||||||
|
// console.log('Carousel data:', response.data?.data);
|
||||||
|
// } catch (error) {
|
||||||
|
// console.error('Error fetching carousel data:', error);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// fetchCarouselData();
|
||||||
|
// }, []);
|
||||||
|
|
||||||
|
// function formatDateIndonesianWithTime(dateString: any) {
|
||||||
|
// const options: any = {
|
||||||
|
// year: 'numeric',
|
||||||
|
// month: 'long',
|
||||||
|
// day: 'numeric',
|
||||||
|
// hour: 'numeric',
|
||||||
|
// minute: 'numeric'
|
||||||
|
// };
|
||||||
|
|
||||||
|
// const formattedDate = new Date(dateString).toLocaleDateString('id-ID', options);
|
||||||
|
|
||||||
|
// return formattedDate.replace('pukul', '-');
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// const dummyNews = Array.from({ length: 10 }, (_, index) => ({
|
||||||
|
// id: index + 1,
|
||||||
|
// title: `Berita ${index + 1}`,
|
||||||
|
// name: `Penulis ${index + 1}`,
|
||||||
|
// }));
|
||||||
|
|
||||||
|
// return (
|
||||||
|
// <section className='section-news fixed-bottom'>
|
||||||
|
// <div className='breaking-news pt-3 pl-3' >
|
||||||
|
// Breaking News
|
||||||
|
// </div>
|
||||||
|
// <div className='news pt-3'>
|
||||||
|
// {content.length > 0 ?
|
||||||
|
// (
|
||||||
|
// <NewsTicker maxRows={1}
|
||||||
|
// rowHeight={45}
|
||||||
|
// duration={4000}
|
||||||
|
// ref={newsTickerRef}
|
||||||
|
// autoStart={true}
|
||||||
|
// style={{ listStyleType: "none" }}
|
||||||
|
// >
|
||||||
|
// {content.map((item: any) => (
|
||||||
|
// <>
|
||||||
|
// <div key={item.id} className="news-item">
|
||||||
|
// <a style={{ color: "black" }}
|
||||||
|
// href={
|
||||||
|
// Number(item.fileType?.id) == 1
|
||||||
|
// ? `/image/detail/${item.slug}`
|
||||||
|
// : Number(item.fileType?.id) == 2
|
||||||
|
// ? `/video/detail/${item.slug}`
|
||||||
|
// : Number(item.fileType?.id) == 3
|
||||||
|
// ? `/document/detail/${item.slug}`
|
||||||
|
// : `/audio/detail/${item.slug}`
|
||||||
|
// }
|
||||||
|
// >
|
||||||
|
|
||||||
|
// {item.title}.
|
||||||
|
// </a>
|
||||||
|
// </div>
|
||||||
|
// <div>
|
||||||
|
// {formatDateIndonesianWithTime(item.createdAt)}
|
||||||
|
// </div>
|
||||||
|
// </>
|
||||||
|
// ))}
|
||||||
|
// </NewsTicker>
|
||||||
|
// ) : (
|
||||||
|
// <p className='pl-4'>Loading...</p> // Tampilkan pesan "Loading..." saat data belum tersedia.
|
||||||
|
// )}
|
||||||
|
// </div>
|
||||||
|
// <div className='navigation pr-0 mr-0'>
|
||||||
|
// <button className="arrow-button left" onClick={() => { newsTickerRef?.current?.moveDown() }}>◀</button>
|
||||||
|
// <button className="arrow-button right" onClick={() => { newsTickerRef?.current?.moveUp() }}>▶</button>
|
||||||
|
// </div>
|
||||||
|
// </section>
|
||||||
|
// )
|
||||||
|
// }
|
||||||
|
|
||||||
|
// export default NewsTicker
|
||||||
|
|
@ -9,7 +9,17 @@ type Inputs = {
|
||||||
exampleRequired: string;
|
exampleRequired: string;
|
||||||
};
|
};
|
||||||
import { useForm, SubmitHandler } from "react-hook-form";
|
import { useForm, SubmitHandler } from "react-hook-form";
|
||||||
|
import { error, loading } from "@/config/swal";
|
||||||
|
import withReactContent from "sweetalert2-react-content";
|
||||||
|
import Swal from "sweetalert2";
|
||||||
|
import { useRouter } from "@/i18n/routing";
|
||||||
|
import { forgotPassword } from "@/service/landing/landing";
|
||||||
|
|
||||||
const ForgotPass = () => {
|
const ForgotPass = () => {
|
||||||
|
const [username, setUsername] = useState<any>();
|
||||||
|
const MySwal = withReactContent(Swal);
|
||||||
|
const router = useRouter();
|
||||||
|
|
||||||
const {
|
const {
|
||||||
register,
|
register,
|
||||||
handleSubmit,
|
handleSubmit,
|
||||||
|
|
@ -17,22 +27,45 @@ const ForgotPass = () => {
|
||||||
formState: { errors },
|
formState: { errors },
|
||||||
} = useForm<Inputs>();
|
} = useForm<Inputs>();
|
||||||
const onSubmit: SubmitHandler<Inputs> = (data) => console.log(data);
|
const onSubmit: SubmitHandler<Inputs> = (data) => console.log(data);
|
||||||
console.log(watch("example"));
|
|
||||||
|
async function handleCheckUsername() {
|
||||||
|
loading();
|
||||||
|
const response = await forgotPassword(username);
|
||||||
|
|
||||||
|
if (response.error) {
|
||||||
|
error(response.message);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
successSubmit();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function successSubmit() {
|
||||||
|
MySwal.fire({
|
||||||
|
title: "Email berhasil dikirim. Silahkan cek email Anda.",
|
||||||
|
icon: "success",
|
||||||
|
confirmButtonColor: "#3085d6",
|
||||||
|
confirmButtonText: "OK",
|
||||||
|
}).then((result: any) => {
|
||||||
|
if (result.isConfirmed) {
|
||||||
|
router.push("/admin");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<form onSubmit={handleSubmit(onSubmit)} className="space-y-4 ">
|
<form onSubmit={handleSubmit(onSubmit)} className="space-y-4 ">
|
||||||
<div className="space-y-2">
|
<div className="space-y-2">
|
||||||
<Label htmlFor="email">Email</Label>
|
<Label htmlFor="user-name">Username</Label>
|
||||||
<Input
|
<Input id="user-name" defaultValue="akun1234" className="h-[48px] text-sm text-default-900 " onChange={(e) => setUsername(e.target.value)} />
|
||||||
id="email"
|
|
||||||
defaultValue="dashcode@gmail.com"
|
|
||||||
{...register("example")}
|
|
||||||
className="h-[48px] text-sm text-default-900 "
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Button type="submit" fullWidth>
|
<Button type="submit" fullWidth onClick={handleCheckUsername}>
|
||||||
Send recovery email
|
Check Username
|
||||||
|
</Button>
|
||||||
|
<Button type="submit" fullWidth onClick={handleCheckUsername}>
|
||||||
|
Kirim Ulang{" "}
|
||||||
</Button>
|
</Button>
|
||||||
</form>
|
</form>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,9 @@ import { cn, setCookiesEncrypt } from "@/lib/utils";
|
||||||
import { Loader2 } from "lucide-react";
|
import { Loader2 } from "lucide-react";
|
||||||
import { getProfile, login } from "@/service/auth";
|
import { getProfile, login } from "@/service/auth";
|
||||||
import { toast } from "sonner";
|
import { toast } from "sonner";
|
||||||
import { Link, useRouter } from "@/components/navigation";
|
import { useRouter } from "@/components/navigation";
|
||||||
import { warning } from "@/lib/swal";
|
import { warning } from "@/lib/swal";
|
||||||
|
import { Link } from "@/i18n/routing";
|
||||||
|
|
||||||
// Schema validasi menggunakan zod
|
// Schema validasi menggunakan zod
|
||||||
const schema = z.object({
|
const schema = z.object({
|
||||||
|
|
@ -200,7 +201,7 @@ const LoginForm = () => {
|
||||||
<Checkbox id="checkbox" defaultChecked />
|
<Checkbox id="checkbox" defaultChecked />
|
||||||
<Label htmlFor="checkbox">Keep Me Signed In</Label>
|
<Label htmlFor="checkbox">Keep Me Signed In</Label>
|
||||||
</div>
|
</div>
|
||||||
<Link href="/forgot-password" className="text-sm text-default-800 dark:text-default-400 leading-6 font-medium">
|
<Link href="/auth/forgot-password" className="text-sm text-default-800 dark:text-default-400 leading-6 font-medium">
|
||||||
Forgot Password?
|
Forgot Password?
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -140,7 +140,7 @@
|
||||||
"tus-js-client": "^4.2.3",
|
"tus-js-client": "^4.2.3",
|
||||||
"use-places-autocomplete": "^4.0.1",
|
"use-places-autocomplete": "^4.0.1",
|
||||||
"vaul": "^0.9.1",
|
"vaul": "^0.9.1",
|
||||||
"wavesurfer.js": "^7.8.15",
|
"wavesurfer.js": "^7.8.16",
|
||||||
"yup": "^1.6.1",
|
"yup": "^1.6.1",
|
||||||
"zod": "^3.23.8"
|
"zod": "^3.23.8"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
|
|
@ -58,6 +58,7 @@ export async function getCsrfToken() {
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export async function getProfile(token: any) {
|
export async function getProfile(token: any) {
|
||||||
const url = "users/info";
|
const url = "users/info";
|
||||||
return httpGetInterceptorWithToken(url, token);
|
return httpGetInterceptorWithToken(url, token);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,31 @@
|
||||||
import { httpPost } from "../http-config/http-base-service";
|
import { httpGet, httpPost } from "../http-config/http-base-service";
|
||||||
import { httpDeleteInterceptor, httpGetInterceptor, httpPostInterceptor } from "../http-config/http-interceptor-service";
|
import { httpDeleteInterceptor, httpGetInterceptor, httpPostInterceptor } from "../http-config/http-interceptor-service";
|
||||||
|
|
||||||
|
export async function getCsrfToken() {
|
||||||
|
const pathUrl = "csrf";
|
||||||
|
const headers = {
|
||||||
|
"content-type": "application/json",
|
||||||
|
};
|
||||||
|
return httpGet(pathUrl, headers);
|
||||||
|
// const url = 'https://netidhub.com/api/csrf';
|
||||||
|
// try {
|
||||||
|
// const response = await fetch(url, {
|
||||||
|
// method: 'GET',
|
||||||
|
// credentials: 'include'
|
||||||
|
// });
|
||||||
|
|
||||||
|
// if (!response.ok) {
|
||||||
|
// throw new Error(`HTTP error! status: ${response.status}`);
|
||||||
|
// }
|
||||||
|
|
||||||
|
// const data = await response.json();
|
||||||
|
// console.log("csrf : ", data);
|
||||||
|
// return data;
|
||||||
|
// } catch (error) {
|
||||||
|
// console.error('Fetch error: ', error);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
export async function getHeroData() {
|
export async function getHeroData() {
|
||||||
return await httpGetInterceptor(`media/public/list?enablePage=1&sort=desc&sortBy=createdAt&size=5&page=0&typeId=1&title=&categoryId=&fileFormats=&tags=&group=&startDate=&endDate=&month=&year=`);
|
return await httpGetInterceptor(`media/public/list?enablePage=1&sort=desc&sortBy=createdAt&size=5&page=0&typeId=1&title=&categoryId=&fileFormats=&tags=&group=&startDate=&endDate=&month=&year=`);
|
||||||
}
|
}
|
||||||
|
|
@ -125,10 +150,21 @@ export async function verifyOTP(email: any, otp: any) {
|
||||||
|
|
||||||
export async function requestOTP(data: any) {
|
export async function requestOTP(data: any) {
|
||||||
const url = "public/users/otp-request";
|
const url = "public/users/otp-request";
|
||||||
return httpPost(url, data);
|
const header = {
|
||||||
|
"content-Type": "application/json",
|
||||||
|
};
|
||||||
|
return httpPost(url, header, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getUserNotifications(page = 0, typeId: any) {
|
export async function getUserNotifications(page = 0, typeId: any) {
|
||||||
const url = `notification/public/list?enablePage=1&page=${page}&typeId=${typeId}`;
|
const url = `notification/public/list?enablePage=1&page=${page}&typeId=${typeId}`;
|
||||||
return httpGetInterceptor(url);
|
return httpGetInterceptor(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function forgotPassword(username: any) {
|
||||||
|
const url = `forgot-password?username=${username}`;
|
||||||
|
const header = {
|
||||||
|
"content-Type": "application/json",
|
||||||
|
};
|
||||||
|
return httpPost(url, header);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,9 @@
|
||||||
import { httpGetInterceptor, httpPostInterceptor } from "../http-config/http-interceptor-service";
|
import { httpGetInterceptor, httpPostInterceptor } from "../http-config/http-interceptor-service";
|
||||||
import { httpGet } from "../http-config/http-base-service";
|
import { httpGet } from "../http-config/http-base-service";
|
||||||
|
import { any } from "zod";
|
||||||
|
|
||||||
export async function paginationSchedule(
|
export async function paginationSchedule(size: number, page: number, type: any, title: string = "") {
|
||||||
size: number,
|
return await httpGetInterceptor(`schedule/pagination?enablePage=1&scheduleTypeId=${type}&page=${page}&size=${size}&title=${title}`);
|
||||||
page: number,
|
|
||||||
type: any,
|
|
||||||
title: string = ""
|
|
||||||
) {
|
|
||||||
return await httpGetInterceptor(
|
|
||||||
`schedule/pagination?enablePage=1&scheduleTypeId=${type}&page=${page}&size=${size}&title=${title}`
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function postSchedule(data: any) {
|
export async function postSchedule(data: any) {
|
||||||
|
|
@ -41,4 +35,7 @@ export async function listSchedule(group = null) {
|
||||||
const url = `public/schedule/list?group=${group}`;
|
const url = `public/schedule/list?group=${group}`;
|
||||||
return httpGet(url, null);
|
return httpGet(url, null);
|
||||||
}
|
}
|
||||||
|
export async function searchSchedules(search = null) {
|
||||||
|
const url = `public/schedule/list?search=${search}`;
|
||||||
|
return httpGet(url, null);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -106,3 +106,12 @@ export function getTimestamp(d: Date) {
|
||||||
d.getDate()
|
d.getDate()
|
||||||
)} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
|
)} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function secondToTimes(sec: number) {
|
||||||
|
if (sec) {
|
||||||
|
const date = new Date(0);
|
||||||
|
date.setSeconds(sec); // specify value for SECONDS here
|
||||||
|
return date?.toISOString().slice(11, 19);
|
||||||
|
}
|
||||||
|
return "00:00:00";
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,162 +0,0 @@
|
||||||
Changelog
|
|
||||||
=========
|
|
||||||
|
|
||||||
All changes in the package are documented in the main repository. See: https://github.com/ckeditor/ckeditor5/blob/master/CHANGELOG.md.
|
|
||||||
|
|
||||||
Changes for the past releases are available below.
|
|
||||||
|
|
||||||
## [19.0.0](https://github.com/ckeditor/ckeditor5-alignment/compare/v18.0.0...v19.0.0) (April 29, 2020)
|
|
||||||
|
|
||||||
Internal changes only (updated dependencies, documentation, etc.).
|
|
||||||
|
|
||||||
|
|
||||||
## [18.0.0](https://github.com/ckeditor/ckeditor5-alignment/compare/v17.0.0...v18.0.0) (March 19, 2020)
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Updated translations. ([f1beaaa](https://github.com/ckeditor/ckeditor5-alignment/commit/f1beaaa))
|
|
||||||
|
|
||||||
|
|
||||||
## [17.0.0](https://github.com/ckeditor/ckeditor5-alignment/compare/v16.0.0...v17.0.0) (February 18, 2020)
|
|
||||||
|
|
||||||
### MAJOR BREAKING CHANGES
|
|
||||||
|
|
||||||
* The `align-left`, `align-right`, `align-center`, and `align-justify` icons have been moved to `@ckeditor/ckeditor5-core`.
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Moved alignment icons to `@ckeditor/ckeditor5-core` (see [ckeditor/ckeditor5-table#227](https://github.com/ckeditor/ckeditor5-table/issues/227)). ([410e279](https://github.com/ckeditor/ckeditor5-alignment/commit/410e279))
|
|
||||||
* Updated translations. ([288672f](https://github.com/ckeditor/ckeditor5-alignment/commit/288672f))
|
|
||||||
|
|
||||||
|
|
||||||
## [16.0.0](https://github.com/ckeditor/ckeditor5-alignment/compare/v15.0.0...v16.0.0) (December 4, 2019)
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Updated translations. ([9085f7b](https://github.com/ckeditor/ckeditor5-alignment/commit/9085f7b))
|
|
||||||
|
|
||||||
|
|
||||||
## [15.0.0](https://github.com/ckeditor/ckeditor5-alignment/compare/v11.2.0...v15.0.0) (October 23, 2019)
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Updated translations. ([a719974](https://github.com/ckeditor/ckeditor5-alignment/commit/a719974)) ([2fed077](https://github.com/ckeditor/ckeditor5-alignment/commit/2fed077))
|
|
||||||
* Added `pluginName` to the editor plugin part of the feature. ([3b42798](https://github.com/ckeditor/ckeditor5-alignment/commit/3b42798))
|
|
||||||
|
|
||||||
|
|
||||||
## [11.2.0](https://github.com/ckeditor/ckeditor5-alignment/compare/v11.1.3...v11.2.0) (August 26, 2019)
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* Integrated the text alignment feature with different editor content directions (LTR and RTL). See [ckeditor/ckeditor5#1151](https://github.com/ckeditor/ckeditor5/issues/1151). ([edc7d8b](https://github.com/ckeditor/ckeditor5-alignment/commit/edc7d8b))
|
|
||||||
|
|
||||||
### Bug fixes
|
|
||||||
|
|
||||||
* The UI buttons should be marked as toggleable for better assistive technologies support (see [ckeditor/ckeditor5#1403](https://github.com/ckeditor/ckeditor5/issues/1403)). ([599ea01](https://github.com/ckeditor/ckeditor5-alignment/commit/599ea01))
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* The issue tracker for this package was moved to https://github.com/ckeditor/ckeditor5/issues. See [ckeditor/ckeditor5#1988](https://github.com/ckeditor/ckeditor5/issues/1988). ([54f81b3](https://github.com/ckeditor/ckeditor5-alignment/commit/54f81b3))
|
|
||||||
* The text alignment toolbar should have a proper `aria-label` attribute (see [ckeditor/ckeditor5#1404](https://github.com/ckeditor/ckeditor5/issues/1404)). ([3ed81de](https://github.com/ckeditor/ckeditor5-alignment/commit/3ed81de))
|
|
||||||
* Updated translations. ([feb4ab3](https://github.com/ckeditor/ckeditor5-alignment/commit/feb4ab3))
|
|
||||||
|
|
||||||
|
|
||||||
## [11.1.3](https://github.com/ckeditor/ckeditor5-alignment/compare/v11.1.2...v11.1.3) (July 10, 2019)
|
|
||||||
|
|
||||||
Internal changes only (updated dependencies, documentation, etc.).
|
|
||||||
|
|
||||||
|
|
||||||
## [11.1.2](https://github.com/ckeditor/ckeditor5-alignment/compare/v11.1.1...v11.1.2) (July 4, 2019)
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Updated translations. ([bb7f494](https://github.com/ckeditor/ckeditor5-alignment/commit/bb7f494))
|
|
||||||
|
|
||||||
|
|
||||||
## [11.1.1](https://github.com/ckeditor/ckeditor5-alignment/compare/v11.1.0...v11.1.1) (June 6, 2019)
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Updated translations. ([32c32c1](https://github.com/ckeditor/ckeditor5-alignment/commit/32c32c1))
|
|
||||||
|
|
||||||
|
|
||||||
## [11.1.0](https://github.com/ckeditor/ckeditor5-alignment/compare/v11.0.0...v11.1.0) (April 4, 2019)
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* Marked alignment as a formatting attribute using the `AttributeProperties#isFormatting` property. Closes [ckeditor/ckeditor5#1664](https://github.com/ckeditor/ckeditor5/issues/1664). ([6358e08](https://github.com/ckeditor/ckeditor5-alignment/commit/6358e08))
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Updated translations. ([78bfc40](https://github.com/ckeditor/ckeditor5-alignment/commit/78bfc40))
|
|
||||||
|
|
||||||
|
|
||||||
## [11.0.0](https://github.com/ckeditor/ckeditor5-alignment/compare/v10.0.4...v11.0.0) (February 28, 2019)
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Updated translations. ([45e8dd5](https://github.com/ckeditor/ckeditor5-alignment/commit/45e8dd5)) ([a92c37b](https://github.com/ckeditor/ckeditor5-alignment/commit/a92c37b)) ([ef68e54](https://github.com/ckeditor/ckeditor5-alignment/commit/ef68e54))
|
|
||||||
|
|
||||||
### BREAKING CHANGES
|
|
||||||
|
|
||||||
* Upgraded minimal versions of Node to `8.0.0` and npm to `5.7.1`. See: [ckeditor/ckeditor5#1507](https://github.com/ckeditor/ckeditor5/issues/1507). ([612ea3c](https://github.com/ckeditor/ckeditor5-cloud-services/commit/612ea3c))
|
|
||||||
|
|
||||||
|
|
||||||
## [10.0.4](https://github.com/ckeditor/ckeditor5-alignment/compare/v10.0.3...v10.0.4) (December 5, 2018)
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Improved SVG icons size. See [ckeditor/ckeditor5-theme-lark#206](https://github.com/ckeditor/ckeditor5-theme-lark/issues/206). ([1d71d33](https://github.com/ckeditor/ckeditor5-alignment/commit/1d71d33))
|
|
||||||
* Updated translations. ([547f8d8](https://github.com/ckeditor/ckeditor5-alignment/commit/547f8d8)) ([43d8225](https://github.com/ckeditor/ckeditor5-alignment/commit/43d8225))
|
|
||||||
|
|
||||||
|
|
||||||
## [10.0.3](https://github.com/ckeditor/ckeditor5-alignment/compare/v10.0.2...v10.0.3) (October 8, 2018)
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Updated translations. ([5b30202](https://github.com/ckeditor/ckeditor5-alignment/commit/5b30202))
|
|
||||||
|
|
||||||
|
|
||||||
## [10.0.2](https://github.com/ckeditor/ckeditor5-alignment/compare/v10.0.1...v10.0.2) (July 18, 2018)
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Updated translations. ([33c281c](https://github.com/ckeditor/ckeditor5-alignment/commit/33c281c))
|
|
||||||
|
|
||||||
|
|
||||||
## [10.0.1](https://github.com/ckeditor/ckeditor5-alignment/compare/v10.0.0...v10.0.1) (June 21, 2018)
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Updated translations.
|
|
||||||
|
|
||||||
|
|
||||||
## [10.0.0](https://github.com/ckeditor/ckeditor5-alignment/compare/v1.0.0-beta.4...v10.0.0) (April 25, 2018)
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Changed the license to GPL2+ only. See [ckeditor/ckeditor5#991](https://github.com/ckeditor/ckeditor5/issues/991). ([eed1029](https://github.com/ckeditor/ckeditor5-alignment/commit/eed1029))
|
|
||||||
* Updated translations. ([baa1fbe](https://github.com/ckeditor/ckeditor5-alignment/commit/baa1fbe))
|
|
||||||
|
|
||||||
### BREAKING CHANGES
|
|
||||||
|
|
||||||
* The license under which CKEditor 5 is released has been changed from a triple GPL, LGPL and MPL license to a GPL2+ only. See [ckeditor/ckeditor5#991](https://github.com/ckeditor/ckeditor5/issues/991) for more information.
|
|
||||||
|
|
||||||
|
|
||||||
## [1.0.0-beta.4](https://github.com/ckeditor/ckeditor5-alignment/compare/v1.0.0-beta.2...v1.0.0-beta.4) (April 19, 2018)
|
|
||||||
|
|
||||||
### Other changes
|
|
||||||
|
|
||||||
* Updated translations. ([586ae62](https://github.com/ckeditor/ckeditor5-alignment/commit/586ae62))
|
|
||||||
|
|
||||||
|
|
||||||
## [1.0.0-beta.2](https://github.com/ckeditor/ckeditor5-alignment/compare/v1.0.0-beta.1...v1.0.0-beta.2) (April 10, 2018)
|
|
||||||
|
|
||||||
Internal changes only (updated dependencies, documentation, etc.).
|
|
||||||
|
|
||||||
|
|
||||||
## [1.0.0-beta.1](https://github.com/ckeditor/ckeditor5-alignment/compare/v0.0.1...v1.0.0-beta.1) (March 15, 2018)
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* Initial implementation. Closes [#2](https://github.com/ckeditor/ckeditor5-alignment/issues/2).
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
Software License Agreement
|
|
||||||
==========================
|
|
||||||
|
|
||||||
**CKEditor 5 text alignment feature** – https://github.com/ckeditor/ckeditor5-alignment <br>
|
|
||||||
Copyright (c) 2003–2024, [CKSource Holding sp. z o.o.](https://cksource.com) All rights reserved.
|
|
||||||
|
|
||||||
Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html).
|
|
||||||
|
|
||||||
Sources of Intellectual Property Included in CKEditor
|
|
||||||
-----------------------------------------------------
|
|
||||||
|
|
||||||
Where not otherwise indicated, all CKEditor content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, CKEditor will incorporate work done by developers outside of CKSource with their express permission.
|
|
||||||
|
|
||||||
Trademarks
|
|
||||||
----------
|
|
||||||
|
|
||||||
**CKEditor** is a trademark of [CKSource Holding sp. z o.o.](https://cksource.com) All other brand and product names are trademarks, registered trademarks, or service marks of their respective holders.
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
CKEditor 5 text alignment feature
|
|
||||||
========================================
|
|
||||||
|
|
||||||
[](https://www.npmjs.com/package/@ckeditor/ckeditor5-alignment)
|
|
||||||
[](https://coveralls.io/github/ckeditor/ckeditor5?branch=master)
|
|
||||||
[](https://app.travis-ci.com/github/ckeditor/ckeditor5)
|
|
||||||
|
|
||||||
This package implements text alignment support for CKEditor 5.
|
|
||||||
|
|
||||||
## Demo
|
|
||||||
|
|
||||||
Check out the [demo in the text alignment feature guide](https://ckeditor.com/docs/ckeditor5/latest/features/text-alignment.html#demo).
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
See the [`@ckeditor/ckeditor5-alignment` package](https://ckeditor.com/docs/ckeditor5/latest/api/alignment.html) page in [CKEditor 5 documentation](https://ckeditor.com/docs/ckeditor5/latest/).
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
Licensed under the terms of [GNU General Public License Version 2 or later](http://www.gnu.org/licenses/gpl.html). For full details about the license, please check the `LICENSE.md` file or [https://ckeditor.com/legal/ckeditor-oss-license](https://ckeditor.com/legal/ckeditor-oss-license).
|
|
||||||
File diff suppressed because one or more lines are too long
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/af.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/af.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const e=n.af=n.af||{};e.dictionary=Object.assign(e.dictionary||{},{"Align center":"Belyn in die middel","Align left":"Belyn links","Align right":"Belyn regs",Justify:"Belyn beide kante","Text alignment":"Teksbelyning","Text alignment toolbar":"Teksbelyning nutsbank"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ar.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ar.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.ar=n.ar||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"محاذاة في المنتصف","Align left":"محاذاة لليسار","Align right":"محاذاة لليمين",Justify:"ضبط","Text alignment":"محاذاة النص","Text alignment toolbar":"شريط أدوات محاذاة النص"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/az.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/az.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.az=n.az||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Mərkəzə düzləndir","Align left":"Soldan düzləndir","Align right":"Sağdan düzləndir",Justify:"Eninə görə","Text alignment":"Mətn düzləndirməsi","Text alignment toolbar":"Mətnin düzləndirmə paneli"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/bg.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/bg.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.bg=n.bg||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Централно подравняване","Align left":"Ляво подравняване","Align right":"Дясно подравняване",Justify:"Разпредели по равно","Text alignment":"Подравняване на текста","Text alignment toolbar":"Лента за подравняване на текст"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/bn.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/bn.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.bn=n.bn||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"কেন্দ্র সারিবদ্ধ করুন","Align left":"বামে সারিবদ্ধ করুন","Align right":"ডানদিকে সারিবদ্ধ করুন",Justify:"জাস্টিফাই","Text alignment":"টেক্সট সারিবদ্ধকরণ","Text alignment toolbar":"টেক্সট শ্রেণীবিন্যাস টুলবার"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/bs.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/bs.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const a=n.bs=n.bs||{};a.dictionary=Object.assign(a.dictionary||{},{"Align center":"Centrirati","Align left":"Lijevo poravnanje","Align right":"Desno poravnanje",Justify:"","Text alignment":"Poravnanje teksta","Text alignment toolbar":"Traka za poravnanje teksta"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ca.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ca.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(i){const e=i.ca=i.ca||{};e.dictionary=Object.assign(e.dictionary||{},{"Align center":"Alineació centre","Align left":"Alineació esquerra","Align right":"Alineació dreta",Justify:"Justificar","Text alignment":"Alineació text","Text alignment toolbar":"Barra d'eines d'alineació de text"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/cs.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/cs.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const t=n.cs=n.cs||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Zarovnat na střed","Align left":"Zarovnat vlevo","Align right":"Zarovnat vpravo",Justify:"Zarovnat do bloku","Text alignment":"Zarovnání textu","Text alignment toolbar":"Panel nástrojů zarovnání textu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/da.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/da.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(t){const n=t.da=t.da||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Justér center","Align left":"Justér venstre","Align right":"Justér højre",Justify:"Justér","Text alignment":"Tekstjustering","Text alignment toolbar":"Tekstjustering værktøjslinje"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
!function(t){const i=t["de-ch"]=t["de-ch"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Zentriert","Align left":"Linksbündig","Align right":"Rechtsbündig",Justify:"Blocksatz","Text alignment":"Textausrichtung","Text alignment toolbar":"Textausrichtung Werkzeugleiste"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/de.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/de.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const t=n.de=n.de||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Zentriert","Align left":"Linksbündig","Align right":"Rechtsbündig",Justify:"Blocksatz","Text alignment":"Textausrichtung","Text alignment toolbar":"Text-Ausrichtung Toolbar"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/el.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/el.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.el=n.el||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Στοίχιση στο κέντρο","Align left":"Στοίχιση αριστερά","Align right":"Στοίχιση δεξιά",Justify:"Πλήρης στοίχηση","Text alignment":"Στοίχιση κειμένου","Text alignment toolbar":"Γραμμή εργαλείων στοίχισης κειμένου"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const t=n["en-au"]=n["en-au"]||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Align centre","Align left":"Align left","Align right":"Align right",Justify:"Justify","Text alignment":"Text alignment","Text alignment toolbar":"Text alignment toolbar"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n["en-gb"]=n["en-gb"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Align center","Align left":"Align left","Align right":"Align right",Justify:"Justify","Text alignment":"Text alignment","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
!function(i){const e=i["es-co"]=i["es-co"]||{};e.dictionary=Object.assign(e.dictionary||{},{"Align center":"Centrar","Align left":"Alinear a la izquierda","Align right":"Alinear a la derecha",Justify:"Justificar","Text alignment":"Alineación de texto","Text alignment toolbar":"Herramientas de alineación de texto"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/es.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/es.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(e){const i=e.es=e.es||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Centrar","Align left":"Alinear a la izquierda","Align right":"Alinear a la derecha",Justify:"Justificar","Text alignment":"Alineación del texto","Text alignment toolbar":"Barra de herramientas de alineación del texto"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/et.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/et.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.et=n.et||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Keskjoondus","Align left":"Vasakjoondus","Align right":"Paremjoondus",Justify:"Rööpjoondus","Text alignment":"Teksti joondamine","Text alignment toolbar":"Teksti joonduse tööriistariba"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/fa.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/fa.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.fa=n.fa||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"تراز وسط","Align left":"تراز چپ","Align right":"تراز راست",Justify:"هم تراز کردن","Text alignment":"تراز متن","Text alignment toolbar":"نوار ابزار ترازبندی متن"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/fi.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/fi.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(a){const i=a.fi=a.fi||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Tasaa keskelle","Align left":"Tasaa vasemmalle","Align right":"Tasaa oikealle",Justify:"Tasaa molemmat reunat","Text alignment":"Tekstin tasaus","Text alignment toolbar":"Tekstin suuntauksen työkalupalkki"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/fr.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/fr.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(e){const t=e.fr=e.fr||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Centrer","Align left":"Aligner à gauche","Align right":"Aligner à droite",Justify:"Justifier","Text alignment":"Alignement du texte","Text alignment toolbar":"Barre d'outils d'alignement du texte"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/gl.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/gl.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(t){const e=t.gl=t.gl||{};e.dictionary=Object.assign(e.dictionary||{},{"Align center":"Centrar horizontalmente","Align left":"Aliñar á esquerda","Align right":"Aliñar á dereita",Justify:"Xustificado","Text alignment":"Aliñamento do texto","Text alignment toolbar":"Barra de ferramentas de aliñamento de textos"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/he.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/he.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.he=n.he||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"יישור באמצע","Align left":"יישור לשמאל","Align right":"יישור לימין",Justify:"מרכוז גבולות","Text alignment":"יישור טקסט","Text alignment toolbar":"סרגל כלים יישור טקסט"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/hi.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/hi.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(i){const n=i.hi=i.hi||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Align center","Align left":"Align left","Align right":"Align right",Justify:"Justify","Text alignment":"Text alignment","Text alignment toolbar":"Text alignment toolbar"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/hr.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/hr.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const a=n.hr=n.hr||{};a.dictionary=Object.assign(a.dictionary||{},{"Align center":"Poravnaj po sredini","Align left":"Poravnaj ulijevo","Align right":"Poravnaj udesno",Justify:"Razvuci","Text alignment":"Poravnanje teksta","Text alignment toolbar":"Traka za poravnanje"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/hu.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/hu.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(i){const t=i.hu=i.hu||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Középre igazítás","Align left":"Balra igazítás","Align right":"Jobbra igazítás",Justify:"Sorkizárt","Text alignment":"Szöveg igazítása","Text alignment toolbar":"Szöveg igazítás eszköztár"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/id.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/id.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(a){const t=a.id=a.id||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Rata tengah","Align left":"Rata kiri","Align right":"Rata kanan",Justify:"Rata kanan-kiri","Text alignment":"Perataan teks","Text alignment toolbar":"Alat perataan teks"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/it.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/it.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(i){const n=i.it=i.it||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Allinea al centro","Align left":"Allinea a sinistra","Align right":"Allinea a destra",Justify:"Giustifica","Text alignment":"Allineamento del testo","Text alignment toolbar":"Barra degli strumenti dell'allineamento"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ja.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ja.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.ja=n.ja||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"中央揃え","Align left":"左揃え","Align right":"右揃え",Justify:"両端揃え","Text alignment":"文字揃え","Text alignment toolbar":"テキストの整列"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/jv.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/jv.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const t=n.jv=n.jv||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Rata tengah","Align left":"Rata kiwa","Align right":"Rata tengen",Justify:"Rata kiwa tengen","Text alignment":"Perataan seratan","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/kk.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/kk.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.kk=n.kk||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Ортадан туралау","Align left":"Солға туралау","Align right":"Оңға туралау",Justify:"","Text alignment":"Мәтінді туралау","Text alignment toolbar":"Мәтінді туралау құралдар тақтасы"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/km.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/km.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.km=n.km||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"តម្រឹមកណ្ដាល","Align left":"តម្រឹមឆ្វេង","Align right":"តម្រឹមស្ដាំ",Justify:"តម្រឹមសងខាង","Text alignment":"ការតម្រឹមអក្សរ","Text alignment toolbar":"របារឧបករណ៍តម្រឹមអក្សរ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ko.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ko.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.ko=n.ko||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"가운데 정렬","Align left":"왼쪽 정렬","Align right":"오른쪽 정렬",Justify:"양쪽 정렬","Text alignment":"텍스트 정렬","Text alignment toolbar":"텍스트 정렬 툴바"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ku.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ku.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.ku=n.ku||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"بەهێڵکردنی ناورەڕاست","Align left":"بەهێڵکردنی چەپ","Align right":"بەهێڵکردنی ڕاست",Justify:"هاوستوونی","Text alignment":"ڕیززکردنی تێکست","Text alignment toolbar":"تووڵامرازی ڕیززکردنی تێکست"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/lt.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/lt.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(i){const t=i.lt=i.lt||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"Centruoti","Align left":"Lygiuoti į kairę","Align right":"Lygiuoti į dešinę",Justify:"Lygiuoti per visą plotį","Text alignment":"Teksto lygiavimas","Text alignment toolbar":"Teksto lygiavimo įrankių juosta"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/lv.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/lv.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(i){const n=i.lv=i.lv||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Centrēt","Align left":"Pa kreisi","Align right":"Pa labi",Justify:"Izlīdzināt abas malas","Text alignment":"Teksta izlīdzināšana","Text alignment toolbar":"Teksta līdzināšanas rīkjosla"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ms.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ms.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(a){const n=a.ms=a.ms||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Jajarkan tengah","Align left":"Jajarkan kiri","Align right":"Jajarkan kiri",Justify:"Imbang","Text alignment":"Jajaran teks","Text alignment toolbar":"Bar alat capaian jajaran teks"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/nb.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/nb.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(t){const n=t.nb=t.nb||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Midstill","Align left":"Venstrejuster","Align right":"Høyrejuster",Justify:"Blokkjuster","Text alignment":"Tekstjustering","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ne.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ne.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.ne=n.ne||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"केन्द्र पङ्क्तिबद्ध गर्नुहोस्","Align left":"बायाँ पङ्क्तिबद्ध गर्नुहोस्","Align right":"दायाँ पङ्क्तिबद्ध गर्नुहोस्",Justify:"जस्टिफाइ गर्नुहोस्","Text alignment":"पाठ संरेखण","Text alignment toolbar":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/nl.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/nl.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(i){const n=i.nl=i.nl||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Midden uitlijnen","Align left":"Links uitlijnen","Align right":"Rechts uitlijnen",Justify:"Volledig uitlijnen","Text alignment":"Tekst uitlijning","Text alignment toolbar":"Tekst uitlijning werkbalk"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/no.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/no.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(t){const n=t.no=t.no||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Midtstill","Align left":"Venstrejuster","Align right":"Høyrejuster",Justify:"Blokkjuster","Text alignment":"Tekstjustering","Text alignment toolbar":"Verktøylinje for tekstjustering"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/pl.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/pl.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.pl=n.pl||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Wyrównaj do środka","Align left":"Wyrównaj do lewej","Align right":"Wyrównaj do prawej",Justify:"Wyrównaj obustronnie","Text alignment":"Wyrównanie tekstu","Text alignment toolbar":"Pasek narzędzi wyrównania tekstu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
!function(t){const i=t["pt-br"]=t["pt-br"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Centralizar","Align left":"Alinhar à esquerda","Align right":"Alinhar à direita",Justify:"Justificar","Text alignment":"Alinhamento do texto","Text alignment toolbar":"Ferramentas de alinhamento de texto"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/pt.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/pt.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(t){const i=t.pt=t.pt||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Alinhar ao centro","Align left":"Alinhar à esquerda","Align right":"Alinhar à direita",Justify:"Justificar","Text alignment":"Alinhamento de texto","Text alignment toolbar":"Barra de alinhamento de texto"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ro.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ro.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(i){const n=i.ro=i.ro||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Aliniază la centru","Align left":"Aliniază la stânga","Align right":"Aliniază la dreapta",Justify:"Aliniază stânga-dreapta","Text alignment":"Aliniere text","Text alignment toolbar":"Bara aliniere text"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ru.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ru.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.ru=n.ru||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Выравнивание по центру","Align left":"Выравнивание по левому краю","Align right":"Выравнивание по правому краю",Justify:"Выравнивание по ширине","Text alignment":"Выравнивание текста","Text alignment toolbar":"Выравнивание"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sk.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sk.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const a=n.sk=n.sk||{};a.dictionary=Object.assign(a.dictionary||{},{"Align center":"Zarovnať na stred","Align left":"Zarovnať vľavo","Align right":"Zarovnať vpravo",Justify:"Do bloku","Text alignment":"Zarovnanie textu","Text alignment toolbar":"Panel nástrojov zarovnania textu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sl.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sl.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(a){const n=a.sl=a.sl||{};n.dictionary=Object.assign(n.dictionary||{},{"Align center":"Sredinska poravnava","Align left":"Poravnava levo","Align right":"Poravnava desno",Justify:"Postavi na sredino","Text alignment":"Poravnava besedila","Text alignment toolbar":"Orodna vrstica besedila"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sq.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sq.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(t){const i=t.sq=t.sq||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Radhit në mes","Align left":"Radhit majtas","Align right":"Radhit djathtas",Justify:"Plotësim","Text alignment":"Radhitja e tekstit","Text alignment toolbar":"Shiriti i rradhitjes së tekstit"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const a=n["sr-latn"]=n["sr-latn"]||{};a.dictionary=Object.assign(a.dictionary||{},{"Align center":"Centralno ravnanje","Align left":"Levo ravnanje","Align right":"Desno ravnanje",Justify:"Obostrano ravnanje","Text alignment":"Ravnanje teksta","Text alignment toolbar":"Alatke za ravnanje teksta"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sr.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sr.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.sr=n.sr||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Централно равнанје","Align left":"Лево равнање","Align right":"Десно равнање",Justify:"Обострано равнање","Text alignment":"Равнање текста","Text alignment toolbar":"Алатке за равнање текста"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sv.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/sv.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(t){const e=t.sv=t.sv||{};e.dictionary=Object.assign(e.dictionary||{},{"Align center":"Centrera","Align left":"Vänsterjustera","Align right":"Högerjustera",Justify:"Justera till marginaler","Text alignment":"Textjustering","Text alignment toolbar":"Verktygsfält för textjustering"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/th.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/th.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const t=n.th=n.th||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"จัดกึ่งกลาง","Align left":"จัดชิดซ้าย","Align right":"จัดชิดขวา",Justify:"จัด(ขอบ)","Text alignment":"จัดตำแหน่งข้อความ","Text alignment toolbar":"แถบเครื่องมือจัดตำแหน่งข้อความ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/tk.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/tk.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(e){const i=e.tk=e.tk||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Merkeze deňleşdir","Align left":"Çepe deňleşdiriň","Align right":"Saga deňleşdiriň",Justify:"Akla","Text alignment":"Tekstiň deňleşdirilmegi","Text alignment toolbar":"Teksti deňleşdirmek gurallar paneli"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/tr.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/tr.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(a){const i=a.tr=a.tr||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Ortala","Align left":"Sola hizala","Align right":"Sağa hizala",Justify:"İki yana yasla","Text alignment":"Yazı hizalama","Text alignment toolbar":"Yazı Hizlama Araç Çubuğu"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ug.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ug.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.ug=n.ug||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"ئوتتۇرىغا توغرىلاش","Align left":"سولغا توغرىلاش","Align right":"ئوڭغا توغرىلاش",Justify:"ئوڭ سولدىن توغرىلا","Text alignment":"تېكىست توغرىلاش","Text alignment toolbar":"تېكىست توغرىلاش قورالبالدىقى"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/uk.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/uk.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.uk=n.uk||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"По центру","Align left":"По лівому краю","Align right":"По правому краю",Justify:"По ширині","Text alignment":"Вирівнювання тексту","Text alignment toolbar":"Панель інструментів вирівнювання тексту"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ur.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/ur.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.ur=n.ur||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"درمیانی سیدھ","Align left":"بائیں سیدھ","Align right":"دائیں سیدھ",Justify:"برابر سیدھ","Text alignment":"متن کی سیدھ","Text alignment toolbar":"خانہ آلات برائے سیدھ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/uz.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/uz.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(i){const t=i.uz=i.uz||{};t.dictionary=Object.assign(t.dictionary||{},{"Align center":"O'rtada tekislash","Align left":"Chap tomonda tekislash","Align right":"O'ng tomonda tekislash",Justify:"Kengligi bo'yicha tekislash","Text alignment":"Matnni tekislash","Text alignment toolbar":"Tekislash"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/vi.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/vi.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.vi=n.vi||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"Canh giữa","Align left":"Canh trái","Align right":"Canh phải",Justify:"Canh đều","Text alignment":"Căn chỉnh văn bản","Text alignment toolbar":"Thanh công cụ canh chữ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n["zh-cn"]=n["zh-cn"]||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"居中对齐","Align left":"左对齐","Align right":"右对齐",Justify:"两端对齐","Text alignment":"对齐","Text alignment toolbar":"对齐工具栏"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/zh.js
generated
vendored
1
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/build/translations/zh.js
generated
vendored
|
|
@ -1 +0,0 @@
|
||||||
!function(n){const i=n.zh=n.zh||{};i.dictionary=Object.assign(i.dictionary||{},{"Align center":"置中對齊","Align left":"靠左對齊","Align right":"靠右對齊",Justify:"左右對齊","Text alignment":"文字對齊","Text alignment toolbar":"文字對齊"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));
|
|
||||||
31
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/ckeditor5-metadata.json
generated
vendored
31
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/ckeditor5-metadata.json
generated
vendored
|
|
@ -1,31 +0,0 @@
|
||||||
{
|
|
||||||
"plugins": [
|
|
||||||
{
|
|
||||||
"name": "Alignment",
|
|
||||||
"className": "Alignment",
|
|
||||||
"path": "src/alignment.js",
|
|
||||||
"description": "Enables support for text alignment. You can use it to align your content to left, right and center or to justify it.",
|
|
||||||
"docs": "features/text-alignment.html",
|
|
||||||
"uiComponents": [
|
|
||||||
{
|
|
||||||
"type": "SplitButton",
|
|
||||||
"name": "alignment",
|
|
||||||
"iconPath": "@ckeditor/ckeditor5-core/theme/icons/align-left.svg"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"htmlOutput": [
|
|
||||||
{
|
|
||||||
"elements": "$block",
|
|
||||||
"styles": "text-align",
|
|
||||||
"_comment": "By default, the alignment feature uses the `text-align` inline style."
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"elements": "$block",
|
|
||||||
"classes": "*",
|
|
||||||
"isAlternative": true,
|
|
||||||
"_comment": "If `config.alignment.options` is set, these classes are used for alignment instead of inline styles."
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
{
|
|
||||||
"Align left": "Toolbar button tooltip for aligning the text to the left.",
|
|
||||||
"Align right": "Toolbar button tooltip for aligning the text to the right.",
|
|
||||||
"Align center": "Toolbar button tooltip for aligning the text to center.",
|
|
||||||
"Justify": "Toolbar button tooltip for making the text justified.",
|
|
||||||
"Text alignment": "Dropdown button tooltip for the text alignment feature.",
|
|
||||||
"Text alignment toolbar": "Label used by assistive technologies describing the text alignment feature toolbar."
|
|
||||||
}
|
|
||||||
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/af.po
generated
vendored
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/af.po
generated
vendored
|
|
@ -1,42 +0,0 @@
|
||||||
# Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
||||||
#
|
|
||||||
# !!! IMPORTANT !!!
|
|
||||||
#
|
|
||||||
# Before you edit this file, please keep in mind that contributing to the project
|
|
||||||
# translations is possible ONLY via the Transifex online service.
|
|
||||||
#
|
|
||||||
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
|
||||||
#
|
|
||||||
# To learn more, check out the official contributor's guide:
|
|
||||||
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language-Team: Afrikaans (https://app.transifex.com/ckeditor/teams/11143/af/)\n"
|
|
||||||
"Language: af\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the left."
|
|
||||||
msgid "Align left"
|
|
||||||
msgstr "Belyn links"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the right."
|
|
||||||
msgid "Align right"
|
|
||||||
msgstr "Belyn regs"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to center."
|
|
||||||
msgid "Align center"
|
|
||||||
msgstr "Belyn in die middel"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for making the text justified."
|
|
||||||
msgid "Justify"
|
|
||||||
msgstr "Belyn beide kante"
|
|
||||||
|
|
||||||
msgctxt "Dropdown button tooltip for the text alignment feature."
|
|
||||||
msgid "Text alignment"
|
|
||||||
msgstr "Teksbelyning"
|
|
||||||
|
|
||||||
msgctxt "Label used by assistive technologies describing the text alignment feature toolbar."
|
|
||||||
msgid "Text alignment toolbar"
|
|
||||||
msgstr "Teksbelyning nutsbank"
|
|
||||||
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/ar.po
generated
vendored
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/ar.po
generated
vendored
|
|
@ -1,42 +0,0 @@
|
||||||
# Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
||||||
#
|
|
||||||
# !!! IMPORTANT !!!
|
|
||||||
#
|
|
||||||
# Before you edit this file, please keep in mind that contributing to the project
|
|
||||||
# translations is possible ONLY via the Transifex online service.
|
|
||||||
#
|
|
||||||
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
|
||||||
#
|
|
||||||
# To learn more, check out the official contributor's guide:
|
|
||||||
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language-Team: Arabic (https://app.transifex.com/ckeditor/teams/11143/ar/)\n"
|
|
||||||
"Language: ar\n"
|
|
||||||
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the left."
|
|
||||||
msgid "Align left"
|
|
||||||
msgstr "محاذاة لليسار"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the right."
|
|
||||||
msgid "Align right"
|
|
||||||
msgstr "محاذاة لليمين"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to center."
|
|
||||||
msgid "Align center"
|
|
||||||
msgstr "محاذاة في المنتصف"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for making the text justified."
|
|
||||||
msgid "Justify"
|
|
||||||
msgstr "ضبط"
|
|
||||||
|
|
||||||
msgctxt "Dropdown button tooltip for the text alignment feature."
|
|
||||||
msgid "Text alignment"
|
|
||||||
msgstr "محاذاة النص"
|
|
||||||
|
|
||||||
msgctxt "Label used by assistive technologies describing the text alignment feature toolbar."
|
|
||||||
msgid "Text alignment toolbar"
|
|
||||||
msgstr "شريط أدوات محاذاة النص"
|
|
||||||
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/az.po
generated
vendored
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/az.po
generated
vendored
|
|
@ -1,42 +0,0 @@
|
||||||
# Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
||||||
#
|
|
||||||
# !!! IMPORTANT !!!
|
|
||||||
#
|
|
||||||
# Before you edit this file, please keep in mind that contributing to the project
|
|
||||||
# translations is possible ONLY via the Transifex online service.
|
|
||||||
#
|
|
||||||
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
|
||||||
#
|
|
||||||
# To learn more, check out the official contributor's guide:
|
|
||||||
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language-Team: Azerbaijani (https://app.transifex.com/ckeditor/teams/11143/az/)\n"
|
|
||||||
"Language: az\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the left."
|
|
||||||
msgid "Align left"
|
|
||||||
msgstr "Soldan düzləndir"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the right."
|
|
||||||
msgid "Align right"
|
|
||||||
msgstr "Sağdan düzləndir"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to center."
|
|
||||||
msgid "Align center"
|
|
||||||
msgstr "Mərkəzə düzləndir"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for making the text justified."
|
|
||||||
msgid "Justify"
|
|
||||||
msgstr "Eninə görə"
|
|
||||||
|
|
||||||
msgctxt "Dropdown button tooltip for the text alignment feature."
|
|
||||||
msgid "Text alignment"
|
|
||||||
msgstr "Mətn düzləndirməsi"
|
|
||||||
|
|
||||||
msgctxt "Label used by assistive technologies describing the text alignment feature toolbar."
|
|
||||||
msgid "Text alignment toolbar"
|
|
||||||
msgstr "Mətnin düzləndirmə paneli"
|
|
||||||
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/bg.po
generated
vendored
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/bg.po
generated
vendored
|
|
@ -1,42 +0,0 @@
|
||||||
# Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
||||||
#
|
|
||||||
# !!! IMPORTANT !!!
|
|
||||||
#
|
|
||||||
# Before you edit this file, please keep in mind that contributing to the project
|
|
||||||
# translations is possible ONLY via the Transifex online service.
|
|
||||||
#
|
|
||||||
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
|
||||||
#
|
|
||||||
# To learn more, check out the official contributor's guide:
|
|
||||||
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language-Team: Bulgarian (https://app.transifex.com/ckeditor/teams/11143/bg/)\n"
|
|
||||||
"Language: bg\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the left."
|
|
||||||
msgid "Align left"
|
|
||||||
msgstr "Ляво подравняване"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the right."
|
|
||||||
msgid "Align right"
|
|
||||||
msgstr "Дясно подравняване"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to center."
|
|
||||||
msgid "Align center"
|
|
||||||
msgstr "Централно подравняване"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for making the text justified."
|
|
||||||
msgid "Justify"
|
|
||||||
msgstr "Разпредели по равно"
|
|
||||||
|
|
||||||
msgctxt "Dropdown button tooltip for the text alignment feature."
|
|
||||||
msgid "Text alignment"
|
|
||||||
msgstr "Подравняване на текста"
|
|
||||||
|
|
||||||
msgctxt "Label used by assistive technologies describing the text alignment feature toolbar."
|
|
||||||
msgid "Text alignment toolbar"
|
|
||||||
msgstr "Лента за подравняване на текст"
|
|
||||||
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/bn.po
generated
vendored
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/bn.po
generated
vendored
|
|
@ -1,42 +0,0 @@
|
||||||
# Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
||||||
#
|
|
||||||
# !!! IMPORTANT !!!
|
|
||||||
#
|
|
||||||
# Before you edit this file, please keep in mind that contributing to the project
|
|
||||||
# translations is possible ONLY via the Transifex online service.
|
|
||||||
#
|
|
||||||
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
|
||||||
#
|
|
||||||
# To learn more, check out the official contributor's guide:
|
|
||||||
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language-Team: Bengali (https://app.transifex.com/ckeditor/teams/11143/bn/)\n"
|
|
||||||
"Language: bn\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the left."
|
|
||||||
msgid "Align left"
|
|
||||||
msgstr "বামে সারিবদ্ধ করুন"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the right."
|
|
||||||
msgid "Align right"
|
|
||||||
msgstr "ডানদিকে সারিবদ্ধ করুন"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to center."
|
|
||||||
msgid "Align center"
|
|
||||||
msgstr "কেন্দ্র সারিবদ্ধ করুন"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for making the text justified."
|
|
||||||
msgid "Justify"
|
|
||||||
msgstr "জাস্টিফাই"
|
|
||||||
|
|
||||||
msgctxt "Dropdown button tooltip for the text alignment feature."
|
|
||||||
msgid "Text alignment"
|
|
||||||
msgstr "টেক্সট সারিবদ্ধকরণ"
|
|
||||||
|
|
||||||
msgctxt "Label used by assistive technologies describing the text alignment feature toolbar."
|
|
||||||
msgid "Text alignment toolbar"
|
|
||||||
msgstr "টেক্সট শ্রেণীবিন্যাস টুলবার"
|
|
||||||
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/bs.po
generated
vendored
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/bs.po
generated
vendored
|
|
@ -1,42 +0,0 @@
|
||||||
# Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
||||||
#
|
|
||||||
# !!! IMPORTANT !!!
|
|
||||||
#
|
|
||||||
# Before you edit this file, please keep in mind that contributing to the project
|
|
||||||
# translations is possible ONLY via the Transifex online service.
|
|
||||||
#
|
|
||||||
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
|
||||||
#
|
|
||||||
# To learn more, check out the official contributor's guide:
|
|
||||||
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language-Team: Bosnian (https://app.transifex.com/ckeditor/teams/11143/bs/)\n"
|
|
||||||
"Language: bs\n"
|
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the left."
|
|
||||||
msgid "Align left"
|
|
||||||
msgstr "Lijevo poravnanje"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the right."
|
|
||||||
msgid "Align right"
|
|
||||||
msgstr "Desno poravnanje"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to center."
|
|
||||||
msgid "Align center"
|
|
||||||
msgstr "Centrirati"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for making the text justified."
|
|
||||||
msgid "Justify"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgctxt "Dropdown button tooltip for the text alignment feature."
|
|
||||||
msgid "Text alignment"
|
|
||||||
msgstr "Poravnanje teksta"
|
|
||||||
|
|
||||||
msgctxt "Label used by assistive technologies describing the text alignment feature toolbar."
|
|
||||||
msgid "Text alignment toolbar"
|
|
||||||
msgstr "Traka za poravnanje teksta"
|
|
||||||
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/ca.po
generated
vendored
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/ca.po
generated
vendored
|
|
@ -1,42 +0,0 @@
|
||||||
# Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
||||||
#
|
|
||||||
# !!! IMPORTANT !!!
|
|
||||||
#
|
|
||||||
# Before you edit this file, please keep in mind that contributing to the project
|
|
||||||
# translations is possible ONLY via the Transifex online service.
|
|
||||||
#
|
|
||||||
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
|
||||||
#
|
|
||||||
# To learn more, check out the official contributor's guide:
|
|
||||||
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language-Team: Catalan (https://app.transifex.com/ckeditor/teams/11143/ca/)\n"
|
|
||||||
"Language: ca\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the left."
|
|
||||||
msgid "Align left"
|
|
||||||
msgstr "Alineació esquerra"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the right."
|
|
||||||
msgid "Align right"
|
|
||||||
msgstr "Alineació dreta"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to center."
|
|
||||||
msgid "Align center"
|
|
||||||
msgstr "Alineació centre"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for making the text justified."
|
|
||||||
msgid "Justify"
|
|
||||||
msgstr "Justificar"
|
|
||||||
|
|
||||||
msgctxt "Dropdown button tooltip for the text alignment feature."
|
|
||||||
msgid "Text alignment"
|
|
||||||
msgstr "Alineació text"
|
|
||||||
|
|
||||||
msgctxt "Label used by assistive technologies describing the text alignment feature toolbar."
|
|
||||||
msgid "Text alignment toolbar"
|
|
||||||
msgstr "Barra d'eines d'alineació de text"
|
|
||||||
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/cs.po
generated
vendored
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/cs.po
generated
vendored
|
|
@ -1,42 +0,0 @@
|
||||||
# Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
||||||
#
|
|
||||||
# !!! IMPORTANT !!!
|
|
||||||
#
|
|
||||||
# Before you edit this file, please keep in mind that contributing to the project
|
|
||||||
# translations is possible ONLY via the Transifex online service.
|
|
||||||
#
|
|
||||||
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
|
||||||
#
|
|
||||||
# To learn more, check out the official contributor's guide:
|
|
||||||
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language-Team: Czech (https://app.transifex.com/ckeditor/teams/11143/cs/)\n"
|
|
||||||
"Language: cs\n"
|
|
||||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the left."
|
|
||||||
msgid "Align left"
|
|
||||||
msgstr "Zarovnat vlevo"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the right."
|
|
||||||
msgid "Align right"
|
|
||||||
msgstr "Zarovnat vpravo"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to center."
|
|
||||||
msgid "Align center"
|
|
||||||
msgstr "Zarovnat na střed"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for making the text justified."
|
|
||||||
msgid "Justify"
|
|
||||||
msgstr "Zarovnat do bloku"
|
|
||||||
|
|
||||||
msgctxt "Dropdown button tooltip for the text alignment feature."
|
|
||||||
msgid "Text alignment"
|
|
||||||
msgstr "Zarovnání textu"
|
|
||||||
|
|
||||||
msgctxt "Label used by assistive technologies describing the text alignment feature toolbar."
|
|
||||||
msgid "Text alignment toolbar"
|
|
||||||
msgstr "Panel nástrojů zarovnání textu"
|
|
||||||
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/da.po
generated
vendored
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/da.po
generated
vendored
|
|
@ -1,42 +0,0 @@
|
||||||
# Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
||||||
#
|
|
||||||
# !!! IMPORTANT !!!
|
|
||||||
#
|
|
||||||
# Before you edit this file, please keep in mind that contributing to the project
|
|
||||||
# translations is possible ONLY via the Transifex online service.
|
|
||||||
#
|
|
||||||
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
|
||||||
#
|
|
||||||
# To learn more, check out the official contributor's guide:
|
|
||||||
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language-Team: Danish (https://app.transifex.com/ckeditor/teams/11143/da/)\n"
|
|
||||||
"Language: da\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the left."
|
|
||||||
msgid "Align left"
|
|
||||||
msgstr "Justér venstre"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the right."
|
|
||||||
msgid "Align right"
|
|
||||||
msgstr "Justér højre"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to center."
|
|
||||||
msgid "Align center"
|
|
||||||
msgstr "Justér center"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for making the text justified."
|
|
||||||
msgid "Justify"
|
|
||||||
msgstr "Justér"
|
|
||||||
|
|
||||||
msgctxt "Dropdown button tooltip for the text alignment feature."
|
|
||||||
msgid "Text alignment"
|
|
||||||
msgstr "Tekstjustering"
|
|
||||||
|
|
||||||
msgctxt "Label used by assistive technologies describing the text alignment feature toolbar."
|
|
||||||
msgid "Text alignment toolbar"
|
|
||||||
msgstr "Tekstjustering værktøjslinje"
|
|
||||||
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/de-ch.po
generated
vendored
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/de-ch.po
generated
vendored
|
|
@ -1,42 +0,0 @@
|
||||||
# Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
||||||
#
|
|
||||||
# !!! IMPORTANT !!!
|
|
||||||
#
|
|
||||||
# Before you edit this file, please keep in mind that contributing to the project
|
|
||||||
# translations is possible ONLY via the Transifex online service.
|
|
||||||
#
|
|
||||||
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
|
||||||
#
|
|
||||||
# To learn more, check out the official contributor's guide:
|
|
||||||
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language-Team: German (Switzerland) (https://app.transifex.com/ckeditor/teams/11143/de_CH/)\n"
|
|
||||||
"Language: de_CH\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the left."
|
|
||||||
msgid "Align left"
|
|
||||||
msgstr "Linksbündig"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the right."
|
|
||||||
msgid "Align right"
|
|
||||||
msgstr "Rechtsbündig"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to center."
|
|
||||||
msgid "Align center"
|
|
||||||
msgstr "Zentriert"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for making the text justified."
|
|
||||||
msgid "Justify"
|
|
||||||
msgstr "Blocksatz"
|
|
||||||
|
|
||||||
msgctxt "Dropdown button tooltip for the text alignment feature."
|
|
||||||
msgid "Text alignment"
|
|
||||||
msgstr "Textausrichtung"
|
|
||||||
|
|
||||||
msgctxt "Label used by assistive technologies describing the text alignment feature toolbar."
|
|
||||||
msgid "Text alignment toolbar"
|
|
||||||
msgstr "Textausrichtung Werkzeugleiste"
|
|
||||||
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/de.po
generated
vendored
42
vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-alignment/lang/translations/de.po
generated
vendored
|
|
@ -1,42 +0,0 @@
|
||||||
# Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
|
|
||||||
#
|
|
||||||
# !!! IMPORTANT !!!
|
|
||||||
#
|
|
||||||
# Before you edit this file, please keep in mind that contributing to the project
|
|
||||||
# translations is possible ONLY via the Transifex online service.
|
|
||||||
#
|
|
||||||
# To submit your translations, visit https://www.transifex.com/ckeditor/ckeditor5.
|
|
||||||
#
|
|
||||||
# To learn more, check out the official contributor's guide:
|
|
||||||
# https://ckeditor.com/docs/ckeditor5/latest/framework/guides/contributing/contributing.html
|
|
||||||
#
|
|
||||||
msgid ""
|
|
||||||
msgstr ""
|
|
||||||
"Language-Team: German (https://app.transifex.com/ckeditor/teams/11143/de/)\n"
|
|
||||||
"Language: de\n"
|
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the left."
|
|
||||||
msgid "Align left"
|
|
||||||
msgstr "Linksbündig"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to the right."
|
|
||||||
msgid "Align right"
|
|
||||||
msgstr "Rechtsbündig"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for aligning the text to center."
|
|
||||||
msgid "Align center"
|
|
||||||
msgstr "Zentriert"
|
|
||||||
|
|
||||||
msgctxt "Toolbar button tooltip for making the text justified."
|
|
||||||
msgid "Justify"
|
|
||||||
msgstr "Blocksatz"
|
|
||||||
|
|
||||||
msgctxt "Dropdown button tooltip for the text alignment feature."
|
|
||||||
msgid "Text alignment"
|
|
||||||
msgstr "Textausrichtung"
|
|
||||||
|
|
||||||
msgctxt "Label used by assistive technologies describing the text alignment feature toolbar."
|
|
||||||
msgid "Text alignment toolbar"
|
|
||||||
msgstr "Text-Ausrichtung Toolbar"
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue